From 34be5ffc6c56d47934dafc110b5c5e236e08953f Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 30 Nov 2025 15:32:44 -0500 Subject: [PATCH] Defer shadow buffer init --- core/src/mindustry/game/Schematics.java | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index f46c50f00e..e851c8229b 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -60,6 +60,7 @@ public class Schematics implements Loadable{ private ObjectMap> loadouts = new ObjectMap<>(); private ObjectMap defaultLoadouts = new ObjectMap<>(); private @Nullable FrameBuffer shadowBuffer; + private boolean triedCreatingShadowBuffer; private Texture errorTexture; private long lastClearTime; @@ -97,17 +98,6 @@ public class Schematics implements Loadable{ }); all.sort(); - - if(shadowBuffer == null && !headless){ - Core.app.post(() -> { - try{ - shadowBuffer = new FrameBuffer(maxSchematicSize + padding + 8, maxSchematicSize + padding + 8); - }catch(Exception e){ - Log.err(Strings.format("Failed to create shadow buffer (@x@): @. This is likely because a mod is setting maxSchematicSize too high. Don't do that.", - maxSchematicSize + padding + 8, maxSchematicSize + padding + 8, Strings.getSimpleMessage(e))); - } - }); - } } private void loadLoadouts(){ @@ -222,6 +212,16 @@ public class Schematics implements Loadable{ Tmp.m2.set(Draw.trans()); FrameBuffer buffer = new FrameBuffer((schematic.width + padding) * resolution, (schematic.height + padding) * resolution); + if(shadowBuffer == null && !triedCreatingShadowBuffer){ + triedCreatingShadowBuffer = true; + try{ + shadowBuffer = new FrameBuffer(maxSchematicSize + padding + 8, maxSchematicSize + padding + 8); + }catch(Exception e){ + Log.err(Strings.format("Failed to create shadow buffer (@x@): @. This is likely because a mod is setting maxSchematicSize too high. Don't do that.", + maxSchematicSize + padding + 8, maxSchematicSize + padding + 8, Strings.getSimpleMessage(e))); + } + } + if(shadowBuffer != null){ shadowBuffer.begin(Color.clear);