From 452e4a17f159bed23ab746415be0d7af9cc42671 Mon Sep 17 00:00:00 2001 From: Connor Smith Date: Thu, 23 Apr 2026 13:37:53 -0400 Subject: [PATCH 1/2] Fixed shift spray paint. --- .../item/InfiniteSprayCanBehaviour.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java b/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java index 4359fd1..a81b813 100644 --- a/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java +++ b/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java @@ -1,5 +1,6 @@ package net.neganote.gtutilities.common.item; +import appeng.api.util.AEColor; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.component.IAddInformation; @@ -182,13 +183,28 @@ private boolean handleSpecialBlockEntities(BlockEntity first, DyeColor color, in var player = context.getPlayer(); if (player == null) return false; - if (GTCEu.Mods.isAE2Loaded() && first instanceof IColorableBlockEntity colorable) { - appeng.api.util.AEColor ae2Color = color == null ? - appeng.api.util.AEColor.TRANSPARENT : - appeng.api.util.AEColor.values()[color.ordinal()]; - - if (colorable.getColor() != ae2Color) { - colorable.recolourBlock(null, ae2Color, player); + if (GTCEu.Mods.isAE2Loaded() && first instanceof IColorableBlockEntity) { + var collected = BreadthFirstBlockSearch.conditionalSearch( + IColorableBlockEntity.class, + (IColorableBlockEntity) first, + first.getLevel(), + be -> ((BlockEntity) be).getBlockPos(), + (parent, child, dir) -> { + if (parent == null) return true; + return parent.getColor() == child.getColor(); + }, + limit, + limit * 6 + ); + + AEColor ae2Color = color == null ? + AEColor.TRANSPARENT : + AEColor.values()[color.ordinal()]; + + for (IColorableBlockEntity colorable : collected) { + if (colorable.getColor() != ae2Color) { + colorable.recolourBlock(null, ae2Color, player); + } } return true; } From 955a00b59d50ef0b414fbdefa68098df260a40c5 Mon Sep 17 00:00:00 2001 From: Connor Smith Date: Thu, 23 Apr 2026 13:38:07 -0400 Subject: [PATCH 2/2] Spotless --- .../gtutilities/common/item/InfiniteSprayCanBehaviour.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java b/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java index a81b813..3a0bab9 100644 --- a/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java +++ b/src/main/java/net/neganote/gtutilities/common/item/InfiniteSprayCanBehaviour.java @@ -1,6 +1,5 @@ package net.neganote.gtutilities.common.item; -import appeng.api.util.AEColor; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.component.IAddInformation; @@ -39,6 +38,7 @@ import net.minecraftforge.common.util.TriPredicate; import appeng.api.implementations.blockentities.IColorableBlockEntity; +import appeng.api.util.AEColor; import com.google.common.collect.ImmutableMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -194,8 +194,7 @@ private boolean handleSpecialBlockEntities(BlockEntity first, DyeColor color, in return parent.getColor() == child.getColor(); }, limit, - limit * 6 - ); + limit * 6); AEColor ae2Color = color == null ? AEColor.TRANSPARENT :