diff --git a/core/assets/maps/geothermalStronghold.msav b/core/assets/maps/geothermalStronghold.msav index 68503754bf..448cc77026 100644 Binary files a/core/assets/maps/geothermalStronghold.msav and b/core/assets/maps/geothermalStronghold.msav differ diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 12def3b98b..a67ce3fa39 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -274,10 +274,15 @@ public class Schematics implements Loadable{ return previews.get(schematic); } - /** Creates an array of build plans from a schematic's data, centered on the provided x+y coordinates. */ + /** Creates an array of build plans from a schematic's data, centered on the provided x,y coordinates. */ public Seq toPlans(Schematic schem, int x, int y){ + return toPlans(schem, x, y, true); + } + + /** Creates an array of build plans from a schematic's data, centered on the provided x,y coordinates. */ + public Seq toPlans(Schematic schem, int x, int y, boolean checkHidden){ 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)) - .removeAll(s -> (!s.block.isVisible() && !(s.block instanceof CoreBlock)) || !s.block.unlockedNow()).sort(Structs.comparingInt(s -> -s.block.schematicPriority)); + .removeAll(s -> (checkHidden && !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/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 74f77dc604..88ee19f60c 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -499,13 +499,13 @@ public class DesktopInput extends InputHandler{ } @Override - public void useSchematic(Schematic schem){ + public void useSchematic(Schematic schem, boolean checkHidden){ block = null; schematicX = tileX(getMouseX()); schematicY = tileY(getMouseY()); selectPlans.clear(); - selectPlans.addAll(schematics.toPlans(schem, schematicX, schematicY)); + selectPlans.addAll(schematics.toPlans(schem, schematicX, schematicY, checkHidden)); mode = none; } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 799e495ab8..ce12787673 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1317,9 +1317,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public void useSchematic(Schematic schem){ - selectPlans.addAll(schematics.toPlans(schem, player.tileX(), player.tileY())); + useSchematic(schem, true); } + public abstract void useSchematic(Schematic schem, boolean checkHidden); + protected void showSchematicSave(){ if(lastSchematic == null) return; diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 3c291a14a3..224d42ac4a 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -501,9 +501,9 @@ public class MobileInput extends InputHandler implements GestureListener{ } @Override - public void useSchematic(Schematic schem){ + public void useSchematic(Schematic schem, boolean checkHidden){ selectPlans.clear(); - selectPlans.addAll(schematics.toPlans(schem, World.toTile(Core.camera.position.x), World.toTile(Core.camera.position.y))); + selectPlans.addAll(schematics.toPlans(schem, World.toTile(Core.camera.position.x), World.toTile(Core.camera.position.y), checkHidden)); lastSchematic = schem; } diff --git a/gradle.properties b/gradle.properties index 82fd405e08..5f4a9e6da3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=5677d5c798 +archash=c93f3ff4cb