From 411cdb494d7632f5ab3cace5c5db20e86685c533 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Sat, 28 Dec 2024 21:26:38 -0500 Subject: [PATCH 1/2] Force pipe connections --- .../gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java | 6 ++++++ .../gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java | 6 ++++++ .../gregtechceu/gtceu/common/cover/FluidFilterCover.java | 3 +-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 150658d437..4dfca277d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -270,6 +270,12 @@ public void setConnection(Direction side, boolean connected, boolean fromNeighbo pipeTile.getPipeType().getClass() != this.getPipeType().getClass()) { return; } + + if (!connected) { + var cover = getCoverContainer().getCoverAtSide(side); + if (cover != null && cover.canPipePassThrough()) return; + } + connections = withSideConnection(connections, side, connected); updateNetworkConnection(side, connected); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java index eefa7b00e2..4dfec36022 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java @@ -186,6 +186,7 @@ public CoverBehavior getCoverAtSide(Direction side) { } public void setCoverAtSide(@Nullable CoverBehavior coverBehavior, Direction side) { + var previousCover = getCoverAtSide(side); switch (side) { case UP -> up = coverBehavior; case SOUTH -> south = coverBehavior; @@ -196,6 +197,11 @@ public void setCoverAtSide(@Nullable CoverBehavior coverBehavior, Direction side } if (coverBehavior != null) { coverBehavior.getSyncStorage().markAllDirty(); + if (coverBehavior.canPipePassThrough()) { + pipeTile.setConnection(side, true, false); + } + } else if (previousCover != null && previousCover.canPipePassThrough()) { + pipeTile.setConnection(side, false, false); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java index 2060c3dc32..8dd355d749 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java @@ -21,7 +21,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; import lombok.Getter; import lombok.Setter; @@ -61,7 +60,7 @@ public void setFilterMode(FilterMode filterMode) { @Override public boolean canAttach() { - return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).isPresent(); + return coverHolder.getFluidHandlerCap(attachedSide, false) != null; } public FluidFilter getFluidFilter() { From 7aa7275ed9a0d8b2536fb4057e5c7b9ac78be094 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Sat, 28 Dec 2024 22:18:30 -0500 Subject: [PATCH 2/2] covfefe --- .../gregtechceu/gtceu/common/cover/ComputerMonitorCover.java | 5 +++++ .../com/gregtechceu/gtceu/common/cover/StorageCover.java | 4 ++++ .../gtceu/common/cover/detector/DetectorCover.java | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java index 3fc282952b..86b0837504 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java @@ -12,5 +12,10 @@ public ComputerMonitorCover(CoverDefinition definition, ICoverable coverHolder, super(definition, coverHolder, attachedSide); } + @Override + public boolean canPipePassThrough() { + return false; + } + // No implementation here, this cover is just for decorative purposes } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/StorageCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/StorageCover.java index fb049a1609..6c6a5b640c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/StorageCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/StorageCover.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.machine.MachineCoverContainer; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -50,11 +51,13 @@ public int getSlotLimit(int slot) { } @Override + @NotNull public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } @Override + @NotNull public List getAdditionalDrops() { var list = super.getAdditionalDrops(); for (int slot = 0; slot < SIZE; slot++) { @@ -65,6 +68,7 @@ public List getAdditionalDrops() { @Override public boolean canAttach() { + if (!(coverHolder instanceof MachineCoverContainer)) return false; for (var dir : Direction.values()) { if (coverHolder.hasCover(dir) && coverHolder.getCoverAtSide(dir) instanceof StorageCover) return false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/DetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/DetectorCover.java index c30ef9b1fc..f141fee3b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/DetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/DetectorCover.java @@ -98,4 +98,9 @@ public InteractionResult onScrewdriverClick(Player playerIn, InteractionHand han public boolean canConnectRedstone() { return true; } + + @Override + public boolean canPipePassThrough() { + return false; + } }