diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IObjectHolder.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IObjectHolder.java deleted file mode 100644 index 04c7637718f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IObjectHolder.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gregtechceu.gtceu.api.capability; - -import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; - -import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; - -import org.jetbrains.annotations.NotNull; - -public interface IObjectHolder { - - /** - * Get the item held in the object holder. - * - * @param remove Whether to also remove the item from its slot. - */ - @NotNull - ItemStack getHeldItem(boolean remove); - - /** - * Set the item held in the object holder. Overwrites the currently held item. - */ - void setHeldItem(@NotNull ItemStack heldItem); - - /** - * Get the data item held in the object holder. - * - * @param remove Whether to also remove the item from its slot. - */ - @NotNull - ItemStack getDataItem(boolean remove); - - /** - * Set the data item held in the object holder. Overwrites the currently held data item. - */ - void setDataItem(@NotNull ItemStack dataItem); - - /** - * Lock or unlock the object holder, meaning if the items can be removed or not. - */ - void setLocked(boolean locked); - - Direction getFrontFacing(); - - /** - * @return the object holder's contents represented as an IItemHandler - */ - @NotNull - NotifiableItemStackHandler getAsHandler(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java deleted file mode 100644 index 4e5ecc8e3b4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gregtechceu.gtceu.api.capability; - -public interface IParallelHatch { - - /** - * - * @return the current maximum amount of parallelization provided - */ - int getCurrentParallel(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 26ed8ad1216..a28d2c19658 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.api.machine.feature.multiblock; -import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockState; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -138,13 +138,13 @@ default BlockPattern getPattern() { List getParts(); /** - * The instance of {@link IParallelHatch} attached to this Controller. + * The instance of {@link ParallelHatchPartMachine} attached to this Controller. *

- * Note that this will return a singular instance, and will not account for multiple attached IParallelHatches + * Note that this will return a singular instance, and will not account for multiple attached ParallelHatches * - * @return an {@link Optional} of the attached IParallelHatch, empty if one is not attached + * @return an {@link Optional} of the attached ParallelHatch, empty if one is not attached */ - Optional getParallelHatch(); + Optional getParallelHatch(); /** * diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index e65beab1a0b..9725a2a59ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; @@ -18,6 +17,7 @@ import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.MethodsReturnNonnullByDefault; @@ -51,7 +51,7 @@ public class MultiblockControllerMachine extends MetaMachine implements IMultiCo private MultiblockState multiblockState; private final List parts = new ArrayList<>(); - private @Nullable IParallelHatch parallelHatch = null; + private @Nullable ParallelHatchPartMachine parallelHatch = null; @Getter @SyncToClient private BlockPos[] partPositions = new BlockPos[0]; @@ -140,7 +140,7 @@ public List getParts() { } @Override - public Optional getParallelHatch() { + public Optional getParallelHatch() { return Optional.ofNullable(parallelHatch); } @@ -188,7 +188,7 @@ public void onStructureFormed() { } this.parts.sort(getPartSorter()); for (var part : parts) { - if (part instanceof IParallelHatch pHatch) { + if (part instanceof ParallelHatchPartMachine pHatch) { parallelHatch = pHatch; } part.addedToController(this); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 283e37d8c62..70095f1eac8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; -import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; @@ -20,6 +19,7 @@ import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; @@ -109,7 +109,7 @@ public void addDisplayText(List textList) { exact = true; } else { numParallels = getParallelHatch() - .map(IParallelHatch::getCurrentParallel) + .map(ParallelHatchPartMachine::getCurrentParallel) .orElse(0); subtickParallels = 0; batchParallels = 0; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java index ba746372013..c4e8ed6f154 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/ResearchStationMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.research; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.capability.IObjectHolder; import com.gregtechceu.gtceu.api.capability.IOpticalComputationProvider; import com.gregtechceu.gtceu.api.capability.IOpticalComputationReceiver; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; @@ -16,6 +15,7 @@ import com.gregtechceu.gtceu.api.recipe.ActionResult; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ObjectHolderMachine; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; @@ -37,7 +37,7 @@ public class ResearchStationMachine extends WorkableElectricMultiblockMachine @Getter private IOpticalComputationProvider computationProvider; @Getter - private IObjectHolder objectHolder; + private ObjectHolderMachine objectHolder; public ResearchStationMachine(BlockEntityCreationInfo info) { super(info, (m) -> new ResearchStationRecipeLogic((ResearchStationMachine) m)); @@ -52,12 +52,12 @@ public ResearchStationRecipeLogic getRecipeLogic() { public void onStructureFormed() { super.onStructureFormed(); for (IMultiPart part : getParts()) { - if (part instanceof IObjectHolder iObjectHolder) { - if (iObjectHolder.getFrontFacing() != getFrontFacing().getOpposite()) { + if (part instanceof ObjectHolderMachine objectHolder) { + if (objectHolder.getFrontFacing() != getFrontFacing().getOpposite()) { onStructureInvalid(); return; } - this.objectHolder = iObjectHolder; + this.objectHolder = objectHolder; } part.self() @@ -85,7 +85,7 @@ public void onStructureInvalid() { computationProvider = null; // recheck the ability to make sure it wasn't the one broken for (IMultiPart part : getParts()) { - if (part instanceof IObjectHolder holder) { + if (part instanceof ObjectHolderMachine holder) { if (holder == objectHolder) { objectHolder.setLocked(false); } @@ -178,14 +178,14 @@ protected ActionResult matchTickRecipeNoOutput(GTRecipe recipe) { protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { if (io == IO.IN) { // lock the object holder on recipe start - IObjectHolder holder = getMachine().getObjectHolder(); + ObjectHolderMachine holder = getMachine().getObjectHolder(); holder.setLocked(true); return ActionResult.SUCCESS; } // "replace" the items in the slots rather than outputting elsewhere // unlock the object holder - IObjectHolder holder = getMachine().getObjectHolder(); + ObjectHolderMachine holder = getMachine().getObjectHolder(); if (lastRecipe == null) { holder.setLocked(false); return ActionResult.SUCCESS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java index a4da0e03b08..7ccba6fbe58 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ObjectHolderMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.capability.IObjectHolder; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.BlockableSlotWidget; @@ -31,7 +30,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ObjectHolderMachine extends MultiblockPartMachine implements IObjectHolder { +public class ObjectHolderMachine extends MultiblockPartMachine { // purposefully not exposed to automation or capabilities @SaveField @@ -41,6 +40,9 @@ public class ObjectHolderMachine extends MultiblockPartMachine implements IObjec @SyncToClient private boolean isLocked; + @Getter + private NotifiableItemStackHandler handler; + public ObjectHolderMachine(BlockEntityCreationInfo info) { super(info); heldItems = new ObjectHolderHandler(this); @@ -51,27 +53,22 @@ public void setLocked(boolean locked) { syncDataHolder.markClientSyncFieldDirty("isLocked"); } - @Override public @NotNull ItemStack getHeldItem(boolean remove) { return getHeldItem(0, remove); } - @Override public void setHeldItem(@NotNull ItemStack heldItem) { heldItems.setStackInSlot(0, heldItem); } - @Override public @NotNull ItemStack getDataItem(boolean remove) { return getHeldItem(1, remove); } - @Override public void setDataItem(@NotNull ItemStack dataItem) { heldItems.setStackInSlot(1, dataItem); } - @Override public @NotNull NotifiableItemStackHandler getAsHandler() { return heldItems; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java index 606b4609c6e..d6ad2377cf6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; @@ -17,7 +16,7 @@ import lombok.Getter; -public class ParallelHatchPartMachine extends TieredPartMachine implements IFancyUIMachine, IParallelHatch { +public class ParallelHatchPartMachine extends TieredPartMachine implements IFancyUIMachine { private static final int MIN_PARALLEL = 1; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java index 601778931fc..bce83227098 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/ParallelProvider.java @@ -1,9 +1,9 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.ChatFormatting; @@ -62,7 +62,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IParallelHatch parallelHatch) { + if (blockAccessor.getBlockEntity() instanceof ParallelHatchPartMachine parallelHatch) { compoundTag.putInt("parallel", parallelHatch.getCurrentParallel()); } else if (blockAccessor.getBlockEntity() instanceof IMultiController controller) { if (controller instanceof IRecipeLogicMachine rlm &&