From 6e933b1c9b6dfdf9e634c56187d2e51eedbb5042 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 13 Oct 2024 11:19:55 +0200 Subject: [PATCH 1/9] refactor: move autocrafter code to separate package --- .../common/AbstractClientModInitializer.java | 2 +- .../refinedstorage/common/AbstractModInitializer.java | 6 +++--- .../common/autocrafting/PatternRendering.java | 1 + .../autocrafting/{ => autocrafter}/AutocrafterBlock.java | 2 +- .../{ => autocrafter}/AutocrafterBlockEntity.java | 2 +- .../{ => autocrafter}/AutocrafterConnectionStrategy.java | 2 +- .../{ => autocrafter}/AutocrafterContainerMenu.java | 2 +- .../autocrafting/{ => autocrafter}/AutocrafterData.java | 2 +- .../{ => autocrafter}/AutocrafterPropertyTypes.java | 2 +- .../autocrafting/{ => autocrafter}/AutocrafterScreen.java | 2 +- .../common/autocrafting/{ => autocrafter}/LockMode.java | 2 +- .../autocrafting/{ => autocrafter}/LockModeSettings.java | 2 +- .../{ => autocrafter}/LockModeSideButtonWidget.java | 2 +- .../autocrafting/{ => autocrafter}/PatternInventory.java | 6 +++--- .../common/autocrafting/{ => autocrafter}/PatternSlot.java | 2 +- .../common/autocrafting/autocrafter/package-info.java | 7 +++++++ .../refinedstorage/common/content/BlockEntities.java | 2 +- .../refinedmods/refinedstorage/common/content/Blocks.java | 2 +- .../refinedmods/refinedstorage/common/content/Menus.java | 2 +- .../support/packet/c2s/AutocrafterNameChangePacket.java | 2 +- .../support/packet/s2c/AutocrafterNameUpdatePacket.java | 2 +- 21 files changed, 31 insertions(+), 23 deletions(-) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterBlock.java (97%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterBlockEntity.java (99%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterConnectionStrategy.java (93%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterContainerMenu.java (98%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterData.java (87%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterPropertyTypes.java (90%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/AutocrafterScreen.java (99%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/LockMode.java (91%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/LockModeSettings.java (95%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/LockModeSideButtonWidget.java (98%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/PatternInventory.java (91%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => autocrafter}/PatternSlot.java (85%) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/package-info.java diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java index 8526ff4ca..59ef1a1e4 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java @@ -3,7 +3,7 @@ import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.upgrade.UpgradeMapping; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterScreen; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewScreen; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java index c67803c40..9b47e28ce 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java @@ -13,9 +13,9 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApiProxy; import com.refinedmods.refinedstorage.common.api.security.PlatformSecurityNetworkComponent; import com.refinedmods.refinedstorage.common.api.upgrade.AbstractUpgradeItem; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterBlockEntity; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterContainerMenu; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterData; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterData; import com.refinedmods.refinedstorage.common.autocrafting.CraftingPatternState; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlockEntity; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java index 5310342e1..3eb0df3f9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java @@ -2,6 +2,7 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.util.ClientPlatformUtil; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlock.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlock.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlock.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlock.java index 5b1311324..c0bd1e85b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlock.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlock.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.content.BlockColorMap; import com.refinedmods.refinedstorage.common.content.BlockConstants; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java similarity index 99% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlockEntity.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java index 857ef8ad3..b8e049bb6 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.api.autocrafting.Pattern; import com.refinedmods.refinedstorage.api.network.impl.node.patternprovider.PatternProviderNetworkNode; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterConnectionStrategy.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterConnectionStrategy.java similarity index 93% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterConnectionStrategy.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterConnectionStrategy.java index 12e7161db..575abdf3b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterConnectionStrategy.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterConnectionStrategy.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.api.support.network.ConnectionSink; import com.refinedmods.refinedstorage.common.support.network.ColoredConnectionStrategy; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java similarity index 98% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterContainerMenu.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java index 3619372df..de438ab54 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.content.Menus; import com.refinedmods.refinedstorage.common.support.AbstractBaseContainerMenu; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterData.java similarity index 87% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterData.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterData.java index 6cb7995df..8d22266ba 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterData.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterPropertyTypes.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java similarity index 90% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterPropertyTypes.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java index 3d7aca144..ce611f3a5 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterPropertyTypes.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.support.containermenu.PropertyType; import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java similarity index 99% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterScreen.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java index 913f464e6..831190be8 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AutocrafterScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.support.AbstractBaseScreen; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockMode.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockMode.java similarity index 91% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockMode.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockMode.java index 85bc748d5..f1059d83b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockMode.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockMode.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; public enum LockMode { NEVER, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSettings.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSettings.java similarity index 95% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSettings.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSettings.java index 0b9c8518b..951339e2a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSettings.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSettings.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; class LockModeSettings { private static final int NEVER = 0; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSideButtonWidget.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java similarity index 98% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSideButtonWidget.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java index 8253d98ba..80da37f15 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/LockModeSideButtonWidget.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; import com.refinedmods.refinedstorage.common.support.widget.AbstractSideButtonWidget; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java similarity index 91% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java index cbb2cfcc7..4ef24bf90 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.api.core.NullableType; import com.refinedmods.refinedstorage.common.Platform; @@ -11,8 +11,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import static com.refinedmods.refinedstorage.common.autocrafting.AutocrafterBlockEntity.PATTERNS; -import static com.refinedmods.refinedstorage.common.autocrafting.AutocrafterBlockEntity.isValidPattern; +import static com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity.PATTERNS; +import static com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity.isValidPattern; class PatternInventory extends FilteredContainer { @Nullable diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java similarity index 85% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java index ab24426be..f7d4221b3 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.support.containermenu.ValidatedSlot; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/package-info.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/package-info.java new file mode 100644 index 000000000..29c29de66 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@FieldsAndMethodsAreNonnullByDefault +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; + +import com.refinedmods.refinedstorage.api.core.FieldsAndMethodsAreNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java index 1868b4c92..10c4add11 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.content; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java index 0c7b8036f..8651f110a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.content; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterBlock; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlock; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlock; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java index 4658b8af7..e8d49ba54 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.content; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.constructordestructor.ConstructorContainerMenu; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/AutocrafterNameChangePacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/AutocrafterNameChangePacket.java index 04fc5454d..b1da3c01c 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/AutocrafterNameChangePacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/AutocrafterNameChangePacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import net.minecraft.network.RegistryFriendlyByteBuf; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterNameUpdatePacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterNameUpdatePacket.java index 3eb557d31..e4d844ec8 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterNameUpdatePacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterNameUpdatePacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.s2c; -import com.refinedmods.refinedstorage.common.autocrafting.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import net.minecraft.network.RegistryFriendlyByteBuf; From c8098ff0083058781db928bcff1ddda13d2ef048 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 23 Oct 2024 20:11:21 +0200 Subject: [PATCH 2/9] refactor: move pattern grid code to separate package --- .../common/AbstractClientModInitializer.java | 2 +- .../common/AbstractModInitializer.java | 6 ++--- .../common/autocrafting/PatternItem.java | 2 +- .../common/autocrafting/PatternRendering.java | 1 + .../common/autocrafting/PatternState.java | 1 + .../common/autocrafting/VanillaConstants.java | 24 +++++++++---------- .../{ => patterngrid}/Alternative.java | 2 +- .../AlternativeContainerMenu.java | 6 ++--- .../{ => patterngrid}/AlternativeSlot.java | 2 +- .../{ => patterngrid}/AlternativesScreen.java | 2 +- .../CraftingPatternGridRenderer.java | 4 ++-- .../{ => patterngrid}/PatternGridBlock.java | 2 +- .../PatternGridBlockEntity.java | 8 ++++++- .../PatternGridContainerMenu.java | 4 ++-- .../{ => patterngrid}/PatternGridData.java | 2 +- .../PatternGridPropertyTypes.java | 2 +- .../PatternGridRenderer.java | 2 +- .../{ => patterngrid}/PatternGridScreen.java | 2 +- .../PatternOutputContainer.java | 3 ++- .../{ => patterngrid}/PatternType.java | 2 +- .../{ => patterngrid}/PatternTypeButton.java | 2 +- .../PatternTypeSettings.java | 2 +- .../ProcessingInputData.java | 2 +- ...singMatrixInputClientTooltipComponent.java | 2 +- ...rocessingMatrixInputResourceContainer.java | 3 ++- .../ProcessingMatrixResourceSlot.java | 2 +- .../ProcessingPatternGridRenderer.java | 8 +++---- .../SmithingTablePatternGridRenderer.java | 9 +++---- .../StonecutterInputContainer.java | 2 +- .../StonecutterPatternGridRenderer.java | 5 ++-- .../patterngrid/package-info.java | 7 ++++++ .../common/content/BlockEntities.java | 2 +- .../refinedstorage/common/content/Blocks.java | 2 +- .../refinedstorage/common/content/Menus.java | 2 +- .../support/amount/AbstractAmountScreen.java | 2 +- ...rnGridAllowedAlternativesChangePacket.java | 2 +- .../packet/c2s/PatternGridClearPacket.java | 2 +- ...tternGridCraftingRecipeTransferPacket.java | 2 +- .../c2s/PatternGridCreatePatternPacket.java | 2 +- ...ernGridProcessingRecipeTransferPacket.java | 2 +- ...GridSmithingTableRecipeTransferPacket.java | 2 +- ...rnGridStonecutterRecipeTransferPacket.java | 2 +- ...rnGridAllowedAlternativesUpdatePacket.java | 2 +- 43 files changed, 83 insertions(+), 64 deletions(-) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/Alternative.java (97%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/AlternativeContainerMenu.java (95%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/AlternativeSlot.java (92%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/AlternativesScreen.java (99%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/CraftingPatternGridRenderer.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridBlock.java (97%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridBlockEntity.java (97%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridContainerMenu.java (99%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridData.java (94%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridPropertyTypes.java (91%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridRenderer.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternGridScreen.java (99%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternOutputContainer.java (79%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternType.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternTypeButton.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/PatternTypeSettings.java (92%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/ProcessingInputData.java (95%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/ProcessingMatrixInputClientTooltipComponent.java (98%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/ProcessingMatrixInputResourceContainer.java (97%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/ProcessingMatrixResourceSlot.java (98%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/ProcessingPatternGridRenderer.java (98%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/SmithingTablePatternGridRenderer.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/StonecutterInputContainer.java (96%) rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{ => patterngrid}/StonecutterPatternGridRenderer.java (97%) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/package-info.java diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java index 59ef1a1e4..2ac745736 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java @@ -4,7 +4,7 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.upgrade.UpgradeMapping; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewScreen; import com.refinedmods.refinedstorage.common.constructordestructor.ConstructorScreen; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java index 9b47e28ce..fcb2cd470 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java @@ -17,9 +17,9 @@ import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterData; import com.refinedmods.refinedstorage.common.autocrafting.CraftingPatternState; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlockEntity; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridData; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridData; import com.refinedmods.refinedstorage.common.autocrafting.PatternItem; import com.refinedmods.refinedstorage.common.autocrafting.PatternState; import com.refinedmods.refinedstorage.common.autocrafting.ProcessingPatternState; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternItem.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternItem.java index f29f1e38e..34bb97c5d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternItem.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternItem.java @@ -76,7 +76,7 @@ public void appendHoverText(final ItemStack stack, } } - boolean hasMapping(final ItemStack stack) { + public boolean hasMapping(final ItemStack stack) { return stack.has(DataComponents.INSTANCE.getPatternState()); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java index 3eb0df3f9..6f96f7315 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java @@ -3,6 +3,7 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.util.ClientPlatformUtil; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternState.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternState.java index 73b9d0032..49cd3735a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternState.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternState.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.common.autocrafting; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternType; import com.refinedmods.refinedstorage.common.util.PlatformUtil; import java.util.UUID; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/VanillaConstants.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/VanillaConstants.java index fcb7b4a36..df8751d4b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/VanillaConstants.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/VanillaConstants.java @@ -7,28 +7,28 @@ import org.joml.Quaternionf; import org.joml.Vector3f; -class VanillaConstants { - static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_ARMOR_TRIM = +public final class VanillaConstants { + public static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_ARMOR_TRIM = ResourceLocation.withDefaultNamespace("item/empty_slot_smithing_template_armor_trim"); - static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_NETHERITE_UPGRADE = + public static final ResourceLocation EMPTY_SLOT_SMITHING_TEMPLATE_NETHERITE_UPGRADE = ResourceLocation.withDefaultNamespace("item/empty_slot_smithing_template_netherite_upgrade"); - static final List EMPTY_SLOT_SMITHING_TEMPLATES = + public static final List EMPTY_SLOT_SMITHING_TEMPLATES = List.of(EMPTY_SLOT_SMITHING_TEMPLATE_ARMOR_TRIM, EMPTY_SLOT_SMITHING_TEMPLATE_NETHERITE_UPGRADE); - static final Component MISSING_SMITHING_TEMPLATE_TOOLTIP = + public static final Component MISSING_SMITHING_TEMPLATE_TOOLTIP = Component.translatable("container.upgrade.missing_template_tooltip"); - static final ResourceLocation STONECUTTER_RECIPE_SELECTED_SPRITE = ResourceLocation.withDefaultNamespace( + public static final ResourceLocation STONECUTTER_RECIPE_SELECTED_SPRITE = ResourceLocation.withDefaultNamespace( "container/stonecutter/recipe_selected" ); - static final ResourceLocation STONECUTTER_RECIPE_HIGHLIGHTED_SPRITE = ResourceLocation.withDefaultNamespace( + public static final ResourceLocation STONECUTTER_RECIPE_HIGHLIGHTED_SPRITE = ResourceLocation.withDefaultNamespace( "container/stonecutter/recipe_highlighted" ); - static final ResourceLocation STONECUTTER_RECIPE_SPRITE = ResourceLocation.withDefaultNamespace( + public static final ResourceLocation STONECUTTER_RECIPE_SPRITE = ResourceLocation.withDefaultNamespace( "container/stonecutter/recipe" ); - static final Vector3f ARMOR_STAND_TRANSLATION = new Vector3f(); - static final Quaternionf ARMOR_STAND_ANGLE = (new Quaternionf()).rotationXYZ(0.43633232F, 0.0F, 3.1415927F); - static final int STONECUTTER_RECIPES_PER_ROW = 4; - static final int STONECUTTER_ROWS_VISIBLE = 3; + public static final Vector3f ARMOR_STAND_TRANSLATION = new Vector3f(); + public static final Quaternionf ARMOR_STAND_ANGLE = (new Quaternionf()).rotationXYZ(0.43633232F, 0.0F, 3.1415927F); + public static final int STONECUTTER_RECIPES_PER_ROW = 4; + public static final int STONECUTTER_ROWS_VISIBLE = 3; private VanillaConstants() { } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/Alternative.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/Alternative.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/Alternative.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/Alternative.java index 3dd18a5a1..88dca65b5 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/Alternative.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/Alternative.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeContainerMenu.java similarity index 95% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeContainerMenu.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeContainerMenu.java index b17189322..acd7bf39f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeContainerMenu.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; @@ -18,8 +18,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import static com.refinedmods.refinedstorage.common.autocrafting.AlternativesScreen.ALTERNATIVE_HEIGHT; -import static com.refinedmods.refinedstorage.common.autocrafting.AlternativesScreen.ALTERNATIVE_ROW_HEIGHT; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.AlternativesScreen.ALTERNATIVE_HEIGHT; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.AlternativesScreen.ALTERNATIVE_ROW_HEIGHT; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.getTagTranslationKey; class AlternativeContainerMenu extends AbstractResourceContainerMenu { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeSlot.java similarity index 92% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeSlot.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeSlot.java index 548002c9d..0c440eb71 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativeSlot.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativeSlot.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; import com.refinedmods.refinedstorage.common.support.containermenu.DisabledResourceSlot; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativesScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativesScreen.java similarity index 99% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativesScreen.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativesScreen.java index 743e92a7d..cbfeacfc6 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/AlternativesScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/AlternativesScreen.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.support.ResourceSlotRendering; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPatternGridRenderer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/CraftingPatternGridRenderer.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPatternGridRenderer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/CraftingPatternGridRenderer.java index 8b94a7b49..4ea66d026 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPatternGridRenderer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/CraftingPatternGridRenderer.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.support.widget.CustomCheckboxWidget; @@ -12,7 +12,7 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_PADDING; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_PADDING; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlock.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlock.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlock.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlock.java index 1315e9909..2a5af3cab 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlock.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlock.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.content.BlockColorMap; import com.refinedmods.refinedstorage.common.content.BlockEntities; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlockEntity.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlockEntity.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlockEntity.java index 6176e43b4..b687d4b77 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridBlockEntity.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.resource.ResourceKey; @@ -6,6 +6,12 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey; import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; +import com.refinedmods.refinedstorage.common.autocrafting.CraftingPatternState; +import com.refinedmods.refinedstorage.common.autocrafting.PatternItem; +import com.refinedmods.refinedstorage.common.autocrafting.PatternState; +import com.refinedmods.refinedstorage.common.autocrafting.ProcessingPatternState; +import com.refinedmods.refinedstorage.common.autocrafting.SmithingTablePatternState; +import com.refinedmods.refinedstorage.common.autocrafting.StonecutterPatternState; import com.refinedmods.refinedstorage.common.content.BlockEntities; import com.refinedmods.refinedstorage.common.content.ContentNames; import com.refinedmods.refinedstorage.common.content.DataComponents; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java similarity index 99% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridContainerMenu.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java index 9216ba40a..5b6af716d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.resource.ResourceKey; @@ -229,7 +229,7 @@ public void set(final ItemStack stack) { transferManager.addTransfer(patternOutput, playerInventory); } - boolean isPatternInOutput(final ItemStack stack) { + public boolean isPatternInOutput(final ItemStack stack) { return patternOutputSlot != null && patternOutputSlot.getItem() == stack; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridData.java similarity index 94% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridData.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridData.java index e4330475e..e54504c29 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridData.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.grid.GridData; import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridPropertyTypes.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridPropertyTypes.java similarity index 91% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridPropertyTypes.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridPropertyTypes.java index d2f7a96c4..4f364caf5 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridPropertyTypes.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridPropertyTypes.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.support.containermenu.PropertyType; import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridRenderer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridRenderer.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridRenderer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridRenderer.java index e8222e533..4c7f81039 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridRenderer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridRenderer.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.support.containermenu.ResourceSlot; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridScreen.java similarity index 99% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridScreen.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridScreen.java index f8f76f606..ddfe7cdf8 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternGridScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridScreen.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey; import com.refinedmods.refinedstorage.common.grid.screen.AbstractGridScreen; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternOutputContainer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternOutputContainer.java similarity index 79% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternOutputContainer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternOutputContainer.java index 8a83d878a..ff04d4e01 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternOutputContainer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternOutputContainer.java @@ -1,5 +1,6 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; +import com.refinedmods.refinedstorage.common.autocrafting.PatternItem; import com.refinedmods.refinedstorage.common.support.FilteredContainer; import net.minecraft.world.item.ItemStack; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternType.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternType.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternType.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternType.java index 547fd3c83..5b2e2bc41 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternType.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternType.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.mojang.serialization.Codec; import net.minecraft.network.chat.Component; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeButton.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeButton.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeButton.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeButton.java index d04c26943..11cc248fa 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeButton.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeButton.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.support.widget.HoveredImageButton; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeSettings.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeSettings.java similarity index 92% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeSettings.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeSettings.java index 3e93a7aeb..133b558fb 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternTypeSettings.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternTypeSettings.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; class PatternTypeSettings { private static final int CRAFTING = 0; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingInputData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingInputData.java similarity index 95% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingInputData.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingInputData.java index 59b5181d3..05d2e7d1b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingInputData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingInputData.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputClientTooltipComponent.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputClientTooltipComponent.java similarity index 98% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputClientTooltipComponent.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputClientTooltipComponent.java index 982a56aba..00a3cd0ff 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputClientTooltipComponent.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputClientTooltipComponent.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputResourceContainer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputResourceContainer.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputResourceContainer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputResourceContainer.java index a9c0834fe..d97b09830 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixInputResourceContainer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixInputResourceContainer.java @@ -1,9 +1,10 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.api.core.NullableType; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.resource.ResourceKey; import com.refinedmods.refinedstorage.common.api.support.resource.ResourceFactory; +import com.refinedmods.refinedstorage.common.autocrafting.ProcessingPatternState; import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerImpl; import java.util.ArrayList; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixResourceSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixResourceSlot.java similarity index 98% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixResourceSlot.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixResourceSlot.java index c1fcea8b3..57dc466a9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingMatrixResourceSlot.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingMatrixResourceSlot.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; import com.refinedmods.refinedstorage.common.support.containermenu.ResourceSlot; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPatternGridRenderer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingPatternGridRenderer.java similarity index 98% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPatternGridRenderer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingPatternGridRenderer.java index 71ca95ca9..9a3cc3e8f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPatternGridRenderer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/ProcessingPatternGridRenderer.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.grid.AutocraftableResourceHint; @@ -16,9 +16,9 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_HEIGHT; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_PADDING; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_WIDTH; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_HEIGHT; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_PADDING; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_WIDTH; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; import static net.minecraft.client.gui.screens.inventory.AbstractContainerScreen.renderSlotHighlight; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePatternGridRenderer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/SmithingTablePatternGridRenderer.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePatternGridRenderer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/SmithingTablePatternGridRenderer.java index 9008c9790..796cbcd4e 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePatternGridRenderer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/SmithingTablePatternGridRenderer.java @@ -1,5 +1,6 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; +import com.refinedmods.refinedstorage.common.autocrafting.VanillaConstants; import com.refinedmods.refinedstorage.common.util.ClientPlatformUtil; import java.util.List; @@ -23,9 +24,9 @@ import net.minecraft.world.item.SmithingTemplateItem; import net.minecraft.world.level.Level; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_HEIGHT; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_PADDING; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_WIDTH; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_HEIGHT; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_PADDING; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_WIDTH; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; class SmithingTablePatternGridRenderer implements PatternGridRenderer { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterInputContainer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterInputContainer.java similarity index 96% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterInputContainer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterInputContainer.java index ac59c4dac..69bb7cb45 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterInputContainer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterInputContainer.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; import com.refinedmods.refinedstorage.api.core.NullableType; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPatternGridRenderer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterPatternGridRenderer.java similarity index 97% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPatternGridRenderer.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterPatternGridRenderer.java index b7b5beb04..b6015cfd5 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPatternGridRenderer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/StonecutterPatternGridRenderer.java @@ -1,5 +1,6 @@ -package com.refinedmods.refinedstorage.common.autocrafting; +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; +import com.refinedmods.refinedstorage.common.autocrafting.VanillaConstants; import com.refinedmods.refinedstorage.common.support.widget.ScrollbarWidget; import com.refinedmods.refinedstorage.common.util.ClientPlatformUtil; @@ -18,7 +19,7 @@ import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.StonecutterRecipe; -import static com.refinedmods.refinedstorage.common.autocrafting.PatternGridScreen.INSET_PADDING; +import static com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen.INSET_PADDING; import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; import static java.util.Objects.requireNonNull; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/package-info.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/package-info.java new file mode 100644 index 000000000..d0e39bff7 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@FieldsAndMethodsAreNonnullByDefault +package com.refinedmods.refinedstorage.common.autocrafting.patterngrid; + +import com.refinedmods.refinedstorage.api.core.FieldsAndMethodsAreNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java index 10c4add11..470567cdf 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java @@ -1,7 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; import com.refinedmods.refinedstorage.common.controller.ControllerBlockEntity; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java index 8651f110a..6408b431d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java @@ -1,7 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlock; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridBlock; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlock; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.ConstructorBlock; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java index e8d49ba54..c0d79c705 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java @@ -1,7 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.constructordestructor.ConstructorContainerMenu; import com.refinedmods.refinedstorage.common.constructordestructor.DestructorContainerMenu; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/amount/AbstractAmountScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/amount/AbstractAmountScreen.java index 1743e4589..a451b82b3 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/amount/AbstractAmountScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/amount/AbstractAmountScreen.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.amount; -import com.refinedmods.refinedstorage.common.autocrafting.AlternativesScreen; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.AlternativesScreen; import com.refinedmods.refinedstorage.common.support.AbstractBaseScreen; import java.util.Optional; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridAllowedAlternativesChangePacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridAllowedAlternativesChangePacket.java index 761816fb7..d3cc763e7 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridAllowedAlternativesChangePacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridAllowedAlternativesChangePacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import java.util.HashSet; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridClearPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridClearPacket.java index f4195ef1d..b36b9086b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridClearPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridClearPacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import net.minecraft.network.RegistryFriendlyByteBuf; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCraftingRecipeTransferPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCraftingRecipeTransferPacket.java index 3dbc0ddbe..dc201b5b0 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCraftingRecipeTransferPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCraftingRecipeTransferPacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.support.resource.ResourceCodecs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCreatePatternPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCreatePatternPacket.java index 3225174f6..d995481fd 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCreatePatternPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridCreatePatternPacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import net.minecraft.network.RegistryFriendlyByteBuf; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridProcessingRecipeTransferPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridProcessingRecipeTransferPacket.java index 8f7ffefb4..89bafe125 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridProcessingRecipeTransferPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridProcessingRecipeTransferPacket.java @@ -1,7 +1,7 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import com.refinedmods.refinedstorage.common.support.resource.ResourceCodecs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridSmithingTableRecipeTransferPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridSmithingTableRecipeTransferPacket.java index f5f5966b9..0d4a36437 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridSmithingTableRecipeTransferPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridSmithingTableRecipeTransferPacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.support.resource.ResourceCodecs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridStonecutterRecipeTransferPacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridStonecutterRecipeTransferPacket.java index d95c48fcb..8a23f5609 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridStonecutterRecipeTransferPacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/c2s/PatternGridStonecutterRecipeTransferPacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.c2s; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.support.resource.ResourceCodecs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/PatternGridAllowedAlternativesUpdatePacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/PatternGridAllowedAlternativesUpdatePacket.java index dad2cf5a2..c4bb96814 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/PatternGridAllowedAlternativesUpdatePacket.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/PatternGridAllowedAlternativesUpdatePacket.java @@ -1,6 +1,6 @@ package com.refinedmods.refinedstorage.common.support.packet.s2c; -import com.refinedmods.refinedstorage.common.autocrafting.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.support.packet.PacketContext; import java.util.HashSet; From 0ae8cc2ec2993a7d7b8e2ac5b2168a8ab12c8a9d Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 28 Oct 2024 16:52:15 +0100 Subject: [PATCH 3/9] feat: autocrafter manager block --- CHANGELOG.md | 4 + .../blockstates/autocrafter_manager.json | 110 ++++++++++++++++++ .../black_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/blue_autocrafter_manager.json | 110 ++++++++++++++++++ .../brown_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/cyan_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/gray_autocrafter_manager.json | 110 ++++++++++++++++++ .../green_autocrafter_manager.json | 110 ++++++++++++++++++ .../light_gray_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/lime_autocrafter_manager.json | 110 ++++++++++++++++++ .../magenta_autocrafter_manager.json | 110 ++++++++++++++++++ .../orange_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/pink_autocrafter_manager.json | 110 ++++++++++++++++++ .../purple_autocrafter_manager.json | 110 ++++++++++++++++++ .../blockstates/red_autocrafter_manager.json | 110 ++++++++++++++++++ .../white_autocrafter_manager.json | 110 ++++++++++++++++++ .../yellow_autocrafter_manager.json | 110 ++++++++++++++++++ .../block/autocrafter_manager/black.json | 13 +++ .../block/autocrafter_manager/blue.json | 13 +++ .../block/autocrafter_manager/brown.json | 13 +++ .../block/autocrafter_manager/cyan.json | 13 +++ .../block/autocrafter_manager/gray.json | 13 +++ .../block/autocrafter_manager/green.json | 13 +++ .../block/autocrafter_manager/inactive.json | 13 +++ .../block/autocrafter_manager/light_blue.json | 13 +++ .../block/autocrafter_manager/light_gray.json | 13 +++ .../block/autocrafter_manager/lime.json | 13 +++ .../block/autocrafter_manager/magenta.json | 13 +++ .../block/autocrafter_manager/orange.json | 13 +++ .../block/autocrafter_manager/pink.json | 13 +++ .../block/autocrafter_manager/purple.json | 13 +++ .../models/block/autocrafter_manager/red.json | 13 +++ .../block/autocrafter_manager/white.json | 13 +++ .../block/autocrafter_manager/yellow.json | 13 +++ .../models/item/autocrafter_manager.json | 3 + .../item/black_autocrafter_manager.json | 3 + .../models/item/blue_autocrafter_manager.json | 3 + .../item/brown_autocrafter_manager.json | 3 + .../models/item/cyan_autocrafter_manager.json | 3 + .../models/item/gray_autocrafter_manager.json | 3 + .../item/green_autocrafter_manager.json | 3 + .../item/light_gray_autocrafter_manager.json | 3 + .../models/item/lime_autocrafter_manager.json | 3 + .../item/magenta_autocrafter_manager.json | 3 + .../item/orange_autocrafter_manager.json | 3 + .../models/item/pink_autocrafter_manager.json | 3 + .../item/purple_autocrafter_manager.json | 3 + .../models/item/red_autocrafter_manager.json | 3 + .../item/white_autocrafter_manager.json | 3 + .../item/yellow_autocrafter_manager.json | 3 + .../coloring/black_autocrafter_manager.json | 32 +++++ .../coloring/blue_autocrafter_manager.json | 32 +++++ .../coloring/brown_autocrafter_manager.json | 32 +++++ .../coloring/cyan_autocrafter_manager.json | 32 +++++ .../coloring/gray_autocrafter_manager.json | 32 +++++ .../coloring/green_autocrafter_manager.json | 32 +++++ .../light_blue_autocrafter_manager.json | 32 +++++ .../light_gray_autocrafter_manager.json | 32 +++++ .../coloring/lime_autocrafter_manager.json | 32 +++++ .../coloring/magenta_autocrafter_manager.json | 32 +++++ .../coloring/orange_autocrafter_manager.json | 32 +++++ .../coloring/pink_autocrafter_manager.json | 32 +++++ .../coloring/purple_autocrafter_manager.json | 32 +++++ .../coloring/red_autocrafter_manager.json | 32 +++++ .../coloring/white_autocrafter_manager.json | 32 +++++ .../coloring/yellow_autocrafter_manager.json | 32 +++++ .../blocks/autocrafter_manager.json | 30 +++++ .../blocks/black_autocrafter_manager.json | 30 +++++ .../blocks/blue_autocrafter_manager.json | 30 +++++ .../blocks/brown_autocrafter_manager.json | 30 +++++ .../blocks/cyan_autocrafter_manager.json | 30 +++++ .../blocks/gray_autocrafter_manager.json | 30 +++++ .../blocks/green_autocrafter_manager.json | 30 +++++ .../light_gray_autocrafter_manager.json | 30 +++++ .../blocks/lime_autocrafter_manager.json | 30 +++++ .../blocks/magenta_autocrafter_manager.json | 30 +++++ .../blocks/orange_autocrafter_manager.json | 30 +++++ .../blocks/pink_autocrafter_manager.json | 30 +++++ .../blocks/purple_autocrafter_manager.json | 30 +++++ .../blocks/red_autocrafter_manager.json | 30 +++++ .../blocks/white_autocrafter_manager.json | 30 +++++ .../blocks/yellow_autocrafter_manager.json | 30 +++++ .../coloring/black_autocrafter_manager.json | 16 +++ .../coloring/blue_autocrafter_manager.json | 16 +++ .../coloring/brown_autocrafter_manager.json | 16 +++ .../coloring/cyan_autocrafter_manager.json | 16 +++ .../coloring/gray_autocrafter_manager.json | 16 +++ .../coloring/green_autocrafter_manager.json | 16 +++ .../light_blue_autocrafter_manager.json | 16 +++ .../light_gray_autocrafter_manager.json | 16 +++ .../coloring/lime_autocrafter_manager.json | 16 +++ .../coloring/magenta_autocrafter_manager.json | 16 +++ .../coloring/orange_autocrafter_manager.json | 16 +++ .../coloring/pink_autocrafter_manager.json | 16 +++ .../coloring/purple_autocrafter_manager.json | 16 +++ .../coloring/red_autocrafter_manager.json | 16 +++ .../coloring/white_autocrafter_manager.json | 16 +++ .../coloring/yellow_autocrafter_manager.json | 16 +++ .../tags/item/autocrafter_managers.json | 20 ++++ .../common/AbstractModInitializer.java | 20 +++- .../refinedstorage/common/Config.java | 2 + .../AutocrafterManagerBlock.java | 76 ++++++++++++ .../AutocrafterManagerBlockEntity.java | 31 +++++ .../autocraftermanager/package-info.java | 7 ++ .../common/content/BlockEntities.java | 11 ++ .../refinedstorage/common/content/Blocks.java | 11 ++ .../common/content/ContentIds.java | 1 + .../common/content/ContentNames.java | 1 + .../common/content/CreativeModeTabItems.java | 1 + .../common/content/DefaultEnergyUsage.java | 1 + .../refinedstorage/common/content/Items.java | 9 ++ .../refinedstorage/common/content/Tags.java | 1 + .../assets/refinedstorage/lang/en_us.json | 13 ++- .../block/autocrafter_manager/back.png | Bin 0 -> 1415 bytes .../autocrafter_manager/cutouts/black.png | Bin 0 -> 3051 bytes .../autocrafter_manager/cutouts/blue.png | Bin 0 -> 3063 bytes .../autocrafter_manager/cutouts/brown.png | Bin 0 -> 3080 bytes .../autocrafter_manager/cutouts/cyan.png | Bin 0 -> 3096 bytes .../autocrafter_manager/cutouts/gray.png | Bin 0 -> 3071 bytes .../autocrafter_manager/cutouts/green.png | Bin 0 -> 3079 bytes .../autocrafter_manager/cutouts/inactive.png | Bin 0 -> 313 bytes .../cutouts/light_blue.png | Bin 0 -> 533 bytes .../cutouts/light_gray.png | Bin 0 -> 3033 bytes .../autocrafter_manager/cutouts/lime.png | Bin 0 -> 3081 bytes .../autocrafter_manager/cutouts/magenta.png | Bin 0 -> 3062 bytes .../autocrafter_manager/cutouts/orange.png | Bin 0 -> 3032 bytes .../autocrafter_manager/cutouts/pink.png | Bin 0 -> 2998 bytes .../autocrafter_manager/cutouts/purple.png | Bin 0 -> 3086 bytes .../block/autocrafter_manager/cutouts/red.png | Bin 0 -> 3050 bytes .../autocrafter_manager/cutouts/white.png | Bin 0 -> 2988 bytes .../autocrafter_manager/cutouts/yellow.png | Bin 0 -> 3045 bytes .../block/autocrafter_manager/front.png | Bin 0 -> 541 bytes .../block/autocrafter_manager/left.png | Bin 0 -> 1445 bytes .../block/autocrafter_manager/right.png | Bin 0 -> 1444 bytes .../block/autocrafter_manager/top.png | Bin 0 -> 1411 bytes .../advancement/managing_patterns.json | 26 +++++ .../recipe/autocrafter_manager.json | 28 +++++ .../fabric/ClientModInitializerImpl.java | 2 + .../refinedstorage/fabric/ConfigImpl.java | 10 ++ .../fabric/ModInitializerImpl.java | 1 + .../refinedstorage/neoforge/ConfigImpl.java | 12 +- .../neoforge/ModInitializer.java | 1 + .../datagen/BlockModelProviderImpl.java | 1 + .../datagen/BlockStateProviderImpl.java | 9 ++ .../datagen/ItemModelProviderImpl.java | 9 ++ .../datagen/loot/BlockDropProvider.java | 2 + .../recipe/RecoloringRecipeProvider.java | 3 + .../datagen/tag/ItemTagsProviderImpl.java | 5 + 148 files changed, 3586 insertions(+), 9 deletions(-) create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/black_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/brown_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/cyan_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/green_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/light_gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/lime_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/magenta_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/orange_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/pink_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/purple_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/red_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/white_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/yellow_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/black.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/blue.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/brown.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/cyan.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/gray.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/green.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/inactive.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_blue.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_gray.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/lime.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/magenta.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/orange.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/pink.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/purple.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/red.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/white.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/yellow.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/black_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/brown_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/cyan_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/green_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/light_gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/lime_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/magenta_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/orange_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/pink_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/purple_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/red_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/white_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/yellow_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/black_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/brown_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/cyan_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/green_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/lime_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/magenta_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/orange_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/pink_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/purple_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/red_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/white_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/yellow_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/black_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/brown_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/cyan_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/green_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/light_gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/lime_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/magenta_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/orange_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/pink_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/purple_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/red_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/white_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/yellow_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/black_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/brown_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/cyan_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/green_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_blue_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_gray_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/lime_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/magenta_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/orange_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/pink_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/purple_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/red_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/white_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/yellow_autocrafter_manager.json create mode 100644 refinedstorage-common/src/generated/resources/data/refinedstorage/tags/item/autocrafter_managers.json create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlock.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/package-info.java create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/back.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/black.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/blue.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/brown.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/cyan.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/gray.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/green.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/inactive.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_blue.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_gray.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/lime.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/magenta.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/orange.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/pink.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/purple.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/red.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/white.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/yellow.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/front.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/left.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/right.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/top.png create mode 100644 refinedstorage-common/src/main/resources/data/refinedstorage/advancement/managing_patterns.json create mode 100644 refinedstorage-common/src/main/resources/data/refinedstorage/recipe/autocrafter_manager.json diff --git a/CHANGELOG.md b/CHANGELOG.md index dd4fc954c..6387f7301 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added + +- Autocrafter Manager + ## [2.0.0-milestone.4.8] - 2024-10-12 ### Added diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/autocrafter_manager.json new file mode 100644 index 000000000..9f55b0a13 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/light_blue" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/light_blue", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/black_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/black_autocrafter_manager.json new file mode 100644 index 000000000..466d6130b --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/black_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/black", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/black" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/black", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/black", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/black", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/blue_autocrafter_manager.json new file mode 100644 index 000000000..85f8e32e3 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/blue_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/blue" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/blue", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/brown_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/brown_autocrafter_manager.json new file mode 100644 index 000000000..a065672cd --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/brown_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/brown" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/brown", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/cyan_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/cyan_autocrafter_manager.json new file mode 100644 index 000000000..0d01eb2ae --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/cyan_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/cyan" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/cyan", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/gray_autocrafter_manager.json new file mode 100644 index 000000000..fe3aac601 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/gray_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/gray" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/gray", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/green_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/green_autocrafter_manager.json new file mode 100644 index 000000000..7ee04d8e4 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/green_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/green", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/green" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/green", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/green", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/green", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/light_gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/light_gray_autocrafter_manager.json new file mode 100644 index 000000000..a69a2e2be --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/light_gray_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/light_gray" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/light_gray", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/lime_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/lime_autocrafter_manager.json new file mode 100644 index 000000000..16e4bece4 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/lime_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/lime" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/lime", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/magenta_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/magenta_autocrafter_manager.json new file mode 100644 index 000000000..ba9f345bd --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/magenta_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/magenta" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/magenta", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/orange_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/orange_autocrafter_manager.json new file mode 100644 index 000000000..0f3816d20 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/orange_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/orange" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/orange", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/pink_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/pink_autocrafter_manager.json new file mode 100644 index 000000000..ffd36dca1 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/pink_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/pink" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/pink", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/purple_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/purple_autocrafter_manager.json new file mode 100644 index 000000000..13bdb4b55 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/purple_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/purple" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/purple", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/red_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/red_autocrafter_manager.json new file mode 100644 index 000000000..6ba12bd88 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/red_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/red", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/red" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/red", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/red", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/red", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/white_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/white_autocrafter_manager.json new file mode 100644 index 000000000..ec13b6193 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/white_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/white", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/white" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/white", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/white", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/white", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/yellow_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/yellow_autocrafter_manager.json new file mode 100644 index 000000000..3e1c34025 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/blockstates/yellow_autocrafter_manager.json @@ -0,0 +1,110 @@ +{ + "variants": { + "active=false,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": -90 + }, + "active=false,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90 + }, + "active=false,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 180 + }, + "active=false,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": 90, + "y": 90 + }, + "active=false,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 90 + }, + "active=false,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/inactive" + }, + "active=false,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 180 + }, + "active=false,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": -90 + }, + "active=false,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 180 + }, + "active=false,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90 + }, + "active=false,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "x": -90, + "y": 90 + }, + "active=false,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/inactive", + "y": 270 + }, + "active=true,direction=down_east": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": 90, + "y": -90 + }, + "active=true,direction=down_north": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": 90 + }, + "active=true,direction=down_south": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": 90, + "y": 180 + }, + "active=true,direction=down_west": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": 90, + "y": 90 + }, + "active=true,direction=east": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "y": 90 + }, + "active=true,direction=north": { + "model": "refinedstorage:block/autocrafter_manager/yellow" + }, + "active=true,direction=south": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "y": 180 + }, + "active=true,direction=up_east": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": -90, + "y": -90 + }, + "active=true,direction=up_north": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": -90, + "y": 180 + }, + "active=true,direction=up_south": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": -90 + }, + "active=true,direction=up_west": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "x": -90, + "y": 90 + }, + "active=true,direction=west": { + "model": "refinedstorage:block/autocrafter_manager/yellow", + "y": 270 + } + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/black.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/black.json new file mode 100644 index 000000000..6a0d37d8f --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/black.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/black", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/blue.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/blue.json new file mode 100644 index 000000000..e62469428 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/blue.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/blue", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/brown.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/brown.json new file mode 100644 index 000000000..83f909ddd --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/brown.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/brown", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/cyan.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/cyan.json new file mode 100644 index 000000000..7df62a587 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/cyan.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/cyan", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/gray.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/gray.json new file mode 100644 index 000000000..7ea072d5f --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/gray.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/gray", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/green.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/green.json new file mode 100644 index 000000000..e15704676 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/green.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/green", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/inactive.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/inactive.json new file mode 100644 index 000000000..2ffc2967b --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/inactive.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/inactive", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_blue.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_blue.json new file mode 100644 index 000000000..3825b534e --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_blue.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/light_blue", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_gray.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_gray.json new file mode 100644 index 000000000..116eb8074 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/light_gray.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/light_gray", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/lime.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/lime.json new file mode 100644 index 000000000..1f1f1c6bf --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/lime.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/lime", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/magenta.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/magenta.json new file mode 100644 index 000000000..8f861028e --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/magenta.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/magenta", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/orange.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/orange.json new file mode 100644 index 000000000..9e917fde9 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/orange.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/orange", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/pink.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/pink.json new file mode 100644 index 000000000..58bf54ae0 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/pink.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/pink", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/purple.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/purple.json new file mode 100644 index 000000000..4e8cb2920 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/purple.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/purple", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/red.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/red.json new file mode 100644 index 000000000..479e84319 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/red.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/red", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/white.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/white.json new file mode 100644 index 000000000..ac23a0530 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/white.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/white", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/yellow.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/yellow.json new file mode 100644 index 000000000..176f87ca8 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/block/autocrafter_manager/yellow.json @@ -0,0 +1,13 @@ +{ + "parent": "refinedstorage:block/emissive_north_cutout", + "textures": { + "cutout": "refinedstorage:block/autocrafter_manager/cutouts/yellow", + "down": "refinedstorage:block/bottom", + "east": "refinedstorage:block/autocrafter_manager/right", + "north": "refinedstorage:block/autocrafter_manager/front", + "particle": "refinedstorage:block/autocrafter_manager/right", + "south": "refinedstorage:block/autocrafter_manager/back", + "up": "refinedstorage:block/autocrafter_manager/top", + "west": "refinedstorage:block/autocrafter_manager/left" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/autocrafter_manager.json new file mode 100644 index 000000000..b67ccc227 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/light_blue" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/black_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/black_autocrafter_manager.json new file mode 100644 index 000000000..666893c04 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/black_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/black" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/blue_autocrafter_manager.json new file mode 100644 index 000000000..414f62a42 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/blue_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/blue" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/brown_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/brown_autocrafter_manager.json new file mode 100644 index 000000000..5f9201b07 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/brown_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/brown" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/cyan_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/cyan_autocrafter_manager.json new file mode 100644 index 000000000..59d8e8a38 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/cyan_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/cyan" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/gray_autocrafter_manager.json new file mode 100644 index 000000000..3aed691f6 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/gray_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/gray" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/green_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/green_autocrafter_manager.json new file mode 100644 index 000000000..dcde0ae04 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/green_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/green" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/light_gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/light_gray_autocrafter_manager.json new file mode 100644 index 000000000..6508562b0 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/light_gray_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/light_gray" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/lime_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/lime_autocrafter_manager.json new file mode 100644 index 000000000..951836667 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/lime_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/lime" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/magenta_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/magenta_autocrafter_manager.json new file mode 100644 index 000000000..1ac4bf130 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/magenta_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/magenta" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/orange_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/orange_autocrafter_manager.json new file mode 100644 index 000000000..02093b5a4 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/orange_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/orange" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/pink_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/pink_autocrafter_manager.json new file mode 100644 index 000000000..dd2d03e46 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/pink_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/pink" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/purple_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/purple_autocrafter_manager.json new file mode 100644 index 000000000..8d1da2933 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/purple_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/purple" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/red_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/red_autocrafter_manager.json new file mode 100644 index 000000000..1bb2be211 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/red_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/red" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/white_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/white_autocrafter_manager.json new file mode 100644 index 000000000..b463c5d1f --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/white_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/white" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/yellow_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/yellow_autocrafter_manager.json new file mode 100644 index 000000000..117fe30a4 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/assets/refinedstorage/models/item/yellow_autocrafter_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/autocrafter_manager/yellow" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/black_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/black_autocrafter_manager.json new file mode 100644 index 000000000..f4fb13766 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/black_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/black_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/black_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/blue_autocrafter_manager.json new file mode 100644 index 000000000..30e2f0c40 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/blue_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/blue_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/blue_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/brown_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/brown_autocrafter_manager.json new file mode 100644 index 000000000..81b6a63db --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/brown_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/brown_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/brown_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/cyan_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/cyan_autocrafter_manager.json new file mode 100644 index 000000000..10f89f732 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/cyan_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/cyan_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/cyan_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/gray_autocrafter_manager.json new file mode 100644 index 000000000..575754797 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/gray_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/gray_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/gray_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/green_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/green_autocrafter_manager.json new file mode 100644 index 000000000..a2eb0c10b --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/green_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/green_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/green_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_blue_autocrafter_manager.json new file mode 100644 index 000000000..db6454af9 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_blue_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/light_blue_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/light_blue_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_gray_autocrafter_manager.json new file mode 100644 index 000000000..da0b03028 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/light_gray_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/light_gray_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/light_gray_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/lime_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/lime_autocrafter_manager.json new file mode 100644 index 000000000..3fb336d49 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/lime_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/lime_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/lime_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/magenta_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/magenta_autocrafter_manager.json new file mode 100644 index 000000000..e67e14829 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/magenta_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/magenta_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/magenta_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/orange_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/orange_autocrafter_manager.json new file mode 100644 index 000000000..e6eb48703 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/orange_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/orange_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/orange_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/pink_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/pink_autocrafter_manager.json new file mode 100644 index 000000000..a62f81935 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/pink_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/pink_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/pink_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/purple_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/purple_autocrafter_manager.json new file mode 100644 index 000000000..086c93ce5 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/purple_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/purple_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/purple_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/red_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/red_autocrafter_manager.json new file mode 100644 index 000000000..4429ac710 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/red_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/red_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/red_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/white_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/white_autocrafter_manager.json new file mode 100644 index 000000000..5ed020636 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/white_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/white_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/white_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/yellow_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/yellow_autocrafter_manager.json new file mode 100644 index 000000000..e52711be8 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/advancement/recipes/misc/coloring/yellow_autocrafter_manager.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_autocrafter_managers": { + "conditions": { + "items": [ + { + "items": "#refinedstorage:autocrafter_managers" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "refinedstorage:coloring/yellow_autocrafter_manager" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_autocrafter_managers" + ] + ], + "rewards": { + "recipes": [ + "refinedstorage:coloring/yellow_autocrafter_manager" + ] + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/autocrafter_manager.json new file mode 100644 index 000000000..a3ed4210b --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/black_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/black_autocrafter_manager.json new file mode 100644 index 000000000..311d9e14d --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/black_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:black_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/black_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/blue_autocrafter_manager.json new file mode 100644 index 000000000..fff056fff --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/blue_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:blue_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/blue_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/brown_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/brown_autocrafter_manager.json new file mode 100644 index 000000000..5772b62ae --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/brown_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:brown_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/brown_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/cyan_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/cyan_autocrafter_manager.json new file mode 100644 index 000000000..523e1adca --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/cyan_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:cyan_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/cyan_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/gray_autocrafter_manager.json new file mode 100644 index 000000000..907bdf7f1 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/gray_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:gray_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/gray_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/green_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/green_autocrafter_manager.json new file mode 100644 index 000000000..a4b5d9790 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/green_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:green_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/green_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/light_gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/light_gray_autocrafter_manager.json new file mode 100644 index 000000000..fde016b4a --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/light_gray_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:light_gray_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/light_gray_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/lime_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/lime_autocrafter_manager.json new file mode 100644 index 000000000..f6f5cb187 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/lime_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:lime_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/lime_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/magenta_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/magenta_autocrafter_manager.json new file mode 100644 index 000000000..61f860acd --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/magenta_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:magenta_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/magenta_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/orange_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/orange_autocrafter_manager.json new file mode 100644 index 000000000..4b05ec833 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/orange_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:orange_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/orange_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/pink_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/pink_autocrafter_manager.json new file mode 100644 index 000000000..0a889d982 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/pink_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:pink_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/pink_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/purple_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/purple_autocrafter_manager.json new file mode 100644 index 000000000..80dd54c2a --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/purple_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:purple_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/purple_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/red_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/red_autocrafter_manager.json new file mode 100644 index 000000000..7495e57fe --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/red_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:red_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/red_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/white_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/white_autocrafter_manager.json new file mode 100644 index 000000000..746f1640a --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/white_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:white_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/white_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/yellow_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/yellow_autocrafter_manager.json new file mode 100644 index 000000000..609d9f149 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/loot_table/blocks/yellow_autocrafter_manager.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name" + ], + "source": "block_entity" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:yellow_autocrafter_manager" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "refinedstorage:blocks/yellow_autocrafter_manager" +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/black_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/black_autocrafter_manager.json new file mode 100644 index 000000000..f7f36235c --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/black_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/black" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:black_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/blue_autocrafter_manager.json new file mode 100644 index 000000000..3e849bf79 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/blue_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/blue" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:blue_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/brown_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/brown_autocrafter_manager.json new file mode 100644 index 000000000..00c31120a --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/brown_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/brown" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:brown_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/cyan_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/cyan_autocrafter_manager.json new file mode 100644 index 000000000..7361a3205 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/cyan_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/cyan" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:cyan_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/gray_autocrafter_manager.json new file mode 100644 index 000000000..7c57a97e7 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/gray_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/gray" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:gray_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/green_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/green_autocrafter_manager.json new file mode 100644 index 000000000..7d3ad45e9 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/green_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/green" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:green_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_blue_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_blue_autocrafter_manager.json new file mode 100644 index 000000000..5e8d96831 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_blue_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/light_blue" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_gray_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_gray_autocrafter_manager.json new file mode 100644 index 000000000..6cc9b362b --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/light_gray_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/light_gray" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:light_gray_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/lime_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/lime_autocrafter_manager.json new file mode 100644 index 000000000..238681743 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/lime_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/lime" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:lime_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/magenta_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/magenta_autocrafter_manager.json new file mode 100644 index 000000000..062d4b373 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/magenta_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/magenta" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:magenta_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/orange_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/orange_autocrafter_manager.json new file mode 100644 index 000000000..9eefd8431 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/orange_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/orange" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:orange_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/pink_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/pink_autocrafter_manager.json new file mode 100644 index 000000000..91b40b096 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/pink_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/pink" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:pink_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/purple_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/purple_autocrafter_manager.json new file mode 100644 index 000000000..ac0f70b90 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/purple_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/purple" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:purple_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/red_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/red_autocrafter_manager.json new file mode 100644 index 000000000..c7df37ce7 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/red_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/red" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:red_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/white_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/white_autocrafter_manager.json new file mode 100644 index 000000000..675dd6183 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/white_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/white" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:white_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/yellow_autocrafter_manager.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/yellow_autocrafter_manager.json new file mode 100644 index 000000000..64c0ab243 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/recipe/coloring/yellow_autocrafter_manager.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "refinedstorage:autocrafter_managers" + }, + { + "tag": "c:dyes/yellow" + } + ], + "result": { + "count": 1, + "id": "refinedstorage:yellow_autocrafter_manager" + } +} \ No newline at end of file diff --git a/refinedstorage-common/src/generated/resources/data/refinedstorage/tags/item/autocrafter_managers.json b/refinedstorage-common/src/generated/resources/data/refinedstorage/tags/item/autocrafter_managers.json new file mode 100644 index 000000000..3a4daa615 --- /dev/null +++ b/refinedstorage-common/src/generated/resources/data/refinedstorage/tags/item/autocrafter_managers.json @@ -0,0 +1,20 @@ +{ + "values": [ + "refinedstorage:white_autocrafter_manager", + "refinedstorage:orange_autocrafter_manager", + "refinedstorage:magenta_autocrafter_manager", + "refinedstorage:autocrafter_manager", + "refinedstorage:yellow_autocrafter_manager", + "refinedstorage:lime_autocrafter_manager", + "refinedstorage:pink_autocrafter_manager", + "refinedstorage:gray_autocrafter_manager", + "refinedstorage:light_gray_autocrafter_manager", + "refinedstorage:cyan_autocrafter_manager", + "refinedstorage:purple_autocrafter_manager", + "refinedstorage:blue_autocrafter_manager", + "refinedstorage:brown_autocrafter_manager", + "refinedstorage:green_autocrafter_manager", + "refinedstorage:red_autocrafter_manager", + "refinedstorage:black_autocrafter_manager" + ] +} \ No newline at end of file diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java index fcb2cd470..0d0c676e3 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java @@ -13,18 +13,19 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApiProxy; import com.refinedmods.refinedstorage.common.api.security.PlatformSecurityNetworkComponent; import com.refinedmods.refinedstorage.common.api.upgrade.AbstractUpgradeItem; -import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; -import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; -import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterData; import com.refinedmods.refinedstorage.common.autocrafting.CraftingPatternState; -import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; -import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; -import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridData; import com.refinedmods.refinedstorage.common.autocrafting.PatternItem; import com.refinedmods.refinedstorage.common.autocrafting.PatternState; import com.refinedmods.refinedstorage.common.autocrafting.ProcessingPatternState; import com.refinedmods.refinedstorage.common.autocrafting.SmithingTablePatternState; import com.refinedmods.refinedstorage.common.autocrafting.StonecutterPatternState; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterData; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridData; import com.refinedmods.refinedstorage.common.configurationcard.ConfigurationCardItem; import com.refinedmods.refinedstorage.common.configurationcard.ConfigurationCardState; import com.refinedmods.refinedstorage.common.constructordestructor.BlockBreakDestructorStrategyFactory; @@ -343,6 +344,7 @@ protected final void registerBlocks(final RegistryCallback callback, Blocks.INSTANCE.getRelay().registerBlocks(callback); Blocks.INSTANCE.setDiskInterface(blockEntityProviders.diskInterface()).registerBlocks(callback); Blocks.INSTANCE.getAutocrafter().registerBlocks(callback); + Blocks.INSTANCE.getAutocrafterManager().registerBlocks(callback); } protected final void registerItems(final RegistryCallback callback) { @@ -366,6 +368,7 @@ protected final void registerItems(final RegistryCallback callback) { Blocks.INSTANCE.getRelay().registerItems(callback, Items.INSTANCE::addRelay); Blocks.INSTANCE.getDiskInterface().registerItems(callback, Items.INSTANCE::addDiskInterface); Blocks.INSTANCE.getAutocrafter().registerItems(callback, Items.INSTANCE::addAutocrafter); + Blocks.INSTANCE.getAutocrafterManager().registerItems(callback, Items.INSTANCE::addAutocrafterManager); registerStorageItems(callback); registerUpgrades(callback); } @@ -668,6 +671,11 @@ protected final void registerBlockEntities( ContentIds.AUTOCRAFTER, () -> typeFactory.create(AutocrafterBlockEntity::new, Blocks.INSTANCE.getAutocrafter().toArray()) )); + BlockEntities.INSTANCE.setAutocrafterManager(callback.register( + ContentIds.AUTOCRAFTER_MANAGER, + () -> typeFactory.create(AutocrafterManagerBlockEntity::new, + Blocks.INSTANCE.getAutocrafterManager().toArray()) + )); } protected final void registerMenus(final RegistryCallback> callback, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java index 3daa6a815..c342a9eb3 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java @@ -75,6 +75,8 @@ public interface Config { AutocrafterEntry getAutocrafter(); + SimpleEnergyUsageEntry getAutocrafterManager(); + interface SimpleEnergyUsageEntry { long getEnergyUsage(); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlock.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlock.java new file mode 100644 index 000000000..9c9b88c2c --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlock.java @@ -0,0 +1,76 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.common.content.BlockColorMap; +import com.refinedmods.refinedstorage.common.content.BlockConstants; +import com.refinedmods.refinedstorage.common.content.BlockEntities; +import com.refinedmods.refinedstorage.common.content.Blocks; +import com.refinedmods.refinedstorage.common.support.AbstractActiveColoredDirectionalBlock; +import com.refinedmods.refinedstorage.common.support.AbstractBlockEntityTicker; +import com.refinedmods.refinedstorage.common.support.BaseBlockItem; +import com.refinedmods.refinedstorage.common.support.BlockItemProvider; +import com.refinedmods.refinedstorage.common.support.NetworkNodeBlockItem; +import com.refinedmods.refinedstorage.common.support.direction.BiDirection; +import com.refinedmods.refinedstorage.common.support.direction.BiDirectionType; +import com.refinedmods.refinedstorage.common.support.direction.DirectionType; +import com.refinedmods.refinedstorage.common.support.network.NetworkNodeBlockEntityTicker; + +import javax.annotation.Nullable; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; + +public class AutocrafterManagerBlock + extends AbstractActiveColoredDirectionalBlock + implements BlockItemProvider, EntityBlock { + private static final Component HELP = createTranslation("item", "autocrafter_manager.help"); + private static final AbstractBlockEntityTicker TICKER = + new NetworkNodeBlockEntityTicker<>(BlockEntities.INSTANCE::getAutocrafterManager, ACTIVE); + + public AutocrafterManagerBlock(final DyeColor color, final MutableComponent name) { + super(BlockConstants.PROPERTIES, color, name); + } + + @Override + protected DirectionType getDirectionType() { + return BiDirectionType.INSTANCE; + } + + @Override + public BlockColorMap getBlockColorMap() { + return Blocks.INSTANCE.getAutocrafterManager(); + } + + @Override + public boolean canAlwaysConnect() { + return true; + } + + @Override + public BaseBlockItem createBlockItem() { + return new NetworkNodeBlockItem(this, HELP); + } + + @Override + @Nullable + public BlockEntity newBlockEntity(final BlockPos blockPos, final BlockState blockState) { + return new AutocrafterManagerBlockEntity(blockPos, blockState); + } + + @Override + @Nullable + public BlockEntityTicker getTicker(final Level level, + final BlockState state, + final BlockEntityType type) { + return TICKER.get(level, type); + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java new file mode 100644 index 000000000..c23050b22 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java @@ -0,0 +1,31 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.api.network.impl.node.SimpleNetworkNode; +import com.refinedmods.refinedstorage.common.Platform; +import com.refinedmods.refinedstorage.common.content.BlockEntities; +import com.refinedmods.refinedstorage.common.content.ContentNames; +import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; +import com.refinedmods.refinedstorage.common.support.network.AbstractBaseNetworkNodeContainerBlockEntity; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.level.block.state.BlockState; + +public class AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity { + public AutocrafterManagerBlockEntity(final BlockPos pos, final BlockState state) { + super(BlockEntities.INSTANCE.getAutocrafterManager(), pos, state, new SimpleNetworkNode( + Platform.INSTANCE.getConfig().getAutocrafterManager().getEnergyUsage() + )); + } + + @Override + public Component getName() { + return ContentNames.AUTOCRAFTER_MANAGER; + } + + @Override + protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, + final BlockState newBlockState) { + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/package-info.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/package-info.java new file mode 100644 index 000000000..03b41dc3f --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@FieldsAndMethodsAreNonnullByDefault +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.api.core.FieldsAndMethodsAreNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java index 470567cdf..2b5320718 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/BlockEntities.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerBlockEntity; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; @@ -91,6 +92,8 @@ public final class BlockEntities { private Supplier> diskInterface; @Nullable private Supplier> autocrafter; + @Nullable + private Supplier> autocrafterManager; private BlockEntities() { } @@ -304,4 +307,12 @@ public BlockEntityType getAutocrafter() { public void setAutocrafter(final Supplier> supplier) { this.autocrafter = supplier; } + + public BlockEntityType getAutocrafterManager() { + return requireNonNull(autocrafterManager).get(); + } + + public void setAutocrafterManager(final Supplier> supplier) { + this.autocrafterManager = supplier; + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java index 6408b431d..e3c403d05 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Blocks.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlock; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerBlock; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlock; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractConstructorBlockEntity; import com.refinedmods.refinedstorage.common.constructordestructor.AbstractDestructorBlockEntity; @@ -151,6 +152,12 @@ public final class Blocks { ContentNames.AUTOCRAFTER, COLOR ); + private final BlockColorMap autocrafterManager = new BlockColorMap<>( + AutocrafterManagerBlock::new, + ContentIds.AUTOCRAFTER_MANAGER, + ContentNames.AUTOCRAFTER_MANAGER, + COLOR + ); @Nullable private Supplier quartzEnrichedIronBlock; @@ -422,4 +429,8 @@ public BlockColorMap getDiskInterface() { public BlockColorMap getAutocrafter() { return autocrafter; } + + public BlockColorMap getAutocrafterManager() { + return autocrafterManager; + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentIds.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentIds.java index 31f38d827..69792f5fb 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentIds.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentIds.java @@ -68,6 +68,7 @@ public final class ContentIds { public static final ResourceLocation DISK_INTERFACE = createIdentifier("disk_interface"); public static final ResourceLocation PATTERN = createIdentifier("pattern"); public static final ResourceLocation AUTOCRAFTER = createIdentifier("autocrafter"); + public static final ResourceLocation AUTOCRAFTER_MANAGER = createIdentifier("autocrafter_manager"); private ContentIds() { } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentNames.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentNames.java index 1cacbaacc..8a6233c1a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentNames.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/ContentNames.java @@ -40,6 +40,7 @@ public final class ContentNames { public static final MutableComponent RELAY = name("relay"); public static final MutableComponent DISK_INTERFACE = name("disk_interface"); public static final MutableComponent AUTOCRAFTER = name("autocrafter"); + public static final MutableComponent AUTOCRAFTER_MANAGER = name("autocrafter_manager"); public static final String CLEAR_CRAFTING_MATRIX_TO_NETWORK_TRANSLATION_KEY = createTranslationKey("key", "clear_crafting_grid_matrix_to_network"); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/CreativeModeTabItems.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/CreativeModeTabItems.java index bcae7cd56..f1bc18a0d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/CreativeModeTabItems.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/CreativeModeTabItems.java @@ -59,6 +59,7 @@ private static void appendBlocks(final Consumer consumer) { Items.INSTANCE.getRelays().stream().map(Supplier::get).forEach(itemConsumer); Items.INSTANCE.getDiskInterfaces().stream().map(Supplier::get).forEach(itemConsumer); Items.INSTANCE.getAutocrafters().stream().map(Supplier::get).forEach(itemConsumer); + Items.INSTANCE.getAutocrafterManagers().stream().map(Supplier::get).forEach(itemConsumer); } private static void appendBlockColors(final Consumer consumer, final BlockColorMap map) { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/DefaultEnergyUsage.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/DefaultEnergyUsage.java index 300aa23a8..1da5d7d4b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/DefaultEnergyUsage.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/DefaultEnergyUsage.java @@ -24,6 +24,7 @@ public final class DefaultEnergyUsage { public static final long RELAY_OUTPUT_NETWORK = 8; public static final long AUTOCRAFTER = 4; public static final long AUTOCRAFTER_PER_PATTERN = 2; + public static final long AUTOCRAFTER_MANAGER = 16; public static final long CONTROLLER_CAPACITY = 1000; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Items.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Items.java index 2dfc026af..f16588c5f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Items.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Items.java @@ -52,6 +52,7 @@ public final class Items { private final List> allRelays = new ArrayList<>(); private final List> allDiskInterfaces = new ArrayList<>(); private final List> allAutocrafters = new ArrayList<>(); + private final List> allAutocrafterManagers = new ArrayList<>(); @Nullable private Supplier quartzEnrichedIron; @Nullable @@ -447,6 +448,14 @@ public List> getAutocrafters() { return Collections.unmodifiableList(allAutocrafters); } + public void addAutocrafterManager(final Supplier supplier) { + allAutocrafterManagers.add(supplier); + } + + public List> getAutocrafterManagers() { + return Collections.unmodifiableList(allAutocrafterManagers); + } + public Item getNetworkCard() { return requireNonNull(networkCard).get(); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Tags.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Tags.java index 8763b85fd..e7038a70f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Tags.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Tags.java @@ -28,6 +28,7 @@ public final class Tags { public static final TagKey RELAYS = createTag("relays"); public static final TagKey DISK_INTERFACES = createTag("disk_interfaces"); public static final TagKey AUTOCRAFTERS = createTag("autocrafters"); + public static final TagKey AUTOCRAFTER_MANAGERS = createTag("autocrafter_managers"); private Tags() { } diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json index 42ffeae2d..51a2b8133 100644 --- a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -38,6 +38,7 @@ "block.refinedstorage.relay": "Relay", "block.refinedstorage.disk_interface": "Disk Interface", "block.refinedstorage.autocrafter": "Autocrafter", + "block.refinedstorage.autocrafter_manager": "Autocrafter Manager", "gui.refinedstorage.controller.redstone_mode_help": "When this device is inactive, the storage network will not be able to use this device as an energy source.", "gui.refinedstorage.disk_drive.disks": "Disks", "gui.refinedstorage.storage.redstone_mode_help": "When this device is inactive, the contained storage will no longer be accessible from within the storage network.", @@ -126,7 +127,7 @@ "gui.refinedstorage.scheduling_mode.random.help": "Use a random filter.", "gui.refinedstorage.priority": "Priority", "gui.refinedstorage.priority.storage_help": "The order in which the storage network will insert or extract resources, highest-first.", - "gui.refinedstorage.priority.crafter_help": "If multiple patterns exist for one resource, crafting tasks will prioritize the pattern in the Autocrafter with the highest priority.", + "gui.refinedstorage.priority.crafter_help": "If multiple patterns exist for one resource, crafting tasks will prioritize the pattern in the autocrafter with the highest priority.", "gui.refinedstorage.configure_amount": "Configure amount", "gui.refinedstorage.configure_amount.reset": "Reset", "gui.refinedstorage.configure_amount.set": "Set", @@ -327,6 +328,7 @@ "item.refinedstorage.pattern": "Pattern", "item.refinedstorage.pattern.fuzzy_mode": "Fuzzy mode", "item.refinedstorage.pattern.help": "Used in autocrafting to store the recipe to be crafted. Use while crouching to clear.", + "item.refinedstorage.autocrafter_manager.help": "Allows managing all your autocrafters from a single interface.", "misc.refinedstorage.stored": "Stored: %s", "misc.refinedstorage.stored_with_capacity": "Stored: %s / %s (%d%%)", "misc.refinedstorage.total": "%d total", @@ -397,6 +399,7 @@ "tag.item.refinedstorage.wireless_transmitters": "Wireless Transmitters", "tag.item.refinedstorage.disk_interfaces": "Disk Interfaces", "tag.item.refinedstorage.autocrafters": "Autocrafters", + "tag.item.refinedstorage.autocrafter_managers": "Autocrafter Managers", "text.autoconfig.refinedstorage.title": "Refined Storage Configuration", "refinedstorage.configuration.title": "Refined Storage Configuration", "refinedstorage.configuration.section.refinedstorage.common.toml": "Refined Storage Configuration", @@ -597,6 +600,10 @@ "text.autoconfig.refinedstorage.option.autocrafter.energyUsage.tooltip": "The energy used by the Autocrafter.", "text.autoconfig.refinedstorage.option.autocrafter.energyUsagePerPattern": "Energy usage per pattern", "text.autoconfig.refinedstorage.option.autocrafter.energyUsagePerPattern.tooltip": "The additional energy used per pattern.", + "text.autoconfig.refinedstorage.option.autocrafterManager": "Autocrafter Manager", + "text.autoconfig.refinedstorage.option.autocrafterManager.tooltip": "Configuration for the Autocrafter Manager.", + "text.autoconfig.refinedstorage.option.autocrafterManager.energyUsage": "Energy usage", + "text.autoconfig.refinedstorage.option.autocrafterManager.energyUsage.tooltip": "The energy used by the Autocrafter Manager.", "advancements.refinedstorage.root.description": "Use one or multiple Controllers in a storage network to provide your network with energy", "advancements.refinedstorage.connecting": "Connecting", "advancements.refinedstorage.connecting.description": "Use Cable to connect devices with each other, or place devices against each other", @@ -641,5 +648,7 @@ "advancements.refinedstorage.conditional_connecting": "Conditional connecting", "advancements.refinedstorage.conditional_connecting.description": "Turn entire sections of a storage network on or off and create new branches of your network with a Relay", "advancements.refinedstorage.autocrafting": "Autocrafting", - "advancements.refinedstorage.autocrafting.description": "Automate crafting with an Autocrafter by using patterns created in a Pattern Grid" + "advancements.refinedstorage.autocrafting.description": "Automate crafting with an Autocrafter by using patterns created in a Pattern Grid", + "advancements.refinedstorage.managing_patterns": "Managing patterns", + "advancements.refinedstorage.managing_patterns.description": "Craft an Autocrafter Manager to manage your patterns in a centralized interface" } diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/back.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/back.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb76f755fa9a787972cd4c17b1c3dca2b1ab4b1 GIT binary patch literal 1415 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nDa72B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk&``nLQqR!T z!q~`EN5ROz&{W^RQs2-(*TB%q(7?*bKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlv|9-O^tOeQ%y{DEmM*#b&U;;4N_AQ%`FU*4PfSA({E{RVd~;)WME-p4oIBp4nO9trn3tRivpW-LH$<phIbtAf7XZzyuX?y}6TK
    js(5`t?UIDBps zydCLndOza&&3)TX$$#Ntw($~PaQ$RTQ)AU-lRSy4?42*SJ0GsFxmdA9qgk$bnWoZb zMK@VnzIL^xYOW?3hx(5@Uplo(g}2{>{pby*Tuw=v7q4Ll)rDvtlj$EKMOWD+zsT?&%D#q zZSuvzUsL5n%iaGq8`gzspZGIlE89VbhDqlqTc7{@waRx&(7)?D;?{3+O?r`dBOqvk j%+JG(r;1Me=Q3c({@o?*e|U}qsA%+b^>bP0l+XkKE;Id| literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/black.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/black.png new file mode 100644 index 0000000000000000000000000000000000000000..11f51d272a6d6f195bd07fb799ba9826bd7d21bb GIT binary patch literal 3051 zcmcguZEO@p7`_TZsiGhyA$;h%7*y=u?(Emyu05dkC~fedv{$({P3+w6>~+K4?sj+E zUJI#)KtPZfLZXonf};MY2}U&jA%s9A{D3t4K_Rh{NQep{koZIYV4b&p`1#y#V-UaQIgRaJAn?Q@a#sWn zA6XIzRP~tggrA7Lu4;BB2z5J&g4v9N(Sbni+N=Y$ZOEsRC}mm^`tGSSG-c`$daD%U zVop8kHX8?B)H=8+t_^O}6rEnXhN{h~*gyvPkjiG#mZxSTbk44dzezJoQ#pvgEkf53 zhg2fgOx4>iqU0dQXdK5=AteZ8QIxqFisyKaW119Z7BG{ ze-XOd_Z^jG`}_NY{X)=oQ!G#vh2?mb=NXJ(yaCIHS;q2K7A-`Pr@5x%o3=#}i!f>T z`VksOnx8_(DVepr0!^4OHVYjV1UWLL98lLvIH%W5=bY;ri_$2AEZ@UeP{LxCVzCl@ zQnQ&%3GMmo`*1{sxlM}p;sXw1Taah>x*A&Fhdr(=2Il!KXq=iE49D=&V5i&mZLiy& zf`n4{1S)*fn8G3HnE*vua|$TwDM1~z-bK*2-MDS1i`r=}#zyfV$Wt$EH7(ul_g*Fw zFAP9Y=%WZtgv4-RM&RN+uW~?@z$+a7;PTKImZlDUSPoVg4#WYc@*$PyCxC6;GzO-H z>Y8fUZU*9oGcz!SSjS4`yv1T_ljZr)(oj=0LgP?_rm3qsNE*7N>x=78v5V^dkePR!(WF$k?M$^NZ8z|J8R@77YN}E(JDOITD zr=SsaBAqTYo0BZ?%&5$p?e9jItcR#J5A$rp?}sj`OJRnm%?fs^;62#)@X$d>1RRhN zV<>{mNJ!+Eq#%VDIjm?&PT&y&q2kmZ3|&xxsPaNFhaM&L0l#s$81u8r)0~#k_l|Hx*lNN;kcru!8^&z)RSPpa{-bj(_MQFpd zGZb{3w5jE?i|w=Y!v0iBNXoaV@$xezX*zPvG7Xe_DTP4&i~gon+{~)s|Gr2pIUwZA z0Q>g}k^hh8nQS0yliPUJ$!ft&HHdd&6_@sDioFgLO-_a+1}bur0TM}1C@BmS3|^3A zS<(zh6iuwz|FqZ>4drMkJ2w@Z@L`O6mQI2Ar*w`)7S3B2pAyGVJ3fV0P)*Ugc=*8i zL%=$>t~z>s>4w*SSY7?m$=2QbnyFWJJvP^RX85vO>CSRL?)u{D=vZsl^1a9A9ppz( z^flNG9mj_|kN>jz_cv#MdtuMeSY3UkudZ0Pr7eDT`+LJJZHwu1gZHhGIeTZXIyA3m z$E>%90}FO`Jz4XC{cgjxn^jw?uQX&X?K#-C`0lLz=WpMv8d2W(yv_UOJK0!xw&SAT z(Yfm08g5DL$g<6Uf30kd)Q0NZ#@1Aq+-P6*%vZ``krO)T9YHAF(;`a>ie&KoioPXyL#II>qW4q(?O`ql6lYE~Z zoa6IVcInZW8;h)#RWt2}nyDavHf>?F&$o10)`Ds$atQ?`bR$IGI&+pJbS*@#7a~l= zsz*t^vCl?rea%s|uTzyYa#=00G%I5TY2-p8n@$;yoDGpVy)ypxhG~+>LEO#|S?3uf zVv!c2-n0=R`WZ@P7?ub~ejxI^$SfgPhGl3*paDw(QD%4<1c<^#Vr#Y*ms`Ut3bycH zh)lY!CDU{!lksObziB6EAW0IOkg^OmnK_D(>0x>IR*(O z@dzqhJwAp(Pcj0EvicZMPf~(fa=ne9YuZuMOcisdrRW>M0zXSETCW?LnQ<0-ffpvA zFmzFf^b(0;f)vL@SypC%EPyu{{K4d*5uBPDbYVGIq8JbbjLhQ1lSY6|O^^4E3)NIP zZrW*x7fw&Z1fne?k+T+w$W4ahLPJGO;Sh;k_3OGOiyY7d01>63xP&W#S1BbB6eyqs z85Rnn$V$QD{IIEZdr9TZ&)1h`s#r&9HDpOt`2gYo6%-*)L6sLNNs9w2z$+>bgCfgu zC2eonIxcaTD%a|HrD2V66cjmCQz%XgAS$TwfRcdXJp@hSc)$e|%;B)zdNXC(5mUpQ zb0p!dwv5$dSD{y5Arce@V_vGJy7PkpmcbVdyk|k)K8}1?yw=b$#Vkp9`6B1+x8c@> z9S{Y96AI%kdKRT(VI8yP3&Z*-3p_C@^J+6mgvokB*5+Z38Fw?#Ms*3y@VHe$kLA1rd!Fn%2=IUbBBJ6F zCsG398A{=V03`+`Rbe<5ArL5r{tAmg z{2_KAHS?ml;`Xh0$HTuLUVkMKU;Wwn@a3(rWuAZCz4?(Ht^HrTyKQdAuD+?<=7j@S zPM>YJ)vD;nSDSY%|NQ55mmUmC&8OZ8{&M2?mDa!p{gbNuAEr(uTlSsozf+SW5B~a1 zqWg~r{RHzFt00GvpIX?xOk}g*lSxVF8x?BbirzP z@7Uz26&vS9Hktd9U-iG*we#Cd>y6{@AKex_akx$whW={)e&F2XkEU$dxU-|{&fx0V zvySjVn8KAWoAJU-$)PyJ+JiV`Nvav;^N!#=Io$v8G z-}jxfu6F*MlA_y+d_G@EO?9{q{U>?v_;Khv^|wm^{U%t|OB|oC_(tz7@NM08i_cfI zLa%Rfn~W(^Uau*vVhV8T}*~i-3Z~o^z6qmT@B%le1wWvl`y7P zue9N!mGkSBl`V>>;mMfvQH%#JK8sfHu@N!Qf))cA5 zDoq<=f}bK3iej*U=%)pa6R0wbp%{v!c#>uaT97DCq61j=!I3sw)ug&`RaO`3h47f` zS`tYnlSzM)^_zB-q(xCADTZVi0wD;e-EcvQFr4W*31R3cwr;t)X<(j2Ae*gj2uGG? zTu4}Xv4)eS2@yu7fJM@N%5y0VRFyo=YPI8O<*Gu$I7~ppbr6=$V-ZV{NFF|<*hC_a zcHG%*$fB%oL!zDfb_L*SZry=lgCu~VC~4P$6OgWcDt8>*Rf?)MzeE`VX+ z!VvBS5fGjJD#?VSm z+5%fgDGuTTrFvGWNTLRV0;{Mp!Kwj>Y~g4^q-F2Jt0K$MY(PdF_Uo-QFi*W7pn2r%wT|_&_mMRH#@&%g!%sI217>_GdSkOi$>15Ul6e^_RqGClx%O#H=8PGu{DhS2mpva5O~= zkkCX{Ab7}8gv{~*LI{eAOtB1vbRg&Y<)*U|%}ETK%c1{bdX`ot28<{~hY*Qhg)^cC zS&fnjEr9X^0u<6RkGf(Ypg>vVRh1Kma%RYaaE+Z&Ors6j0|LteHb4g{w4D&H*=7O* zmKE2Pbas(#hMGN}@(GE#Ce~kmh9ymfwmu*R25QNhfc=m9MvS=8Rm01Z0J;q zWq|y5g~;^7878Z|y-6Ru(onU49%T%olUPEfeS~7K(xM{B0iFP&AQLq2r6=G;0Mw+ef;Nr$uePg%`u_M+WKC!`IBwpp$7aQcXr-qe@_|v6*#ka@jZP9`zpqjmX96# z{haeXKi$6J!^$6*Megq0Q2WZeANL+Uxcj;CJMSobbHU#D_Rmi?9-H{go=x2KHykb6 zdGjN8nSG7p@w2bDZf+*23G3)JQ<^5e*5wv1EpA!M&z#Zw=fV(y77($2=Fg)ZXA}A0^j7AYFVm1C@jA#fb3B*Jw7$U?dMg*L_S6gXmgO5%2HS?SA z`{p;l@0)qCYS#3E{E_({kEfurB3Mn{h3@^pAo3jb%WXtngUyOs+v6GXkbCEOwr+pK zK-!!=G#Xr`hXaWB%02=*r9CP8~Vlcpq1q&8rOir_ju5ukrQ+D22l7NF;eArLal zaJ^o!%))b)%?hi_8dO=Mr%a|MB^6>IjvYiL5T_wPm%0wA znot#0W>}b#yns;w;3%K$g_0mhU;@Pf4zNIEA;&;T0fGX3ROX_IH%p5u)xl{QU*s=9 z*E^1>uxv|9i?@aM8de<(Wm#qc$8sD)5RBcLa8Qy-*rT%+g4k9q-E?##LAe%D#AtE? zG>J4lg}9kBo3Jx95yIFcGFj*a?vzqMP0iuVCM%Y5uBj}J;W$n>Ho?Limar5G<={P< zjmL9n+bM4*5oPAqBiatPnwYJ|w$Ws%xV)Ko9Gwl!cB*kFHT@V);JLwOz2O*kz0nH^ zx$bUMIC``fhi*?dC{F6VK;51k)KtnWj2y!X8%8XvovLhX6bHQ=HEy1s(2N#)ygTvC z031XP4$!WU7~p4k5au`qKt+U40rCOT&=8TPh8)xtEHeOxAy7C;5kNPvq3O}qKB1bb zL=7vB$inGyREJqJQJ3--3MrKd+d&BxR|W$#3Dv9Xnj#A-K+x}FG~`1J0)n6M`+1(> z{Rn6x#{;NFvg3n>+T@DL9iPrG%}|Mr+-fKgA|OME89(AwMvV%Pk!2n+B8*B=)yD$> zg{-w_ES;n{igmT>Mx_ypQS6s^Rf{mZ<|D>5*A9%h4^fkO0rI{G;jq(hnGrLrkf9OI zd75%pTOsC2sL0K)01Y#ZHLg@+P3cA-2gt=j_nGOh?W4c5du~D}6mvA?>P1QUpF>I) z2|yA>Ud*&t=}8=`3F?G3I~|DBwWqdwk6X#y3{@(0n`o{zQ)}kn#>`htr&39&AT>P& z)m10f=uETT!vgn@%Cy;*dQ8Z=i)zy_+lV?X$ik&{gyBB3g6%DM8#UiObm$WxfD&e+ zGA}VA7623BMIR&iWii)~J5nf)o3kd$Lko#m%j(ll)8T{O_uOD+WJU-Z|f;`&z&|Mx{=-2+0p z46uK%5b6J5n#pPI+N3sKrKeiZUk#F-SRtjok7BPuS(PG0(MXme3>4k;M54?fKFaZ; zB#CMixr%nJ8UM7{yBbQ-(B<5eZ6b#;_cM12BtN-xBuYkS_ zl0=wo&@@_u=`)2W}0VRs36Y?BE@X&+Obb zb?S8Qrji?Ttu1FBo_+nhxfdr^3}@TdiMv0nDOxb3YRA%%H7oAl_4bzN#K1Y}$hwkO zmRpwwq5!q+>GSW5ZQC4d+a#ZzfBe+tKf@!A|8VX7wFQlz4J$4#A76g8`aWvdsHG2T zr)w8=gbGg$*nVXH+BJtxflV8Xl?U7P6JNK7R<1hNar^cs9~Vr{Tg~kGqH@fkEAH97 NvV2zX@YE%%{sOz71;hXV literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/gray.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..d129f17ddd7bf0a1a429606e356da879a50281f8 GIT binary patch literal 3071 zcmcImYitx%6kbG0t&lWuu;QjL%p@y_mc+e%9tlu71w z&v(z`yXTyHpR2AapO#;k9|#1dRaQi6$h*M5^QMsJyn*YGyzaIun%qF(p6UKQDX??b z%s?Q&&8Tbi8e=O}%}NF#vf?#Uh8dx+eBMJ-28z%PVvLK~ zrMShY=yq^zcU7I%-Kr^wE`Eesl2VC+B=#VcN+wKKO-1OmUX^_N!z@juAzo{QF7XXg zjj?K~)N(K-1vy6JIGzeCK_G=f61SM*Ii6!Vkp(;hB$W%PAWUU1npks?uGU1CXKj(c z2;Jg&w#u@dot?o>A!s?xEKn4M<#?9o8G>NkF4Kc4#&nAYHAJziIfm^SmPz> zA~f+d6GGC?sWsg!O@uHu1#K1tIX|Q{5NSD_-R>mP#*xP21Wsbpa|ssYu!N;pEC(M| zZ8DidyIxrb@hBVHsA#vY%f@UCcCB_t!(|=BV$q;uu2+MHsF}cY0?$phTP)9VTdXli z$caZ#;TifE27Sp0C{7t;Kz&ILYOAFVhMwirSyo~&cd7?{qj(VHsRa#&iL6d{p&xj5 z0**otM`%Bh7*1vcu8!wb4yYnn#E}m!1C5c?M9_o7!3x8HI>4!XSQVrZU<(;~*SJum zsk-GPAz3&h37au%o6Tu!v6xzEx*jw&Tp5kf#MPi-AT=%mfde6t_y|RYmqR)emoa37 zaGaO10A)=Q2IogDt=&&5e}1OEkfjkFxz$j09Vu82X^aMBi9t9dFp4N428T&)=|Dh8 z$!S~V7^K8uVz^e{D?~KvSe670#TfyGF(ac8U=$GdA0p8Z0>nGQ;gH=@D`7b?3lYwV zet)%9qMo=4{rZZ~AUoLTr)r`-GZ^MMas?Y0A$RHEq9^v@YU+ zB#MHV9j`W0IMEn22y1S}5ox%jX{5yOWPXLJ6^2W4t}EMXYH?fkD`8OSqEw-l2|@F- z6C*l1Y>cwN6QeStwzCBjvTl;K8JKJ7UMF;LNi$)1+^S&5a^8g%oW!%W))< zT0kVCFd!){%On^@kP!e#6XQ@GEtpXo!fg&lv&;_c3`;Bd&Q#?82ib;BErmLv@ZGioE zhsgX#GfXb`*CxI3s-yLSiRK{LiB;0t$7%KmD4G-xiwsnxI0Hn#JfWyCP|$fnlq6Bp zp`X#dHtWAOdq0QLGz>d84GxjRnE#nO1(KiKITD+sZXI$;yxiVHPNb7UmC=$qdE3cX zBKwY27i{b~JAZS1VZ%DOD0^4Yd36s*q#(T_F!IN(Wdtg^{k%qtUU z3$~~yW|lrWW97R)>UZp!(QCeb{NmCBXO6E~v2*X*;C-8pU!3(r?a|9~K3KhI-d7;d zHoIs~H1BEmg@J2Rk0c~5RQU6X^+jI~>^i#csU0teV(;zSviMthchz@&?mIjF`f1it z=g{w8&OCT}e&w=)J7;e%53Je0I>yc2UOfG*89sRWSy<8Z+S&tW4mUqvvhbw-iSf|Y hZGT^9*U#w>d~;;)DrN5UC;TINWm#49!)5C>`~#PW{tEyA literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/green.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/green.png new file mode 100644 index 0000000000000000000000000000000000000000..9a51df363cba15f9e34f2d4faa2a9cbfe31e6a9f GIT binary patch literal 3079 zcmcImYitxn96vx&st{gL#2D5k60Pp-d-rzjQQBUiC0twD1Fm1x+1=T8?cMIOyS=+s z8!Dm}j1mHTAqMCNm7oxaFN`Ew1bh%*i62BHMy-#KXoCVJXvEojwUw4OD4Xo;?96Ze zkKg?N|Cx;qb<3ug%r6N90@G`2B8})f(|>QCirNK#Tn6Yf&8}&71A$xS`0u2^ju++y z0wrsWSlo+8SIDZB3lVflZxtF}1Tzl{CD3F;8pG7Aw0ocLczywl z01t+7KadD2M6gthVPuMydHQ||b*LOPib7KZ9vBXm2#Su;l+5rlM~whmnxS`$3)NIv zx11zE8)qaz3nXo`C95qOm1|Ac1EvaVBVinw8Z-<|R&k^eWRp6f-#H$BUfR--JpR zGC<&Ymd}qj7#Wy|M-0T8n=?chKGQsM#;;_4hRQXDi(;-LUu&A++I%lzVA-UUftqtc z^`jGNcz)OzWrHV1Wln6m6(X{(616#)Yw2DZIIyAxF+6TokYgF|g4ESbr$vsYXaN$s z#0mrtIf_tNUL=H&q$(84KuC)P*RM34m1$09*g_6ni|Kh<)mC7(Ky(O^__aGD0wu&t zKp?nKNFxLdIRiw18jhD#O;mNjNTWG3YC*Wp&Zw4|g3hqOvVjB8K?)r=jO&h-#DHxl z3^kiwWXja?=Tk8uG0(z=%FmdjY0xo-#lUbaMH8_9QQx=`H?eAXWwKo7O(OjZLaq#u z|E>_Z|45F>rT*Sz4_rUz+t_i@hI1SsI4jn+ikdGUj)Sw?On$yhlP4<*kEmiHGN(69a)sWwnutSm?Q9 zTkC^WE9V|xH~7Y?MT_42qG#iVvN`k?>b)hec5f`{ox5_wmYNmK-P7aUM`y&J=@EWu z8`$OE`cPS^ymF)ExOKmG4W{dUE4RBPd!GJPwih;cxr; zPxdT*ieo=scJZi+Ke4V!}yC*gC^)t^qho7yV{NthJ2aa6oU%ap7#HZiP z+JDEz{WI1dTHSbdQ>Zr-4@~)J>y6l&6$4-I+;@;Vc#eIde)9J>Y-PU^H+P-i_2=15 o@$dRC?S8P&I(K0#LT=By}Z;C1rt33 zJtM=93Yk-ZidK5MIEGmGFP#+4byR`JWjE)?wH>?ut1gpOyx_Fv>%IQNR}$3ts|7B` zcN~;G@_?_udF!+uLl$1efS!p#UXP^>*P3cBUAJ18S>^k^x?7*vF}%4D;H?C?l}1VLLn3Dij3znvx*ggj%M(5^>bP0l+XkK D5TR|G literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_blue.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..9e25a25d44d0487f060d8cbd75c7ab93730aff60 GIT binary patch literal 533 zcmV+w0_y#VP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^XO*0N*(00D(bL_t(IPot2h8IfEx(bb(3)&&n?2ippfM#&o&HRMFviUL~Sv4CO2yY*l!t{Sc^3 zkU!J z++V8_TCcLAeHW-iF!=G1lz8j#hWIRT;-8IiG4`w-i;rw_D^X)vz2XM?ed4661f5GFi{At)5&TaA%XSi2wv)i}-$Tc5 Xh(H4G2jC7p00000NkvXXu0mjfP~zjd literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_gray.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..8618f2d9ed22f01ecd9546b0858c48a653c9fba5 GIT binary patch literal 3033 zcmcImZEO@p7(SF3LD3>_jbbprB`T)SDSK`HWA|7>|AftyWM4X z+ulK9L}Nsv#Kfox)=1QVsRZ~Vfe_S4ia&s0QW9ejt2Kdyn4Aeen)s*A-d9^`X@j!K ze$D&L`|-^CzB6xkv~OFsbk)*OD737tHQveIb;14UBkcLiok`4IOPtmoFBE!gMQ|?) z9UfX43N77ZCcFLa#0xsHb75@QDH_h_9EJ{sHf+i}nDkMfOVM7_it)vB-}0Pk#Q2?Z z0w$bhnlW4Vx^&0h_9WTcM>K=qw2|A8*O`JG^)Z*vWi3z7$M}+7oqY$x0?(BoeqW4l z3Jh}Hi4LyWb}6TXAs`TnoT`P95{W2qJtsmD3Q!i12#}(~h>ldQa`DWXYoztg_|}Ro z_7~$bzVGOQFgQ3E9+bki+bbYV(*!6Aq6ioQcm>PHd0=@BRSj|K5!ZBl)3&%kBTm`< zevD_HmP5!nHMN#kp@|VD+k z)#h?FwCA@BFpny+&5HJt1&0cq)U*3tLR$uy#fGY5p5IBQs9C^t2Cq$aGPZAf8G8;A zYT_AG_-1+zgMnlQl;+Jjpn;?Yb@XPJV&8U?wwB8TO#p7zAFK zK;zh_F+NBn0HZ*HNm0}x(q*&`vJY5>CRl13*vHes8h|K?pf0MqEY1MihM6wR3pI$I zw%r_N3uoqVFBKfCw`47m(AzA}#}=V&@fgos4V$K+Q&rO-MHm(0 zUUW@X;y629Yv7f^G^S}(k%*B3lA%%%H6n;9O9cY1xJsIM50DudlYs%HDkgQ^JGC7|G0k@w6apAvUjCZky7xgcNklKma5bukAN zS(aFkrST3kPqW=|ld zsk(##%c$&6wSwe)o11DsbCPCI*PNCE)2-B8;QmK@^Jd(_y5Zf$@_-jf2o4D4HX!`F zLzMsHWhS=GQgUW0!R+Z6U!RFQd*Q`MUhFG zZ5?HA?El*AgB&W+Fzwt_9b$*E;InoLWIwfYB(+%Gy6luVGCuNSD75H_ws=!A`tHd4 z=ZC-FT(|XVc>8zZFZQfeJ}bUAakU{+pS`BCbz6>@tCAnAzjS%qYX?r%^@;8%(p$2 ztiSbi?)v!9KI!iayt(+y4J%(f`*OIuukqk`!*5rPoaj?NUiRz0A@A`En-3qo)_>)9 z=SXqis~;BD-Yl$6)_1Kv$iIVrDNY=_J>Gb3tk^c{>wkQ_e`0ml$jaui34fP*<>I=b m_G5)N#;#3HzIk%dlP&u{uYa!V%bUUByRD@?eqzfjum1!2&h9z@ literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/lime.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/lime.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e2bb4572c5ea4ca29421df2f72b976952494ce GIT binary patch literal 3081 zcmcImZEO@p7(SXPr9c7_B4Uio){qk1+wZ;Gl`AQ|LW^9f?Gdh#L}q8^dQ0zim)&i9 zCB}dWffk7gL}Hg;{Bm6kRrm)!2` zywAKJ&%EzD)6>+rYIeoKia;PRyP-bXOx|<+fBB>2`Sf4IfV^hd^{s9oFms;&pBC8P zzaS8(*lffTULv+egH|R8kfq~bHe(ZXAh2wC)&{U0dz6mb3^PLC`1CYQ87M-pmt$Pa zuEi;%ev5-!wlv1!mUgHjdU-XqEUOU(8SDWnn@O9lmW|Lky&4(&(=1KpAYOZfuJH|0 ziC7a=YdM%wf*b=mPM|_+kXIy0;hv=gPT*KhW_f|(6^)ZLK13CMG_mHOq}Ci=S+GUE zB6Q00Y>j2Ry1Ig0V$gEhSYB0CmJ?V(UPt#cTdQ?2@GK{8S?OZ#G!=cL1U@KGRqG8CSzYcDKk&i= z90eYZ(0(E@T$mBLxFBd8ugUyUjtsawG)7Vr0S}A@s|?4-c}^1uSQ!Jhkdf@36pEmh zw44ke8)sxd8)j{@EoUtj(;7_I117``(Fjdk4H^d0pbBIis}h4$AkCqJS|UDu#Zq>!QX>njjWy=s{dB&%TU8KZkNOjJh`!r^sc@AC_)`B7Eu*) z`;3YgXRd$e$hHw1PTIRlWaFL(Bf7C-w~1@4HghwClj$g*8>^t8+C~*KTHenClxxw$xXYikSmazXWHzYY%lGSKtb^q=m2 le(BKF(4FDa+y`HTZvSxL;H5XSJ^p3Ap{_A{e8t9B{{iQA0vZ4S literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/magenta.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe755a6785d4fcd9b250b218fe7813c65a63981 GIT binary patch literal 3062 zcmcguYitx%6kZa-OOWReGzNyL5KWn#_w3HdLQ1!_4Q#3H0&Nt+ow;{*r`??yW~SY3 zMF}LvLLx-aCX@ieR=5_CP z&pG$I-#Pbgs;_%`(u7AR1OkCcwKdTO{GQ_9>n-v>Zf8L59*8h9g39kd*{MV&)SZ!!a}?(kw@@lEMfI8zKr9iM=^cR~n+#1z-3t zLMA=WR%kkt$pkZe&~g$qE6Xy?a5TqJ7(uxmrU$Z=>6R5OM3JjGhV2=aN%$6lYPES0 z5=WY!LfS5wHQfSDm@qmEY?=)+{*-b+sFiSbo0G~phZ>DiD2+_d#aOn4#Vo~QCHSCb z)9Di0^{U!&M1{Exigx22HliDlYqdEVs%pm`%Zh=yUIXf*W(31AyfoNOTAt-5tszJ# zbq}DzGxQ-G`aJ`nC~FJ>^?OQCTd8yq@GK{8S*fCS>Wi@v92?|_CsrCJv@-6K{=^Fd zP!xD5Li$3Ym@vgNagI|MRuS2927fSlXbeje0uS^D%M`=LSw_Klfg1p}prLmR3x%4Z zTTU9_g)`D1foR)IG}G(zG~gN6Z>u&%0*4ZT zw6@GKaEgOef2)2}5L?tySmHIPQar?=g`vPwGOPLz5z0IcHKbw=`}|f~Da(mj5OdCx zgumJfHjhIEettzrw$Rw*OEuM&Zwzq^zG&8e7W$iq>F?`aZW@?kjwF1&C^`R)xOCwF zBvItWLVLZDMX9E!fmw6&fk^#(ng{mymCVmjrN(fv<~j9@! zbs|U>nvFpgcw|)O&1RAalXV}}=3%a-dl}%MiUekO*sP$33f=|n_Ya*72`s}(h|*=O zO%VwUrSf8klESj4GCYS68!Ary-q3l46%>vy=Fo$LUZ7P=0yBZ|CPb4DJ{bl3|bKW*tl-iLo#ORF|$!*y`W=&5$_tB-T zV|4YWH9K40Ie%f%9d>&7=u;i~i`}bd&8h7?bH4lLyISpN-rO?#Y}pTUe)n!S{L;Iy zchgjzydnR3ZK+(r>^r=wXKrlA^)~&lIm?NK${j+6v V{fv_>q<=E6t*VQ@zj)2YzW{{A{SyEH literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/orange.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb06912dc00af5e4ac93a9b651f334ef6971a32 GIT binary patch literal 3032 zcmcImTWl0n7@i6mskAoW6=EEwL?w83?lU_hE7WeGOI&Em0xdD2XJ*dqPP#iYotbvG zM57WkqS27}q7|Z12xyGf2h&JV^nvoyN<*tRaEZ|l|-gIf78xuT$A1vwNzvXIN#zFLS;MZGHi4u@%qEJA|r7}XRSBs-FA zWV7QTQi?D@XBdu@l?W>dg2X&Xatz1Nj7YN_U?r6iR8}U-7lo~PhN-s4SC?(!zZjJX z0#~K!d_Et^^AX2O)2yN>G{eyx2QUKo{dNEg!1fy}8sf;;J@iVD^=&`?r^x@xnBVBmNu$H`W5r>)`}$*~cRd|8&2L|76x9PfZ{Mf zF)B=Zn{w1NWXUjvinjHh zg-aY}Cu$A7GO$JyMI~N0G{74&0#QR?fx>FxLo^g#V0l@?9FE&1zIOqDyy=DXIDSu@xvRITV)Jq}gVRj;e zDi2#zEb#28EUC?B5GLy?SzChnjv3^khnmuu;Tfxfp3Zq6_Fdg|Ru))>l@QJ*UIHQ# z7@+Z@45X-{YYfjJ#LAV>uXLSPSwZFaN)26$>t$N?47Ae-Z$dP6?ZN00FG4{xfTD>e z5E(%M3U3;Kmys?+6`bb+oGO?p8^U!CMtAH!ta z_t{2yf2tNF893y4`H_&c+M6-sX4eg`ESBrMNOX8WD769l-yNd# zA1^VvI$WFL#;Z=%3uc>xcqdkIYoDRn8?2&Bnk)jSNE%?pusort0LYshk2elcH;Wk^ zYIFW;vk!BqNW+A4Q)LJr#=_6)DG>iu&ymQ+b?f0%V*ULW(gaacmxwo|qAwnQ`Qx>7 zni@WT^0nPdckN!f@0nfgw=Efc`_x+<1L-Y~6I)k})qMR&?WXN5!btOX#>x@x!l8#Q zWxpJ;p6&eoGRqIIjb|3_*>vtO+4|0rGg}gagW^jc&Rs>m`!vyaV_{Ue^HO7zJNU%j z^S>>h`_$+;ad;0q`pr>rVDH>Jx}N`eNw!OQT^wqd|H|+$+rL=5;Nq#RUBRC(%=zG} zAC8Z%Ik#Ro0|(#lxqJSt)YwlaHeR}C#be8secv{3M}Ae!4fgHF*6bfRefr4RhVJ^4 zeyaAqV~bn&FB;l$@zs&VpR^qP?5}+bddT{NR%&SdN9}apeKWDYuKv)@u7jt3{PggN pvyI&yC%+wfp@WE6`455bdrp6bH5@SM)#^4KyBpBaBoVkC!N=qA&OKx{| zzTbR*e)E0b%xeSv+q*hfc7{Tsu4G?gkiHkOe@8oguKD98qObeizFmGOv|tJQ&kMbC zaz!ZAdB93%f=ucu!*ohvgq64+jP|F^(fy{5`R=XUmWn|Ylt_TMN~vi3MkU5q^%``{rUjm>LW2Dbfq7k|0TdB7i?)2dDyUe{DlUg7~Iqxq;=_9Mg!h&QK8J zsi(CNN^VoF?bm6dgb5Yo3NS3Pkg7mzHgWEdSF9Sxra+3MMC`z)SlGl;mQtxEd|I`o zQWNb5y~EU_dTi68{q%@SghApvL!L=`hpEN24afXokW5lDhvgLBTX~6+zbYpWD1m2tQnw8(uBH3+#@J(ytLyK8@V&k@QssTSmHM9v~28@{f#W}`T~+b z0g3S}k$@NlvY3`6LxhF`9~bFBtU*&WH8BcMD_932OheJ2cuAiEcCeKjnH7pnBjJ72YyN*PJp50Gt=WFp2>SHqTt4MdZlh`Iuxlv4pK0H7;a269e|Mp4d; zXd-H?PdMffODeX$R$tgLsgCAu7!X2H!vq34(12n_bb#b&1ejEdq|4c?iIs-7r#*|7 zI4ZVkWnN*bF-M}RY~n1Cu|_}?MMCOO72{!jGQ(1}I8>X|B$56E$ewliu36-h;%97&QY`Tt%NL_+e+O+{)B#mdWEy03 ze!!}bVkTix*8G|yYO7?|R0->3tU`@G%cnUvQtvf8$btH(XmQn|q`OuN!DQJ;>9PtG5)naG zRy3eSbu%l<5+P7)gnp~*vH>H8BsXg4zqnqf)hr-8Pv{{e@OKgnkrZso07*mwni`P+ zifS^ANWxe&Q8YSzFw-`KyBv(^*u%tYNh}w6h#sWG^J9F@b4na?-J)eyt4kQRas7O1 z79ZY326o7O!3!uWv6Dh3Y=OkHCRmIHFqod}HbEnOo zIYYMFMt2Ojf+Q){Q5y={m8PzzkR#+>)k(&Z{B=n&o^rP z*_Fp{EDwEoBYtA(v7UU}p^`Y(-Z|Fs?(aumym#+C=av~=6HjLH@wV<&&!0+K>mDhc z{=VyMWqyBq_vb0+;o!omw>z$X);`|0sYjcDUtL)7mmOWW>|FZMJ=VhEH|G8P*6tgZ zF24NU$A8bic4ajlJN4$deRAQ$vlC1A99(1kx&G73%g>x1-Tu;rHNX6jJb2>t#l-lw y$OD)4qf5rxw!Uz__=QS-+IR8h%>{?%oewQ}EO&C0kgM!wo$T#TeDcKJSN;Jvh|B;0 literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/purple.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..259a8be79c1da2f9ce5a3dc6e248ef84b11f7bf9 GIT binary patch literal 3086 zcmcguYitx%6kdo`C?F6T5d;~hVicI2*Us$D$ck;ZwMDlr?E)?SkUKMXwj;YU!_2h1 zt>S}+qy{3vNCeSXz+ecXCITV+Kv40KC^aIYCSWiEO5!7mMl`AS?yIe|w86(D^SbA| z=bZc9bIv`T^|kkmE1p{H^ZCZrR7V=ndjh^kU5lPGe(nM2HQKIjc747vlkh#lw`J>% zK40;2Bi7_KMembUE9nQCr9gi=X(P1HH+Npz2I?~C5ekeOW|;ip;31MQv@p3?h%!;T z0=5{{9S&^lsEw%|%T!4t=iNojP0L6@5_*70CljVCr^94MuZ+I&FijE}h_@_EmSKZL zQ?#C_upCH;euh#Rh9iQKpA`cEk(onq49C!nK(idhiZTFTGP$Zgb1V4z@}M0gO`*6YH9&zw>pW8aZROR0w$s9xd_V^u!yB-v;ZGa zZ8BLvyIy4*@+h~q0nu)(-G+1nbgfoLg_Ui{Vrkwn*K2^i)C^-ff)^&+EtY4wE!H3; z6vX|g@Ce$%@Em3J9r`AVP&=Q36mB8`3ES z27@Z(L#o6C^7A8>+KPh;&(G$UW~oR=VK-z!RkeT)6iVlU3dJh{i3$Z2KFc~wIyv>>EHT7X4fDfl615+7jspn^E;wOe5&EGKGd zh;yVL@3xH8BUb^=uQ18x2AgoGCR($DL5@Ke&EjWH-aLf7SG>?P5XBrx;CPWU_8U>@ zLJo+6zzezYdLs=JO%VgJ=4Krc`%0SoOK>H_87fyBE{eJKT&-z@%X41|gUBSM4Akrr zR2-d9BXh&X02@3!Dzj=+EfA4)g{aNKTub*-z=36P#PE<=K@aA<3)-&iIvWhI3@btk zMU6-aFu+g>F9azuB&iC+a}ct@{L(LXotN2w%<=ggx*FGWw5lz@j6-w?(d5-HM$i?& z1a*!I2#QXLC>N*@!-y2a1BKPOfS~dy(JtSI0Sm%^ycpFo+o01Yux#J}bdW;F4U@WK zB?(~L2}8|f7u{xRx$~)zkc4Luz2#?6(lqE8ePW=mm4XYzzi4mBh#Out{NFc;#tlNY z4A6hC5ZV7omdPr-H<^Q19;g-!HwMv3EThssM6uUcNfni#KmkcaM~8sZ69^Ioc%9<~ zQ4~}i;E2ZBtbbbUaSUZ>=+iglhfp(yKMP$T`YH60&_sFbpf2&7wGW}@b3{c=q%0O% z|IX8g=a-k2JaOp2mXfkDMq_9Btz}(BCuZ%c9KT?E_w16Ejs7Kjzc1=ob$;}Nli&CN zc5iEaob0%G>VR82=G$#u&yBs5>KS|P+#lols)d`YPQ^ZXbmE3-V(LzM>imc-JT-FH zliPloS-#L%GGpfvLp`=`+-u*ReC6!3_wMl7vsSsw(?@@N_~J)Z?S`{v$CRc8ookEM zzcsQm{qmvOJ>Bl6{TGg%+@G9xedqCy_pSJq{_M6%tIxdm{7b)&l6SvApP5kn4E$nW z-RoPY+;VBtlt-@He}A3)^~^JJIR4YRvY7Gt&AzpJ=YIL_=5%N2HPnU1Ij??oa6>s< zQ%}yH+`Ogh*n$<)Pp|p&_^87lp4~3DHch-i*V#AYCySPzxM}x=7dP$nHcqeWc5hj< zdNu29f2_9T?bM<*cTfB6)1%tT)8~77jvOEHfKlGn_5Q)q$+%;$sjQ9cDPOwsFF+{+ AxBvhE literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/red.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/red.png new file mode 100644 index 0000000000000000000000000000000000000000..c6db80aa36c260290a1723a909311434b2ed92f0 GIT binary patch literal 3050 zcmcguTWl0n7+wNGscD326bX^Zv=5-p&V6QQWI^ZxyTX>zmb6tKI6LP|cVu^FIx}sz z4T(yTOQI%9t(QoGA^|iI8v+`Of@!Mo02SyV zRv=K?V$?T!jq#PLW~GAwS_u@)q-~521QsmH*g#v4JR*Ub4Kqw$={rgi1`Lx8Vw{QF zRVZmhI~`QlSzWJnuGbVuE?P(|$f(#r8hL=oq*JD=X2N9Fu8P0?W|}0j5N~~$T=PCk!CrHl~hJhS((URB=+V&U9F8Q%lpEA zVKV7?wo23O?d`#KK4>}3G^;2I&2TiwQ5ZqF9i|5|l<8I!EJTp2Ifm^SmPz;)LBeYF z!X%C~H-)raG;6wfnlNE>2G}$kWc(>*flw>r>{ch0bq+NerBE7~o{O<;5sO)h$BXb$ z&8E{uwCgQx!x81@HY(b!@30YFi(ISK(a_R1?6IN{nCsP|A!;Tt9K(x)?WE;dZqgcq zgktvyDm+6U!=c|Z0*W%m7*M~b2({HJ2LaD=>Mbi(&`wPuHiBb=95JuKFrn4%&i5yt zAAlmjLt)Yv62*ilo~h?Jm0?wpeT=~$Ob!~y(uBYR!@&y0u=OmXa-zyfBfu6k^p0_% zP*ZiwNdvraMjA9D+BTcB-r{jJX1X3QH57}4NgQg>Frdl_9D<@KQIe<#lmZ2wN+>vL zi4%aVu@X{bt}s4gX|2Af{PDT`f|iDD6jwu)AOjE-1PZV^PicanPzsk2D99>2i-0Cd z5EZPgatxf}AT`{o9~HzFbrh0#4JIfa%7_X*8Y6>JjS&O0=H>#ChW9j$?C~p^pP_2haIxk(^0lT8wdB8229Zrl6==CB zXudiTB=gP2C<{C>DsyJrlL(V_2i4|auBChJz(I?fF~j3#1wB^qE@-=R=&UTT43;3J zE4)OBNMNW0FUph@QnUoaa|p3=Vd}Ss&a14Ta(p3&?k4m+ty&V8%?NKoGrxQjAof_$QdRq8#n-Oq{wl@r0!U0 z0@!xS(6ZS@x0x`%KNS;_@GN4e{ESH&M2;~`1H-)(Lm>V|f8#1{V%6|}UnJT;Amqvb z{r3uy`;X+9T;{J$cH>n?s|6F)Al`{pT-wJe_PD5PQbHCfphyXd75(%CqCx>)=Xg<) zL`?_2qJ3-DKP~pYhO#saJ2w@Y@L|mVES>`KPw^ayOq{n4J|zx5)wCfHm^3#QSzI4_ zd0_iz)%{P-*mU$@*QUtyGI9#};?^zaAI@w%5`8~$Zwsc<<0v~_D+g+m%rAy<@w4-dRBbg zaIDfi)4e^ZrTTWP+dR2v*UUE#e*a_1tFG9x;_$O4re^qaoBR7`mh$Jmy7=j-s=fEb z$@^aDyLs!QE}~`OTUS^2tX;V$`reMp4IQhVh|TUjZ1-I`zx(W(wF6ss>|!cD`1R7c z$=`g<9hlbDxvgwkhqzC;_-L#|_fB^oy72@3-~;-tNdFh^o{H@y<$GFQn!NDC6Z?PB z|7iO11tT;+xNP5x;- NwzN8OV9C0Te*uZl_C){y literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/white.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/cutouts/white.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f147a490b7a1598ac92dcf47acd9088fa9fdae GIT binary patch literal 2988 zcmcguTWl0n7+w-$N|B@iABZmwQ%p2^cIM1=XTpl5Q|uZSO1p$&0^!V=GwsmbnPFzy z-4=NeAqrj|kQf7mXh@7{0!HJDs6ieiCLkolXcVt68hwx^#7pF%p0l@ZwWSSSCYjs$ zzw_VD_y6Y{>f7|liuSwPQ>oO7T(8wn-yQ63yMsROxiO9CYgyR4Jx-;TuVVL-)Ugw* zQ>penUSTj9%s*!0pp-^VV3TyE6jF35wQhYSM0kWGoK1#2Kg(Z#_Z-i8PL|)M=EZ#2 zO@_VRiHHnLY%1W15o|d8`iHo66_Y9`kpyv-QqhmiN|vwcHR(4S7I>}-Nk+1K7c9U*-q9Fkqh9QWOAW48CKs@dzr~>@Bv!THvF^;@2@dBS?8j&50CRv_( zS_`2RHr4uZJxw%WLIs5aOp7d}D$v1ATsRsPtHvEHkRmA&KZz+8HnB8I`Fs;Tr`l4f ziH?(=G3rr0wmH#pVLT*4KZ%3U2$P;MYO%B7Se*2enba&|I)yhUhr>Y<#KXZnNoa~^ zr6Td%c?>eiEGVgX^FW!T2@TEeh@d2h3PDh8aHp@~8z;fE#ND^e^PQj^-_HWCPaqab zNS0?r0%8WpVnLEj5t=G|K%^gH4VtIabWnm?!3Gdv0g9%SF-3J2IB-07d_ky#O*e>2 zh%TI0LPJCd{h_M0eBR9Yae{nIa#oh7uBJWDF*A-NLz}v(>(~V%R%BqdOf*)zMrH6Dzvn5={q0R&}6I1;Ey!1~L+sBu9}Qg!P8D&5=h- z92Hx&GOrw}(Ipv8#*PhSM<*cTC=eLXW)IadWChB)O>;P7w>u~XQ9f{J&Sjost8G&C z)K$dlE6c{9ne%&R_o(^ zUWF6~Estg`t~sK$O196IuujG*)a>R&~Vs}`k+a4iJP*hw6|KJ3l0 zz>7;|O>KFY&}7|$wKZ5AxJemBq-%&~c)_X==5szqW4Cr4>IxL0Mu2O`8c>NM0-Nzl z%NW=eWr+|-*)*T)vI!Mak{dO2JFeGt<6-0v5xNNp{Ot!LVpnxsRR!3UARw?BOvV5b z)*Z!#ng|hP)8B)cvmyM)!Qj9jBT);nLKGpok&-CR@@^EAI249O4_B*881tR_{?sf; zE(y4q_A_tN91?jg9B8%DbblVX z>IIACAl->g+S(Ur_6{_#X6q_IhGqk(GDaiS07!NvS=BTZyNEHGX$$^ovu7NtrlIBB z)EJ_NG4|O!1=649Igy-yOu396d$9K0a z+4oJim0tS&%b6ECPX#A`5HEbNcUt}NCOLcNsW@G_X>t6rE!NeQoo4RRjVCrw9sgtc d+*IbG=8Ntve9EX1a~-eke5S5pq|B_P_sl zC{*2LwYCLqiH(}!WWvyNbQI2KT#OEd)~w6B(C9<~rK1kZj?zN|$7sqjqx4oO!6n=} zl(HJPdua3ardDHnr=gnky0z4ryoL>APynfXCT;s#K1vttYWSNpvouwJ1f5a3mN=x^ z63tYd;~`28bBw`pJf)~%Ad8~Rt)h62=U7f+0nY$g<3tT8ROzCzH_uFJEwP4@FZ>s! zQ$gTrESt;a!Z{)AcpWTIRh8vkZ*XF8(5A_5sOfFvO$!_ zkrt4J09U{M-nkRA9K3o2O5QX)}-k83uQ zsi6I!z8gnWn%lT&zqQ9jYzy+8tY@J5ZtQV!IWRwHK_k>mVK|0Y2D>RIaQu`r0ST4v zF;oOrasr2>XABhOtqGu{rvi1gIuF6X@md`xUDi%>IW~$1VV+vH)v`?|=PxG{FAYF3 z7@#Okgv4+WM&Md`UgLl!ft4Ko;EK=$mZk{DCa=9lRh*hXbFG+od|Xd;<0b!adO{$V1#&S3(8E^%g3R3b{* z+9uD!DGt-4t&*rrY%z% zR%Eh)tW9C#)yAs@Q`I2ei8Wl>Cn@$OPz_mEBnGOo&H#y|CzMnM3Q1m&WLYwjkSLm1 zbN*|wCmJfyFzVb?Zo-E#@>w|r;-AVn64^L!J$y=Bd3#}BC{(o|9;VKQ#By(H(zonf_ki!Q;~oZkhS@ zfiq_0@{QsBVzl%5MP2C7ODCSHyLP^B?=RM^>O~D}*E%bP-q7FPdG2QY@zh^O_WiIi z7+Ct_74^GI%ilSB5q!Vw?8SKf*1ew|d*!t=4}Np<E zJ2-a(_3ELYH}##q-g9x|&4t5vUT9l=dDb&a-+k_h%h_GzARe!8ihaJ}#hrfxP>b>8 literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/front.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/front.png new file mode 100644 index 0000000000000000000000000000000000000000..951973d6350d19606a1bb8e7255527e36467595f GIT binary patch literal 541 zcmV+&0^N2bZe?^J zG%heMGBNQWX_Wu~0h&ofK~y+Tl~dQM!cY)A-(@#86nnugqGB(o_+SO`LEru0xtS4t z2obKrxJh=;WOjCA!r?G1%R(R!fY0YsBqEUrLZJ{m9*^MldiDGrSsM%nA%g4miu?VJ z+wG?Kd_M7bJa9gr^=!Z2W3^ggG#X*CSSZftbG=vur_%|YP6v%fLuj>Hij_)5*NlZi z0r`9$nM?-pcpQVl;H4muNQj_ZF2nwr{~(!6ikK~$SS%)jYPD+T+z&WG1ym>k-drvh zF**ysA)QX6R;$TOLzd(5h+?s5=iCoCLDlto9e%$bhJS~{;b#TSX7i>2#`H?{>Q?q+#s2-|wT>>tQ$?D#s->?1M}+gnp2aZSk6KrA%HE ftbNxImSy1&!8KMnv3ny900000NkvXXu0mjfLdu$VR96uh;%7#H)2y6k)8!97f@7?u|6}-d?*uVJi9v?Q2q>8GRvF1~pg3G)B+DiaVNl}qT3Ymv$t8Ec*Z1@JetzG_ zty@qsZ~VBdaR2~}w->QaZJZE)b)&WKd-Xn}HcU|q%hXc2LJf0@05H7l5kR}2TOv3G zj$i)P8KD3G#z>;8Of7S~OnYU&fs5N1BL0Ae27rROkpSmiCa9oCSRzVh==Zkc5Ge9y z$W1yBN5Crh#G zWoGE1s4~X_&?+keNE(cKFN&gIK4m~j6ONI2AcmkMj8HI&=n<4g5gJ3lMApHXZc*apa4@n1Tx znCc$oV_Pj`c3=ih6zHt!p%+1Z(uGkR*^`T%0soKETLulfib_Rg!B{h{Vh zck7-Ud-VMLE+4Ub!>tcX{*lUzRo^%G2)1*3W<&C6Umk?TCe zSEt9m5Hq0mMFXL>s;tSm=dH2X=k7i**Ou(P-6)6+i(gtfX9pMBkPfez`*hm2nv>5R z{PEpFX2aPlN1DDlu(73j>zk)~>bq|CUF+x%^@ZA`+~HVz z51I{}nz+VY>+`KUd>P$Va&r8d{E3H{;_V+U+&W=L&D4SJMXN>uTc&t7?aZ_N7XNYD M3rpDjmc`Zo0Dzqk;s5{u literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/right.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/block/autocrafter_manager/right.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4e500c5ce553624ae3af919558f6e6a535d46b GIT binary patch literal 1444 zcmaJ>Z%h++7(OXs%pul|FC)&}PGfMhy}Mqo?cG{y+iRgh0SgY$gmLZt3OCxjdcD#@ z7In^zxJ(^r+{BF!+uV$cIt(sTg34Ijgb_FV#~^GfQ$HY*jV**Z;;um1J}@u2`~7>L z=Y4+fpW9trn7d?g_F@Qvmbmj6uQI9=Z+eRIeYdH`pbXE-&T_d#49GE70+5XpeE@cc z*lOSfELXqv5->xMO5jV&<#JB}?H5B@HesWUhr$XPg3Q)A^f<2dLrm8YEECP+013sP$7EVqFKDvjWL8wUrxwGMhc1VDgMX6L2gUKo=t`TK1QX__8hhrw|a84O7aAGX7CXuGu zTQfl7>j3AH#1K3aXPRF?17WvQHoe1U(&NsAew%@`nT!;}7+r*oaFNIymRlfpb6ETT zVo^m5nkbV06isqVsl>!|z6F%Ud=mjd=^ROEkyQu3&W4~x-@6%GX?)P!+#R;PlGa8J2jJaVuXY|OH$nT@IKLt{HvKalC5@o?X(rx8_s z$MA*$X7ZsW!=c{mZ5_#~xO?Wo9ck)!b2~gf`Otj%R(|lpip<6XZ;yQSG_s+jrz~p8 z-gB;7y<_z3$ZrFG=~LU=(ictseZ^F`f7d48<%tW=?_Az9m~~PCwFftf#mC zkDoJC)W@1VXVb<=*BD!kM-Z1n3Cy=9A|kb|I191FRRadAf-wxw3YAZ zR&7Y%E@WpO8WwWXGV|_FKWSaD)H}WHm*@xE&lN!}w_hJ0+THz0(S&P#vvsQU3<(=%6!npa&{xhq?P>)t<~k^vR7fvlI)w3ib9O}DdeM}o=9KM1OBtRG;Mo`&tFon4G?s{$M-CCgZLz+;ArKH5M>9u`J&vLzTJ!oP0 z#R!H4GYc}~WQ*W}n`Ahr&S^8*A0*7MILORonoJW0GvY=F!)XZ4E41hzxJ&Nduix|h zp7-~0JvG(OrKjemLJ*X0t~6N1F*Ew6B#7U)!yc75mCL1~g*4FS6X=lC7bu7`7(l?uGk$^L zd~lSJc5p3%77>+hUV-&nEL+6BKrB#V$j}h&M{ya3vTXET8`c5A3jUR`t#!cG<_D-1 z1h^L7Ddxjn5C@B~d$^;hp{R!1%QIq9=q3Z_Y+->8kQr_k%v3fvgguTv>?>JrjmC@~Q_!lXoESl2eOi(xDN z7mJEw&}fnTr)c6^VkJhWTP+|iwweg|#LnTx7BOC3lt7SV)NIh%LO*Kyrcyi0v%4== z9djSfH13eTJah2guNQUGBX!d(1BT-Cti^{q1vh?XQjl zpV<2fZ@rN_x!h5@_u4zXaEkl0oW>Kk|ID}BR=#}UOl8uMes8w1u5Ko=KBNvtp2`bl zk5A4?lG`RKJNs+L6s82#1^G$p$&9u2yaOYJX+2flx}5#=_|IHs&O%42H|gx%`)iI* zp)5@<)RSzW!i%kuGe3B{X1<>|IyGO`D=8d+!jeaCw?^haj_m45n;kmZ^xhL$JMx~n z^ZaAoLpPH~!`8mpL%(MndiK>@Ss#^q>I(JOPulmS%?@W>f^-QQpk6Mz@m1OfJCg=A zkJP3;e){~%zPp~%U5OYXO&z#=WPPdY+;EZlHKP1okdxedU7h^Ri}nGwJLL*?>Rv}F z{!8dl7XJ%89= Zmq4 blockMap) { @@ -157,6 +158,7 @@ private void registerEmissiveModels() { ); Blocks.INSTANCE.getRelay().forEach((color, id, block) -> registerEmissiveRelayModels(color, id)); Blocks.INSTANCE.getAutocrafter().forEach((color, id, block) -> registerEmissiveAutocrafterModels(color, id)); + registerColoredEmissiveModels(Blocks.INSTANCE.getAutocrafterManager(), "autocrafter_manager"); } private void registerColoredEmissiveModels(final BlockColorMap blockMap, diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java index 91d5d7024..c297254d1 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java @@ -122,6 +122,11 @@ public class ConfigImpl implements ConfigData, com.refinedmods.refinedstorage.co @ConfigEntry.Gui.CollapsibleObject private AutocrafterEntryImpl autocrafter = new AutocrafterEntryImpl(); + @ConfigEntry.Gui.CollapsibleObject + private SimpleEnergyUsageEntryImpl autocrafterManager = new SimpleEnergyUsageEntryImpl( + DefaultEnergyUsage.AUTOCRAFTER_MANAGER + ); + public static ConfigImpl get() { return AutoConfig.getConfigHolder(ConfigImpl.class).getConfig(); } @@ -287,6 +292,11 @@ public AutocrafterEntry getAutocrafter() { return autocrafter; } + @Override + public SimpleEnergyUsageEntry getAutocrafterManager() { + return autocrafterManager; + } + private static class GridEntryImpl implements GridEntry { private boolean largeFont = false; diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java index 2eb94d057..f56af4ed3 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java @@ -692,6 +692,7 @@ private void registerCapabilities() { registerNetworkNodeContainerProvider(BlockEntities.INSTANCE.getStorageMonitor()); registerNetworkNodeContainerProvider(BlockEntities.INSTANCE.getWirelessTransmitter()); registerNetworkNodeContainerProvider(BlockEntities.INSTANCE.getAutocrafter()); + registerNetworkNodeContainerProvider(BlockEntities.INSTANCE.getAutocrafterManager()); registerItemStorage( AbstractDiskDriveBlockEntity.class::isInstance, AbstractDiskDriveBlockEntity.class::cast, diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java index 96fa0e471..ebf72f20a 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java @@ -53,6 +53,7 @@ public class ConfigImpl implements Config { private final SimpleEnergyUsageEntry securityManager; private final RelayEntry relay; private final AutocrafterEntryImpl autocrafter; + private final SimpleEnergyUsageEntry autocrafterManager; public ConfigImpl() { screenSize = builder @@ -98,6 +99,10 @@ public ConfigImpl() { securityManager = new SimpleEnergyUsageEntryImpl("securityManager", DefaultEnergyUsage.SECURITY_MANAGER); relay = new RelayEntryImpl(); autocrafter = new AutocrafterEntryImpl(); + autocrafterManager = new SimpleEnergyUsageEntryImpl( + "autocrafterManager", + DefaultEnergyUsage.AUTOCRAFTER_MANAGER + ); spec = builder.build(); } @@ -264,10 +269,15 @@ public RelayEntry getRelay() { } @Override - public AutocrafterEntryImpl getAutocrafter() { + public AutocrafterEntry getAutocrafter() { return autocrafter; } + @Override + public SimpleEnergyUsageEntry getAutocrafterManager() { + return autocrafterManager; + } + private static String translationKey(final String value) { return createTranslationKey("text.autoconfig", "option." + value); } diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java index fb0e8e4eb..ae1f16950 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java @@ -430,6 +430,7 @@ private void registerCapabilities(final RegisterCapabilitiesEvent event) { registerNetworkNodeContainerProvider(event, BlockEntities.INSTANCE.getStorageMonitor()); registerNetworkNodeContainerProvider(event, BlockEntities.INSTANCE.getWirelessTransmitter()); registerNetworkNodeContainerProvider(event, BlockEntities.INSTANCE.getAutocrafter()); + registerNetworkNodeContainerProvider(event, BlockEntities.INSTANCE.getAutocrafterManager()); event.registerBlockEntity( Capabilities.ItemHandler.BLOCK, BlockEntities.INSTANCE.getDiskDrive(), diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockModelProviderImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockModelProviderImpl.java index 042161937..b74b9ce02 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockModelProviderImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockModelProviderImpl.java @@ -51,6 +51,7 @@ protected void registerModels() { registerRightLeftBackFrontTopModel(Blocks.INSTANCE.getGrid(), "grid", ""); registerRightLeftBackFrontTopModel(Blocks.INSTANCE.getCraftingGrid(), "crafting_grid", ""); registerRightLeftBackFrontTopModel(Blocks.INSTANCE.getPatternGrid(), "pattern_grid", ""); + registerRightLeftBackFrontTopModel(Blocks.INSTANCE.getAutocrafterManager(), "autocrafter_manager", ""); registerDetectors(); registerWirelessTransmitters(); registerNetworkReceivers(); diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockStateProviderImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockStateProviderImpl.java index 23d382e0e..775770ecf 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockStateProviderImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/BlockStateProviderImpl.java @@ -59,6 +59,7 @@ protected void registerStatesAndModels() { registerRelays(); registerDiskInterfaces(); registerAutocrafters(); + registerAutocrafterManagers(); } private void registerCables() { @@ -325,6 +326,14 @@ private void registerAutocrafters() { }); } + private void registerAutocrafterManagers() { + Blocks.INSTANCE.getAutocrafterManager().forEach((color, id, block) -> configureActiveColoredDirectionalBlock( + color, + block, + "autocrafter_manager" + )); + } + private void configureActiveColoredDirectionalBlock(final DyeColor color, final Supplier block, final String name) { diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/ItemModelProviderImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/ItemModelProviderImpl.java index 983a523ab..e7c226bb3 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/ItemModelProviderImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/ItemModelProviderImpl.java @@ -52,6 +52,7 @@ protected void registerModels() { registerRelays(); registerDiskInterfaces(); registerAutocrafters(); + registerAutocrafterManagers(); } private void registerCables() { @@ -227,6 +228,14 @@ private void registerAutocrafters() { )); } + private void registerAutocrafterManagers() { + final var blocks = Blocks.INSTANCE.getAutocrafterManager(); + blocks.forEach((color, id, block) -> withExistingParent( + id.getPath(), + createIdentifier("block/autocrafter_manager/" + color.getName()) + )); + } + private ModelFile modelFile(final ResourceLocation location) { return new ModelFile.ExistingModelFile(location, existingFileHelper); } diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/loot/BlockDropProvider.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/loot/BlockDropProvider.java index 32b2fa6c4..6a71a8e05 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/loot/BlockDropProvider.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/loot/BlockDropProvider.java @@ -42,6 +42,7 @@ protected void generate() { Blocks.INSTANCE.getRelay().forEach((color, id, block) -> drop(block.get())); Blocks.INSTANCE.getDiskInterface().forEach((color, id, block) -> drop(block.get())); Blocks.INSTANCE.getAutocrafter().forEach((color, id, block) -> drop(block.get())); + Blocks.INSTANCE.getAutocrafterManager().forEach((color, id, block) -> drop(block.get())); } private void drop(final Block block) { @@ -73,6 +74,7 @@ protected Iterable getKnownBlocks() { blocks.addAll(Blocks.INSTANCE.getRelay().values()); blocks.addAll(Blocks.INSTANCE.getDiskInterface().values()); blocks.addAll(Blocks.INSTANCE.getAutocrafter().values()); + blocks.addAll(Blocks.INSTANCE.getAutocrafterManager().values()); return blocks; } } diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/recipe/RecoloringRecipeProvider.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/recipe/RecoloringRecipeProvider.java index ac3b84b27..db6656d9b 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/recipe/RecoloringRecipeProvider.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/recipe/RecoloringRecipeProvider.java @@ -80,6 +80,9 @@ protected void buildRecipes(final RecipeOutput output) { Blocks.INSTANCE.getAutocrafter().forEach((color, id, block) -> recipe(Tags.AUTOCRAFTERS, block.get().asItem(), color) .save(output, recipeId(color, "autocrafter"))); + Blocks.INSTANCE.getAutocrafterManager().forEach((color, id, block) -> + recipe(Tags.AUTOCRAFTER_MANAGERS, block.get().asItem(), color) + .save(output, recipeId(color, "autocrafter_manager"))); } private ResourceLocation recipeId(final DyeColor color, final String suffix) { diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/tag/ItemTagsProviderImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/tag/ItemTagsProviderImpl.java index 290721ca4..12e81288b 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/tag/ItemTagsProviderImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/datagen/tag/ItemTagsProviderImpl.java @@ -21,6 +21,7 @@ import net.neoforged.neoforge.common.data.ExistingFileHelper; import static com.refinedmods.refinedstorage.common.content.Tags.AUTOCRAFTERS; +import static com.refinedmods.refinedstorage.common.content.Tags.AUTOCRAFTER_MANAGERS; import static com.refinedmods.refinedstorage.common.content.Tags.CABLES; import static com.refinedmods.refinedstorage.common.content.Tags.CONSTRUCTORS; import static com.refinedmods.refinedstorage.common.content.Tags.CONTROLLERS; @@ -135,6 +136,10 @@ protected void addTags(final HolderLookup.Provider provider) { Blocks.INSTANCE.getAutocrafter().values().stream() .map(block -> (Supplier) block::asItem) .toList()); + addAllToTag(AUTOCRAFTER_MANAGERS, + Blocks.INSTANCE.getAutocrafterManager().values().stream() + .map(block -> (Supplier) block::asItem) + .toList()); } private void addAllToTag(final TagKey t, final Collection> items) { From d90853144b3eb3520de1e59a25272d0d20cc0506 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 28 Oct 2024 18:10:02 +0100 Subject: [PATCH 4/9] feat: autocrafter manager screen --- .../common/AbstractClientModInitializer.java | 2 + .../common/AbstractModInitializer.java | 9 + .../common/autocrafting/PatternRendering.java | 3 + .../autocrafter/PatternInventory.java | 6 +- .../AutocrafterManagerBlockEntity.java | 43 +++- .../AutocrafterManagerContainerMenu.java | 107 +++++++++ .../AutocrafterManagerData.java | 24 ++ .../AutocrafterManagerScreen.java | 214 ++++++++++++++++++ .../AutocrafterManagerSlot.java | 36 +++ .../patterngrid/PatternGridContainerMenu.java | 8 +- .../refinedstorage/common/content/Menus.java | 11 + .../grid/AbstractGridContainerMenu.java | 2 +- .../grid/CraftingGridContainerMenu.java | 8 +- .../common/grid/GridContainerMenu.java | 4 +- .../grid/WirelessGridContainerMenu.java | 4 +- .../grid/screen/AbstractGridScreen.java | 2 +- .../AbstractSecurityCardContainerMenu.java | 4 +- .../AbstractPortableGridContainerMenu.java | 4 +- .../PortableGridBlockContainerMenu.java | 4 +- .../PortableGridItemContainerMenu.java | 4 +- .../support/AbstractBaseContainerMenu.java | 4 +- .../stretching/AbstractStretchingScreen.java | 6 +- .../stretching/ScreenSizeListener.java | 2 +- .../textures/gui/autocrafter_manager.png | Bin 0 -> 850 bytes .../autocrafter_manager/autocrafter_name.png | Bin 0 -> 167 bytes 25 files changed, 483 insertions(+), 28 deletions(-) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/autocrafter_manager.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/autocrafter_manager/autocrafter_name.png diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java index 2ac745736..58ee5dd10 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractClientModInitializer.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.upgrade.UpgradeMapping; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerScreen; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewScreen; @@ -104,6 +105,7 @@ public AutocraftingPreviewScreen create(final AutocraftingPreviewContainerMenu m return new AutocraftingPreviewScreen(menu, inventory, title); } }); + registration.register(Menus.INSTANCE.getAutocrafterManager(), AutocrafterManagerScreen::new); } protected static void registerAlternativeGridHints() { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java index 0d0c676e3..848a97e24 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/AbstractModInitializer.java @@ -23,6 +23,8 @@ import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterData; import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerBlockEntity; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerData; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridBlockEntity; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridData; @@ -799,6 +801,13 @@ protected final void registerMenus(final RegistryCallback> callback, ContentIds.AUTOCRAFTER, () -> extendedMenuTypeFactory.create(AutocrafterContainerMenu::new, AutocrafterData.STREAM_CODEC) )); + Menus.INSTANCE.setAutocrafterManager(callback.register( + ContentIds.AUTOCRAFTER_MANAGER, + () -> extendedMenuTypeFactory.create( + AutocrafterManagerContainerMenu::new, + AutocrafterManagerData.STREAM_CODEC + ) + )); } protected final void registerLootFunctions(final RegistryCallback> callback) { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java index 6f96f7315..5d0d4d124 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternRendering.java @@ -3,6 +3,7 @@ import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterScreen; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerScreen; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridScreen; import com.refinedmods.refinedstorage.common.support.resource.ItemResource; import com.refinedmods.refinedstorage.common.util.ClientPlatformUtil; @@ -33,6 +34,8 @@ private static boolean canDisplayOutputInScreen(final ItemStack stack) { return switch (screen) { case PatternGridScreen patternGridScreen -> patternGridScreen.getMenu().isPatternInOutput(stack); case AutocrafterScreen autocrafterScreen -> autocrafterScreen.getMenu().containsPattern(stack); + case AutocrafterManagerScreen autocrafterManagerScreen -> + autocrafterManagerScreen.getMenu().containsPattern(stack); case null, default -> false; }; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java index 4ef24bf90..40b33aa5a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java @@ -19,8 +19,10 @@ class PatternInventory extends FilteredContainer { private Listener listener; PatternInventory(final Supplier<@NullableType Level> levelSupplier) { - super(PATTERNS, - stack -> Optional.ofNullable(levelSupplier.get()).map(level -> isValidPattern(stack, level)).orElse(false)); + super( + PATTERNS, + stack -> Optional.ofNullable(levelSupplier.get()).map(level -> isValidPattern(stack, level)).orElse(false) + ); } void setListener(@Nullable final Listener listener) { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java index c23050b22..c6c0700ba 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java @@ -5,13 +5,38 @@ import com.refinedmods.refinedstorage.common.content.BlockEntities; import com.refinedmods.refinedstorage.common.content.ContentNames; import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; +import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; import com.refinedmods.refinedstorage.common.support.network.AbstractBaseNetworkNodeContainerBlockEntity; +import java.util.List; +import javax.annotation.Nullable; + import net.minecraft.core.BlockPos; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.codec.StreamEncoder; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +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 AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity { +public class AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity + implements NetworkNodeExtendedMenuProvider { + private final List items = List.of( + new AutocrafterManagerData.Item(Component.literal("testing"), 10), + new AutocrafterManagerData.Item(Component.literal( + "HELLO WORLD!!! HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!"), + 8), + new AutocrafterManagerData.Item(Component.literal("testing"), 10) + ); + private final List inventories = List.of( + new SimpleContainer(10), + new SimpleContainer(8), + new SimpleContainer(10) + ); + public AutocrafterManagerBlockEntity(final BlockPos pos, final BlockState state) { super(BlockEntities.INSTANCE.getAutocrafterManager(), pos, state, new SimpleNetworkNode( Platform.INSTANCE.getConfig().getAutocrafterManager().getEnergyUsage() @@ -28,4 +53,20 @@ protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState final BlockState newBlockState) { return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } + + @Override + public AutocrafterManagerData getMenuData() { + return new AutocrafterManagerData(items); + } + + @Override + public StreamEncoder getMenuCodec() { + return AutocrafterManagerData.STREAM_CODEC; + } + + @Override + @Nullable + public AbstractContainerMenu createMenu(final int syncId, final Inventory inventory, final Player player) { + return new AutocrafterManagerContainerMenu(syncId, inventory, this, inventories); + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java new file mode 100644 index 000000000..63fad6a4e --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java @@ -0,0 +1,107 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.common.content.Menus; +import com.refinedmods.refinedstorage.common.support.AbstractBaseContainerMenu; +import com.refinedmods.refinedstorage.common.support.RedstoneMode; +import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; +import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; +import com.refinedmods.refinedstorage.common.support.containermenu.ServerProperty; +import com.refinedmods.refinedstorage.common.support.stretching.ScreenSizeListener; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import net.minecraft.network.chat.Component; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public class AutocrafterManagerContainerMenu extends AbstractBaseContainerMenu implements ScreenSizeListener { + private final Inventory playerInventory; + private final List items; + private final List autocrafterSlots = new ArrayList<>(); + + public AutocrafterManagerContainerMenu(final int syncId, + final Inventory playerInventory, + final AutocrafterManagerData data) { + super(Menus.INSTANCE.getAutocrafterManager(), syncId); + this.playerInventory = playerInventory; + registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); + this.items = data.items().stream().map(item -> Item.from(item, new SimpleContainer(item.slotCount()))).toList(); + resized(0, 0, 0); + } + + public AutocrafterManagerContainerMenu(final int syncId, + final Inventory playerInventory, + final AutocrafterManagerBlockEntity autocrafterManager, + final List containers) { + super(Menus.INSTANCE.getAutocrafterManager(), syncId); + this.playerInventory = playerInventory; + registerProperty(new ServerProperty<>( + PropertyTypes.REDSTONE_MODE, + autocrafterManager::getRedstoneMode, + autocrafterManager::setRedstoneMode + )); + this.items = Collections.emptyList(); + addServerSideSlots(containers); + } + + private void addServerSideSlots(final List containers) { + for (final Container container : containers) { + for (int i = 0; i < container.getContainerSize(); i++) { + addSlot(new Slot(container, i, 0, 0)); + } + } + addPlayerInventory(playerInventory, 0, 0); + } + + public boolean containsPattern(final ItemStack stack) { + for (final Slot slot : autocrafterSlots) { + if (slot.getItem() == stack) { + return true; + } + } + return false; + } + + @Override + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { + resetSlots(); + autocrafterSlots.clear(); + final int rowX = 7 + 1; + final int startY = topYStart - 18; + int rowY = topYStart; + for (final AutocrafterManagerContainerMenu.Item item : getViewItems()) { + for (int i = 0; i < item.slotCount(); i++) { + final int slotX = rowX + ((i % 9) * 18); + final int slotY = rowY + 18 + ((i / 9) * 18); + final var slot = new AutocrafterManagerSlot(item.backingInventory, i, slotX, slotY, startY, topYEnd); + addSlot(slot); + autocrafterSlots.add(slot); + } + rowY += item.getRowsIncludingTitle() * 18; + } + addPlayerInventory(playerInventory, 8, playerInventoryY); + } + + List getViewItems() { + return items; + } + + List getAutocrafterSlots() { + return autocrafterSlots; + } + + record Item(Component name, int slotCount, Container backingInventory) { + private static Item from(final AutocrafterManagerData.Item item, final Container backingInventory) { + return new Item(item.name(), item.slotCount(), backingInventory); + } + + int getRowsIncludingTitle() { + return 1 + Math.ceilDiv(slotCount, 9); + } + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java new file mode 100644 index 000000000..fafea439d --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java @@ -0,0 +1,24 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import java.util.ArrayList; +import java.util.List; + +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 AutocrafterManagerData(List items) { + private static final StreamCodec ITEM_STREAM_CODEC = StreamCodec.composite( + ComponentSerialization.STREAM_CODEC, Item::name, + ByteBufCodecs.INT, Item::slotCount, + Item::new + ); + public static final StreamCodec STREAM_CODEC = StreamCodec + .composite(ByteBufCodecs.collection(ArrayList::new, ITEM_STREAM_CODEC), AutocrafterManagerData::items, + AutocrafterManagerData::new); + + public record Item(Component name, int slotCount) { + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java new file mode 100644 index 000000000..ef31eac16 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java @@ -0,0 +1,214 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.common.Platform; +import com.refinedmods.refinedstorage.common.support.Sprites; +import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; +import com.refinedmods.refinedstorage.common.support.stretching.AbstractStretchingScreen; +import com.refinedmods.refinedstorage.common.support.widget.History; +import com.refinedmods.refinedstorage.common.support.widget.RedstoneModeSideButtonWidget; +import com.refinedmods.refinedstorage.common.support.widget.SearchFieldWidget; +import com.refinedmods.refinedstorage.common.support.widget.TextMarquee; + +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nullable; + +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.Slot; + +import static com.refinedmods.refinedstorage.common.support.Sprites.SEARCH_SIZE; +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; + +public class AutocrafterManagerScreen extends AbstractStretchingScreen { + private static final ResourceLocation TEXTURE = createIdentifier("textures/gui/autocrafter_manager.png"); + private static final List SEARCH_FIELD_HISTORY = new ArrayList<>(); + private static final ResourceLocation AUTOCRAFTER_NAME = createIdentifier("autocrafter_manager/autocrafter_name"); + private static final int COLUMNS = 9; + + @Nullable + private SearchFieldWidget searchField; + + public AutocrafterManagerScreen(final AutocrafterManagerContainerMenu menu, + final Inventory playerInventory, + final Component title) { + super(menu, playerInventory, new TextMarquee(title, 70)); + this.inventoryLabelY = 75; + this.imageWidth = 193; + this.imageHeight = 176; + } + + @Override + protected void init(final int rows) { + super.init(rows); + + if (searchField == null) { + searchField = new SearchFieldWidget( + font, + leftPos + 94 + 1, + topPos + 6 + 1, + 73 - 6, + new History(SEARCH_FIELD_HISTORY) + ); + } else { + searchField.setX(leftPos + 94 + 1); + searchField.setY(topPos + 6 + 1); + } + updateScrollbar(); + + addWidget(searchField); + + addSideButton(new RedstoneModeSideButtonWidget(getMenu().getProperty(PropertyTypes.REDSTONE_MODE))); + } + + private void updateScrollbar() { + final int totalRows = menu.getViewItems() + .stream() + .map(AutocrafterManagerContainerMenu.Item::getRowsIncludingTitle) + .reduce(0, Integer::sum); + updateScrollbar(totalRows); + } + + @Override + protected void scrollbarChanged(final int rows) { + super.scrollbarChanged(rows); + final int scrollbarOffset = getScrollbarOffset(); + for (int i = 0; i < menu.getAutocrafterSlots().size(); ++i) { + final AutocrafterManagerSlot slot = menu.getAutocrafterSlots().get(i); + Platform.INSTANCE.setSlotY(slot, slot.getOriginalY() - scrollbarOffset); + } + } + + @Override + protected void renderBg(final GuiGraphics graphics, final float delta, final int mouseX, final int mouseY) { + super.renderBg(graphics, delta, mouseX, mouseY); + graphics.blitSprite(Sprites.SEARCH, leftPos + 79, topPos + 5, SEARCH_SIZE, SEARCH_SIZE); + } + + @Override + public void render(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) { + super.render(graphics, mouseX, mouseY, partialTicks); + if (searchField != null) { + searchField.render(graphics, 0, 0, 0); + } + } + + @Override + public boolean charTyped(final char unknown1, final int unknown2) { + return (searchField != null && searchField.charTyped(unknown1, unknown2)) + || super.charTyped(unknown1, unknown2); + } + + @Override + public boolean keyPressed(final int key, final int scanCode, final int modifiers) { + if (searchField != null && searchField.keyPressed(key, scanCode, modifiers)) { + return true; + } + return super.keyPressed(key, scanCode, modifiers); + } + + @Override + protected void renderRows(final GuiGraphics graphics, + final int x, + final int y, + final int topHeight, + final int rows, + final int mouseX, + final int mouseY) { + renderRowTitlesAndSlots(graphics, x, y, topHeight, rows); + renderSlotContents(graphics, mouseX, mouseY, y, topHeight, rows); + } + + private void renderRowTitlesAndSlots(final GuiGraphics graphics, + final int x, + final int y, + final int topHeight, + final int rows) { + final int rowX = x + 7; + int rowY = y + topHeight - getScrollbarOffset(); + for (final AutocrafterManagerContainerMenu.Item item : menu.getViewItems()) { + if (!isOutOfFrame(y, topHeight, rows, rowY)) { + graphics.blitSprite(AUTOCRAFTER_NAME, rowX, rowY, 162, ROW_SIZE); + graphics.drawString(font, item.name(), rowX + 4, rowY + 6, 4210752, false); + } + for (int i = 0; i < item.slotCount(); i++) { + final int slotX = rowX + ((i % COLUMNS) * 18); + final int slotY = rowY + 18 + ((i / COLUMNS) * 18); + if (!isOutOfFrame(y, topHeight, rows, slotY)) { + graphics.blitSprite(Sprites.SLOT, slotX, slotY, 18, 18); + } + } + rowY += item.getRowsIncludingTitle() * ROW_SIZE; + } + } + + private void renderSlotContents(final GuiGraphics graphics, + final int mouseX, + final int mouseY, + final int y, + final int topHeight, + final int rows) { + graphics.pose().pushPose(); + graphics.pose().translate(leftPos, topPos, 0); + for (final Slot slot : menu.getAutocrafterSlots()) { + if (isOutOfFrame(y, topHeight, rows, topPos + slot.y)) { + continue; + } + super.renderSlot(graphics, slot); + final boolean hovering = mouseX >= slot.x + leftPos + && mouseX < slot.x + leftPos + 16 + && mouseY >= slot.y + topPos + && mouseY < slot.y + topPos + 16; + if (hovering) { + renderSlotHighlight(graphics, slot.x, slot.y, 0); + } + } + graphics.pose().popPose(); + } + + @Override + protected void renderSlot(final GuiGraphics guiGraphics, final Slot slot) { + if (slot instanceof AutocrafterManagerSlot) { + return; + } + super.renderSlot(guiGraphics, slot); + } + + private static boolean isOutOfFrame(final int y, + final int topHeight, + final int rows, + final int rowY) { + return (rowY < y + topHeight - ROW_SIZE) + || (rowY > y + topHeight + (ROW_SIZE * rows)); + } + + @Override + protected void renderStretchingBackground(final GuiGraphics graphics, final int x, final int y, final int rows) { + for (int row = 0; row < rows; ++row) { + int textureY = 37; + if (row == 0) { + textureY = 19; + } else if (row == rows - 1) { + textureY = 55; + } + graphics.blit(getTexture(), x, y + (ROW_SIZE * row), 0, textureY, imageWidth, ROW_SIZE); + } + } + + @Override + protected int getBottomHeight() { + return 99; + } + + @Override + protected int getBottomV() { + return 73; + } + + @Override + protected ResourceLocation getTexture() { + return TEXTURE; + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java new file mode 100644 index 000000000..c5b1ae52a --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java @@ -0,0 +1,36 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import net.minecraft.world.Container; +import net.minecraft.world.inventory.Slot; + +class AutocrafterManagerSlot extends Slot { + private final int originalY; + private final int startY; + private final int endY; + + AutocrafterManagerSlot(final Container container, + final int slot, + final int x, + final int y, + final int startY, + final int endY) { + super(container, slot, x, y); + this.originalY = y; + this.startY = startY; + this.endY = endY; + } + + int getOriginalY() { + return originalY; + } + + @Override + public boolean isActive() { + return y >= startY && y < endY; + } + + @Override + public boolean isHighlightable() { + return false; // we render the highlight in the scissor render + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java index 5b6af716d..09e2f9b55 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/patterngrid/PatternGridContainerMenu.java @@ -83,7 +83,7 @@ public PatternGridContainerMenu(final int syncId, this.smithingTableResult = new ResultContainer(); this.smithingTableRecipes = playerInventory.player.level().getRecipeManager() .getAllRecipesFor(RecipeType.SMITHING); - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); registerProperty(new ClientProperty<>(PatternGridPropertyTypes.PATTERN_TYPE, patternGridData.patternType()) { @Override @@ -125,7 +125,7 @@ protected void onChangedOnClient(final Boolean newValue) { this.smithingTableRecipes = playerInventory.player.level().getRecipeManager() .getAllRecipesFor(RecipeType.SMITHING); this.patternGrid = grid; - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ServerProperty<>( PropertyTypes.REDSTONE_MODE, grid::getRedstoneMode, @@ -181,8 +181,8 @@ boolean canCreatePattern() { } @Override - public void onScreenReady(final int playerInventoryY) { - super.onScreenReady(playerInventoryY); + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { + super.resized(playerInventoryY, topYStart, topYEnd); transferManager.clear(); addSmithingTableSlots(playerInventoryY); // these must be always first for the smithing table helpers addPatternSlots(playerInventoryY); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java index c0d79c705..59dbf5f7b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/content/Menus.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.common.content; import com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterContainerMenu; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.patterngrid.PatternGridContainerMenu; import com.refinedmods.refinedstorage.common.autocrafting.preview.AutocraftingPreviewContainerMenu; import com.refinedmods.refinedstorage.common.constructordestructor.ConstructorContainerMenu; @@ -95,6 +96,8 @@ public final class Menus { private Supplier> diskInterface; @Nullable private Supplier> autocrafter; + @Nullable + private Supplier> autocrafterManager; private Menus() { } @@ -326,4 +329,12 @@ public MenuType getAutocrafter() { public void setAutocrafter(final Supplier> autocrafter) { this.autocrafter = autocrafter; } + + public MenuType getAutocrafterManager() { + return requireNonNull(autocrafterManager).get(); + } + + public void setAutocrafterManager(final Supplier> autocrafterManager) { + this.autocrafterManager = autocrafterManager; + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java index a89a4178f..7bd56c7ec 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java @@ -254,7 +254,7 @@ public void removed(final Player playerEntity) { } @Override - public void onScreenReady(final int playerInventoryY) { + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { resetSlots(); addPlayerInventory(playerInventory, 8, playerInventoryY, (before, after) -> { final Pattern beforePattern = RefinedStorageApi.INSTANCE.getPattern(before, playerInventory.player.level()) diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/CraftingGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/CraftingGridContainerMenu.java index 0473d87b6..593b1416e 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/CraftingGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/CraftingGridContainerMenu.java @@ -45,7 +45,7 @@ public CraftingGridContainerMenu(final int syncId, super(Menus.INSTANCE.getCraftingGrid(), syncId, playerInventory, gridData); this.craftingGrid = new ClientCraftingGrid(); this.gridPlayer = playerInventory.player; - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); } @@ -55,7 +55,7 @@ public CraftingGridContainerMenu(final int syncId, super(Menus.INSTANCE.getCraftingGrid(), syncId, playerInventory, grid); this.craftingGrid = new CraftingGridImpl(grid); this.gridPlayer = playerInventory.player; - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ServerProperty<>( PropertyTypes.REDSTONE_MODE, grid::getRedstoneMode, @@ -98,8 +98,8 @@ public ItemStack quickMoveStack(final Player actor, final int slotIndex) { } @Override - public void onScreenReady(final int playerInventoryY) { - super.onScreenReady(playerInventoryY); + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { + super.resized(playerInventoryY, topYStart, topYEnd); craftingMatrixSlots.clear(); for (int y = 0; y < 3; ++y) { for (int x = 0; x < 3; ++x) { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/GridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/GridContainerMenu.java index 59bff838a..a77f2cb79 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/GridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/GridContainerMenu.java @@ -11,13 +11,13 @@ public class GridContainerMenu extends AbstractGridContainerMenu { public GridContainerMenu(final int syncId, final Inventory playerInventory, final GridData gridData) { super(Menus.INSTANCE.getGrid(), syncId, playerInventory, gridData); - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); } GridContainerMenu(final int syncId, final Inventory playerInventory, final GridBlockEntity grid) { super(Menus.INSTANCE.getGrid(), syncId, playerInventory, grid); - onScreenReady(0); + resized(0, 0, 0); registerProperty(new ServerProperty<>( PropertyTypes.REDSTONE_MODE, grid::getRedstoneMode, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/WirelessGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/WirelessGridContainerMenu.java index b49be1e0d..7d9ba7011 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/WirelessGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/WirelessGridContainerMenu.java @@ -12,7 +12,7 @@ public WirelessGridContainerMenu(final int syncId, final WirelessGridData wirelessGridData) { super(Menus.INSTANCE.getWirelessGrid(), syncId, playerInventory, wirelessGridData.gridData()); this.disabledSlot = wirelessGridData.slotReference(); - onScreenReady(0); + resized(0, 0, 0); } WirelessGridContainerMenu(final int syncId, @@ -21,6 +21,6 @@ public WirelessGridContainerMenu(final int syncId, final SlotReference slotReference) { super(Menus.INSTANCE.getWirelessGrid(), syncId, playerInventory, grid); this.disabledSlot = slotReference; - onScreenReady(0); + resized(0, 0, 0); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java index 633d7a46e..e697c0cac 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java @@ -84,7 +84,7 @@ protected AbstractGridScreen(final T menu, @Override protected void init(final int rows) { - LOGGER.info("Initializing grid screen"); + LOGGER.info("Initializing grid screen - this shouldn't happen too much!"); if (searchField == null) { searchField = new GridSearchBoxWidget( diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/security/AbstractSecurityCardContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/security/AbstractSecurityCardContainerMenu.java index 49f272ded..ae5ef58b3 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/security/AbstractSecurityCardContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/security/AbstractSecurityCardContainerMenu.java @@ -36,7 +36,7 @@ protected AbstractSecurityCardContainerMenu(final MenuType menuType, this.playerInventory = playerInventory; this.disabledSlot = disabledSlot; this.permissions = new ArrayList<>(); - onScreenReady(0); + resized(0, 0, 0); } List getPermissions() { @@ -44,7 +44,7 @@ List getPermissions() { } @Override - public void onScreenReady(final int playerInventoryY) { + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { resetSlots(); addPlayerInventory(playerInventory, 8, playerInventoryY); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/AbstractPortableGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/AbstractPortableGridContainerMenu.java index 328e62c64..3e80f4045 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/AbstractPortableGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/AbstractPortableGridContainerMenu.java @@ -69,8 +69,8 @@ protected boolean canTransferSlot(final Slot slot) { } @Override - public void onScreenReady(final int playerInventoryY) { - super.onScreenReady(playerInventoryY); + public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { + super.resized(playerInventoryY, topYStart, topYEnd); diskSlot = ValidatedSlot.forStorageContainer(diskInventory, 0, -19, 8); addSlot(diskSlot); transferManager.addBiTransfer(playerInventory, diskInventory); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridBlockContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridBlockContainerMenu.java index 380eb8eb4..f021b85e9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridBlockContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridBlockContainerMenu.java @@ -15,7 +15,7 @@ public PortableGridBlockContainerMenu(final int syncId, final PortableGridData portableGridData) { super(Menus.INSTANCE.getPortableGridBlock(), syncId, playerInventory, portableGridData); registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); - this.onScreenReady(0); + resized(0, 0, 0); } PortableGridBlockContainerMenu(final int syncId, @@ -34,6 +34,6 @@ public PortableGridBlockContainerMenu(final int syncId, portableGrid::getRedstoneMode, portableGrid::setRedstoneMode )); - this.onScreenReady(0); + resized(0, 0, 0); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridItemContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridItemContainerMenu.java index 83dbff994..157fafecf 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridItemContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/portablegrid/PortableGridItemContainerMenu.java @@ -15,7 +15,7 @@ public PortableGridItemContainerMenu(final int syncId, final PortableGridData portableGridData) { super(Menus.INSTANCE.getPortableGridItem(), syncId, playerInventory, portableGridData); this.disabledSlot = portableGridData.slotReference().orElse(null); - this.onScreenReady(0); + resized(0, 0, 0); } PortableGridItemContainerMenu(final int syncId, @@ -33,6 +33,6 @@ public PortableGridItemContainerMenu(final int syncId, energyStorage ); this.disabledSlot = slotReference; - this.onScreenReady(0); + resized(0, 0, 0); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractBaseContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractBaseContainerMenu.java index befcfd50a..a00e4efdf 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractBaseContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractBaseContainerMenu.java @@ -23,6 +23,8 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; +import static java.util.Objects.requireNonNull; + public abstract class AbstractBaseContainerMenu extends AbstractContainerMenu { protected final TransferManager transferManager; @Nullable @@ -40,7 +42,7 @@ public boolean hasProperty(final PropertyType type) { @SuppressWarnings("unchecked") public ClientProperty getProperty(final PropertyType type) { - return (ClientProperty) propertyMap.get(type); + return (ClientProperty) requireNonNull(propertyMap.get(type), "Property not found"); } public void receivePropertyChangeFromClient(final ResourceLocation id, final int newValue) { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java index 2d455bc14..62ab2838b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java @@ -44,7 +44,11 @@ protected void init() { this.imageHeight = TOP_HEIGHT + (ROW_SIZE * visibleRows) + getBottomHeight(); this.inventoryLabelY = imageHeight - INVENTORY_INCLUDING_TITLE_HEIGHT + 4; - getMenu().onScreenReady(imageHeight - INVENTORY_INCLUDING_TITLE_HEIGHT + 17); + getMenu().resized( + imageHeight - INVENTORY_INCLUDING_TITLE_HEIGHT + 17, + TOP_HEIGHT + 1, + TOP_HEIGHT + 1 + (ROW_SIZE * visibleRows) - 2 + ); super.init(); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/ScreenSizeListener.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/ScreenSizeListener.java index 748a2002f..2f93f8bbb 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/ScreenSizeListener.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/ScreenSizeListener.java @@ -2,5 +2,5 @@ @FunctionalInterface public interface ScreenSizeListener { - void onScreenReady(int playerInventoryY); + void resized(int playerInventoryY, int topYStart, int topYEnd); } diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/autocrafter_manager.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/autocrafter_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..4e88dbe82da6a4848a117046f3c0985582382a94 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&eBzC?geh%1o(|NsB7W5+^6L%X}X&CShk-@XkL?AfqU2uN|11o;I66@UQ4 zz2?1M1MG6B0(|S)A$B>G+w|8#m-8K+#4YVv<{r~^tE7w*| z^_FLs7caVl z`AMR2Sy@AN>~@<^#mm`uO#S*kmWhEuf!$IHXgkA`L}sQ5cg0QA59I!yxpoOqO**@T zT!T?VeER#3mlOW&D~;D=`BD36TkNy=BktctL0S~tL4g7R6V?~sg0LFq{1t=>!VCv< z8*1iWW`jsPdD9P7!C-mfA_Kz>2Ce_?_h;;TzeyzF5`zi*j&000;#Pj%7{_4wr9IB} ze+ffn_npl$k1H-Srrb{jMTo;ZJ7AzQoY;4oNuXiR%+&YOc7C59?#BFN-piX$bF`tR zH@w-c1GA{%{eH!wZBq|2>@2@2U9o-g&hLw-US#;W#8&!8qTM!NNPq#zK$s4R^2xzl zjU*Jl>s2$qFEjdHx5Y?GVg8nMX8SY8!(fVTmV+V>0v_iTtqNmfJ_GXpruUovF+F)# zn*ZQ$-m`oCVL+$tKD)W`{)N7^Fy%lcFebyXyU)Vb^03WNW?-md4%y@NJNxveJM*o5 zzcSSSdven__F!T$tHS172BX_-gM~WFcxl&H|6fVg?4j!ywFfJby(BP*BCw z#WBR Date: Thu, 31 Oct 2024 11:04:12 +0100 Subject: [PATCH 5/9] feat: autocrafter manager search mode --- CHANGELOG.md | 9 + .../api/autocrafting/Pattern.java | 2 + .../api/autocrafting/SimplePattern.java | 5 + .../refinedstorage/common/Config.java | 9 +- .../common/autocrafting/CraftingPattern.java | 8 + .../autocrafting/ProcessingPattern.java | 7 + .../autocrafting/SmithingTablePattern.java | 7 + .../autocrafting/StonecutterPattern.java | 7 + .../AutocrafterManagerBlockEntity.java | 10 +- .../AutocrafterManagerContainerMenu.java | 155 ++++++++++++++++-- .../AutocrafterManagerData.java | 18 +- .../AutocrafterManagerListener.java | 6 + .../AutocrafterManagerScreen.java | 20 ++- .../AutocrafterManagerSearchMode.java | 30 ++++ .../AutocrafterManagerSlot.java | 7 +- .../SearchModeSideButtonWidget.java | 83 ++++++++++ .../stretching/AbstractStretchingScreen.java | 16 +- .../assets/refinedstorage/lang/en_us.json | 11 ++ .../autocrafter_manager/search_mode/all.png | Bin 0 -> 1194 bytes .../search_mode/autocrafter_names.png | Bin 0 -> 1181 bytes .../search_mode/pattern_inputs.png | Bin 0 -> 203 bytes .../search_mode/pattern_outputs.png | Bin 0 -> 206 bytes .../refinedstorage/fabric/ConfigImpl.java | 33 +++- .../refinedstorage/neoforge/ConfigImpl.java | 44 ++++- .../impl/autocrafting/SimplePattern.java | 5 + 25 files changed, 435 insertions(+), 57 deletions(-) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerListener.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/SearchModeSideButtonWidget.java create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/all.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/autocrafter_names.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/pattern_inputs.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/pattern_outputs.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 6387f7301..580b301de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,15 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Autocrafter Manager +### Changed + +- The search field in the Autocrafter Manager can now search in: + - Pattern inputs + - Pattern outputs + - Autocrafter names + - All of the above (by default) +- Due to technical limitations and the new filtering options listed above being client-side only, you can no longer shift-click patterns in the Autocrafter Manager. + ## [2.0.0-milestone.4.8] - 2024-10-12 ### Added diff --git a/refinedstorage-autocrafting-api/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/Pattern.java b/refinedstorage-autocrafting-api/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/Pattern.java index b4c84cf0d..ce80eeaa6 100644 --- a/refinedstorage-autocrafting-api/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/Pattern.java +++ b/refinedstorage-autocrafting-api/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/Pattern.java @@ -8,5 +8,7 @@ @API(status = API.Status.STABLE, since = "2.0.0-milestone.4.6") public interface Pattern { + Set getInputResources(); + Set getOutputResources(); } diff --git a/refinedstorage-autocrafting-api/src/test/java/com/refinedmods/refinedstorage/api/autocrafting/SimplePattern.java b/refinedstorage-autocrafting-api/src/test/java/com/refinedmods/refinedstorage/api/autocrafting/SimplePattern.java index c77a80e77..9f9a7c1eb 100644 --- a/refinedstorage-autocrafting-api/src/test/java/com/refinedmods/refinedstorage/api/autocrafting/SimplePattern.java +++ b/refinedstorage-autocrafting-api/src/test/java/com/refinedmods/refinedstorage/api/autocrafting/SimplePattern.java @@ -11,6 +11,11 @@ class SimplePattern implements Pattern { this.outputs = Set.of(outputs); } + @Override + public Set getInputResources() { + return Set.of(); + } + @Override public Set getOutputResources() { return outputs; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java index c342a9eb3..23e1d5043 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.common; import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; import com.refinedmods.refinedstorage.common.grid.GridViewType; @@ -75,7 +76,7 @@ public interface Config { AutocrafterEntry getAutocrafter(); - SimpleEnergyUsageEntry getAutocrafterManager(); + AutocrafterManagerEntry getAutocrafterManager(); interface SimpleEnergyUsageEntry { long getEnergyUsage(); @@ -214,4 +215,10 @@ interface RelayEntry { interface AutocrafterEntry extends SimpleEnergyUsageEntry { long getEnergyUsagePerPattern(); } + + interface AutocrafterManagerEntry extends SimpleEnergyUsageEntry { + void setSearchMode(AutocrafterManagerSearchMode searchMode); + + AutocrafterManagerSearchMode getSearchMode(); + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPattern.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPattern.java index b4e705e0d..46513896c 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPattern.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/CraftingPattern.java @@ -9,12 +9,14 @@ import java.util.Objects; import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; class CraftingPattern implements Pattern { private final UUID id; private final List> inputs; private final ResourceAmount output; private final List byproducts; + private final Set inputResources; private final Set outputResources; CraftingPattern(final UUID id, @@ -24,6 +26,7 @@ class CraftingPattern implements Pattern { this.id = id; this.inputs = inputs; this.output = output; + this.inputResources = inputs.stream().flatMap(List::stream).collect(Collectors.toSet()); this.outputResources = Set.of(output.resource()); this.byproducts = byproducts; } @@ -33,6 +36,11 @@ public Set getOutputResources() { return outputResources; } + @Override + public Set getInputResources() { + return inputResources; + } + List> getInputs() { return inputs; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPattern.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPattern.java index 3240d43d8..c1784e076 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPattern.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/ProcessingPattern.java @@ -14,12 +14,14 @@ class ProcessingPattern implements Pattern { private final UUID id; private final List inputs; private final List outputs; + private final Set inputResources; private final Set outputResources; ProcessingPattern(final UUID id, final List inputs, final List outputs) { this.id = id; this.inputs = inputs; this.outputs = outputs; + this.inputResources = inputs.stream().map(ResourceAmount::resource).collect(Collectors.toSet()); this.outputResources = outputs.stream().map(ResourceAmount::resource).collect(Collectors.toSet()); } @@ -28,6 +30,11 @@ public Set getOutputResources() { return outputResources; } + @Override + public Set getInputResources() { + return inputResources; + } + List getOutputs() { return outputs; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePattern.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePattern.java index 602a187a7..fb7d0bc0c 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePattern.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/SmithingTablePattern.java @@ -14,6 +14,7 @@ class SmithingTablePattern implements Pattern { private final ItemResource base; private final ItemResource addition; private final ItemResource output; + private final Set inputResources; private final Set outputResources; SmithingTablePattern(final UUID id, @@ -26,6 +27,7 @@ class SmithingTablePattern implements Pattern { this.base = base; this.addition = addition; this.output = output; + this.inputResources = Set.of(template, base, addition); this.outputResources = Set.of(output); } @@ -34,6 +36,11 @@ public Set getOutputResources() { return outputResources; } + @Override + public Set getInputResources() { + return inputResources; + } + ItemResource getTemplate() { return template; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPattern.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPattern.java index 181c81443..c87d99454 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPattern.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/StonecutterPattern.java @@ -12,12 +12,14 @@ class StonecutterPattern implements Pattern { private final UUID id; private final ItemResource input; private final ItemResource output; + private final Set inputResources; private final Set outputResources; StonecutterPattern(final UUID id, final ItemResource input, final ItemResource output) { this.id = id; this.input = input; this.output = output; + this.inputResources = Set.of(input); this.outputResources = Set.of(output); } @@ -26,6 +28,11 @@ public Set getOutputResources() { return outputResources; } + @Override + public Set getInputResources() { + return inputResources; + } + ItemResource getInput() { return input; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java index c6c0700ba..1cb99f3c4 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java @@ -24,12 +24,12 @@ public class AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity implements NetworkNodeExtendedMenuProvider { - private final List items = List.of( - new AutocrafterManagerData.Item(Component.literal("testing"), 10), - new AutocrafterManagerData.Item(Component.literal( + private final List groups = List.of( + new AutocrafterManagerData.Group(Component.literal("testing"), 10), + new AutocrafterManagerData.Group(Component.literal( "HELLO WORLD!!! HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!"), 8), - new AutocrafterManagerData.Item(Component.literal("testing"), 10) + new AutocrafterManagerData.Group(Component.literal("testing"), 10) ); private final List inventories = List.of( new SimpleContainer(10), @@ -56,7 +56,7 @@ protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState @Override public AutocrafterManagerData getMenuData() { - return new AutocrafterManagerData(items); + return new AutocrafterManagerData(groups); } @Override diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java index 63fad6a4e..a8b1e84a7 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java @@ -1,5 +1,8 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; +import com.refinedmods.refinedstorage.api.resource.ResourceKey; +import com.refinedmods.refinedstorage.common.Platform; +import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; import com.refinedmods.refinedstorage.common.content.Menus; import com.refinedmods.refinedstorage.common.support.AbstractBaseContainerMenu; import com.refinedmods.refinedstorage.common.support.RedstoneMode; @@ -11,6 +14,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; +import java.util.Set; + +import javax.annotation.Nullable; import net.minecraft.network.chat.Component; import net.minecraft.world.Container; @@ -18,19 +25,24 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; public class AutocrafterManagerContainerMenu extends AbstractBaseContainerMenu implements ScreenSizeListener { private final Inventory playerInventory; - private final List items; + private final List groups; private final List autocrafterSlots = new ArrayList<>(); + @Nullable + private AutocrafterManagerListener listener; + private String query = ""; + public AutocrafterManagerContainerMenu(final int syncId, final Inventory playerInventory, final AutocrafterManagerData data) { super(Menus.INSTANCE.getAutocrafterManager(), syncId); this.playerInventory = playerInventory; registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); - this.items = data.items().stream().map(item -> Item.from(item, new SimpleContainer(item.slotCount()))).toList(); + this.groups = data.groups().stream().map(group -> Group.from(playerInventory.player.level(), group)).toList(); resized(0, 0, 0); } @@ -45,10 +57,25 @@ public AutocrafterManagerContainerMenu(final int syncId, autocrafterManager::getRedstoneMode, autocrafterManager::setRedstoneMode )); - this.items = Collections.emptyList(); + this.groups = Collections.emptyList(); addServerSideSlots(containers); } + void setListener(final AutocrafterManagerListener listener) { + this.listener = listener; + } + + void setQuery(final String query) { + this.query = query; + notifyListener(); + } + + private void notifyListener() { + if (listener != null) { + listener.slotsChanged(); + } + } + private void addServerSideSlots(final List containers) { for (final Container container : containers) { for (int i = 0; i < container.getContainerSize(); i++) { @@ -69,39 +96,131 @@ public boolean containsPattern(final ItemStack stack) { @Override public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { + addSlots(playerInventoryY, topYStart, topYEnd); + } + + private void addSlots(final int playerInventoryY, final int topYStart, final int topYEnd) { resetSlots(); autocrafterSlots.clear(); final int rowX = 7 + 1; final int startY = topYStart - 18; int rowY = topYStart; - for (final AutocrafterManagerContainerMenu.Item item : getViewItems()) { - for (int i = 0; i < item.slotCount(); i++) { - final int slotX = rowX + ((i % 9) * 18); - final int slotY = rowY + 18 + ((i / 9) * 18); - final var slot = new AutocrafterManagerSlot(item.backingInventory, i, slotX, slotY, startY, topYEnd); - addSlot(slot); + for (final Group group : getGroups()) { + rowY += addSlots(group, rowX, rowY, startY, topYEnd); + } + addPlayerInventory(playerInventory, 8, playerInventoryY); + } + + private int addSlots(final Group group, final int rowX, final int rowY, final int startY, final int topYEnd) { + int j = 0; + for (int i = 0; i < group.slotCount; i++) { + final int slotX = rowX + ((j % 9) * 18); + final int slotY = rowY + 18 + ((j / 9) * 18); + final boolean visible = isSlotVisible(group, i); + final AutocrafterManagerSlot slot = new AutocrafterManagerSlot( + group.backingInventory, + i, + slotX, + slotY, + startY, + topYEnd, + visible + ); + addSlot(slot); + if (visible) { autocrafterSlots.add(slot); + ++j; } - rowY += item.getRowsIncludingTitle() * 18; } - addPlayerInventory(playerInventory, 8, playerInventoryY); + group.visibleSlots = j; + if (j == 0) { + return 0; + } + return (group.getVisibleRows() + 1) * 18; + } + + private boolean isSlotVisible(final Group group, final int index) { + final String normalizedQuery = query.trim().toLowerCase(Locale.ROOT); + if (normalizedQuery.isEmpty()) { + return true; + } + return getSearchMode().isSlotVisible(group, normalizedQuery, index); } - List getViewItems() { - return items; + List getGroups() { + return groups; } List getAutocrafterSlots() { return autocrafterSlots; } - record Item(Component name, int slotCount, Container backingInventory) { - private static Item from(final AutocrafterManagerData.Item item, final Container backingInventory) { - return new Item(item.name(), item.slotCount(), backingInventory); + AutocrafterManagerSearchMode getSearchMode() { + return Platform.INSTANCE.getConfig().getAutocrafterManager().getSearchMode(); + } + + void setSearchMode(final AutocrafterManagerSearchMode searchMode) { + Platform.INSTANCE.getConfig().getAutocrafterManager().setSearchMode(searchMode); + notifyListener(); + } + + static class Group { + final Component name; + final int slotCount; + final Container backingInventory; + + private final Level level; + private int visibleSlots; + + Group(final Level level, final Component name, final int slotCount, final Container backingInventory) { + this.level = level; + this.name = name; + this.slotCount = slotCount; + this.backingInventory = backingInventory; + } + + private static Group from(final Level level, final AutocrafterManagerData.Group group) { + return new Group(level, group.name(), group.slotCount(), new SimpleContainer(group.slotCount())); + } + + boolean isVisible() { + return visibleSlots > 0; + } + + int getVisibleRows() { + return Math.ceilDiv(visibleSlots, 9); + } + + int getVisibleSlots() { + return visibleSlots; + } + + boolean nameContains(final String normalizedQuery) { + return name.getString().toLowerCase(Locale.ROOT).trim().contains(normalizedQuery); + } + + boolean hasPatternInput(final String normalizedQuery, final int index) { + final ItemStack patternStack = backingInventory.getItem(index); + return RefinedStorageApi.INSTANCE.getPattern(patternStack, level).map( + pattern -> hasResource(pattern.getInputResources(), normalizedQuery) + ).orElse(false); + } + + boolean hasPatternOutput(final String normalizedQuery, final int index) { + final ItemStack patternStack = backingInventory.getItem(index); + return RefinedStorageApi.INSTANCE.getPattern(patternStack, level).map( + pattern -> hasResource(pattern.getOutputResources(), normalizedQuery) + ).orElse(false); } - int getRowsIncludingTitle() { - return 1 + Math.ceilDiv(slotCount, 9); + private static boolean hasResource(final Set resources, final String normalizedQuery) { + return resources.stream().anyMatch(key -> + RefinedStorageApi.INSTANCE.getResourceRendering(key.getClass()) + .getDisplayName(key) + .getString() + .toLowerCase(Locale.ROOT) + .trim() + .contains(normalizedQuery)); } } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java index fafea439d..30c04586f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java @@ -9,16 +9,18 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -public record AutocrafterManagerData(List items) { - private static final StreamCodec ITEM_STREAM_CODEC = StreamCodec.composite( - ComponentSerialization.STREAM_CODEC, Item::name, - ByteBufCodecs.INT, Item::slotCount, - Item::new +public record AutocrafterManagerData(List groups) { + private static final StreamCodec GROUP_STREAM_CODEC = StreamCodec.composite( + ComponentSerialization.STREAM_CODEC, Group::name, + ByteBufCodecs.INT, Group::slotCount, + Group::new ); public static final StreamCodec STREAM_CODEC = StreamCodec - .composite(ByteBufCodecs.collection(ArrayList::new, ITEM_STREAM_CODEC), AutocrafterManagerData::items, - AutocrafterManagerData::new); + .composite( + ByteBufCodecs.collection(ArrayList::new, GROUP_STREAM_CODEC), AutocrafterManagerData::groups, + AutocrafterManagerData::new + ); - public record Item(Component name, int slotCount) { + public record Group(Component name, int slotCount) { } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerListener.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerListener.java new file mode 100644 index 000000000..fe7c7213c --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerListener.java @@ -0,0 +1,6 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +@FunctionalInterface +interface AutocrafterManagerListener { + void slotsChanged(); +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java index ef31eac16..a52f5e97e 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java @@ -38,6 +38,7 @@ public AutocrafterManagerScreen(final AutocrafterManagerContainerMenu menu, this.inventoryLabelY = 75; this.imageWidth = 193; this.imageHeight = 176; + getMenu().setListener(this::resize); } @Override @@ -59,14 +60,16 @@ protected void init(final int rows) { updateScrollbar(); addWidget(searchField); + searchField.setResponder(value -> getMenu().setQuery(value)); addSideButton(new RedstoneModeSideButtonWidget(getMenu().getProperty(PropertyTypes.REDSTONE_MODE))); + addSideButton(new SearchModeSideButtonWidget(getMenu())); } private void updateScrollbar() { - final int totalRows = menu.getViewItems() + final int totalRows = menu.getGroups() .stream() - .map(AutocrafterManagerContainerMenu.Item::getRowsIncludingTitle) + .map(group -> group.isVisible() ? group.getVisibleRows() + 1 : 0) .reduce(0, Integer::sum); updateScrollbar(totalRows); } @@ -128,19 +131,22 @@ private void renderRowTitlesAndSlots(final GuiGraphics graphics, final int rows) { final int rowX = x + 7; int rowY = y + topHeight - getScrollbarOffset(); - for (final AutocrafterManagerContainerMenu.Item item : menu.getViewItems()) { + for (final AutocrafterManagerContainerMenu.Group group : menu.getGroups()) { + if (!group.isVisible()) { + continue; + } if (!isOutOfFrame(y, topHeight, rows, rowY)) { graphics.blitSprite(AUTOCRAFTER_NAME, rowX, rowY, 162, ROW_SIZE); - graphics.drawString(font, item.name(), rowX + 4, rowY + 6, 4210752, false); + graphics.drawString(font, group.name, rowX + 4, rowY + 6, 4210752, false); } - for (int i = 0; i < item.slotCount(); i++) { + for (int i = 0; i < group.getVisibleSlots(); i++) { final int slotX = rowX + ((i % COLUMNS) * 18); final int slotY = rowY + 18 + ((i / COLUMNS) * 18); if (!isOutOfFrame(y, topHeight, rows, slotY)) { graphics.blitSprite(Sprites.SLOT, slotX, slotY, 18, 18); } } - rowY += item.getRowsIncludingTitle() * ROW_SIZE; + rowY += (group.getVisibleRows() + 1) * ROW_SIZE; } } @@ -161,7 +167,7 @@ private void renderSlotContents(final GuiGraphics graphics, && mouseX < slot.x + leftPos + 16 && mouseY >= slot.y + topPos && mouseY < slot.y + topPos + 16; - if (hovering) { + if (slot.isActive() && hovering) { renderSlotHighlight(graphics, slot.x, slot.y, 0); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java new file mode 100644 index 000000000..541d824af --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java @@ -0,0 +1,30 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +public enum AutocrafterManagerSearchMode { + ALL, + PATTERN_INPUTS, + PATTERN_OUTPUTS, + AUTOCRAFTER_NAMES; + + AutocrafterManagerSearchMode toggle() { + return switch (this) { + case ALL -> PATTERN_INPUTS; + case PATTERN_INPUTS -> PATTERN_OUTPUTS; + case PATTERN_OUTPUTS -> AUTOCRAFTER_NAMES; + case AUTOCRAFTER_NAMES -> ALL; + }; + } + + boolean isSlotVisible(final AutocrafterManagerContainerMenu.Group group, + final String normalizedQuery, + final int index) { + return switch (this) { + case ALL -> group.nameContains(normalizedQuery) + || group.hasPatternInput(normalizedQuery, index) + || group.hasPatternOutput(normalizedQuery, index); + case PATTERN_INPUTS -> group.hasPatternInput(normalizedQuery, index); + case PATTERN_OUTPUTS -> group.hasPatternOutput(normalizedQuery, index); + case AUTOCRAFTER_NAMES -> group.nameContains(normalizedQuery); + }; + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java index c5b1ae52a..110ebc325 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java @@ -7,17 +7,20 @@ class AutocrafterManagerSlot extends Slot { private final int originalY; private final int startY; private final int endY; + private final boolean active; AutocrafterManagerSlot(final Container container, final int slot, final int x, final int y, final int startY, - final int endY) { + final int endY, + final boolean active) { super(container, slot, x, y); this.originalY = y; this.startY = startY; this.endY = endY; + this.active = active; } int getOriginalY() { @@ -26,7 +29,7 @@ int getOriginalY() { @Override public boolean isActive() { - return y >= startY && y < endY; + return y >= startY && y < endY && active; } @Override diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/SearchModeSideButtonWidget.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/SearchModeSideButtonWidget.java new file mode 100644 index 000000000..346f56af7 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/SearchModeSideButtonWidget.java @@ -0,0 +1,83 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.common.support.widget.AbstractSideButtonWidget; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; + +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; + +class SearchModeSideButtonWidget extends AbstractSideButtonWidget { + private static final MutableComponent TITLE = createTranslation("gui", "autocrafter_manager.search_mode"); + private static final MutableComponent SUBTEXT_ALL = createTranslation("gui", "autocrafter_manager.search_mode.all"); + private static final MutableComponent HELP_ALL = + createTranslation("gui", "autocrafter_manager.search_mode.all.help"); + private static final MutableComponent SUBTEXT_PATTERN_INPUTS = + createTranslation("gui", "autocrafter_manager.search_mode.pattern_inputs"); + private static final MutableComponent HELP_PATTERN_INPUTS = + createTranslation("gui", "autocrafter_manager.search_mode.pattern_inputs.help"); + private static final MutableComponent SUBTEXT_PATTERN_OUTPUTS = + createTranslation("gui", "autocrafter_manager.search_mode.pattern_outputs"); + private static final MutableComponent HELP_PATTERN_OUTPUTS = + createTranslation("gui", "autocrafter_manager.search_mode.pattern_outputs.help"); + private static final MutableComponent SUBTEXT_AUTOCRAFTER_NAMES = + createTranslation("gui", "autocrafter_manager.search_mode.autocrafter_names"); + private static final MutableComponent HELP_AUTOCRAFTER_NAMES = + createTranslation("gui", "autocrafter_manager.search_mode.autocrafter_names.help"); + private static final ResourceLocation SPRITE_ALL = + createIdentifier("widget/side_button/autocrafter_manager/search_mode/all"); + private static final ResourceLocation SPRITE_PATTERN_INPUTS = + createIdentifier("widget/side_button/autocrafter_manager/search_mode/pattern_inputs"); + private static final ResourceLocation SPRITE_PATTERN_OUTPUTS = + createIdentifier("widget/side_button/autocrafter_manager/search_mode/pattern_outputs"); + private static final ResourceLocation SPRITE_AUTOCRAFTER_NAMES = + createIdentifier("widget/side_button/autocrafter_manager/search_mode/autocrafter_names"); + + private final AutocrafterManagerContainerMenu containerMenu; + + SearchModeSideButtonWidget(final AutocrafterManagerContainerMenu containerMenu) { + super(createPressAction(containerMenu)); + this.containerMenu = containerMenu; + } + + private static OnPress createPressAction(final AutocrafterManagerContainerMenu containerMenu) { + return btn -> containerMenu.setSearchMode(containerMenu.getSearchMode().toggle()); + } + + @Override + protected ResourceLocation getSprite() { + return switch (containerMenu.getSearchMode()) { + case ALL -> SPRITE_ALL; + case PATTERN_INPUTS -> SPRITE_PATTERN_INPUTS; + case PATTERN_OUTPUTS -> SPRITE_PATTERN_OUTPUTS; + case AUTOCRAFTER_NAMES -> SPRITE_AUTOCRAFTER_NAMES; + }; + } + + @Override + protected MutableComponent getTitle() { + return TITLE; + } + + @Override + protected MutableComponent getSubText() { + return switch (containerMenu.getSearchMode()) { + case ALL -> SUBTEXT_ALL; + case PATTERN_INPUTS -> SUBTEXT_PATTERN_INPUTS; + case PATTERN_OUTPUTS -> SUBTEXT_PATTERN_OUTPUTS; + case AUTOCRAFTER_NAMES -> SUBTEXT_AUTOCRAFTER_NAMES; + }; + } + + @Override + protected Component getHelpText() { + return switch (containerMenu.getSearchMode()) { + case ALL -> HELP_ALL; + case PATTERN_INPUTS -> HELP_PATTERN_INPUTS; + case PATTERN_OUTPUTS -> HELP_PATTERN_OUTPUTS; + case AUTOCRAFTER_NAMES -> HELP_AUTOCRAFTER_NAMES; + }; + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java index 62ab2838b..e9c9a5207 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java @@ -17,9 +17,9 @@ public abstract class AbstractStretchingScreenB|mLR_t^tbih;U^E0qW(Yit zd0flDz{pS%?TfNTzE0=pDE8N~8*^>bP0l+XkKiuNl< literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/autocrafter_names.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/autocrafter_names.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb29dfa143d7d7173fc8e6c37aef2a3b2cfc10c GIT binary patch literal 1181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR_t^tbih;U^E0qW(Yit zd0flDz{pS%7uISOR<-xEeA| zj`r{z;ci%SJfJaCBd&cR_kwCZUIvC3ONKQEA2Wb-^QA_3ruq6ZXaU(A&@^=^cru9P M>FVdQ&MBb@032i_*Z=?k literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/pattern_inputs.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/search_mode/pattern_inputs.png new file mode 100644 index 0000000000000000000000000000000000000000..6a555225461831a67752e35dbf1eaa86edd0c0c3 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}E0G|+7D=RA?v!qe=8IWQs3Gxg6&+v4+ffta+S>O>_%)r2R1cVuNS%G}E0G|+7D=RA?v!qe=8IWQs3Gxg6&+v4+ffta+S>O>_%)r2R1cVu#M92fyOa-y85}Sb4q9e0RERb>i_@% literal 0 HcmV?d00001 diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java index c297254d1..af1c0c140 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.fabric; import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; import com.refinedmods.refinedstorage.common.content.DefaultEnergyUsage; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; @@ -123,9 +124,7 @@ public class ConfigImpl implements ConfigData, com.refinedmods.refinedstorage.co private AutocrafterEntryImpl autocrafter = new AutocrafterEntryImpl(); @ConfigEntry.Gui.CollapsibleObject - private SimpleEnergyUsageEntryImpl autocrafterManager = new SimpleEnergyUsageEntryImpl( - DefaultEnergyUsage.AUTOCRAFTER_MANAGER - ); + private AutocrafterManagerEntryImpl autocrafterManager = new AutocrafterManagerEntryImpl(); public static ConfigImpl get() { return AutoConfig.getConfigHolder(ConfigImpl.class).getConfig(); @@ -293,7 +292,7 @@ public AutocrafterEntry getAutocrafter() { } @Override - public SimpleEnergyUsageEntry getAutocrafterManager() { + public AutocrafterManagerEntry getAutocrafterManager() { return autocrafterManager; } @@ -749,4 +748,30 @@ public long getEnergyUsage() { return energyUsage; } } + + private static class AutocrafterManagerEntryImpl implements AutocrafterManagerEntry { + private long energyUsage = DefaultEnergyUsage.AUTOCRAFTER_MANAGER; + + private AutocrafterManagerSearchMode searchMode = AutocrafterManagerSearchMode.ALL; + + @Override + public void setSearchMode(final AutocrafterManagerSearchMode searchMode) { + this.searchMode = searchMode; + save(); + } + + @Override + public AutocrafterManagerSearchMode getSearchMode() { + return searchMode; + } + + @Override + public long getEnergyUsage() { + return energyUsage; + } + + private static void save() { + AutoConfig.getConfigHolder(ConfigImpl.class).save(); + } + } } diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java index ebf72f20a..d5ec56c8f 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java @@ -2,6 +2,7 @@ import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; import com.refinedmods.refinedstorage.common.Config; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; import com.refinedmods.refinedstorage.common.content.DefaultEnergyUsage; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; @@ -53,7 +54,7 @@ public class ConfigImpl implements Config { private final SimpleEnergyUsageEntry securityManager; private final RelayEntry relay; private final AutocrafterEntryImpl autocrafter; - private final SimpleEnergyUsageEntry autocrafterManager; + private final AutocrafterManagerEntryImpl autocrafterManager; public ConfigImpl() { screenSize = builder @@ -99,10 +100,7 @@ public ConfigImpl() { securityManager = new SimpleEnergyUsageEntryImpl("securityManager", DefaultEnergyUsage.SECURITY_MANAGER); relay = new RelayEntryImpl(); autocrafter = new AutocrafterEntryImpl(); - autocrafterManager = new SimpleEnergyUsageEntryImpl( - "autocrafterManager", - DefaultEnergyUsage.AUTOCRAFTER_MANAGER - ); + autocrafterManager = new AutocrafterManagerEntryImpl(); spec = builder.build(); } @@ -274,7 +272,7 @@ public AutocrafterEntry getAutocrafter() { } @Override - public SimpleEnergyUsageEntry getAutocrafterManager() { + public AutocrafterManagerEntry getAutocrafterManager() { return autocrafterManager; } @@ -961,4 +959,38 @@ public long getEnergyUsage() { return energyUsage.get(); } } + + private class AutocrafterManagerEntryImpl implements AutocrafterManagerEntry { + private final ModConfigSpec.LongValue energyUsage; + private final ModConfigSpec.EnumValue searchMode; + + AutocrafterManagerEntryImpl() { + builder.translation(translationKey("autocrafterManager")).push("autocrafterManager"); + energyUsage = builder + .translation(translationKey("autocrafterManager." + ENERGY_USAGE)) + .defineInRange(ENERGY_USAGE, DefaultEnergyUsage.AUTOCRAFTER_MANAGER, 0, Long.MAX_VALUE); + searchMode = builder + .translation(translationKey("autocrafterManager.searchMode")) + .defineEnum("searchMode", AutocrafterManagerSearchMode.ALL); + builder.pop(); + } + + @Override + public void setSearchMode(final AutocrafterManagerSearchMode searchMode) { + if (searchMode != this.searchMode.get()) { + this.searchMode.set(searchMode); + ConfigImpl.this.spec.save(); + } + } + + @Override + public AutocrafterManagerSearchMode getSearchMode() { + return searchMode.get(); + } + + @Override + public long getEnergyUsage() { + return energyUsage.get(); + } + } } diff --git a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/autocrafting/SimplePattern.java b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/autocrafting/SimplePattern.java index 4ebb15448..25669b377 100644 --- a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/autocrafting/SimplePattern.java +++ b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/autocrafting/SimplePattern.java @@ -12,6 +12,11 @@ public SimplePattern(final ResourceKey... outputs) { this.outputs = Set.of(outputs); } + @Override + public Set getInputResources() { + return Set.of(); + } + @Override public Set getOutputResources() { return outputs; From 8f95ab0663af5406e2a267b5f9b7815256a4c218 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 31 Oct 2024 16:58:44 +0100 Subject: [PATCH 6/9] feat: add visible to the autocrafter manager option to the autocrafter --- CHANGELOG.md | 1 + .../autocrafter/AutocrafterBlockEntity.java | 15 ++++++++ .../autocrafter/AutocrafterContainerMenu.java | 6 ++++ .../autocrafter/AutocrafterPropertyTypes.java | 4 +++ .../autocrafter/AutocrafterScreen.java | 3 ++ .../autocrafter/LockModeSideButtonWidget.java | 12 +++---- ...TheAutocrafterManagerSideButtonWidget.java | 34 ++++++++++++++++++ .../assets/refinedstorage/lang/en_us.json | 2 ++ .../lock_until_all_outputs_are_received.png | Bin .../lock_until_connected_machine_is_empty.png | Bin .../lock_until_high_redstone_signal.png | Bin .../lock_until_low_redstone_signal.png | Bin .../lock_until_redstone_pulse_is_received.png | Bin .../lock_mode}/never.png | Bin .../visible_to_the_autocrafter_manager/no.png | Bin 0 -> 1180 bytes .../yes.png | Bin 0 -> 1191 bytes 16 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/VisibleToTheAutocrafterManagerSideButtonWidget.java rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/lock_until_all_outputs_are_received.png (100%) rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/lock_until_connected_machine_is_empty.png (100%) rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/lock_until_high_redstone_signal.png (100%) rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/lock_until_low_redstone_signal.png (100%) rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/lock_until_redstone_pulse_is_received.png (100%) rename refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/{autocrafter_lock_mode => autocrafter/lock_mode}/never.png (100%) create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/no.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/yes.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 580b301de..74fb1b729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Autocrafter names - All of the above (by default) - Due to technical limitations and the new filtering options listed above being client-side only, you can no longer shift-click patterns in the Autocrafter Manager. +- In the Autocrafter, you can now configure whether it is visible to the Autocrafter Manager. ## [2.0.0-milestone.4.8] - 2024-10-12 diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java index b8e049bb6..121764ba9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java @@ -48,11 +48,13 @@ public class AutocrafterBlockEntity extends AbstractBaseNetworkNodeContainerBloc private static final String TAG_PATTERNS = "patterns"; private static final String TAG_LOCK_MODE = "lm"; private static final String TAG_PRIORITY = "pri"; + private static final String TAG_VISIBLE_TO_THE_AUTOCRAFTER_MANAGER = "vaum"; private final PatternInventory patternContainer = new PatternInventory(this::getLevel); private final UpgradeContainer upgradeContainer; private LockMode lockMode = LockMode.NEVER; private int priority; + private boolean visibleToTheAutocrafterManager = true; public AutocrafterBlockEntity(final BlockPos pos, final BlockState state) { super( @@ -199,6 +201,7 @@ public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provide super.writeConfiguration(tag, provider); tag.putInt(TAG_LOCK_MODE, LockModeSettings.getLockMode(lockMode)); tag.putInt(TAG_PRIORITY, priority); + tag.putBoolean(TAG_VISIBLE_TO_THE_AUTOCRAFTER_MANAGER, visibleToTheAutocrafterManager); } @Override @@ -221,6 +224,9 @@ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider if (tag.contains(TAG_PRIORITY)) { priority = tag.getInt(TAG_PRIORITY); } + if (tag.contains(TAG_VISIBLE_TO_THE_AUTOCRAFTER_MANAGER)) { + visibleToTheAutocrafterManager = tag.getBoolean(TAG_VISIBLE_TO_THE_AUTOCRAFTER_MANAGER); + } } @Override @@ -274,6 +280,15 @@ void setPriority(final int priority) { setChanged(); } + boolean isVisibleToTheAutocrafterManager() { + return visibleToTheAutocrafterManager; + } + + void setVisibleToTheAutocrafterManager(final boolean visibleToTheAutocrafterManager) { + this.visibleToTheAutocrafterManager = visibleToTheAutocrafterManager; + setChanged(); + } + @Override public void setLevel(final Level level) { super.setLevel(level); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java index de438ab54..3fb9f44f0 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java @@ -42,6 +42,7 @@ public AutocrafterContainerMenu(final int syncId, final Inventory playerInventor this.player = playerInventory.player; registerProperty(new ClientProperty<>(AutocrafterPropertyTypes.LOCK_MODE, LockMode.NEVER)); registerProperty(new ClientProperty<>(AutocrafterPropertyTypes.PRIORITY, 0)); + registerProperty(new ClientProperty<>(AutocrafterPropertyTypes.VISIBLE_TO_THE_AUTOCRAFTER_MANAGER, true)); addSlots( new PatternInventory(playerInventory.player::level), new UpgradeContainer(UpgradeDestinations.AUTOCRAFTER) @@ -70,6 +71,11 @@ public AutocrafterContainerMenu(final int syncId, autocrafter::getPriority, autocrafter::setPriority )); + registerProperty(new ServerProperty<>( + AutocrafterPropertyTypes.VISIBLE_TO_THE_AUTOCRAFTER_MANAGER, + autocrafter::isVisibleToTheAutocrafterManager, + autocrafter::setVisibleToTheAutocrafterManager + )); addSlots(autocrafter.getPatternContainer(), autocrafter.getUpgradeContainer()); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java index ce611f3a5..fdfbb3808 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterPropertyTypes.java @@ -16,6 +16,10 @@ final class AutocrafterPropertyTypes { createIdentifier("crafter_priority") ); + static final PropertyType VISIBLE_TO_THE_AUTOCRAFTER_MANAGER = PropertyTypes.createBooleanProperty( + createIdentifier("visible_to_the_autocrafter_manager") + ); + private AutocrafterPropertyTypes() { } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java index 831190be8..ae75aa9c1 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java @@ -112,6 +112,9 @@ protected void init() { playerInventory, this )); + addSideButton(new VisibleToTheAutocrafterManagerSideButtonWidget( + getMenu().getProperty(AutocrafterPropertyTypes.VISIBLE_TO_THE_AUTOCRAFTER_MANAGER) + )); nameField = new SearchFieldWidget( font, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java index 80da37f15..77bea2ee8 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/LockModeSideButtonWidget.java @@ -13,21 +13,21 @@ class LockModeSideButtonWidget extends AbstractSideButtonWidget { private static final String PREFIX = "autocrafter.lock_mode"; private static final MutableComponent TITLE = createTranslation("gui", PREFIX); - private static final ResourceLocation NEVER = createIdentifier("widget/side_button/autocrafter_lock_mode/never"); + private static final ResourceLocation NEVER = createIdentifier("widget/side_button/autocrafter/lock_mode/never"); private static final ResourceLocation LOCK_UNTIL_REDSTONE_PULSE_RECEIVED = createIdentifier( - "widget/side_button/autocrafter_lock_mode/lock_until_redstone_pulse_is_received" + "widget/side_button/autocrafter/lock_mode/lock_until_redstone_pulse_is_received" ); private static final ResourceLocation LOCK_UNTIL_CONNECTED_MACHINE_IS_EMPTY = createIdentifier( - "widget/side_button/autocrafter_lock_mode/lock_until_connected_machine_is_empty" + "widget/side_button/autocrafter/lock_mode/lock_until_connected_machine_is_empty" ); private static final ResourceLocation LOCK_UNTIL_ALL_OUTPUTS_ARE_RECEIVED = createIdentifier( - "widget/side_button/autocrafter_lock_mode/lock_until_all_outputs_are_received" + "widget/side_button/autocrafter/lock_mode/lock_until_all_outputs_are_received" ); private static final ResourceLocation LOCK_UNTIL_HIGH_REDSTONE_SIGNAL = createIdentifier( - "widget/side_button/autocrafter_lock_mode/lock_until_high_redstone_signal" + "widget/side_button/autocrafter/lock_mode/lock_until_high_redstone_signal" ); private static final ResourceLocation LOCK_UNTIL_LOW_REDSTONE_SIGNAL = createIdentifier( - "widget/side_button/autocrafter_lock_mode/lock_until_low_redstone_signal" + "widget/side_button/autocrafter/lock_mode/lock_until_low_redstone_signal" ); private static final MutableComponent NEVER_TITLE = createTranslation("gui", PREFIX + ".never"); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/VisibleToTheAutocrafterManagerSideButtonWidget.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/VisibleToTheAutocrafterManagerSideButtonWidget.java new file mode 100644 index 000000000..ef6d4f2d9 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/VisibleToTheAutocrafterManagerSideButtonWidget.java @@ -0,0 +1,34 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; + +import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; +import com.refinedmods.refinedstorage.common.support.widget.AbstractYesNoSideButtonWidget; + +import javax.annotation.Nullable; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; + +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; + +class VisibleToTheAutocrafterManagerSideButtonWidget extends AbstractYesNoSideButtonWidget { + private static final MutableComponent TITLE = + createTranslation("gui", "autocrafter.visible_to_the_autocrafter_manager"); + private static final MutableComponent HELP = + createTranslation("gui", "autocrafter.visible_to_the_autocrafter_manager.help"); + private static final ResourceLocation YES = + createIdentifier("widget/side_button/autocrafter/visible_to_the_autocrafter_manager/yes"); + private static final ResourceLocation NO = + createIdentifier("widget/side_button/autocrafter/visible_to_the_autocrafter_manager/no"); + + VisibleToTheAutocrafterManagerSideButtonWidget(final ClientProperty property) { + super(property, TITLE, YES, NO); + } + + @Nullable + @Override + protected Component getHelpText() { + return HELP; + } +} diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json index bfcdc4b39..026ca20ef 100644 --- a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -203,6 +203,8 @@ "gui.refinedstorage.autocrafter.lock_mode.lock_until_all_outputs_are_received": "Lock until all outputs are received", "gui.refinedstorage.autocrafter.lock_mode.lock_until_high_redstone_signal": "Lock until high redstone signal", "gui.refinedstorage.autocrafter.lock_mode.lock_until_low_redstone_signal": "Lock until low redstone signal", + "gui.refinedstorage.autocrafter.visible_to_the_autocrafter_manager": "Visible to the Autocrafter Manager", + "gui.refinedstorage.autocrafter.visible_to_the_autocrafter_manager.help": "If this is enabled, you will be able to manage this autocrafter in the Autocrafter Manager.", "gui.refinedstorage.autocrafter.edit_name": "Edit", "gui.refinedstorage.autocrafter.chained": "Chained", "gui.refinedstorage.autocrafter.chained.help": "This autocrafter is part of a chain.", diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_all_outputs_are_received.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_all_outputs_are_received.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_all_outputs_are_received.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_all_outputs_are_received.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_connected_machine_is_empty.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_connected_machine_is_empty.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_connected_machine_is_empty.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_connected_machine_is_empty.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_high_redstone_signal.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_high_redstone_signal.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_high_redstone_signal.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_high_redstone_signal.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_low_redstone_signal.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_low_redstone_signal.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_low_redstone_signal.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_low_redstone_signal.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_redstone_pulse_is_received.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_redstone_pulse_is_received.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/lock_until_redstone_pulse_is_received.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/lock_until_redstone_pulse_is_received.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/never.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/never.png similarity index 100% rename from refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_lock_mode/never.png rename to refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/lock_mode/never.png diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/no.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/no.png new file mode 100644 index 0000000000000000000000000000000000000000..054e6ac473bee9ecef6b0059cae3bd2c8890e2bc GIT binary patch literal 1180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR_t^tbih;U^E0qW(Yit zd0flDz{pS%FVdQ&MBb@05(!0wEzGB literal 0 HcmV?d00001 diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/yes.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter/visible_to_the_autocrafter_manager/yes.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3147b663f49973af9874d5bf9ae2dfd64078ca GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR_t^tbih;U^E0qW(Yit zd0flDz{pS% Date: Thu, 31 Oct 2024 17:25:42 +0100 Subject: [PATCH 7/9] feat: autocrafter manager view type --- CHANGELOG.md | 6 +- .../refinedstorage/common/Config.java | 5 ++ .../AutocrafterManagerContainerMenu.java | 10 ++- .../AutocrafterManagerScreen.java | 1 + .../AutocrafterManagerViewType.java | 15 ++++ .../ViewTypeSideButtonWidget.java | 75 ++++++++++++++++++ .../assets/refinedstorage/lang/en_us.json | 9 +++ .../autocrafter_manager/view_type/all.png | Bin 0 -> 1191 bytes .../view_type/not_full.png | Bin 0 -> 204 bytes .../autocrafter_manager/view_type/visible.png | Bin 0 -> 181 bytes .../widget/side_button/resource_type/all.png | Bin 955 -> 181 bytes .../refinedstorage/fabric/ConfigImpl.java | 14 ++++ .../refinedstorage/neoforge/ConfigImpl.java | 18 +++++ 13 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerViewType.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/ViewTypeSideButtonWidget.java create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/view_type/all.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/view_type/not_full.png create mode 100644 refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/view_type/visible.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 74fb1b729..86c36c8ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Added - Autocrafter Manager +- You can now configure the view type of the Autocrafter Manager: + - Visible (only show autocrafters that are configured to be visible to the Autocrafter Manager) + - Not full (only show autocrafters that are not full yet) + - All (show all autocrafters) ### Changed @@ -19,7 +23,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Autocrafter names - All of the above (by default) - Due to technical limitations and the new filtering options listed above being client-side only, you can no longer shift-click patterns in the Autocrafter Manager. -- In the Autocrafter, you can now configure whether it is visible to the Autocrafter Manager. +- In the Autocrafter, you can now configure whether it is visible to the Autocrafter Manager (by default it's visible). ## [2.0.0-milestone.4.8] - 2024-10-12 diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java index 23e1d5043..f91ffc40e 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/Config.java @@ -2,6 +2,7 @@ import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerViewType; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; import com.refinedmods.refinedstorage.common.grid.GridViewType; @@ -220,5 +221,9 @@ interface AutocrafterManagerEntry extends SimpleEnergyUsageEntry { void setSearchMode(AutocrafterManagerSearchMode searchMode); AutocrafterManagerSearchMode getSearchMode(); + + void setViewType(AutocrafterManagerViewType viewType); + + AutocrafterManagerViewType getViewType(); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java index a8b1e84a7..a9e4008fb 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java @@ -16,7 +16,6 @@ import java.util.List; import java.util.Locale; import java.util.Set; - import javax.annotation.Nullable; import net.minecraft.network.chat.Component; @@ -164,6 +163,15 @@ void setSearchMode(final AutocrafterManagerSearchMode searchMode) { notifyListener(); } + AutocrafterManagerViewType getViewType() { + return Platform.INSTANCE.getConfig().getAutocrafterManager().getViewType(); + } + + void setViewType(final AutocrafterManagerViewType toggle) { + Platform.INSTANCE.getConfig().getAutocrafterManager().setViewType(toggle); + notifyListener(); + } + static class Group { final Component name; final int slotCount; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java index a52f5e97e..6f5d78ba9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java @@ -63,6 +63,7 @@ protected void init(final int rows) { searchField.setResponder(value -> getMenu().setQuery(value)); addSideButton(new RedstoneModeSideButtonWidget(getMenu().getProperty(PropertyTypes.REDSTONE_MODE))); + addSideButton(new ViewTypeSideButtonWidget(getMenu())); addSideButton(new SearchModeSideButtonWidget(getMenu())); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerViewType.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerViewType.java new file mode 100644 index 000000000..926f49901 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerViewType.java @@ -0,0 +1,15 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +public enum AutocrafterManagerViewType { + VISIBLE, + NOT_FULL, + ALL; + + AutocrafterManagerViewType toggle() { + return switch (this) { + case VISIBLE -> NOT_FULL; + case NOT_FULL -> ALL; + case ALL -> VISIBLE; + }; + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/ViewTypeSideButtonWidget.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/ViewTypeSideButtonWidget.java new file mode 100644 index 000000000..9cf4c022a --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/ViewTypeSideButtonWidget.java @@ -0,0 +1,75 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +import com.refinedmods.refinedstorage.common.support.widget.AbstractSideButtonWidget; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; + +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; + +class ViewTypeSideButtonWidget extends AbstractSideButtonWidget { + private static final MutableComponent TITLE = createTranslation("gui", "autocrafter_manager.view_type"); + private static final MutableComponent SUBTEXT_VISIBLE = + createTranslation("gui", "autocrafter_manager.view_type.visible"); + private static final MutableComponent HELP_VISIBLE = + createTranslation("gui", "autocrafter_manager.view_type.visible.help"); + private static final MutableComponent SUBTEXT_NOT_FULL = + createTranslation("gui", "autocrafter_manager.view_type.not_full"); + private static final MutableComponent HELP_NOT_FULL = + createTranslation("gui", "autocrafter_manager.view_type.not_full.help"); + private static final MutableComponent SUBTEXT_ALL = + createTranslation("gui", "autocrafter_manager.view_type.all"); + private static final MutableComponent HELP_ALL = + createTranslation("gui", "autocrafter_manager.view_type.all.help"); + private static final ResourceLocation SPRITE_VISIBLE = + createIdentifier("widget/side_button/autocrafter_manager/view_type/visible"); + private static final ResourceLocation SPRITE_NOT_FULL = + createIdentifier("widget/side_button/autocrafter_manager/view_type/not_full"); + private static final ResourceLocation SPRITE_ALL = + createIdentifier("widget/side_button/autocrafter_manager/view_type/all"); + + private final AutocrafterManagerContainerMenu containerMenu; + + ViewTypeSideButtonWidget(final AutocrafterManagerContainerMenu containerMenu) { + super(createPressAction(containerMenu)); + this.containerMenu = containerMenu; + } + + private static OnPress createPressAction(final AutocrafterManagerContainerMenu containerMenu) { + return btn -> containerMenu.setViewType(containerMenu.getViewType().toggle()); + } + + @Override + protected ResourceLocation getSprite() { + return switch (containerMenu.getViewType()) { + case VISIBLE -> SPRITE_VISIBLE; + case NOT_FULL -> SPRITE_NOT_FULL; + case ALL -> SPRITE_ALL; + }; + } + + @Override + protected MutableComponent getTitle() { + return TITLE; + } + + @Override + protected MutableComponent getSubText() { + return switch (containerMenu.getViewType()) { + case VISIBLE -> SUBTEXT_VISIBLE; + case NOT_FULL -> SUBTEXT_NOT_FULL; + case ALL -> SUBTEXT_ALL; + }; + } + + @Override + protected Component getHelpText() { + return switch (containerMenu.getViewType()) { + case VISIBLE -> HELP_VISIBLE; + case NOT_FULL -> HELP_NOT_FULL; + case ALL -> HELP_ALL; + }; + } +} diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json index 026ca20ef..10d370c0a 100644 --- a/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/refinedstorage-common/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -227,6 +227,13 @@ "gui.refinedstorage.autocrafter_manager.search_mode.pattern_outputs.help": "Search in pattern outputs.", "gui.refinedstorage.autocrafter_manager.search_mode.autocrafter_names": "Autocrafter names", "gui.refinedstorage.autocrafter_manager.search_mode.autocrafter_names.help": "Search in autocrafter names.", + "gui.refinedstorage.autocrafter_manager.view_type": "View type", + "gui.refinedstorage.autocrafter_manager.view_type.visible": "Visible", + "gui.refinedstorage.autocrafter_manager.view_type.visible.help": "Show all autocrafters that are visible to the Autocrafter Manager.", + "gui.refinedstorage.autocrafter_manager.view_type.not_full": "Not full", + "gui.refinedstorage.autocrafter_manager.view_type.not_full.help": "Show all autocrafters that are not full yet.", + "gui.refinedstorage.autocrafter_manager.view_type.all": "All", + "gui.refinedstorage.autocrafter_manager.view_type.all.help": "Show all autocrafters.", "item.refinedstorage.controller.help": "Provides the storage network with energy. Multiple are allowed in a single storage network.", "item.refinedstorage.creative_controller.help": "Provides the storage network with an infinite source of energy.", "item.refinedstorage.disk_drive.help": "Accepts storage disks to provide the storage network with storage space.", @@ -617,6 +624,8 @@ "text.autoconfig.refinedstorage.option.autocrafterManager.energyUsage.tooltip": "The energy used by the Autocrafter Manager.", "text.autoconfig.refinedstorage.option.autocrafterManager.searchMode": "Search mode", "text.autoconfig.refinedstorage.option.autocrafterManager.searchMode.tooltip": "The search mode.", + "text.autoconfig.refinedstorage.option.autocrafterManager.viewType": "View type", + "text.autoconfig.refinedstorage.option.autocrafterManager.viewType.tooltip": "The view type.", "advancements.refinedstorage.root.description": "Use one or multiple Controllers in a storage network to provide your network with energy", "advancements.refinedstorage.connecting": "Connecting", "advancements.refinedstorage.connecting.description": "Use Cable to connect devices with each other, or place devices against each other", diff --git a/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/view_type/all.png b/refinedstorage-common/src/main/resources/assets/refinedstorage/textures/gui/sprites/widget/side_button/autocrafter_manager/view_type/all.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3147b663f49973af9874d5bf9ae2dfd64078ca GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR_t^tbih;U^E0qW(Yit zd0flDz{pS%NS%G}E0G|+7D=RA?v!qe=8IWQs3Gxg6&+v4+ffta+S>O>_%)r2R1cVu%-e18Qxe3fe3iFa8WrD{ENCaF;NSs56Z83KGlT&=9EfKsDiGz3Ow2t15=TnqF$Q%R6t@PCG<+YP*cJkA1-$YKTt zzQZ8Qcszea3Q*9@)5S4FBe=Gkk&D5AgX!!4`S(^Vy>f$Pw=;)KCEo;&ZM&x5T0BXo o?4NV}$;&la2c}Jt(MnbjFa5x9*P!*^Tu|_Oy85}Sb4q9e03&ZX0RR91 diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java index af1c0c140..37078f05d 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ConfigImpl.java @@ -2,6 +2,7 @@ import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerViewType; import com.refinedmods.refinedstorage.common.content.DefaultEnergyUsage; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; @@ -754,6 +755,8 @@ private static class AutocrafterManagerEntryImpl implements AutocrafterManagerEn private AutocrafterManagerSearchMode searchMode = AutocrafterManagerSearchMode.ALL; + private AutocrafterManagerViewType viewType = AutocrafterManagerViewType.VISIBLE; + @Override public void setSearchMode(final AutocrafterManagerSearchMode searchMode) { this.searchMode = searchMode; @@ -765,6 +768,17 @@ public AutocrafterManagerSearchMode getSearchMode() { return searchMode; } + @Override + public void setViewType(final AutocrafterManagerViewType viewType) { + this.viewType = viewType; + save(); + } + + @Override + public AutocrafterManagerViewType getViewType() { + return viewType; + } + @Override public long getEnergyUsage() { return energyUsage; diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java index d5ec56c8f..fb5553942 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ConfigImpl.java @@ -3,6 +3,7 @@ import com.refinedmods.refinedstorage.api.grid.view.GridSortingDirection; import com.refinedmods.refinedstorage.common.Config; import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerSearchMode; +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerViewType; import com.refinedmods.refinedstorage.common.content.DefaultEnergyUsage; import com.refinedmods.refinedstorage.common.grid.CraftingGridMatrixCloseBehavior; import com.refinedmods.refinedstorage.common.grid.GridSortingTypes; @@ -963,6 +964,7 @@ public long getEnergyUsage() { private class AutocrafterManagerEntryImpl implements AutocrafterManagerEntry { private final ModConfigSpec.LongValue energyUsage; private final ModConfigSpec.EnumValue searchMode; + private final ModConfigSpec.EnumValue viewType; AutocrafterManagerEntryImpl() { builder.translation(translationKey("autocrafterManager")).push("autocrafterManager"); @@ -972,6 +974,9 @@ private class AutocrafterManagerEntryImpl implements AutocrafterManagerEntry { searchMode = builder .translation(translationKey("autocrafterManager.searchMode")) .defineEnum("searchMode", AutocrafterManagerSearchMode.ALL); + viewType = builder + .translation(translationKey("autocrafterManager.viewType")) + .defineEnum("viewType", AutocrafterManagerViewType.VISIBLE); builder.pop(); } @@ -988,6 +993,19 @@ public AutocrafterManagerSearchMode getSearchMode() { return searchMode.get(); } + @Override + public void setViewType(final AutocrafterManagerViewType viewType) { + if (viewType != this.viewType.get()) { + this.viewType.set(viewType); + ConfigImpl.this.spec.save(); + } + } + + @Override + public AutocrafterManagerViewType getViewType() { + return viewType.get(); + } + @Override public long getEnergyUsage() { return energyUsage.get(); From a5d55b0388a7cdfa20cfb8b9fc15576169606fde Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 31 Oct 2024 17:54:52 +0100 Subject: [PATCH 8/9] feat: autocrafter manager respects activeness --- .../AutocrafterManagerBlockEntity.java | 20 +++++++++- .../AutocrafterManagerContainerMenu.java | 38 ++++++++++++++++++- .../AutocrafterManagerData.java | 3 +- .../AutocrafterManagerScreen.java | 18 ++++++++- .../AutocrafterManagerWatcher.java | 6 +++ .../grid/AbstractGridContainerMenu.java | 2 +- .../grid/screen/AbstractGridScreen.java | 4 +- .../s2c/AutocrafterManagerActivePacket.java | 34 +++++++++++++++++ .../common/support/packet/s2c/S2CPackets.java | 6 ++- .../stretching/AbstractStretchingScreen.java | 2 +- .../fabric/ClientModInitializerImpl.java | 5 +++ .../fabric/ModInitializerImpl.java | 5 +++ .../neoforge/ModInitializer.java | 6 +++ 13 files changed, 138 insertions(+), 11 deletions(-) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerWatcher.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterManagerActivePacket.java diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java index 1cb99f3c4..7390f1448 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java @@ -8,7 +8,9 @@ import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; import com.refinedmods.refinedstorage.common.support.network.AbstractBaseNetworkNodeContainerBlockEntity; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.annotation.Nullable; import net.minecraft.core.BlockPos; @@ -37,12 +39,28 @@ public class AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContai new SimpleContainer(10) ); + private final Set watchers = new HashSet<>(); + public AutocrafterManagerBlockEntity(final BlockPos pos, final BlockState state) { super(BlockEntities.INSTANCE.getAutocrafterManager(), pos, state, new SimpleNetworkNode( Platform.INSTANCE.getConfig().getAutocrafterManager().getEnergyUsage() )); } + void addWatcher(final AutocrafterManagerWatcher watcher) { + watchers.add(watcher); + } + + void removeWatcher(final AutocrafterManagerWatcher watcher) { + watchers.remove(watcher); + } + + @Override + protected void activenessChanged(final boolean newActive) { + super.activenessChanged(newActive); + watchers.forEach(watcher -> watcher.activeChanged(newActive)); + } + @Override public Component getName() { return ContentNames.AUTOCRAFTER_MANAGER; @@ -56,7 +74,7 @@ protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState @Override public AutocrafterManagerData getMenuData() { - return new AutocrafterManagerData(groups); + return new AutocrafterManagerData(groups, mainNetworkNode.isActive()); } @Override diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java index a9e4008fb..87ccfa1df 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java @@ -9,6 +9,7 @@ import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; import com.refinedmods.refinedstorage.common.support.containermenu.ServerProperty; +import com.refinedmods.refinedstorage.common.support.packet.s2c.S2CPackets; import com.refinedmods.refinedstorage.common.support.stretching.ScreenSizeListener; import java.util.ArrayList; @@ -19,21 +20,27 @@ import javax.annotation.Nullable; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -public class AutocrafterManagerContainerMenu extends AbstractBaseContainerMenu implements ScreenSizeListener { +public class AutocrafterManagerContainerMenu extends AbstractBaseContainerMenu implements ScreenSizeListener, + AutocrafterManagerWatcher { private final Inventory playerInventory; private final List groups; private final List autocrafterSlots = new ArrayList<>(); @Nullable private AutocrafterManagerListener listener; + @Nullable + private AutocrafterManagerBlockEntity autocrafterManager; private String query = ""; + private boolean active; public AutocrafterManagerContainerMenu(final int syncId, final Inventory playerInventory, @@ -42,6 +49,7 @@ public AutocrafterManagerContainerMenu(final int syncId, this.playerInventory = playerInventory; registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); this.groups = data.groups().stream().map(group -> Group.from(playerInventory.player.level(), group)).toList(); + this.active = data.active(); resized(0, 0, 0); } @@ -51,6 +59,8 @@ public AutocrafterManagerContainerMenu(final int syncId, final List containers) { super(Menus.INSTANCE.getAutocrafterManager(), syncId); this.playerInventory = playerInventory; + this.autocrafterManager = autocrafterManager; + this.autocrafterManager.addWatcher(this); registerProperty(new ServerProperty<>( PropertyTypes.REDSTONE_MODE, autocrafterManager::getRedstoneMode, @@ -60,6 +70,14 @@ public AutocrafterManagerContainerMenu(final int syncId, addServerSideSlots(containers); } + @Override + public void removed(final Player playerEntity) { + super.removed(playerEntity); + if (autocrafterManager != null) { + autocrafterManager.removeWatcher(this); + } + } + void setListener(final AutocrafterManagerListener listener) { this.listener = listener; } @@ -115,7 +133,7 @@ private int addSlots(final Group group, final int rowX, final int rowY, final in for (int i = 0; i < group.slotCount; i++) { final int slotX = rowX + ((j % 9) * 18); final int slotY = rowY + 18 + ((j / 9) * 18); - final boolean visible = isSlotVisible(group, i); + final boolean visible = active && isSlotVisible(group, i); final AutocrafterManagerSlot slot = new AutocrafterManagerSlot( group.backingInventory, i, @@ -172,6 +190,22 @@ void setViewType(final AutocrafterManagerViewType toggle) { notifyListener(); } + public void setActive(final boolean active) { + this.active = active; + notifyListener(); + } + + boolean isActive() { + return active; + } + + @Override + public void activeChanged(final boolean newActive) { + if (playerInventory.player instanceof ServerPlayer serverPlayerEntity) { + S2CPackets.sendAutocrafterManagerActive(serverPlayerEntity, newActive); + } + } + static class Group { final Component name; final int slotCount; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java index 30c04586f..ddaa16ff9 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java @@ -9,7 +9,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -public record AutocrafterManagerData(List groups) { +public record AutocrafterManagerData(List groups, boolean active) { private static final StreamCodec GROUP_STREAM_CODEC = StreamCodec.composite( ComponentSerialization.STREAM_CODEC, Group::name, ByteBufCodecs.INT, Group::slotCount, @@ -18,6 +18,7 @@ public record AutocrafterManagerData(List groups) { public static final StreamCodec STREAM_CODEC = StreamCodec .composite( ByteBufCodecs.collection(ArrayList::new, GROUP_STREAM_CODEC), AutocrafterManagerData::groups, + ByteBufCodecs.BOOL, AutocrafterManagerData::active, AutocrafterManagerData::new ); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java index 6f5d78ba9..d192d1a3b 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java @@ -14,6 +14,7 @@ import javax.annotation.Nullable; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -27,6 +28,7 @@ public class AutocrafterManagerScreen extends AbstractStretchingScreen SEARCH_FIELD_HISTORY = new ArrayList<>(); private static final ResourceLocation AUTOCRAFTER_NAME = createIdentifier("autocrafter_manager/autocrafter_name"); private static final int COLUMNS = 9; + private static final int INACTIVE_COLOR = 0xFF5B5B5B; @Nullable private SearchFieldWidget searchField; @@ -38,7 +40,10 @@ public AutocrafterManagerScreen(final AutocrafterManagerContainerMenu menu, this.inventoryLabelY = 75; this.imageWidth = 193; this.imageHeight = 176; - getMenu().setListener(this::resize); + getMenu().setListener(() -> { + resize(); + updateScrollbar(); + }); } @Override @@ -121,6 +126,17 @@ protected void renderRows(final GuiGraphics graphics, final int rows, final int mouseX, final int mouseY) { + if (!menu.isActive()) { + graphics.fill( + RenderType.guiOverlay(), + x + 7 + 1, + y + TOP_HEIGHT + 1, + x + 7 + (ROW_SIZE * COLUMNS) - 1, + y + TOP_HEIGHT + 1 + (ROW_SIZE * rows) - 2, + INACTIVE_COLOR + ); + return; + } renderRowTitlesAndSlots(graphics, x, y, topHeight, rows); renderSlotContents(graphics, mouseX, mouseY, y, topHeight, rows); } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerWatcher.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerWatcher.java new file mode 100644 index 000000000..c0a82698b --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerWatcher.java @@ -0,0 +1,6 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; + +@FunctionalInterface +interface AutocrafterManagerWatcher { + void activeChanged(boolean active); +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java index 7bd56c7ec..10932544a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridContainerMenu.java @@ -278,7 +278,7 @@ public GridView getView() { public void onActiveChanged(final boolean newActive) { this.active = newActive; if (this.playerInventory.player instanceof ServerPlayer serverPlayerEntity) { - S2CPackets.sendGridActiveness(serverPlayerEntity, newActive); + S2CPackets.sendGridActive(serverPlayerEntity, newActive); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java index e697c0cac..de723ef18 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/screen/AbstractGridScreen.java @@ -365,9 +365,7 @@ private String getAmountText(final GridResource resource, } private void renderDisabledSlot(final GuiGraphics graphics, final int slotX, final int slotY) { - graphics.fillGradient( - RenderType.guiOverlay(), slotX, slotY, slotX + 16, slotY + 16, DISABLED_SLOT_COLOR, DISABLED_SLOT_COLOR, 0 - ); + graphics.fill(RenderType.guiOverlay(), slotX, slotY, slotX + 16, slotY + 16, DISABLED_SLOT_COLOR); } @Override diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterManagerActivePacket.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterManagerActivePacket.java new file mode 100644 index 000000000..7274142ec --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/AutocrafterManagerActivePacket.java @@ -0,0 +1,34 @@ +package com.refinedmods.refinedstorage.common.support.packet.s2c; + +import com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager.AutocrafterManagerContainerMenu; +import com.refinedmods.refinedstorage.common.support.packet.PacketContext; + +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.world.inventory.AbstractContainerMenu; + +import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier; + +public record AutocrafterManagerActivePacket(boolean active) implements CustomPacketPayload { + public static final Type PACKET_TYPE = + new Type<>(createIdentifier("autocrafter_manager_active")); + public static final StreamCodec STREAM_CODEC = + StreamCodec.composite( + ByteBufCodecs.BOOL, AutocrafterManagerActivePacket::active, + AutocrafterManagerActivePacket::new + ); + + public static void handle(final AutocrafterManagerActivePacket packet, final PacketContext ctx) { + final AbstractContainerMenu menu = ctx.getPlayer().containerMenu; + if (menu instanceof AutocrafterManagerContainerMenu containerMenu) { + containerMenu.setActive(packet.active); + } + } + + @Override + public Type type() { + return PACKET_TYPE; + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/S2CPackets.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/S2CPackets.java index 9ddd2e9c1..fbc8778cf 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/S2CPackets.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/packet/s2c/S2CPackets.java @@ -29,10 +29,14 @@ public static void sendWirelessTransmitterData(final ServerPlayer player, final Platform.INSTANCE.sendPacketToClient(player, new WirelessTransmitterDataPacket(range, active)); } - public static void sendGridActiveness(final ServerPlayer player, final boolean active) { + public static void sendGridActive(final ServerPlayer player, final boolean active) { Platform.INSTANCE.sendPacketToClient(player, new GridActivePacket(active)); } + public static void sendAutocrafterManagerActive(final ServerPlayer player, final boolean active) { + Platform.INSTANCE.sendPacketToClient(player, new AutocrafterManagerActivePacket(active)); + } + public static void sendGridUpdate(final ServerPlayer player, final PlatformResourceKey resource, final long change, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java index e9c9a5207..756bf1456 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/stretching/AbstractStretchingScreen.java @@ -15,8 +15,8 @@ public abstract class AbstractStretchingScreen extends AbstractBaseScreen { protected static final int ROW_SIZE = 18; + protected static final int TOP_HEIGHT = 19; - private static final int TOP_HEIGHT = 19; private static final int INVENTORY_INCLUDING_TITLE_HEIGHT = 99; private static final int COLUMNS = 9; private static final int MIN_ROWS = 3; diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ClientModInitializerImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ClientModInitializerImpl.java index d00d64c6b..0ca4674bd 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ClientModInitializerImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ClientModInitializerImpl.java @@ -19,6 +19,7 @@ import com.refinedmods.refinedstorage.common.storagemonitor.StorageMonitorBlockEntityRenderer; import com.refinedmods.refinedstorage.common.support.network.item.NetworkItemPropertyFunction; import com.refinedmods.refinedstorage.common.support.packet.PacketHandler; +import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterManagerActivePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterNameUpdatePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingPreviewResponsePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingResponsePacket; @@ -266,6 +267,10 @@ private void registerPacketHandlers() { GridActivePacket.PACKET_TYPE, wrapHandler(GridActivePacket::handle) ); + ClientPlayNetworking.registerGlobalReceiver( + AutocrafterManagerActivePacket.PACKET_TYPE, + wrapHandler(AutocrafterManagerActivePacket::handle) + ); ClientPlayNetworking.registerGlobalReceiver( EnergyInfoPacket.PACKET_TYPE, wrapHandler(EnergyInfoPacket::handle) diff --git a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java index f56af4ed3..743cca012 100644 --- a/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java +++ b/refinedstorage-fabric/src/main/java/com/refinedmods/refinedstorage/fabric/ModInitializerImpl.java @@ -55,6 +55,7 @@ import com.refinedmods.refinedstorage.common.support.packet.c2s.SingleAmountChangePacket; import com.refinedmods.refinedstorage.common.support.packet.c2s.StorageInfoRequestPacket; import com.refinedmods.refinedstorage.common.support.packet.c2s.UseSlotReferencedItemPacket; +import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterManagerActivePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterNameUpdatePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingPreviewResponsePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingResponsePacket; @@ -421,6 +422,10 @@ private void registerServerToClientPackets() { WirelessTransmitterDataPacket.STREAM_CODEC ); PayloadTypeRegistry.playS2C().register(GridActivePacket.PACKET_TYPE, GridActivePacket.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register( + AutocrafterManagerActivePacket.PACKET_TYPE, + AutocrafterManagerActivePacket.STREAM_CODEC + ); PayloadTypeRegistry.playS2C().register(GridClearPacket.PACKET_TYPE, GridClearPacket.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(GridUpdatePacket.PACKET_TYPE, GridUpdatePacket.STREAM_CODEC); PayloadTypeRegistry.playS2C().register( diff --git a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java index ae1f16950..63a292e96 100644 --- a/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java +++ b/refinedstorage-neoforge/src/main/java/com/refinedmods/refinedstorage/neoforge/ModInitializer.java @@ -55,6 +55,7 @@ import com.refinedmods.refinedstorage.common.support.packet.c2s.SingleAmountChangePacket; import com.refinedmods.refinedstorage.common.support.packet.c2s.StorageInfoRequestPacket; import com.refinedmods.refinedstorage.common.support.packet.c2s.UseSlotReferencedItemPacket; +import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterManagerActivePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocrafterNameUpdatePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingPreviewResponsePacket; import com.refinedmods.refinedstorage.common.support.packet.s2c.AutocraftingResponsePacket; @@ -591,6 +592,11 @@ private static void registerServerToClientPackets(final PayloadRegistrar registr GridActivePacket.STREAM_CODEC, wrapHandler(GridActivePacket::handle) ); + registrar.playToClient( + AutocrafterManagerActivePacket.PACKET_TYPE, + AutocrafterManagerActivePacket.STREAM_CODEC, + wrapHandler(AutocrafterManagerActivePacket::handle) + ); registrar.playToClient( GridClearPacket.PACKET_TYPE, GridClearPacket.STREAM_CODEC, From 2fca720d9e1f801f7e0129a0c440389cd73bf91d Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 31 Oct 2024 18:16:13 +0100 Subject: [PATCH 9/9] feat: autocrafter manager now uses actual autocrafters when building slots --- .../common/api/autocrafting/Autocrafter.java | 17 ++ .../api/autocrafting/PatternProviderItem.java | 5 + .../{autocrafter => }/PatternInventory.java | 29 ++- .../common/autocrafting/PatternSlot.java | 13 ++ .../autocrafter/AutocrafterBlockEntity.java | 18 +- .../autocrafter/AutocrafterContainerMenu.java | 6 +- .../AutocrafterNetworkNodeContainer.java | 36 ++++ .../autocrafter/AutocrafterScreen.java | 1 + .../autocrafting/autocrafter/PatternSlot.java | 12 -- .../AutocrafterManagerBlockEntity.java | 75 +++++-- .../AutocrafterManagerContainerMenu.java | 201 ++++++++++++------ .../AutocrafterManagerData.java | 27 ++- .../AutocrafterManagerScreen.java | 38 ++-- .../AutocrafterManagerSearchMode.java | 13 +- .../AutocrafterManagerSlot.java | 17 +- 15 files changed, 364 insertions(+), 144 deletions(-) create mode 100644 refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/Autocrafter.java rename refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/{autocrafter => }/PatternInventory.java (67%) create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterNetworkNodeContainer.java delete mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java diff --git a/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/Autocrafter.java b/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/Autocrafter.java new file mode 100644 index 000000000..0deca9609 --- /dev/null +++ b/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/Autocrafter.java @@ -0,0 +1,17 @@ +package com.refinedmods.refinedstorage.common.api.autocrafting; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.Container; +import org.apiguardian.api.API; + +@API(status = API.Status.STABLE, since = "2.0.0-milestone.4.9") +public interface Autocrafter { + Component getAutocrafterName(); + + Container getPatternContainer(); + + boolean isVisibleToTheAutocrafterManager(); + + BlockPos getLocalPosition(); +} diff --git a/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/PatternProviderItem.java b/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/PatternProviderItem.java index 641fb5db2..a9382e04f 100644 --- a/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/PatternProviderItem.java +++ b/refinedstorage-common-api/src/main/java/com/refinedmods/refinedstorage/common/api/autocrafting/PatternProviderItem.java @@ -12,6 +12,11 @@ @API(status = API.Status.STABLE, since = "2.0.0-milestone.4.6") public interface PatternProviderItem { + static boolean isValid(final ItemStack stack, final Level level) { + return stack.getItem() instanceof PatternProviderItem patternProviderItem + && patternProviderItem.getPattern(stack, level).isPresent(); + } + @Nullable UUID getId(ItemStack stack); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java similarity index 67% rename from refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java rename to refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java index 40b33aa5a..78510f38d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternInventory.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternInventory.java @@ -1,4 +1,4 @@ -package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; +package com.refinedmods.refinedstorage.common.autocrafting; import com.refinedmods.refinedstorage.api.core.NullableType; import com.refinedmods.refinedstorage.common.Platform; @@ -11,21 +11,20 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import static com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity.PATTERNS; -import static com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity.isValidPattern; +import static com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem.isValid; -class PatternInventory extends FilteredContainer { +public class PatternInventory extends FilteredContainer { @Nullable private Listener listener; - PatternInventory(final Supplier<@NullableType Level> levelSupplier) { + public PatternInventory(final int patterns, final Supplier<@NullableType Level> levelSupplier) { super( - PATTERNS, - stack -> Optional.ofNullable(levelSupplier.get()).map(level -> isValidPattern(stack, level)).orElse(false) + patterns, + stack -> Optional.ofNullable(levelSupplier.get()).map(level -> isValid(stack, level)).orElse(false) ); } - void setListener(@Nullable final Listener listener) { + public void setListener(@Nullable final Listener listener) { this.listener = listener; } @@ -47,7 +46,7 @@ public void setItem(final int slot, final ItemStack stack) { } } - long getEnergyUsage() { + public long getEnergyUsage() { long patterns = 0; for (int i = 0; i < getContainerSize(); i++) { final ItemStack stack = getItem(i); @@ -58,7 +57,17 @@ long getEnergyUsage() { return patterns * Platform.INSTANCE.getConfig().getAutocrafter().getEnergyUsagePerPattern(); } - interface Listener { + @Override + public int getMaxStackSize() { + return 1; + } + + @Override + public int getMaxStackSize(final ItemStack stack) { + return 1; + } + + public interface Listener { void patternChanged(int slot); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java new file mode 100644 index 000000000..fdb3c1b86 --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/PatternSlot.java @@ -0,0 +1,13 @@ +package com.refinedmods.refinedstorage.common.autocrafting; + +import com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem; +import com.refinedmods.refinedstorage.common.support.containermenu.ValidatedSlot; + +import net.minecraft.world.Container; +import net.minecraft.world.level.Level; + +public class PatternSlot extends ValidatedSlot { + public PatternSlot(final Container container, final int index, final int x, final int y, final Level level) { + super(container, index, x, y, stack -> PatternProviderItem.isValid(stack, level)); + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java index 121764ba9..67eb5e339 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterBlockEntity.java @@ -4,8 +4,8 @@ import com.refinedmods.refinedstorage.api.network.impl.node.patternprovider.PatternProviderNetworkNode; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; -import com.refinedmods.refinedstorage.common.api.autocrafting.PatternProviderItem; import com.refinedmods.refinedstorage.common.api.support.network.InWorldNetworkNodeContainer; +import com.refinedmods.refinedstorage.common.autocrafting.PatternInventory; import com.refinedmods.refinedstorage.common.content.BlockEntities; import com.refinedmods.refinedstorage.common.content.ContentNames; import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; @@ -50,7 +50,7 @@ public class AutocrafterBlockEntity extends AbstractBaseNetworkNodeContainerBloc private static final String TAG_PRIORITY = "pri"; private static final String TAG_VISIBLE_TO_THE_AUTOCRAFTER_MANAGER = "vaum"; - private final PatternInventory patternContainer = new PatternInventory(this::getLevel); + private final PatternInventory patternContainer = new PatternInventory(PATTERNS, this::getLevel); private final UpgradeContainer upgradeContainer; private LockMode lockMode = LockMode.NEVER; private int priority; @@ -81,9 +81,12 @@ public AutocrafterBlockEntity(final BlockPos pos, final BlockState state) { @Override protected InWorldNetworkNodeContainer createMainContainer(final PatternProviderNetworkNode networkNode) { - return RefinedStorageApi.INSTANCE.createNetworkNodeContainer(this, networkNode) - .connectionStrategy(new AutocrafterConnectionStrategy(this::getBlockState, getBlockPos())) - .build(); + return new AutocrafterNetworkNodeContainer( + this, + networkNode, + "main", + new AutocrafterConnectionStrategy(this::getBlockState, getBlockPos()) + ); } FilteredContainer getPatternContainer() { @@ -315,9 +318,4 @@ protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState final BlockState newBlockState) { return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } - - static boolean isValidPattern(final ItemStack stack, final Level level) { - return stack.getItem() instanceof PatternProviderItem patternProviderItem - && patternProviderItem.getPattern(stack, level).isPresent(); - } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java index 3fb9f44f0..4f2307a70 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterContainerMenu.java @@ -1,5 +1,7 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; +import com.refinedmods.refinedstorage.common.autocrafting.PatternInventory; +import com.refinedmods.refinedstorage.common.autocrafting.PatternSlot; import com.refinedmods.refinedstorage.common.content.Menus; import com.refinedmods.refinedstorage.common.support.AbstractBaseContainerMenu; import com.refinedmods.refinedstorage.common.support.FilteredContainer; @@ -22,6 +24,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import static com.refinedmods.refinedstorage.common.autocrafting.autocrafter.AutocrafterBlockEntity.PATTERNS; + public class AutocrafterContainerMenu extends AbstractBaseContainerMenu { private static final int PATTERN_SLOT_X = 8; private static final int PATTERN_SLOT_Y = 20; @@ -44,7 +48,7 @@ public AutocrafterContainerMenu(final int syncId, final Inventory playerInventor registerProperty(new ClientProperty<>(AutocrafterPropertyTypes.PRIORITY, 0)); registerProperty(new ClientProperty<>(AutocrafterPropertyTypes.VISIBLE_TO_THE_AUTOCRAFTER_MANAGER, true)); addSlots( - new PatternInventory(playerInventory.player::level), + new PatternInventory(PATTERNS, playerInventory.player::level), new UpgradeContainer(UpgradeDestinations.AUTOCRAFTER) ); this.name = Component.empty(); diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterNetworkNodeContainer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterNetworkNodeContainer.java new file mode 100644 index 000000000..9a27c9b3c --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterNetworkNodeContainer.java @@ -0,0 +1,36 @@ +package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; + +import com.refinedmods.refinedstorage.api.network.node.NetworkNode; +import com.refinedmods.refinedstorage.common.api.autocrafting.Autocrafter; +import com.refinedmods.refinedstorage.common.api.support.network.ConnectionStrategy; +import com.refinedmods.refinedstorage.common.support.network.InWorldNetworkNodeContainerImpl; + +import net.minecraft.network.chat.Component; +import net.minecraft.world.Container; + +class AutocrafterNetworkNodeContainer extends InWorldNetworkNodeContainerImpl implements Autocrafter { + private final AutocrafterBlockEntity blockEntity; + + AutocrafterNetworkNodeContainer(final AutocrafterBlockEntity blockEntity, + final NetworkNode node, + final String name, + final ConnectionStrategy connectionStrategy) { + super(blockEntity, node, name, 0, connectionStrategy, null); + this.blockEntity = blockEntity; + } + + @Override + public Component getAutocrafterName() { + return blockEntity.getName(); + } + + @Override + public Container getPatternContainer() { + return blockEntity.getPatternContainer(); + } + + @Override + public boolean isVisibleToTheAutocrafterManager() { + return blockEntity.isVisibleToTheAutocrafterManager(); + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java index ae75aa9c1..ac8e67b6a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/AutocrafterScreen.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; import com.refinedmods.refinedstorage.common.Platform; +import com.refinedmods.refinedstorage.common.autocrafting.PatternSlot; import com.refinedmods.refinedstorage.common.support.AbstractBaseScreen; import com.refinedmods.refinedstorage.common.support.AbstractFilterScreen; import com.refinedmods.refinedstorage.common.support.tooltip.HelpClientTooltipComponent; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java deleted file mode 100644 index f7d4221b3..000000000 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocrafter/PatternSlot.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.refinedmods.refinedstorage.common.autocrafting.autocrafter; - -import com.refinedmods.refinedstorage.common.support.containermenu.ValidatedSlot; - -import net.minecraft.world.Container; -import net.minecraft.world.level.Level; - -class PatternSlot extends ValidatedSlot { - PatternSlot(final Container container, final int index, final int x, final int y, final Level level) { - super(container, index, x, y, stack -> AutocrafterBlockEntity.isValidPattern(stack, level)); - } -} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java index 7390f1448..7fed80dc0 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerBlockEntity.java @@ -1,16 +1,22 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; +import com.refinedmods.refinedstorage.api.network.Network; import com.refinedmods.refinedstorage.api.network.impl.node.SimpleNetworkNode; +import com.refinedmods.refinedstorage.api.network.node.GraphNetworkComponent; import com.refinedmods.refinedstorage.common.Platform; +import com.refinedmods.refinedstorage.common.api.autocrafting.Autocrafter; import com.refinedmods.refinedstorage.common.content.BlockEntities; import com.refinedmods.refinedstorage.common.content.ContentNames; import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; import com.refinedmods.refinedstorage.common.support.network.AbstractBaseNetworkNodeContainerBlockEntity; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.annotation.Nullable; import net.minecraft.core.BlockPos; @@ -18,7 +24,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.codec.StreamEncoder; import net.minecraft.world.Container; -import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -26,19 +31,6 @@ public class AutocrafterManagerBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity implements NetworkNodeExtendedMenuProvider { - private final List groups = List.of( - new AutocrafterManagerData.Group(Component.literal("testing"), 10), - new AutocrafterManagerData.Group(Component.literal( - "HELLO WORLD!!! HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!HELLO WORLD!!!"), - 8), - new AutocrafterManagerData.Group(Component.literal("testing"), 10) - ); - private final List inventories = List.of( - new SimpleContainer(10), - new SimpleContainer(8), - new SimpleContainer(10) - ); - private final Set watchers = new HashSet<>(); public AutocrafterManagerBlockEntity(final BlockPos pos, final BlockState state) { @@ -74,7 +66,10 @@ protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState @Override public AutocrafterManagerData getMenuData() { - return new AutocrafterManagerData(groups, mainNetworkNode.isActive()); + return new AutocrafterManagerData( + getGroups().stream().map(AutocrafterManagerData.Group::of).toList(), + mainNetworkNode.isActive() + ); } @Override @@ -85,6 +80,54 @@ public StreamEncoder getMenuCod @Override @Nullable public AbstractContainerMenu createMenu(final int syncId, final Inventory inventory, final Player player) { - return new AutocrafterManagerContainerMenu(syncId, inventory, this, inventories); + return new AutocrafterManagerContainerMenu(syncId, inventory, this, getGroups()); + } + + private Stream getAutocrafters() { + final Network mainNetwork = mainNetworkNode.getNetwork(); + if (mainNetwork == null) { + return Stream.empty(); + } + return mainNetwork.getComponent(GraphNetworkComponent.class) + .getContainers(Autocrafter.class) + .stream() + .sorted(Comparator.comparing(Autocrafter::getLocalPosition)); + } + + private List getGroups() { + return getAutocrafters() + .collect(Collectors.groupingBy(a -> a.getAutocrafterName().getString())) + .entrySet() + .stream() + .map(entry -> new Group( + entry.getKey(), + entry.getValue() + .stream() + .sorted(Comparator.comparing(Autocrafter::getLocalPosition)) + .map(SubGroup::of) + .toList() + )) + .sorted(Comparator.comparing(group -> group.name)) + .toList(); + } + + record Group(String name, List subGroups) { + } + + record SubGroup(Container container, boolean visibleToTheAutocrafterManager, boolean full) { + private static SubGroup of(final Autocrafter autocrafter) { + final Container container = autocrafter.getPatternContainer(); + final boolean full = isFull(container); + return new SubGroup(container, autocrafter.isVisibleToTheAutocrafterManager(), full); + } + + private static boolean isFull(final Container container) { + for (int i = 0; i < container.getContainerSize(); ++i) { + if (container.getItem(i).isEmpty()) { + return false; + } + } + return true; + } } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java index 87ccfa1df..869eb7e2d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerContainerMenu.java @@ -3,6 +3,7 @@ import com.refinedmods.refinedstorage.api.resource.ResourceKey; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; +import com.refinedmods.refinedstorage.common.autocrafting.PatternInventory; import com.refinedmods.refinedstorage.common.content.Menus; import com.refinedmods.refinedstorage.common.support.AbstractBaseContainerMenu; import com.refinedmods.refinedstorage.common.support.RedstoneMode; @@ -19,10 +20,9 @@ import java.util.Set; import javax.annotation.Nullable; -import net.minecraft.network.chat.Component; +import it.unimi.dsi.fastutil.ints.IntIntPair; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; -import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.Slot; @@ -32,7 +32,7 @@ public class AutocrafterManagerContainerMenu extends AbstractBaseContainerMenu implements ScreenSizeListener, AutocrafterManagerWatcher { private final Inventory playerInventory; - private final List groups; + private final List groups; private final List autocrafterSlots = new ArrayList<>(); @Nullable @@ -48,15 +48,15 @@ public AutocrafterManagerContainerMenu(final int syncId, super(Menus.INSTANCE.getAutocrafterManager(), syncId); this.playerInventory = playerInventory; registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); - this.groups = data.groups().stream().map(group -> Group.from(playerInventory.player.level(), group)).toList(); + this.groups = data.groups().stream().map(g -> ViewGroup.from(playerInventory.player.level(), g)).toList(); this.active = data.active(); resized(0, 0, 0); } - public AutocrafterManagerContainerMenu(final int syncId, - final Inventory playerInventory, - final AutocrafterManagerBlockEntity autocrafterManager, - final List containers) { + AutocrafterManagerContainerMenu(final int syncId, + final Inventory playerInventory, + final AutocrafterManagerBlockEntity autocrafterManager, + final List groups) { super(Menus.INSTANCE.getAutocrafterManager(), syncId); this.playerInventory = playerInventory; this.autocrafterManager = autocrafterManager; @@ -67,7 +67,7 @@ public AutocrafterManagerContainerMenu(final int syncId, autocrafterManager::setRedstoneMode )); this.groups = Collections.emptyList(); - addServerSideSlots(containers); + addServerSideSlots(groups); } @Override @@ -93,13 +93,20 @@ private void notifyListener() { } } - private void addServerSideSlots(final List containers) { - for (final Container container : containers) { + private void addServerSideSlots(final List serverGroups) { + for (final AutocrafterManagerBlockEntity.Group group : serverGroups) { + addServerSideSlots(group); + } + addPlayerInventory(playerInventory, 0, 0); + } + + private void addServerSideSlots(final AutocrafterManagerBlockEntity.Group group) { + for (final AutocrafterManagerBlockEntity.SubGroup subGroup : group.subGroups()) { + final Container container = subGroup.container(); for (int i = 0; i < container.getContainerSize(); i++) { addSlot(new Slot(container, i, 0, 0)); } } - addPlayerInventory(playerInventory, 0, 0); } public boolean containsPattern(final ItemStack stack) { @@ -113,58 +120,76 @@ public boolean containsPattern(final ItemStack stack) { @Override public void resized(final int playerInventoryY, final int topYStart, final int topYEnd) { - addSlots(playerInventoryY, topYStart, topYEnd); + initializeGroups(playerInventoryY, topYStart, topYEnd); } - private void addSlots(final int playerInventoryY, final int topYStart, final int topYEnd) { + private void initializeGroups(final int playerInventoryY, final int topYStart, final int topYEnd) { resetSlots(); autocrafterSlots.clear(); final int rowX = 7 + 1; final int startY = topYStart - 18; int rowY = topYStart; - for (final Group group : getGroups()) { - rowY += addSlots(group, rowX, rowY, startY, topYEnd); + for (final ViewGroup group : groups) { + rowY += initializeGroup(group, rowX, rowY, startY, topYEnd); } addPlayerInventory(playerInventory, 8, playerInventoryY); } - private int addSlots(final Group group, final int rowX, final int rowY, final int startY, final int topYEnd) { - int j = 0; - for (int i = 0; i < group.slotCount; i++) { - final int slotX = rowX + ((j % 9) * 18); - final int slotY = rowY + 18 + ((j / 9) * 18); - final boolean visible = active && isSlotVisible(group, i); - final AutocrafterManagerSlot slot = new AutocrafterManagerSlot( - group.backingInventory, - i, - slotX, - slotY, - startY, - topYEnd, - visible - ); - addSlot(slot); - if (visible) { - autocrafterSlots.add(slot); - ++j; + private int initializeGroup(final ViewGroup group, + final int rowX, + final int rowY, + final int startY, + final int topYEnd) { + int slotsWithinGroup = 0; + for (final SubViewGroup subGroup : group.subViewGroups) { + int slotsWithinSubGroup = 0; + final boolean visible = active && isVisible(subGroup); + for (int i = 0; i < subGroup.backingInventory.getContainerSize(); i++) { + final int slotX = rowX + ((slotsWithinGroup % 9) * 18); + final int slotY = rowY + 18 + ((slotsWithinGroup / 9) * 18); + final boolean slotVisible = visible && isSlotVisible(playerInventory.player.level(), group, i); + final AutocrafterManagerSlot slot = new AutocrafterManagerSlot( + subGroup.backingInventory, + playerInventory.player.level(), + i, + slotX, + slotY, + IntIntPair.of(startY, topYEnd), + slotVisible + ); + addSlot(slot); + if (slotVisible) { + autocrafterSlots.add(slot); + ++slotsWithinGroup; + ++slotsWithinSubGroup; + } } + subGroup.visibleSlots = slotsWithinSubGroup; } - group.visibleSlots = j; - if (j == 0) { + group.visibleSlots = slotsWithinGroup; + if (slotsWithinGroup == 0) { return 0; } return (group.getVisibleRows() + 1) * 18; } - private boolean isSlotVisible(final Group group, final int index) { + private boolean isVisible(final SubViewGroup subGroup) { + return switch (getViewType()) { + case VISIBLE -> subGroup.visibleToTheAutocrafterManager; + case NOT_FULL -> !subGroup.full; + case ALL -> true; + }; + } + + private boolean isSlotVisible(final Level level, final ViewGroup group, final int index) { final String normalizedQuery = query.trim().toLowerCase(Locale.ROOT); if (normalizedQuery.isEmpty()) { return true; } - return getSearchMode().isSlotVisible(group, normalizedQuery, index); + return getSearchMode().isSlotVisible(group, level, normalizedQuery, index); } - List getGroups() { + List getGroups() { return groups; } @@ -206,49 +231,41 @@ public void activeChanged(final boolean newActive) { } } - static class Group { - final Component name; - final int slotCount; - final Container backingInventory; - - private final Level level; + static class SubViewGroup { + private final boolean visibleToTheAutocrafterManager; + private final Container backingInventory; + private final boolean full; private int visibleSlots; - Group(final Level level, final Component name, final int slotCount, final Container backingInventory) { - this.level = level; - this.name = name; - this.slotCount = slotCount; + private SubViewGroup(final boolean visibleToTheAutocrafterManager, + final Container backingInventory, + final boolean full) { + this.visibleToTheAutocrafterManager = visibleToTheAutocrafterManager; this.backingInventory = backingInventory; + this.full = full; } - private static Group from(final Level level, final AutocrafterManagerData.Group group) { - return new Group(level, group.name(), group.slotCount(), new SimpleContainer(group.slotCount())); - } - - boolean isVisible() { - return visibleSlots > 0; - } - - int getVisibleRows() { - return Math.ceilDiv(visibleSlots, 9); + private static SubViewGroup from(final AutocrafterManagerData.SubGroup subGroup, final Level level) { + final PatternInventory backingInventory = new PatternInventory(subGroup.slotCount(), () -> level); + return new SubViewGroup( + subGroup.visibleToTheAutocrafterManager(), + backingInventory, + subGroup.full() + ); } int getVisibleSlots() { return visibleSlots; } - boolean nameContains(final String normalizedQuery) { - return name.getString().toLowerCase(Locale.ROOT).trim().contains(normalizedQuery); - } - - boolean hasPatternInput(final String normalizedQuery, final int index) { + boolean hasPatternInput(final Level level, final String normalizedQuery, final int index) { final ItemStack patternStack = backingInventory.getItem(index); return RefinedStorageApi.INSTANCE.getPattern(patternStack, level).map( pattern -> hasResource(pattern.getInputResources(), normalizedQuery) ).orElse(false); } - boolean hasPatternOutput(final String normalizedQuery, final int index) { + boolean hasPatternOutput(final Level level, final String normalizedQuery, final int index) { final ItemStack patternStack = backingInventory.getItem(index); return RefinedStorageApi.INSTANCE.getPattern(patternStack, level).map( pattern -> hasResource(pattern.getOutputResources(), normalizedQuery) @@ -265,4 +282,56 @@ private static boolean hasResource(final Set resources, final Strin .contains(normalizedQuery)); } } + + static class ViewGroup { + private final String name; + private final List subViewGroups; + private final List subViewGroupsView; + private int visibleSlots; + + private ViewGroup(final String name, final List subViewGroups) { + this.name = name; + this.subViewGroups = subViewGroups; + this.subViewGroupsView = Collections.unmodifiableList(subViewGroups); + } + + private static ViewGroup from(final Level level, final AutocrafterManagerData.Group group) { + return new ViewGroup( + group.name(), + group.subGroups().stream().map(subGroup -> SubViewGroup.from(subGroup, level)).toList() + ); + } + + String getName() { + return name; + } + + List getSubViewGroups() { + return subViewGroupsView; + } + + boolean isVisible() { + return visibleSlots > 0; + } + + int getVisibleRows() { + return Math.ceilDiv(visibleSlots, 9); + } + + boolean nameContains(final String normalizedQuery) { + return name.toLowerCase(Locale.ROOT).trim().contains(normalizedQuery); + } + + boolean hasPatternInput(final Level level, final String normalizedQuery, final int index) { + return subViewGroups.stream().anyMatch( + subGroup -> subGroup.hasPatternInput(level, normalizedQuery, index) + ); + } + + boolean hasPatternOutput(final Level level, final String normalizedQuery, final int index) { + return subViewGroups.stream().anyMatch( + subGroup -> subGroup.hasPatternOutput(level, normalizedQuery, index) + ); + } + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java index ddaa16ff9..802276832 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerData.java @@ -4,15 +4,19 @@ import java.util.List; 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 AutocrafterManagerData(List groups, boolean active) { + private static final StreamCodec SUB_GROUP_STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.INT, SubGroup::slotCount, + ByteBufCodecs.BOOL, SubGroup::visibleToTheAutocrafterManager, + ByteBufCodecs.BOOL, SubGroup::full, + SubGroup::new + ); private static final StreamCodec GROUP_STREAM_CODEC = StreamCodec.composite( - ComponentSerialization.STREAM_CODEC, Group::name, - ByteBufCodecs.INT, Group::slotCount, + ByteBufCodecs.STRING_UTF8, Group::name, + ByteBufCodecs.collection(ArrayList::new, SUB_GROUP_STREAM_CODEC), Group::subGroups, Group::new ); public static final StreamCodec STREAM_CODEC = StreamCodec @@ -22,6 +26,19 @@ public record AutocrafterManagerData(List groups, boolean active) { AutocrafterManagerData::new ); - public record Group(Component name, int slotCount) { + public record Group(String name, List subGroups) { + static Group of(final AutocrafterManagerBlockEntity.Group group) { + return new Group(group.name(), group.subGroups().stream().map(SubGroup::of).toList()); + } + } + + public record SubGroup(int slotCount, boolean visibleToTheAutocrafterManager, boolean full) { + private static SubGroup of(final AutocrafterManagerBlockEntity.SubGroup subGroup) { + return new SubGroup( + subGroup.container().getContainerSize(), + subGroup.visibleToTheAutocrafterManager(), + subGroup.full() + ); + } } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java index d192d1a3b..ab9b00465 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerScreen.java @@ -137,33 +137,47 @@ protected void renderRows(final GuiGraphics graphics, ); return; } - renderRowTitlesAndSlots(graphics, x, y, topHeight, rows); + renderGroups(graphics, x, y, topHeight, rows); renderSlotContents(graphics, mouseX, mouseY, y, topHeight, rows); } - private void renderRowTitlesAndSlots(final GuiGraphics graphics, - final int x, - final int y, - final int topHeight, - final int rows) { + private void renderGroups(final GuiGraphics graphics, + final int x, + final int y, + final int topHeight, + final int rows) { final int rowX = x + 7; int rowY = y + topHeight - getScrollbarOffset(); - for (final AutocrafterManagerContainerMenu.Group group : menu.getGroups()) { + for (final AutocrafterManagerContainerMenu.ViewGroup group : menu.getGroups()) { if (!group.isVisible()) { continue; } if (!isOutOfFrame(y, topHeight, rows, rowY)) { graphics.blitSprite(AUTOCRAFTER_NAME, rowX, rowY, 162, ROW_SIZE); - graphics.drawString(font, group.name, rowX + 4, rowY + 6, 4210752, false); + graphics.drawString(font, group.getName(), rowX + 4, rowY + 6, 4210752, false); } - for (int i = 0; i < group.getVisibleSlots(); i++) { - final int slotX = rowX + ((i % COLUMNS) * 18); - final int slotY = rowY + 18 + ((i / COLUMNS) * 18); + renderGroup(graphics, y, topHeight, rows, group, rowX, rowY); + rowY += (group.getVisibleRows() + 1) * ROW_SIZE; + } + } + + private static void renderGroup(final GuiGraphics graphics, + final int y, + final int topHeight, + final int rows, + final AutocrafterManagerContainerMenu.ViewGroup group, + final int rowX, + final int rowY) { + int j = 0; + for (final AutocrafterManagerContainerMenu.SubViewGroup subGroup : group.getSubViewGroups()) { + for (int i = 0; i < subGroup.getVisibleSlots(); i++) { + final int slotX = rowX + ((j % COLUMNS) * 18); + final int slotY = rowY + 18 + ((j / COLUMNS) * 18); if (!isOutOfFrame(y, topHeight, rows, slotY)) { graphics.blitSprite(Sprites.SLOT, slotX, slotY, 18, 18); } + ++j; } - rowY += (group.getVisibleRows() + 1) * ROW_SIZE; } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java index 541d824af..31483d572 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSearchMode.java @@ -1,5 +1,7 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; +import net.minecraft.world.level.Level; + public enum AutocrafterManagerSearchMode { ALL, PATTERN_INPUTS, @@ -15,15 +17,16 @@ AutocrafterManagerSearchMode toggle() { }; } - boolean isSlotVisible(final AutocrafterManagerContainerMenu.Group group, + boolean isSlotVisible(final AutocrafterManagerContainerMenu.ViewGroup group, + final Level level, final String normalizedQuery, final int index) { return switch (this) { case ALL -> group.nameContains(normalizedQuery) - || group.hasPatternInput(normalizedQuery, index) - || group.hasPatternOutput(normalizedQuery, index); - case PATTERN_INPUTS -> group.hasPatternInput(normalizedQuery, index); - case PATTERN_OUTPUTS -> group.hasPatternOutput(normalizedQuery, index); + || group.hasPatternInput(level, normalizedQuery, index) + || group.hasPatternOutput(level, normalizedQuery, index); + case PATTERN_INPUTS -> group.hasPatternInput(level, normalizedQuery, index); + case PATTERN_OUTPUTS -> group.hasPatternOutput(level, normalizedQuery, index); case AUTOCRAFTER_NAMES -> group.nameContains(normalizedQuery); }; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java index 110ebc325..2be85d099 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/autocrafting/autocraftermanager/AutocrafterManagerSlot.java @@ -1,25 +1,28 @@ package com.refinedmods.refinedstorage.common.autocrafting.autocraftermanager; +import com.refinedmods.refinedstorage.common.autocrafting.PatternSlot; + +import it.unimi.dsi.fastutil.ints.IntIntPair; import net.minecraft.world.Container; -import net.minecraft.world.inventory.Slot; +import net.minecraft.world.level.Level; -class AutocrafterManagerSlot extends Slot { +class AutocrafterManagerSlot extends PatternSlot { private final int originalY; private final int startY; private final int endY; private final boolean active; AutocrafterManagerSlot(final Container container, + final Level level, final int slot, final int x, final int y, - final int startY, - final int endY, + final IntIntPair startEndY, final boolean active) { - super(container, slot, x, y); + super(container, slot, x, y, level); this.originalY = y; - this.startY = startY; - this.endY = endY; + this.startY = startEndY.firstInt(); + this.endY = startEndY.secondInt(); this.active = active; }