From 65c7acb31c4a27cd4b77c0ae854224e7112d5fa0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 6 Oct 2025 21:25:01 +0900 Subject: [PATCH] Fixed #11268 --- core/src/mindustry/world/Build.java | 1 + core/src/mindustry/world/blocks/payloads/BuildPayload.java | 5 +++++ core/src/mindustry/world/blocks/payloads/Payload.java | 2 ++ core/src/mindustry/world/blocks/payloads/UnitPayload.java | 5 +++++ core/src/mindustry/world/blocks/units/UnitAssembler.java | 6 ++++-- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index 76cfc3ff0f..228331d06f 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -97,6 +97,7 @@ public class Build{ tile.build.enabled = true; if(tile.build.power != null){ tile.build.power.links.clear(); + tile.build.powerGraphRemoved(); } tile.build.checkAllowUpdate(); tile.build.updateProximity(); diff --git a/core/src/mindustry/world/blocks/payloads/BuildPayload.java b/core/src/mindustry/world/blocks/payloads/BuildPayload.java index bdbbecaf7a..0b8b4a287e 100644 --- a/core/src/mindustry/world/blocks/payloads/BuildPayload.java +++ b/core/src/mindustry/world/blocks/payloads/BuildPayload.java @@ -38,6 +38,11 @@ public class BuildPayload implements Payload{ build.dropped(); } + @Override + public boolean contentEquals(Payload other){ + return other instanceof BuildPayload bp && bp.block() == build.block; + } + @Override public UnlockableContent content(){ return build.block; diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index 6b96c78e89..d12ce5a9c9 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -36,6 +36,8 @@ public interface Payload extends Position{ /** @return the time taken to build this payload. */ float buildTime(); + boolean contentEquals(Payload other); + /** update this payload inside a container unit or building. either can be null. */ default void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){} diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index 9983ae9f5c..8a351ef7a0 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -42,6 +42,11 @@ public class UnitPayload implements Payload{ showOverlay(icon.getRegion()); } + @Override + public boolean contentEquals(Payload other){ + return other instanceof UnitPayload up && up.unit.type == unit.type; + } + @Override public void update(@Nullable Unit unitHolder, @Nullable Building buildingHolder){ unit.type.updatePayload(unit, unitHolder, buildingHolder); diff --git a/core/src/mindustry/world/blocks/units/UnitAssembler.java b/core/src/mindustry/world/blocks/units/UnitAssembler.java index 18ecf45979..f72dea9fa4 100644 --- a/core/src/mindustry/world/blocks/units/UnitAssembler.java +++ b/core/src/mindustry/world/blocks/units/UnitAssembler.java @@ -667,8 +667,10 @@ public class UnitAssembler extends PayloadBlock{ @Override public boolean acceptPayload(Building source, Payload payload){ var plan = plan(); - return (this.payload == null || source instanceof UnitAssemblerModuleBuild) && - plan.requirements.contains(b -> b.item == payload.content() && blocks.get(payload.content()) < Mathf.round(b.amount * state.rules.unitCost(team))); + return (this.payload == null || (source instanceof UnitAssemblerModuleBuild)) && + plan.requirements.contains(b -> b.item == payload.content() && + blocks.get(payload.content()) < Mathf.round(b.amount * state.rules.unitCost(team)) - + (source instanceof UnitAssemblerModuleBuild && (this.payload != null && this.payload.contentEquals(payload)) ? 1 : 0)); } @Override