From e2ad96c048279006d3bb5331e62af1b7368abfbb Mon Sep 17 00:00:00 2001 From: Swedz Date: Tue, 24 Sep 2024 04:15:03 -0400 Subject: [PATCH 1/7] Use resource location for machine casings --- .../neoforge/compat/mi/hook/MIHookTracker.java | 4 ++-- .../listener/MachineCasingsMIHookContext.java | 18 +++++++++--------- ...chineCasingModelsMIHookDatagenProvider.java | 16 ++++++---------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java index 8f0155ab..50f4cc42 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java @@ -97,7 +97,7 @@ public static List> getMachin return MACHINE_CASING_MODELS.computeIfAbsent(modId, (k) -> Lists.newArrayList()); } - public static void addMachineCasingModel(String name, Consumer action) + public static void addMachineCasingModel(Consumer action) { assertTracking(); @@ -113,7 +113,7 @@ public record MachineModelProperties( { public void addToMachineJson(JsonObject json) { - json.addProperty("casing", defaultCasing.name); + json.addProperty("casing", defaultCasing.key.toString()); var defaultOverlays = new JsonObject(); diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java index 2b0f20d0..ab302d1e 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java @@ -13,25 +13,25 @@ public final class MachineCasingsMIHookContext implements MIHookContext { - public MachineCasing register(String name, BiConsumer model) + public MachineCasing register(String id, BiConsumer model) { - MachineCasing casing = MachineCasings.create(name); - MIHookTracker.addMachineCasingModel(name, (provider) -> model.accept(casing, provider)); + MachineCasing casing = MachineCasings.create(MIHookTracker.id(id)); + MIHookTracker.addMachineCasingModel((provider) -> model.accept(casing, provider)); return casing; } - public MachineCasing registerImitateBlock(String name, Supplier block) + public MachineCasing registerImitateBlock(String id, Supplier block) { - return this.register(name, (casing, provider) -> provider.imitateBlock(casing, block.get())); + return this.register(id, (casing, provider) -> provider.imitateBlock(casing, block.get())); } - public MachineCasing registerCubeBottomTop(String name, ResourceLocation side, ResourceLocation bottom, ResourceLocation top) + public MachineCasing registerCubeBottomTop(String id, ResourceLocation side, ResourceLocation bottom, ResourceLocation top) { - return this.register(name, (casing, provider) -> provider.cubeBottomTop(casing, side, bottom, top)); + return this.register(id, (casing, provider) -> provider.cubeBottomTop(casing, side, bottom, top)); } - public MachineCasing registerCubeAll(String name, ResourceLocation side) + public MachineCasing registerCubeAll(String id, ResourceLocation side) { - return this.register(name, (casing, provider) -> provider.cubeAll(casing, side)); + return this.register(id, (casing, provider) -> provider.cubeAll(casing, side)); } } diff --git a/src/main/java/net/swedz/tesseract/neoforge/datagen/mi/client/MachineCasingModelsMIHookDatagenProvider.java b/src/main/java/net/swedz/tesseract/neoforge/datagen/mi/client/MachineCasingModelsMIHookDatagenProvider.java index 8ea1554a..52efa276 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/datagen/mi/client/MachineCasingModelsMIHookDatagenProvider.java +++ b/src/main/java/net/swedz/tesseract/neoforge/datagen/mi/client/MachineCasingModelsMIHookDatagenProvider.java @@ -1,6 +1,5 @@ package net.swedz.tesseract.neoforge.datagen.mi.client; -import aztech.modern_industrialization.MI; import aztech.modern_industrialization.machines.models.MachineBakedModel; import aztech.modern_industrialization.machines.models.MachineCasing; import aztech.modern_industrialization.machines.models.UseBlockModelUnbakedModel; @@ -20,18 +19,15 @@ public final class MachineCasingModelsMIHookDatagenProvider extends ModelProvider { - private final String actualModId; - - public MachineCasingModelsMIHookDatagenProvider(GatherDataEvent event, String actualModId) + public MachineCasingModelsMIHookDatagenProvider(GatherDataEvent event, String modId) { - super(event.getGenerator().getPackOutput(), MI.ID, MachineBakedModel.CASING_FOLDER, BlockModelBuilder::new, event.getExistingFileHelper()); - this.actualModId = actualModId; + super(event.getGenerator().getPackOutput(), modId, MachineBakedModel.CASING_FOLDER, BlockModelBuilder::new, event.getExistingFileHelper()); } @Override protected void registerModels() { - for(Consumer action : MIHookTracker.getMachineCasingModels(actualModId)) + for(Consumer action : MIHookTracker.getMachineCasingModels(modid)) { action.accept(this); } @@ -39,18 +35,18 @@ protected void registerModels() public void imitateBlock(MachineCasing casing, Block block) { - getBuilder(casing.name) + getBuilder(casing.key.toString()) .customLoader((bmb, existingFileHelper) -> new UseBlockModelModelBuilder<>(block, bmb, existingFileHelper)); } public void cubeBottomTop(MachineCasing casing, ResourceLocation side, ResourceLocation bottom, ResourceLocation top) { - this.cubeBottomTop(casing.name, side, bottom, top); + this.cubeBottomTop(casing.key.toString(), side, bottom, top); } public void cubeAll(MachineCasing casing, ResourceLocation side) { - this.cubeAll(casing.name, side); + this.cubeAll(casing.key.toString(), side); } @Override From 30fb0597d420031d5205437453b86626e61eea49 Mon Sep 17 00:00:00 2001 From: Swedz Date: Thu, 26 Sep 2024 00:32:01 -0400 Subject: [PATCH 2/7] Follow changes in MI's machine API --- .../BasicMultiblockMachineBlockEntity.java | 70 ++----------------- ...ltipliedCraftingMultiblockBlockEntity.java | 5 +- ...ltipliedCraftingMultiblockBlockEntity.java | 16 +++++ ...ltipliedCraftingMultiblockBlockEntity.java | 5 +- 4 files changed, 26 insertions(+), 70 deletions(-) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java index 08fc0c48..afc8cc1c 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java @@ -11,16 +11,11 @@ import aztech.modern_industrialization.machines.gui.MachineGuiParameters; import aztech.modern_industrialization.machines.models.MachineModelClientData; import aztech.modern_industrialization.machines.multiblocks.MultiblockMachineBlockEntity; -import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Tickable; public abstract class BasicMultiblockMachineBlockEntity extends MultiblockMachineBlockEntity implements Tickable, MultiblockInventoryComponentHolder { - protected ShapeMatcher shapeMatcher; - - protected OperatingState operatingState = OperatingState.NOT_MATCHED; - protected final ActiveShapeComponent activeShape; protected final MultiblockInventoryComponent inventory; protected final IsActiveComponent isActive; @@ -41,22 +36,16 @@ protected void updateActive(boolean active) isActive.updateActive(active, this); } - public void onLink(ShapeMatcher shapeMatcher) - { - } - - public void onUnlink(ShapeMatcher shapeMatcher) - { - } - - public void onSuccessfulMatch(ShapeMatcher shapeMatcher) + @Override + public void onMatchSuccessful() { + inventory.rebuild(shapeMatcher); } @Override public void tick() { - if(level.isClientSide) + if(level.isClientSide()) { return; } @@ -64,57 +53,6 @@ public void tick() this.link(); } - protected ShapeMatcher createShapeMatcher() - { - return new ShapeMatcher(level, worldPosition, orientation.facingDirection, this.getActiveShape()); - } - - protected void link() - { - if(shapeMatcher == null) - { - shapeMatcher = this.createShapeMatcher(); - shapeMatcher.registerListeners(level); - - this.onLink(shapeMatcher); - } - if(shapeMatcher.needsRematch()) - { - operatingState = OperatingState.NOT_MATCHED; - shapeValid.shapeValid = false; - shapeMatcher.rematch(level); - - if(shapeMatcher.isMatchSuccessful()) - { - inventory.rebuild(shapeMatcher); - - this.onSuccessfulMatch(shapeMatcher); - - shapeValid.shapeValid = true; - operatingState = OperatingState.TRYING_TO_RESUME; - } - - if(shapeValid.update()) - { - this.sync(false); - } - } - } - - @Override - public void unlink() - { - if(shapeMatcher != null) - { - shapeMatcher.unlinkHatches(); - shapeMatcher.unregisterListeners(level); - - this.onUnlink(shapeMatcher); - - shapeMatcher = null; - } - } - @Override public ShapeTemplate getActiveShape() { diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java index 991bf86e..49c2fac7 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java @@ -10,7 +10,6 @@ import aztech.modern_industrialization.machines.guicomponents.SlotPanel; import aztech.modern_industrialization.machines.init.MachineTier; import aztech.modern_industrialization.machines.multiblocks.HatchBlockEntity; -import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Simulation; import com.google.common.collect.Lists; @@ -64,8 +63,10 @@ public List getEnergyComponents() } @Override - public void onSuccessfulMatch(ShapeMatcher shapeMatcher) + public void onMatchSuccessful() { + super.onMatchSuccessful(); + energyInputs.clear(); for(HatchBlockEntity hatch : shapeMatcher.getMatchedHatches()) { diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java index a0252ef4..94e3bcc9 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java @@ -21,6 +21,8 @@ public abstract class AbstractMultipliedCraftingMultiblockBlockEntity extends Ba { protected final MultipliedCrafterComponent crafter; + protected OperatingState operatingState = OperatingState.NOT_MATCHED; + public AbstractMultipliedCraftingMultiblockBlockEntity(BEP bep, ResourceLocation id, ShapeTemplate[] shapeTemplates) { super(bep, new MachineGuiParameters.Builder(id, false).backgroundHeight(200).build(), shapeTemplates); @@ -66,6 +68,20 @@ public UUID getOwnerUuid() return placedBy.placerId; } + @Override + protected void onRematch() + { + operatingState = OperatingState.NOT_MATCHED; + } + + @Override + public void onMatchSuccessful() + { + super.onMatchSuccessful(); + + operatingState = OperatingState.TRYING_TO_RESUME; + } + @Override public void tick() { diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java index 434e2fe3..020b5be0 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java @@ -4,7 +4,6 @@ import aztech.modern_industrialization.machines.components.OverclockComponent; import aztech.modern_industrialization.machines.helper.SteamHelper; import aztech.modern_industrialization.machines.multiblocks.HatchBlockEntity; -import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Simulation; import com.google.common.collect.Lists; @@ -38,8 +37,10 @@ public AbstractSteamMultipliedCraftingMultiblockBlockEntity(BEP bep, ResourceLoc } @Override - public void onSuccessfulMatch(ShapeMatcher shapeMatcher) + public void onMatchSuccessful() { + super.onMatchSuccessful(); + steel = false; for(HatchBlockEntity hatch : shapeMatcher.getMatchedHatches()) { From 032ac8754d85bac184812ffcc9c2ad34a68d174b Mon Sep 17 00:00:00 2001 From: Swedz Date: Thu, 26 Sep 2024 00:34:27 -0400 Subject: [PATCH 3/7] Move OperatingState to proper class --- .../BasicMultiblockMachineBlockEntity.java | 17 ----------------- ...MultipliedCraftingMultiblockBlockEntity.java | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java index afc8cc1c..12ed78dd 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java @@ -76,21 +76,4 @@ protected MachineModelClientData getMachineModelData() { return new MachineModelClientData(null, orientation.facingDirection).active(isActive.isActive); } - - public enum OperatingState - { - /** - * Shape is not matched, don't do anything. - */ - NOT_MATCHED, - /** - * Trying to resume a recipe but the output might not fit anymore. - * We wait until the output fits again before resuming normal operation. - */ - TRYING_TO_RESUME, - /** - * Normal operation. - */ - NORMAL_OPERATION - } } diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java index 94e3bcc9..38a25761 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java @@ -120,4 +120,21 @@ public void tick() public void tickExtra() { } + + public enum OperatingState + { + /** + * Shape is not matched, don't do anything. + */ + NOT_MATCHED, + /** + * Trying to resume a recipe but the output might not fit anymore. + * We wait until the output fits again before resuming normal operation. + */ + TRYING_TO_RESUME, + /** + * Normal operation. + */ + NORMAL_OPERATION + } } From 1954a05fe41d74d507fe5dae8b764578e1ef05f3 Mon Sep 17 00:00:00 2001 From: Swedz Date: Wed, 2 Oct 2024 13:26:08 -0400 Subject: [PATCH 4/7] Temporarily use local mi version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 55b5b7fb..acab3c47 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,7 +36,7 @@ mod_github=https://github.com/Swedz/tesseract-neoforge # Dependencies mixinextras_version=0.3.5 emi_version=1.1.10+1.21 -modern_industrialization_version=2.2.23 +modern_industrialization_version=2.2.23-local modern_industrialization_version_range=[2.2.21-beta, 2.3-) grandpower_version=3.0.0 cloth_config_version=15.0.127 \ No newline at end of file From fec5a016d0225c5b19dd696144af561d2a4d8eaf Mon Sep 17 00:00:00 2001 From: Swedz Date: Wed, 2 Oct 2024 13:26:18 -0400 Subject: [PATCH 5/7] Use component changes --- ...stractElectricMultipliedCraftingMultiblockBlockEntity.java | 4 ++-- .../network/packet/UpdateMachineConfigurationPanelPacket.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java index 49c2fac7..8db54966 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java @@ -84,7 +84,7 @@ protected ItemInteractionResult useItemOn(Player player, InteractionHand hand, D } if(!result.consumesAction()) { - result = this.mapComponentOrDefault(UpgradeComponent.class, upgrade -> upgrade.onUse(this, player, hand), result); + result = icomponents.mapOrDefault(UpgradeComponent.class, upgrade -> upgrade.onUse(this, player, hand), result); } if(!result.consumesAction()) { @@ -92,7 +92,7 @@ protected ItemInteractionResult useItemOn(Player player, InteractionHand hand, D } if(!result.consumesAction()) { - result = this.mapComponentOrDefault(OverdriveComponent.class, (overdrive) -> overdrive.onUse(this, player, hand), result); + result = icomponents.mapOrDefault(OverdriveComponent.class, (overdrive) -> overdrive.onUse(this, player, hand), result); } return result; } diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java index 1c7c3b55..bb8df625 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java @@ -35,7 +35,7 @@ public void handle(PacketContext ctx) AbstractContainerMenu menu = ctx.getPlayer().containerMenu; if(menu.containerId == syncId && menu instanceof MachineMenuServer machineMenu) { - ConfigurationPanel.Server configurationPanel = machineMenu.blockEntity.getComponent(ConfigurationPanel.ID); + ConfigurationPanel.Server configurationPanel = machineMenu.blockEntity.getGuiComponents().get(ConfigurationPanel.ID); configurationPanel.behavior.handleClick(line, clickedLeftButton ? -1 : +1); } } From ec2ff2f32f04a55e365f0740ff4cb43ff53bd5af Mon Sep 17 00:00:00 2001 From: Swedz Date: Tue, 15 Oct 2024 17:04:45 -0400 Subject: [PATCH 6/7] Use casing path only if the namespace is MI's --- .../swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java index 50f4cc42..8a67c873 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/MIHookTracker.java @@ -113,7 +113,7 @@ public record MachineModelProperties( { public void addToMachineJson(JsonObject json) { - json.addProperty("casing", defaultCasing.key.toString()); + json.addProperty("casing", defaultCasing.key.getNamespace().equals(MI.ID) ? defaultCasing.key.getPath() : defaultCasing.key.toString()); var defaultOverlays = new JsonObject(); From abef9ccbe38f011591f13247f97cad8e59e24b1e Mon Sep 17 00:00:00 2001 From: Swedz Date: Tue, 10 Dec 2024 01:45:26 -0500 Subject: [PATCH 7/7] More updates :) --- gradle.properties | 4 +- .../craft/ModularCrafterAccessBehavior.java | 6 +-- .../MultipliedCrafterComponent.java | 4 +- .../hack/HackedMachineRegistrationHelper.java | 6 +-- .../listener/MachineCasingsMIHookContext.java | 18 +++---- .../BasicMultiblockMachineBlockEntity.java | 8 +++- ...ltipliedCraftingMultiblockBlockEntity.java | 9 ++-- ...ltipliedCraftingMultiblockBlockEntity.java | 23 +++++---- ...ltipliedCraftingMultiblockBlockEntity.java | 5 +- ...uildRecipesMachineCategoryClientMixin.java | 48 ------------------- ...UpdateMachineConfigurationPanelPacket.java | 2 +- .../resources/tesseract_api_mi.mixins.json | 1 - 12 files changed, 46 insertions(+), 88 deletions(-) delete mode 100644 src/main/java/net/swedz/tesseract/neoforge/compat/mi/mixin/client/fix/BuildRecipesMachineCategoryClientMixin.java diff --git a/gradle.properties b/gradle.properties index acab3c47..0c457398 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,7 +36,7 @@ mod_github=https://github.com/Swedz/tesseract-neoforge # Dependencies mixinextras_version=0.3.5 emi_version=1.1.10+1.21 -modern_industrialization_version=2.2.23-local -modern_industrialization_version_range=[2.2.21-beta, 2.3-) +modern_industrialization_version=2.2.27 +modern_industrialization_version_range=[2.2.27, 2.3-) grandpower_version=3.0.0 cloth_config_version=15.0.127 \ No newline at end of file diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/ModularCrafterAccessBehavior.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/ModularCrafterAccessBehavior.java index 800f153c..9399b6ba 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/ModularCrafterAccessBehavior.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/ModularCrafterAccessBehavior.java @@ -6,7 +6,7 @@ import aztech.modern_industrialization.stats.PlayerStatistics; import aztech.modern_industrialization.stats.PlayerStatisticsData; import aztech.modern_industrialization.util.Simulation; -import net.minecraft.world.level.Level; +import net.minecraft.server.level.ServerLevel; import net.swedz.tesseract.neoforge.compat.mi.hook.MIHookEfficiency; import net.swedz.tesseract.neoforge.compat.mi.hook.MIHooks; import net.swedz.tesseract.neoforge.compat.mi.hook.context.machine.EfficiencyMIHookContext; @@ -43,7 +43,7 @@ default long getMaxRecipeEu() { long maxRecipeEu = this.getBaseMaxRecipeEu(); if(this instanceof MachineBlockEntity machineBlockEntity && - machineBlockEntity instanceof CrafterComponentHolder crafterComponentHolder) + machineBlockEntity instanceof CrafterComponentHolder crafterComponentHolder) { CrafterAccess crafter = crafterComponentHolder.getCrafterComponent(); EfficiencyMIHookContext context = new EfficiencyMIHookContext( @@ -62,7 +62,7 @@ default boolean isOverdriving() } // can't use getWorld() or the remapping will fail - Level getCrafterWorld(); + ServerLevel getCrafterWorld(); default int getMaxFluidOutputs() { diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/multiplied/MultipliedCrafterComponent.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/multiplied/MultipliedCrafterComponent.java index 5aab7709..9fba97a4 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/multiplied/MultipliedCrafterComponent.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/component/craft/multiplied/MultipliedCrafterComponent.java @@ -149,7 +149,7 @@ else if(efficiencyTicks > 0) lastInvHash = currentHash; } - ServerLevel serverWorld = (ServerLevel) behavior.getCrafterWorld(); + ServerLevel serverWorld = behavior.getCrafterWorld(); MachineRecipeType recipeType = this.getRecipeType(); List> recipes = new ArrayList<>(recipeType.getFluidOnlyRecipes(serverWorld)); for(ConfigurableItemStack stack : inventory.getItemInputs()) @@ -647,7 +647,7 @@ public void lockRecipe(ResourceLocation recipeId, Inventory inventory) { return; } - Optional> optionalMachineRecipe = recipeType.getRecipes(behavior.getCrafterWorld()).stream() + Optional> optionalMachineRecipe = recipeType.getRecipesWithCache(behavior.getCrafterWorld()).stream() .filter((recipe) -> recipe.id().equals(recipeId)).findFirst(); if(optionalMachineRecipe.isEmpty()) { diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hack/HackedMachineRegistrationHelper.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hack/HackedMachineRegistrationHelper.java index 80b34bb0..c7af6057 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hack/HackedMachineRegistrationHelper.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hack/HackedMachineRegistrationHelper.java @@ -256,10 +256,10 @@ public static void registerMachineTiers(String englishName, String machineName, registerReiTiers( englishName, machineName, type, new MachineCategoryParams( - null, (ResourceLocation) null, items.sublist(0, itemInputCount), + null, null, items.sublist(0, itemInputCount), items.sublist(itemInputCount, itemInputCount + itemOutputCount), fluids.sublist(0, fluidInputCount), fluids.sublist(fluidInputCount, fluidInputCount + fluidOutputCount), progressBarParams, - null, false, SteamMode.BOTH + null, null, false, SteamMode.BOTH ), tiers ); @@ -286,7 +286,7 @@ private static void registerReiTiers(String englishName, String machine, Machine fullEnglishName, itemId, categoryParams.itemInputs, categoryParams.itemOutputs, categoryParams.fluidInputs, categoryParams.fluidOutputs, categoryParams.progressBarParams, - recipe -> recipe.getType() == recipeType && minEu <= recipe.eu && recipe.eu <= maxEu, false, + recipeType, (recipe) -> minEu <= recipe.eu && recipe.eu <= maxEu, false, i < 2 ? SteamMode.BOTH : SteamMode.ELECTRIC_ONLY ); MIHookTracker.addReiCategoryName(itemId, fullEnglishName); diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java index ab302d1e..b2360fed 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/hook/context/listener/MachineCasingsMIHookContext.java @@ -13,25 +13,27 @@ public final class MachineCasingsMIHookContext implements MIHookContext { - public MachineCasing register(String id, BiConsumer model) + public MachineCasing register(String id, String englishName, BiConsumer model) { - MachineCasing casing = MachineCasings.create(MIHookTracker.id(id)); + MachineCasing casing = MachineCasings.create(MIHookTracker.id(id), englishName); MIHookTracker.addMachineCasingModel((provider) -> model.accept(casing, provider)); return casing; } - public MachineCasing registerImitateBlock(String id, Supplier block) + public MachineCasing registerImitateBlock(String id, Supplier block) { - return this.register(id, (casing, provider) -> provider.imitateBlock(casing, block.get())); + MachineCasing casing = MachineCasings.createBlockImitation(MIHookTracker.id(id), block); + MIHookTracker.addMachineCasingModel((provider) -> provider.imitateBlock(casing, block.get())); + return casing; } - public MachineCasing registerCubeBottomTop(String id, ResourceLocation side, ResourceLocation bottom, ResourceLocation top) + public MachineCasing registerCubeBottomTop(String id, String englishName, ResourceLocation side, ResourceLocation bottom, ResourceLocation top) { - return this.register(id, (casing, provider) -> provider.cubeBottomTop(casing, side, bottom, top)); + return this.register(id, englishName, (casing, provider) -> provider.cubeBottomTop(casing, side, bottom, top)); } - public MachineCasing registerCubeAll(String id, ResourceLocation side) + public MachineCasing registerCubeAll(String id, String englishName, ResourceLocation side) { - return this.register(id, (casing, provider) -> provider.cubeAll(casing, side)); + return this.register(id, englishName, (casing, provider) -> provider.cubeAll(casing, side)); } } diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java index 12ed78dd..f431d7b8 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/BasicMultiblockMachineBlockEntity.java @@ -11,6 +11,7 @@ import aztech.modern_industrialization.machines.gui.MachineGuiParameters; import aztech.modern_industrialization.machines.models.MachineModelClientData; import aztech.modern_industrialization.machines.multiblocks.MultiblockMachineBlockEntity; +import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Tickable; @@ -37,9 +38,12 @@ protected void updateActive(boolean active) } @Override - public void onMatchSuccessful() + protected void onRematch(ShapeMatcher shapeMatcher) { - inventory.rebuild(shapeMatcher); + if(shapeMatcher.isMatchSuccessful()) + { + inventory.rebuild(shapeMatcher); + } } @Override diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java index 8db54966..2e22a521 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractElectricMultipliedCraftingMultiblockBlockEntity.java @@ -10,6 +10,7 @@ import aztech.modern_industrialization.machines.guicomponents.SlotPanel; import aztech.modern_industrialization.machines.init.MachineTier; import aztech.modern_industrialization.machines.multiblocks.HatchBlockEntity; +import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Simulation; import com.google.common.collect.Lists; @@ -63,9 +64,9 @@ public List getEnergyComponents() } @Override - public void onMatchSuccessful() + protected void onRematch(ShapeMatcher shapeMatcher) { - super.onMatchSuccessful(); + super.onRematch(shapeMatcher); energyInputs.clear(); for(HatchBlockEntity hatch : shapeMatcher.getMatchedHatches()) @@ -84,7 +85,7 @@ protected ItemInteractionResult useItemOn(Player player, InteractionHand hand, D } if(!result.consumesAction()) { - result = icomponents.mapOrDefault(UpgradeComponent.class, upgrade -> upgrade.onUse(this, player, hand), result); + result = components.mapOrDefault(UpgradeComponent.class, upgrade -> upgrade.onUse(this, player, hand), result); } if(!result.consumesAction()) { @@ -92,7 +93,7 @@ protected ItemInteractionResult useItemOn(Player player, InteractionHand hand, D } if(!result.consumesAction()) { - result = icomponents.mapOrDefault(OverdriveComponent.class, (overdrive) -> overdrive.onUse(this, player, hand), result); + result = components.mapOrDefault(OverdriveComponent.class, (overdrive) -> overdrive.onUse(this, player, hand), result); } return result; } diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java index 38a25761..1901dbfd 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractMultipliedCraftingMultiblockBlockEntity.java @@ -5,10 +5,11 @@ import aztech.modern_industrialization.machines.BEP; import aztech.modern_industrialization.machines.gui.MachineGuiParameters; import aztech.modern_industrialization.machines.guicomponents.ReiSlotLocking; +import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.machines.recipe.MachineRecipeType; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.Level; +import net.minecraft.server.level.ServerLevel; import net.swedz.tesseract.neoforge.compat.mi.component.craft.ModularCrafterAccessBehavior; import net.swedz.tesseract.neoforge.compat.mi.component.craft.multiplied.EuCostTransformer; import net.swedz.tesseract.neoforge.compat.mi.component.craft.multiplied.MultipliedCrafterComponent; @@ -57,9 +58,9 @@ public CrafterAccess getCrafterComponent() } @Override - public Level getCrafterWorld() + public ServerLevel getCrafterWorld() { - return level; + return (ServerLevel) level; } @Override @@ -69,17 +70,15 @@ public UUID getOwnerUuid() } @Override - protected void onRematch() + protected void onRematch(ShapeMatcher shapeMatcher) { - operatingState = OperatingState.NOT_MATCHED; - } - - @Override - public void onMatchSuccessful() - { - super.onMatchSuccessful(); + super.onRematch(shapeMatcher); - operatingState = OperatingState.TRYING_TO_RESUME; + operatingState = OperatingState.NOT_MATCHED; + if(shapeMatcher.isMatchSuccessful()) + { + operatingState = OperatingState.TRYING_TO_RESUME; + } } @Override diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java index 020b5be0..9ee9d511 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/blockentity/multiblock/multiplied/AbstractSteamMultipliedCraftingMultiblockBlockEntity.java @@ -4,6 +4,7 @@ import aztech.modern_industrialization.machines.components.OverclockComponent; import aztech.modern_industrialization.machines.helper.SteamHelper; import aztech.modern_industrialization.machines.multiblocks.HatchBlockEntity; +import aztech.modern_industrialization.machines.multiblocks.ShapeMatcher; import aztech.modern_industrialization.machines.multiblocks.ShapeTemplate; import aztech.modern_industrialization.util.Simulation; import com.google.common.collect.Lists; @@ -37,9 +38,9 @@ public AbstractSteamMultipliedCraftingMultiblockBlockEntity(BEP bep, ResourceLoc } @Override - public void onMatchSuccessful() + protected void onRematch(ShapeMatcher shapeMatcher) { - super.onMatchSuccessful(); + super.onRematch(shapeMatcher); steel = false; for(HatchBlockEntity hatch : shapeMatcher.getMatchedHatches()) diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/mixin/client/fix/BuildRecipesMachineCategoryClientMixin.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/mixin/client/fix/BuildRecipesMachineCategoryClientMixin.java deleted file mode 100644 index bd948ef0..00000000 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/mixin/client/fix/BuildRecipesMachineCategoryClientMixin.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.swedz.tesseract.neoforge.compat.mi.mixin.client.fix; - -import aztech.modern_industrialization.compat.rei.machines.MachineCategoryParams; -import aztech.modern_industrialization.compat.viewer.usage.MachineCategory; -import aztech.modern_industrialization.machines.init.MIMachineRecipeTypes; -import aztech.modern_industrialization.machines.recipe.MachineRecipe; -import net.minecraft.client.Minecraft; -import net.minecraft.core.RegistryAccess; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeManager; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Comparator; -import java.util.function.Consumer; - -@Mixin( - value = MachineCategory.class, - remap = false -) -public class BuildRecipesMachineCategoryClientMixin -{ - @Shadow - @Final - private MachineCategoryParams params; - - @Inject( - method = "buildRecipes", - at = @At("HEAD"), - cancellable = true - ) - private void buildRecipes(RecipeManager recipeManager, RegistryAccess registryAccess, - Consumer> consumer, - CallbackInfo callback) - { - callback.cancel(); - - MIMachineRecipeTypes.getRecipeTypes().stream() - .flatMap((type) -> type.getRecipes(Minecraft.getInstance().level).stream()) - .filter((recipe) -> params.recipePredicate.test(recipe.value())) - .sorted(Comparator.comparing(RecipeHolder::id)) - .forEach(consumer); - } -} diff --git a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java index bb8df625..02ee7bf7 100644 --- a/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java +++ b/src/main/java/net/swedz/tesseract/neoforge/compat/mi/network/packet/UpdateMachineConfigurationPanelPacket.java @@ -35,7 +35,7 @@ public void handle(PacketContext ctx) AbstractContainerMenu menu = ctx.getPlayer().containerMenu; if(menu.containerId == syncId && menu instanceof MachineMenuServer machineMenu) { - ConfigurationPanel.Server configurationPanel = machineMenu.blockEntity.getGuiComponents().get(ConfigurationPanel.ID); + ConfigurationPanel.Server configurationPanel = machineMenu.blockEntity.guiComponents.get(ConfigurationPanel.ID); configurationPanel.behavior.handleClick(line, clickedLeftButton ? -1 : +1); } } diff --git a/src/main/resources/tesseract_api_mi.mixins.json b/src/main/resources/tesseract_api_mi.mixins.json index bf19df9f..91ceb55e 100644 --- a/src/main/resources/tesseract_api_mi.mixins.json +++ b/src/main/resources/tesseract_api_mi.mixins.json @@ -22,7 +22,6 @@ "hook.listener.ViewerSetupHookMixin" ], "client": [ - "client.fix.BuildRecipesMachineCategoryClientMixin", "client.hook.GuiComponentsClientHookMixin" ], "injectors": {