diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 4e6719473b..8f66b936ac 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -788,6 +788,7 @@ public class Blocks implements ContentList{ health = 130 * wallHealthMultiplier; insulated = true; absorbLasers = true; + schematicPriority = 10; }}; plastaniumWallLarge = new Wall("plastanium-wall-large"){{ diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index e60a1660fd..92179b7c9c 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -285,7 +285,7 @@ public class Schematics implements Loadable{ /** Creates an array of build requests from a schematic's data, centered on the provided x+y coordinates. */ public Seq toRequests(Schematic schem, int x, int y){ return schem.tiles.map(t -> new BuildPlan(t.x + x - schem.width/2, t.y + y - schem.height/2, t.rotation, t.block, t.config).original(t.x, t.y, schem.width, schem.height)) - .removeAll(s -> (!s.block.isVisible() && !(s.block instanceof CoreBlock)) || !s.block.unlockedNow()); + .removeAll(s -> (!s.block.isVisible() && !(s.block instanceof CoreBlock)) || !s.block.unlockedNow()).sort(Structs.comparingInt(s -> -s.block.schematicPriority)); } /** @return all the valid loadouts for a specific core type. */ diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 6c9628c95b..22cb4772ee 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -145,6 +145,8 @@ public class Block extends UnlockableContent{ public boolean conveyorPlacement; /** Whether to swap the diagonal placement modes. */ public boolean swapDiagonalPlacement; + /** Build queue priority in schematics. */ + public int schematicPriority = 0; /** * The color of this block when displayed on the minimap or map preview. * Do not set manually! This is overridden when loading for most blocks. diff --git a/core/src/mindustry/world/blocks/power/PowerDiode.java b/core/src/mindustry/world/blocks/power/PowerDiode.java index 03892d1c54..6e2052250e 100644 --- a/core/src/mindustry/world/blocks/power/PowerDiode.java +++ b/core/src/mindustry/world/blocks/power/PowerDiode.java @@ -22,6 +22,7 @@ public class PowerDiode extends Block{ insulated = true; group = BlockGroup.power; noUpdateDisabled = true; + schematicPriority = 10; } @Override diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index 0457d16f79..0c66eef09a 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -43,6 +43,7 @@ public class PowerNode extends PowerBlock{ outputsPower = false; canOverdrive = false; swapDiagonalPlacement = true; + schematicPriority = -10; drawDisabled = false; config(Integer.class, (entity, value) -> {