From 0900ff82707d1fc2ff4d4e2ff78965dcabec2f3e Mon Sep 17 00:00:00 2001 From: karlo292 <64750254+karlo292@users.noreply.github.com> Date: Sun, 25 May 2025 05:32:50 +0200 Subject: [PATCH 01/84] Update servers_v7.json (#10831) I have renamed the server and giving ownership to Alpha182 --- servers_v7.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index bdbce7a6db..f2821e782e 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -260,9 +260,9 @@ ] }, { - "name": "CroCraft Network", + "name": "Kalpe Games", "address": [ - "193.122.53.98:6567" + "mindustry.kalpe.games" ] }, { From c15d8d15cbccb8b7db6ed9304f222c922a8ad197 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 25 May 2025 12:32:47 -0400 Subject: [PATCH 02/84] Fixed #10846 --- core/src/mindustry/logic/LogicDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/logic/LogicDialog.java b/core/src/mindustry/logic/LogicDialog.java index f5b09226f3..350f1f3694 100644 --- a/core/src/mindustry/logic/LogicDialog.java +++ b/core/src/mindustry/logic/LogicDialog.java @@ -221,7 +221,7 @@ public class LogicDialog extends BaseDialog{ update(() -> setColor(typeColor(s, color))); }}, new Label(() -> " " + typeName(s) + " "){{ setStyle(Styles.outlineLabel); - }}); + }}).minWidth(120f); t.row(); From 0ae40680a4b52a68aa56d008ba85ecefa9eb2a20 Mon Sep 17 00:00:00 2001 From: GeoNew2011 <152255543+GeoNew2011@users.noreply.github.com> Date: Sun, 25 May 2025 19:42:44 +0300 Subject: [PATCH 03/84] Update servers_v7.json (#10837) erepulo hexed --- servers_v7.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index f2821e782e..ee9ba8bdde 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -289,9 +289,7 @@ "95.84.198.97:5401", "95.84.198.97:5402", "95.84.198.97:5403", - "frost-heaven.ru", - "frost-heaven.ru:6568", - "91.200.150.116" + "95.94.198.97:5404" ] }, { From 1930b9be2a9fdc7f9ca40aa706af47ded9b7fd60 Mon Sep 17 00:00:00 2001 From: GeoNew2011 <152255543+GeoNew2011@users.noreply.github.com> Date: Mon, 26 May 2025 20:34:39 +0300 Subject: [PATCH 04/84] minor spelling mistake (#10849) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index ee9ba8bdde..d7ced22a1e 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -289,7 +289,7 @@ "95.84.198.97:5401", "95.84.198.97:5402", "95.84.198.97:5403", - "95.94.198.97:5404" + "95.84.198.97:5404" ] }, { From b9c224e114f7601144cadbe4c06894579fd49a30 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 May 2025 11:26:31 -0400 Subject: [PATCH 05/84] Fixed #10852 --- core/src/mindustry/ui/Fonts.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/Fonts.java b/core/src/mindustry/ui/Fonts.java index ef68462bf6..f302c762a5 100644 --- a/core/src/mindustry/ui/Fonts.java +++ b/core/src/mindustry/ui/Fonts.java @@ -27,7 +27,7 @@ import java.io.*; public class Fonts{ private static final String mainFont = "fonts/font.woff"; - private static final ObjectSet unscaled = ObjectSet.with("iconLarge"); + private static final ObjectSet unscaled = ObjectSet.with("iconLarge", "logic"); private static ObjectIntMap unicodeIcons = new ObjectIntMap<>(); private static IntMap unicodeToName = new IntMap<>(); private static ObjectMap stringIcons = new ObjectMap<>(); From 85302bc465d4cbcf4b50f1459034df1b360bb794 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 May 2025 13:37:23 -0400 Subject: [PATCH 06/84] Fixed #10854 --- core/src/mindustry/world/blocks/ConstructBlock.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/mindustry/world/blocks/ConstructBlock.java b/core/src/mindustry/world/blocks/ConstructBlock.java index 4a5078513c..3e53462cf1 100644 --- a/core/src/mindustry/world/blocks/ConstructBlock.java +++ b/core/src/mindustry/world/blocks/ConstructBlock.java @@ -57,6 +57,8 @@ public class ConstructBlock extends Block{ @Remote(called = Loc.server) public static void deconstructFinish(Tile tile, Block block, Unit builder){ + if(tile == null) return; + Team team = tile.team(); if(!headless && fogControl.isVisibleTile(Vars.player.team(), tile.x, tile.y)){ block.breakEffect.at(tile.drawx(), tile.drawy(), block.size, block.mapColor); From 2419c506a40e3842c2da3707a5bf7904d6fd8cc9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 May 2025 18:59:10 -0400 Subject: [PATCH 07/84] Base coverage tweaks --- core/assets/planets/serpulo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/planets/serpulo.json b/core/assets/planets/serpulo.json index 147e637a6f..aae85acf00 100644 --- a/core/assets/planets/serpulo.json +++ b/core/assets/planets/serpulo.json @@ -1 +1 @@ -{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,2,5,6,10,11,12,13,16,19,24,25,27,28,30,33,36,47,48,49,51,57,59,60,66,67,68,70,71,76,78,82,90,104,106,110,114,115,121,127,128,129,133,138,148,149,154,158,172,180,182,200,202,204,210,224,225,233,234,235,241,243,248,254,255,257,259,265]} \ No newline at end of file +{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,5,6,11,12,13,16,19,24,25,26,27,30,33,36,42,43,44,46,47,48,49,51,57,59,60,66,68,69,70,71,76,78,82,89,90,103,106,110,114,115,121,127,128,129,133,138,149,154,158,180,187,200,202,204,210,224,233,236,243,245,246,247,248,250,252,254,255,257,259,265]} \ No newline at end of file From 1bee56000da2edf445ebee1bde5e270e217d70e9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 May 2025 19:29:20 -0400 Subject: [PATCH 08/84] More base coverage rearrangement --- core/assets/planets/serpulo.json | 2 +- core/src/mindustry/ui/dialogs/PlanetDialog.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/assets/planets/serpulo.json b/core/assets/planets/serpulo.json index aae85acf00..1bd1cf12b9 100644 --- a/core/assets/planets/serpulo.json +++ b/core/assets/planets/serpulo.json @@ -1 +1 @@ -{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,5,6,11,12,13,16,19,24,25,26,27,30,33,36,42,43,44,46,47,48,49,51,57,59,60,66,68,69,70,71,76,78,82,89,90,103,106,110,114,115,121,127,128,129,133,138,149,154,158,180,187,200,202,204,210,224,233,236,243,245,246,247,248,250,252,254,255,257,259,265]} \ No newline at end of file +{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,6,13,16,19,24,25,27,30,36,49,51,59,60,66,67,68,69,70,76,87,103,114,133,138,150,154,157,180,184,191,192,200,204,224,233,237,242,243,244,245,246,247,248,251,254,257,259,263,265]} \ No newline at end of file diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index b2659d7d62..1d3cedacc7 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -665,10 +665,11 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ data.presets.put(sector.preset.name, sector.id); } } + Log.info("Saving sectors for @: @ presets, @ procedural attack sectors", state.planet.name, data.presets.size, attack.size); data.attackSectors = attack.toArray(); files.local("planets/" + state.planet.name + ".json").writeString(JsonIO.write(data)); - Vars.ui.showInfoFade("@editor.saved"); + ui.showInfoFade("@editor.saved"); }catch(Exception e){ Log.err(e); } From 00621dbc18657b61eeced62485a723de33277057 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 27 May 2025 20:54:21 -0400 Subject: [PATCH 09/84] More base coverage rearrangement --- core/assets/planets/serpulo.json | 2 +- core/src/mindustry/game/Universe.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/assets/planets/serpulo.json b/core/assets/planets/serpulo.json index 1bd1cf12b9..e2dfd3f818 100644 --- a/core/assets/planets/serpulo.json +++ b/core/assets/planets/serpulo.json @@ -1 +1 @@ -{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,6,13,16,19,24,25,27,30,36,49,51,59,60,66,67,68,69,70,76,87,103,114,133,138,150,154,157,180,184,191,192,200,204,224,233,237,242,243,244,245,246,247,248,251,254,257,259,263,265]} \ No newline at end of file +{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,6,13,16,19,20,24,27,30,47,55,66,67,69,76,92,94,103,111,116,127,133,138,150,157,161,162,176,180,185,191,192,197,200,204,207,225,230,237,242,243,244,245,246,247,248,251,254,259,263,265]} \ No newline at end of file diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 375ed528d8..366913e42f 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -97,6 +97,12 @@ public class Universe{ } } + public void setSimulationSeconds(int seconds){ + this.seconds = seconds; + + save(); + } + public void clearLoadoutInfo(){ lastLoadout = null; lastLaunchResources = new ItemSeq(); From fcb5b42d58e8a7c6f95bf277e3585887eb5c7bcb Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 May 2025 19:04:33 -0400 Subject: [PATCH 10/84] WIP bases with emissive lighting on Serpulo --- core/assets/shaders/planet.vert | 8 ++- .../mindustry/graphics/g3d/GenericMesh.java | 3 +- core/src/mindustry/graphics/g3d/MatMesh.java | 5 ++ .../mindustry/graphics/g3d/MeshBuilder.java | 49 ++++++++++++++++--- .../src/mindustry/graphics/g3d/MultiMesh.java | 7 +++ .../mindustry/graphics/g3d/PlanetGrid.java | 8 +++ .../mindustry/graphics/g3d/PlanetMesh.java | 7 +++ .../maps/generators/PlanetGenerator.java | 5 ++ .../maps/planet/ErekirPlanetGenerator.java | 3 +- .../maps/planet/SerpuloPlanetGenerator.java | 30 ++++++++++-- .../maps/planet/TantrosPlanetGenerator.java | 2 +- core/src/mindustry/type/Planet.java | 9 +++- gradle.properties | 2 +- 13 files changed, 120 insertions(+), 18 deletions(-) diff --git a/core/assets/shaders/planet.vert b/core/assets/shaders/planet.vert index 7c73fb8aa5..8d592aa919 100755 --- a/core/assets/shaders/planet.vert +++ b/core/assets/shaders/planet.vert @@ -19,13 +19,17 @@ void main(){ //TODO this calculation is probably wrong vec3 lightReflect = normalize(reflect(a_normal, u_lightdir)); vec3 vertexEye = normalize(u_campos - (u_trans * a_position).xyz); + + float albedo = a_color.a > 0.5 ? 0.0 : min(a_color.a * 2.0, 1.0); + float emissive = a_color.a < 0.5 ? 0.0 : 1.0 - (a_color.a - 0.5) * 2.0; + float specularFactor = dot(vertexEye, lightReflect); if(specularFactor > 0.0){ - specular = vec3(1.0 * pow(specularFactor, 40.0)) * (1.0-a_color.a); + specular = vec3(1.0 * pow(specularFactor, 40.0)) * albedo; } vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0))); - v_col = vec4(a_color.rgb, 1.0) * vec4(norc, 1.0); + v_col = vec4(a_color.rgb, 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); gl_Position = u_proj * u_trans * a_position; } diff --git a/core/src/mindustry/graphics/g3d/GenericMesh.java b/core/src/mindustry/graphics/g3d/GenericMesh.java index d4198f5d9a..c6e57f4a10 100644 --- a/core/src/mindustry/graphics/g3d/GenericMesh.java +++ b/core/src/mindustry/graphics/g3d/GenericMesh.java @@ -1,7 +1,8 @@ package mindustry.graphics.g3d; import arc.math.geom.*; +import arc.util.*; -public interface GenericMesh{ +public interface GenericMesh extends Disposable{ void render(PlanetParams params, Mat3D projection, Mat3D transform); } diff --git a/core/src/mindustry/graphics/g3d/MatMesh.java b/core/src/mindustry/graphics/g3d/MatMesh.java index 5fd064dfda..2595b15ecb 100644 --- a/core/src/mindustry/graphics/g3d/MatMesh.java +++ b/core/src/mindustry/graphics/g3d/MatMesh.java @@ -19,4 +19,9 @@ public class MatMesh implements GenericMesh{ public void render(PlanetParams params, Mat3D projection, Mat3D transform){ mesh.render(params, projection, tmp.set(transform).mul(mat)); } + + @Override + public void dispose(){ + mesh.dispose(); + } } diff --git a/core/src/mindustry/graphics/g3d/MeshBuilder.java b/core/src/mindustry/graphics/g3d/MeshBuilder.java index 6bc0688552..c0b8b0f2f4 100644 --- a/core/src/mindustry/graphics/g3d/MeshBuilder.java +++ b/core/src/mindustry/graphics/g3d/MeshBuilder.java @@ -1,5 +1,6 @@ package mindustry.graphics.g3d; +import arc.*; import arc.graphics.*; import arc.math.geom.*; import mindustry.graphics.g3d.PlanetGrid.*; @@ -7,7 +8,9 @@ import mindustry.maps.generators.*; public class MeshBuilder{ private static final Vec3 v1 = new Vec3(), v2 = new Vec3(), v3 = new Vec3(), v4 = new Vec3(); - private static final float[] floats = new float[3 + 3 + 1]; + private static final boolean gl30 = Core.gl30 != null; + private static final float[] floats = new float[3 + (gl30 ? 1 : 3) + 1]; + private static float[] tmpHeights = new float[14580]; //highest amount of corners in vanilla private static Mesh mesh; public static Mesh buildIcosphere(int divisions, float radius, Color color){ @@ -73,6 +76,19 @@ public class MeshBuilder{ begin(grid.tiles.length * 12); + float[] heights; + + if(tmpHeights == null || tmpHeights.length < grid.corners.length){ + heights = tmpHeights = new float[grid.corners.length]; + }else{ + heights = tmpHeights; + } + + //cache heights in an array to prevent redundant calls to getHeight + for(int i = 0; i < grid.corners.length; i++){ + heights[i] = mesher.getHeight(grid.corners[i].v); + } + for(Ptile tile : grid.tiles){ if(mesher.skip(tile.v)){ continue; @@ -81,7 +97,7 @@ public class MeshBuilder{ Corner[] c = tile.corners; for(Corner corner : c){ - corner.v.setLength((1f + mesher.getHeight(v2.set(corner.v)) * intensity) * radius); + corner.v.scl((1f + heights[corner.id] * intensity) * radius); } Vec3 nor = normal(c[0].v, c[2].v, c[4].v); @@ -120,7 +136,7 @@ public class MeshBuilder{ private static void begin(int count){ mesh = new Mesh(true, count, 0, VertexAttribute.position3, - VertexAttribute.normal, + !gl30 ? VertexAttribute.normal : VertexAttribute.packedNormal, VertexAttribute.color ); @@ -132,6 +148,7 @@ public class MeshBuilder{ Mesh last = mesh; last.getVerticesBuffer().limit(last.getVerticesBuffer().position()); mesh = null; + return last; } @@ -150,11 +167,29 @@ public class MeshBuilder{ floats[1] = a.y; floats[2] = a.z; - floats[3] = normal.x; - floats[4] = normal.y; - floats[5] = normal.z; + if(gl30){ + floats[3] = packNormals(normal.x, normal.y, normal.z); + + floats[4] = color.toFloatBits(); + }else{ + floats[3] = normal.x; + floats[4] = normal.x; + floats[5] = normal.x; + + floats[6] = color.toFloatBits(); + } - floats[6] = color.toFloatBits(); mesh.getVerticesBuffer().put(floats); } + + private static float packNormals(float x, float y, float z){ + int xs = x < 0 ? 1 : 0; + int ys = y < 0 ? 1 : 0; + int zs = z < 0 ? 1 : 0; + int vi = + zs << 29 | ((int)(z * 511 + (zs << 9)) & 511) << 20 | + ys << 19 | ((int)(y * 511 + (ys << 9)) & 511) << 10 | + xs << 9 | ((int)(x * 511 + (xs << 9)) & 511); + return Float.intBitsToFloat(vi); + } } diff --git a/core/src/mindustry/graphics/g3d/MultiMesh.java b/core/src/mindustry/graphics/g3d/MultiMesh.java index 2512a5f172..7178d8a223 100644 --- a/core/src/mindustry/graphics/g3d/MultiMesh.java +++ b/core/src/mindustry/graphics/g3d/MultiMesh.java @@ -15,4 +15,11 @@ public class MultiMesh implements GenericMesh{ v.render(params, projection, transform); } } + + @Override + public void dispose(){ + for(var mesh : meshes){ + mesh.dispose(); + } + } } diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index 993ca34c25..7e8950d49e 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -240,6 +240,14 @@ public class PlanetGrid{ corners = new Corner[edgeCount]; edges = new Edge[edgeCount]; } + + @Override + public String toString(){ + return "Ptile{" + + "id=" + id + + " " + v + + '}'; + } } public static class Corner{ diff --git a/core/src/mindustry/graphics/g3d/PlanetMesh.java b/core/src/mindustry/graphics/g3d/PlanetMesh.java index 321cd85e31..9e3f9fb359 100644 --- a/core/src/mindustry/graphics/g3d/PlanetMesh.java +++ b/core/src/mindustry/graphics/g3d/PlanetMesh.java @@ -26,6 +26,8 @@ public abstract class PlanetMesh implements GenericMesh{ @Override public void render(PlanetParams params, Mat3D projection, Mat3D transform){ + if(mesh.isDisposed()) return; + preRender(params); shader.bind(); shader.setUniformMatrix4("u_proj", projection.val); @@ -33,4 +35,9 @@ public abstract class PlanetMesh implements GenericMesh{ shader.apply(); mesh.render(shader, Gl.triangles); } + + @Override + public void dispose(){ + mesh.dispose(); + } } diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 5fd3b19931..7e561f9b31 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -2,6 +2,7 @@ package mindustry.maps.generators; import arc.*; import arc.graphics.g2d.*; +import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.struct.ObjectIntMap.*; @@ -25,6 +26,10 @@ public abstract class PlanetGenerator extends BasicGenerator implements HexMeshe protected @Nullable Sector sector; + public static float packAlpha(float albedo, float emissive){ + return emissive > 0 ? 1f + 1f/255f - 0.5f * Mathf.clamp(emissive) : Mathf.clamp(albedo) * 0.5f; + } + /** Should generate sector bases for a planet. */ public void generateSector(Sector sector){ diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index 94b4dd8992..f104f6bc53 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -47,12 +47,11 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ //TODO this might be too green //if(block == Blocks.beryllicStone) block = Blocks.arkyicStone; - return Tmp.c1.set(block.mapColor).a(1f - block.albedo); + return Tmp.c1.set(block.mapColor).a(packAlpha(block.albedo, 0f)); } @Override public float getSizeScl(){ - //TODO should sectors be 600, or 500 blocks? return 2000 * 1.07f * 6f / 5f; } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index ccba966da1..a785bcf9d0 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -58,10 +58,10 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ ); float water = 2f / arr[0].length; + Vec3 basePos = new Vec3(0.9341721, 0.0, 0.3568221); float rawHeight(Vec3 position){ - position = Tmp.v33.set(position).scl(scl); - return (Mathf.pow(Simplex.noise3d(seed, 7, 0.5f, 1f/3f, position.x, position.y, position.z), 2.3f) + waterOffset) / (1f + waterOffset); + return (Mathf.pow(Simplex.noise3d(seed, 7, 0.5f, 1f/3f, position.x * scl, position.y * scl, position.z * scl), 2.3f) + waterOffset) / (1f + waterOffset); } @Override @@ -87,10 +87,25 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ + float dst = 999f; + for(Sector sector : Planets.serpulo.sectors){ + if(sector.hasEnemyBase() && !sector.isCaptured()){ + dst = Math.min(dst, position.dst(sector.tile.v)); + } + } + + if(position.dst(basePos) < 0.55f && dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f < 0.06f){ + return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); + } + + //if(dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 4f, position.x, position.y + 200f, position.z)*0.14f < 0.09f){ + // return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); + //} + Block block = getBlock(position); //replace salt with sand color if(block == Blocks.salt) return Blocks.sand.mapColor; - return Tmp.c1.set(block.mapColor).a(1f - block.albedo); + return Tmp.c1.set(block.mapColor).a(packAlpha(block.albedo, 0f)); } @Override @@ -103,10 +118,14 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } } + public static double metalMag = 0.11, metalScl = 1, metalDstScl = 0.25, metalThresh = 0.1; + Block getBlock(Vec3 position){ + //float metalDst = position.dst(basePos); float height = rawHeight(position); Tmp.v31.set(position); position = Tmp.v33.set(position).scl(scl); + float rad = scl; float temp = Mathf.clamp(Math.abs(position.y * 2f) / (rad)); float tnoise = Simplex.noise3d(seed, 7, 0.56, 1f/3f, position.x, position.y + 999f, position.z); @@ -120,6 +139,11 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ if(tar > 0.5f){ return tars.get(res, res); }else{ + //TODO: add this later once presets are defined for this side + /* + if(metalDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, metalScl, position.x, position.y + 99f, position.z)*metalMag < metalThresh){ + return Blocks.metalFloor; + }*/ return res; } } diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index 8925536a83..fddb467bdf 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -32,7 +32,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ float depth = Simplex.noise3d(seed, 2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; - return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(0.2f); + return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(packAlpha(0.2f, 0f)); } @Override diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 06ee987469..1ccbe0e5bb 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -43,6 +43,8 @@ public class Planet extends UnlockableContent{ public @Nullable GenericMesh cloudMesh; /** Mesh used for rendering planet grid outlines. Null on server or if {@link #grid} is null. */ public @Nullable Mesh gridMesh; + /** If true, this planet's mesh should be reloaded when it is next shown. */ + public boolean requiresMeshReload; /** Position in global coordinates. Will be 0,0,0 until the Universe updates it. */ public Vec3 position = new Vec3(); /** Grid used for the sectors on the planet. Null if this planet can't be landed on. */ @@ -348,8 +350,13 @@ public class Planet extends UnlockableContent{ return mat.setToTranslation(position).rotate(Vec3.Y, getRotation()); } - /** Regenerates the planet mesh. For debugging only. */ + /** Regenerates the planet mesh. */ public void reloadMesh(){ + if(headless) return; + + if(mesh != null){ + mesh.dispose(); + } mesh = meshLoader.get(); } diff --git a/gradle.properties b/gradle.properties index fcb7e71f43..0ba2e1b4a2 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=67b872ff4d +archash=f125488119 From 43fb2e7cdcaa34ec3f4b463d7ea069d6e502be1c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 May 2025 21:21:21 -0400 Subject: [PATCH 11/84] Emissive planet system upgrades / Indexed vertices for planets --- core/assets/shaders/planet.vert | 8 +- core/src/mindustry/game/Universe.java | 13 +- core/src/mindustry/graphics/LoadRenderer.java | 2 +- core/src/mindustry/graphics/Shaders.java | 2 + core/src/mindustry/graphics/g3d/HexMesh.java | 5 +- .../src/mindustry/graphics/g3d/HexMesher.java | 10 ++ .../mindustry/graphics/g3d/HexSkyMesh.java | 2 +- .../mindustry/graphics/g3d/MeshBuilder.java | 149 ++++++++++++++---- .../src/mindustry/graphics/g3d/NoiseMesh.java | 4 +- .../graphics/g3d/PlanetRenderer.java | 2 +- .../maps/generators/PlanetGenerator.java | 5 - .../maps/planet/ErekirPlanetGenerator.java | 14 +- .../maps/planet/SerpuloPlanetGenerator.java | 45 ++++-- .../maps/planet/TantrosPlanetGenerator.java | 2 +- .../mindustry/ui/dialogs/PlanetDialog.java | 12 ++ 15 files changed, 193 insertions(+), 82 deletions(-) diff --git a/core/assets/shaders/planet.vert b/core/assets/shaders/planet.vert index 8d592aa919..26c78456de 100755 --- a/core/assets/shaders/planet.vert +++ b/core/assets/shaders/planet.vert @@ -1,6 +1,7 @@ attribute vec4 a_position; attribute vec3 a_normal; attribute vec4 a_color; +attribute vec4 a_emissive; uniform mat4 u_proj; uniform mat4 u_trans; @@ -8,6 +9,7 @@ uniform vec3 u_lightdir; uniform vec3 u_camdir; uniform vec3 u_campos; uniform vec3 u_ambientColor; +uniform float u_emissive; varying vec4 v_col; @@ -20,8 +22,8 @@ void main(){ vec3 lightReflect = normalize(reflect(a_normal, u_lightdir)); vec3 vertexEye = normalize(u_campos - (u_trans * a_position).xyz); - float albedo = a_color.a > 0.5 ? 0.0 : min(a_color.a * 2.0, 1.0); - float emissive = a_color.a < 0.5 ? 0.0 : 1.0 - (a_color.a - 0.5) * 2.0; + float albedo = 1.0 - a_color.a; + float emissive = a_emissive.a * u_emissive; float specularFactor = dot(vertexEye, lightReflect); if(specularFactor > 0.0){ @@ -30,6 +32,6 @@ void main(){ vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0))); - v_col = vec4(a_color.rgb, 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); + v_col = vec4(mix(a_color.rgb, a_emissive.rgb, vec3(1.0 - norc)), 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); gl_Position = u_proj * u_trans * a_position; } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 366913e42f..2fc005ca68 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -97,12 +97,6 @@ public class Universe{ } } - public void setSimulationSeconds(int seconds){ - this.seconds = seconds; - - save(); - } - public void clearLoadoutInfo(){ lastLoadout = null; lastLaunchResources = new ItemSeq(); @@ -328,6 +322,13 @@ public class Universe{ return net.client() ? netSeconds : seconds; } + public void setSeconds(float seconds){ + this.seconds = (int)seconds; + this.secondCounter = seconds - this.seconds; + + save(); + } + public float secondsf(){ return seconds() + secondCounter; } diff --git a/core/src/mindustry/graphics/LoadRenderer.java b/core/src/mindustry/graphics/LoadRenderer.java index c0baa1ae7a..8e389838c8 100644 --- a/core/src/mindustry/graphics/LoadRenderer.java +++ b/core/src/mindustry/graphics/LoadRenderer.java @@ -32,7 +32,7 @@ public class LoadRenderer implements Disposable{ private float testprogress = 0f; private StringBuilder assetText = new StringBuilder(); private Bar[] bars; - private Mesh mesh = MeshBuilder.buildHex(colorRed, 2, true, 1f); + private Mesh mesh = MeshBuilder.buildLineHex(colorRed, 2); private Camera3D cam = new Camera3D(); private int lastLength = -1; private FxProcessor fx; diff --git a/core/src/mindustry/graphics/Shaders.java b/core/src/mindustry/graphics/Shaders.java index 6351b64873..de6bf9af1d 100644 --- a/core/src/mindustry/graphics/Shaders.java +++ b/core/src/mindustry/graphics/Shaders.java @@ -109,6 +109,7 @@ public class Shaders{ public Color ambientColor = Color.white.cpy(); public Vec3 camDir = new Vec3(); public Vec3 camPos = new Vec3(); + public boolean emissive; public Planet planet; public PlanetShader(){ @@ -123,6 +124,7 @@ public class Shaders{ setUniformf("u_ambientColor", ambientColor.r, ambientColor.g, ambientColor.b); setUniformf("u_camdir", camDir); setUniformf("u_campos", renderer.planets.cam.position); + setUniformf("u_emissive", emissive ? 1f : 0f); } } diff --git a/core/src/mindustry/graphics/g3d/HexMesh.java b/core/src/mindustry/graphics/g3d/HexMesh.java index bf5af1366e..2f97859f82 100644 --- a/core/src/mindustry/graphics/g3d/HexMesh.java +++ b/core/src/mindustry/graphics/g3d/HexMesh.java @@ -8,11 +8,11 @@ import mindustry.type.*; public class HexMesh extends PlanetMesh{ public HexMesh(Planet planet, int divisions){ - super(planet, MeshBuilder.buildHex(planet.generator, divisions, false, planet.radius, 0.2f), Shaders.planet); + super(planet, MeshBuilder.buildHex(planet.generator, divisions, planet.radius, 0.2f), Shaders.planet); } public HexMesh(Planet planet, HexMesher mesher, int divisions, Shader shader){ - super(planet, MeshBuilder.buildHex(mesher, divisions, false, planet.radius, 0.2f), shader); + super(planet, MeshBuilder.buildHex(mesher, divisions, planet.radius, 0.2f), shader); } public HexMesh(){ @@ -21,6 +21,7 @@ public class HexMesh extends PlanetMesh{ @Override public void preRender(PlanetParams params){ Shaders.planet.planet = planet; + Shaders.planet.emissive = planet.generator != null && planet.generator.hasEmissive(); Shaders.planet.lightDir.set(planet.solarSystem.position).sub(planet.position).rotate(Vec3.Y, planet.getRotation()).nor(); Shaders.planet.ambientColor.set(planet.solarSystem.lightColor); } diff --git a/core/src/mindustry/graphics/g3d/HexMesher.java b/core/src/mindustry/graphics/g3d/HexMesher.java index 034f324b09..4f01af5dc8 100644 --- a/core/src/mindustry/graphics/g3d/HexMesher.java +++ b/core/src/mindustry/graphics/g3d/HexMesher.java @@ -5,8 +5,18 @@ import arc.math.geom.*; /** Defines color and height for a planet mesh. */ public interface HexMesher{ + float getHeight(Vec3 position); Color getColor(Vec3 position); + + default Color getEmissiveColor(Vec3 position){ + return Color.clear; + } + + default boolean hasEmissive(){ + return false; + } + default boolean skip(Vec3 position){ return false; } diff --git a/core/src/mindustry/graphics/g3d/HexSkyMesh.java b/core/src/mindustry/graphics/g3d/HexSkyMesh.java index 434e22818f..14f4d83b94 100644 --- a/core/src/mindustry/graphics/g3d/HexSkyMesh.java +++ b/core/src/mindustry/graphics/g3d/HexSkyMesh.java @@ -29,7 +29,7 @@ public class HexSkyMesh extends PlanetMesh{ public boolean skip(Vec3 position){ return Simplex.noise3d(7 + seed, octaves, persistence, scl, position.x, position.y * 3f, position.z) >= thresh; } - }, divisions, false, planet.radius, radius), Shaders.clouds); + }, divisions, planet.radius, radius), Shaders.clouds); this.speed = speed; } diff --git a/core/src/mindustry/graphics/g3d/MeshBuilder.java b/core/src/mindustry/graphics/g3d/MeshBuilder.java index c0b8b0f2f4..41af0a641a 100644 --- a/core/src/mindustry/graphics/g3d/MeshBuilder.java +++ b/core/src/mindustry/graphics/g3d/MeshBuilder.java @@ -3,18 +3,23 @@ package mindustry.graphics.g3d; import arc.*; import arc.graphics.*; import arc.math.geom.*; +import arc.struct.*; +import arc.util.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.maps.generators.*; public class MeshBuilder{ private static final Vec3 v1 = new Vec3(), v2 = new Vec3(), v3 = new Vec3(), v4 = new Vec3(); private static final boolean gl30 = Core.gl30 != null; - private static final float[] floats = new float[3 + (gl30 ? 1 : 3) + 1]; + private static final float[] floats = new float[3 + (gl30 ? 1 : 3) + 1], emissiveFloats = new float[floats.length + 1]; + private static final short[] shorts = new short[3]; private static float[] tmpHeights = new float[14580]; //highest amount of corners in vanilla private static Mesh mesh; public static Mesh buildIcosphere(int divisions, float radius, Color color){ - begin(20 * (2 << (2 * divisions - 1)) * 3); + begin(20 * (2 << (2 * divisions - 1)) * 3, 0, false); + + float col = color.toFloatBits(); MeshResult result = Icosphere.create(divisions); for(int i = 0; i < result.indices.size; i+= 3){ @@ -22,7 +27,7 @@ public class MeshBuilder{ v2.set(result.vertices.items, result.indices.items[i + 1] * 3).setLength(radius); v3.set(result.vertices.items, result.indices.items[i + 2] * 3).setLength(radius); - verts(v1, v3, v2, normal(v1, v2, v3).scl(-1f), color); + verts(v1, v3, v2, normal(v1, v2, v3).scl(-1f), col, 0f); } return end(); @@ -38,22 +43,48 @@ public class MeshBuilder{ total += tile.corners.length * 2; } - begin(total); + float col = color.toFloatBits(); + + begin(total, 0, false); for(Ptile tile : grid.tiles){ Corner[] c = tile.corners; for(int i = 0; i < c.length; i++){ Vec3 a = v1.set(c[i].v).scl(scale); Vec3 b = v2.set(c[(i + 1) % c.length].v).scl(scale); - vert(a, Vec3.Z, color); - vert(b, Vec3.Z, color); + vert(a, Vec3.Z, col, 0f); + vert(b, Vec3.Z, col, 0f); } } return end(); } - public static Mesh buildHex(Color color, int divisions, boolean lines, float radius){ + public static Mesh buildLineHex(Color color, int divisions){ + PlanetGrid grid = PlanetGrid.create(divisions); + + begin(grid.tiles.length * 12, 0, false); + + Vec3 nor = v4.set(1f, 1f, 1f); + + float col = color.toFloatBits(); + + for(Ptile tile : grid.tiles){ + Corner[] c = tile.corners; + + for(int i = 0; i < c.length; i++){ + Vec3 v1 = c[i].v; + Vec3 v2 = c[(i + 1) % c.length].v; + + vert(v1, nor, col, 0f); + vert(v2, nor, col, 0f); + } + } + + return end(); + } + + public static Mesh buildHex(Color color, int divisions, float radius){ return buildHex(new HexMesher(){ @Override public float getHeight(Vec3 position){ @@ -64,17 +95,25 @@ public class MeshBuilder{ public Color getColor(Vec3 position){ return color; } - }, divisions, lines, radius, 0); + }, divisions, radius, 0); } - public static Mesh buildHex(HexMesher mesher, int divisions, boolean lines, float radius, float intensity){ + public static Mesh buildHex(HexMesher mesher, int divisions, float radius, float intensity){ PlanetGrid grid = PlanetGrid.create(divisions); if(mesher instanceof PlanetGenerator generator){ generator.seed = generator.baseSeed; } - begin(grid.tiles.length * 12); + boolean emit = mesher.hasEmissive(); + + boolean indexed = grid.tiles.length * 6 < 65535; + + if(indexed){ + begin(grid.tiles.length * 6, grid.tiles.length * 4 * 3, emit); + }else{ + begin(grid.tiles.length * 12, 0, emit); + } float[] heights; @@ -89,6 +128,8 @@ public class MeshBuilder{ heights[i] = mesher.getHeight(grid.corners[i].v); } + int position = 0; + for(Ptile tile : grid.tiles){ if(mesher.skip(tile.v)){ continue; @@ -101,25 +142,30 @@ public class MeshBuilder{ } Vec3 nor = normal(c[0].v, c[2].v, c[4].v); - Color color = mesher.getColor(v2.set(tile.v)); + float color = mesher.getColor(tile.v).toFloatBits(); + float emissive = emit ? mesher.getEmissiveColor(tile.v).toFloatBits() : 0f; - if(lines){ - nor.set(1f, 1f, 1f); - - for(int i = 0; i < c.length; i++){ - Vec3 v1 = c[i].v; - Vec3 v2 = c[(i + 1) % c.length].v; - - vert(v1, nor, color); - vert(v2, nor, color); + if(indexed){ + for(var corner : c){ + vert(corner.v, nor, color, emissive); } + + indices(position, position + 1, position + 2); + indices(position, position + 2, position + 3); + indices(position, position + 3, position + 4); + if(c.length > 5){ + indices(position, position + 4, position + 5); + } + + position += c.length; + }else{ - verts(c[0].v, c[1].v, c[2].v, nor, color); - verts(c[0].v, c[2].v, c[3].v, nor, color); - verts(c[0].v, c[3].v, c[4].v, nor, color); + verts(c[0].v, c[1].v, c[2].v, nor, color, emissive); + verts(c[0].v, c[2].v, c[3].v, nor, color, emissive); + verts(c[0].v, c[3].v, c[4].v, nor, color, emissive); if(c.length > 5){ - verts(c[0].v, c[4].v, c[5].v, nor, color); + verts(c[0].v, c[4].v, c[5].v, nor, color, emissive); } } @@ -127,28 +173,49 @@ public class MeshBuilder{ for(Corner corner : c){ corner.v.nor(); } - } return end(); } - private static void begin(int count){ - mesh = new Mesh(true, count, 0, + private static void begin(int vertices, int indices, boolean emissive){ + Seq attributes = Seq.with( VertexAttribute.position3, - !gl30 ? VertexAttribute.normal : VertexAttribute.packedNormal, + //only GL30 supports GL_INT_2_10_10_10_REV + gl30 ? VertexAttribute.packedNormal : VertexAttribute.normal, VertexAttribute.color ); + if(emissive){ + attributes.add(new VertexAttribute(4, GL20.GL_UNSIGNED_BYTE, true, "a_emissive")); + } + + mesh = new Mesh(true, vertices, indices, attributes.toArray(VertexAttribute.class)); + mesh.getVerticesBuffer().limit(mesh.getVerticesBuffer().capacity()); mesh.getVerticesBuffer().position(0); + + if(indices > 0){ + mesh.getIndicesBuffer().limit(mesh.getIndicesBuffer().capacity()); + mesh.getIndicesBuffer().position(0); + } } + static int totalBytes; + private static Mesh end(){ Mesh last = mesh; last.getVerticesBuffer().limit(last.getVerticesBuffer().position()); + if(last.getNumIndices() > 0){ + last.getIndicesBuffer().limit(last.getIndicesBuffer().position()); + } mesh = null; + totalBytes += last.getVerticesBuffer().capacity() * 4; + totalBytes += last.getIndicesBuffer().capacity() * 2; + + Log.info("total memory used: @ mb", totalBytes / 1000f / 1000f); + return last; } @@ -156,13 +223,23 @@ public class MeshBuilder{ return v4.set(v2).sub(v1).crs(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z).nor(); } - private static void verts(Vec3 a, Vec3 b, Vec3 c, Vec3 normal, Color color){ - vert(a, normal, color); - vert(b, normal, color); - vert(c, normal, color); + private static void indices(int a, int b, int c){ + shorts[0] = (short)a; + shorts[1] = (short)b; + shorts[2] = (short)c; + mesh.getIndicesBuffer().put(shorts); } - private static void vert(Vec3 a, Vec3 normal, Color color){ + private static void verts(Vec3 a, Vec3 b, Vec3 c, Vec3 normal, float color, float emissive){ + vert(a, normal, color, emissive); + vert(b, normal, color, emissive); + vert(c, normal, color, emissive); + } + + private static void vert(Vec3 a, Vec3 normal, float color, float emissive){ + boolean emit = mesh.getVertexSize() == emissiveFloats.length*4; + float[] floats = emit ? emissiveFloats : MeshBuilder.floats; + floats[0] = a.x; floats[1] = a.y; floats[2] = a.z; @@ -170,13 +247,15 @@ public class MeshBuilder{ if(gl30){ floats[3] = packNormals(normal.x, normal.y, normal.z); - floats[4] = color.toFloatBits(); + floats[4] = color; + if(emit) floats[5] = emissive; }else{ floats[3] = normal.x; floats[4] = normal.x; floats[5] = normal.x; - floats[6] = color.toFloatBits(); + floats[6] = color; + if(emit) floats[7] = emissive; } mesh.getVerticesBuffer().put(floats); diff --git a/core/src/mindustry/graphics/g3d/NoiseMesh.java b/core/src/mindustry/graphics/g3d/NoiseMesh.java index 88709c4021..30438df7bf 100644 --- a/core/src/mindustry/graphics/g3d/NoiseMesh.java +++ b/core/src/mindustry/graphics/g3d/NoiseMesh.java @@ -21,7 +21,7 @@ public class NoiseMesh extends HexMesh{ public Color getColor(Vec3 position){ return color; } - }, divisions, false, radius, 0.2f); + }, divisions, radius, 0.2f); } /** Two-color variant. */ @@ -38,6 +38,6 @@ public class NoiseMesh extends HexMesh{ public Color getColor(Vec3 position){ return Simplex.noise3d(8 + seed, coct, cper, cscl, 5f + position.x, 5f + position.y, 5f + position.z) > cthresh ? color2 : color1; } - }, divisions, false, radius, 0.2f); + }, divisions, radius, 0.2f); } } diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 3593f53957..ba2d66fefd 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -31,7 +31,7 @@ public class PlanetRenderer implements Disposable{ setThreshold(0.8f); blurPasses = 6; }}; - public final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, false, 1.5f); + public final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, 1.5f); //seed: 8kmfuix03fw public final CubemapMesh skybox = new CubemapMesh(new Cubemap("cubemaps/stars/")); diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 7e561f9b31..5fd3b19931 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -2,7 +2,6 @@ package mindustry.maps.generators; import arc.*; import arc.graphics.g2d.*; -import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.struct.ObjectIntMap.*; @@ -26,10 +25,6 @@ public abstract class PlanetGenerator extends BasicGenerator implements HexMeshe protected @Nullable Sector sector; - public static float packAlpha(float albedo, float emissive){ - return emissive > 0 ? 1f + 1f/255f - 0.5f * Mathf.clamp(emissive) : Mathf.clamp(albedo) * 0.5f; - } - /** Should generate sector bases for a planet. */ public void generateSector(Sector sector){ diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index f104f6bc53..20cb2c19a7 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -47,7 +47,7 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ //TODO this might be too green //if(block == Blocks.beryllicStone) block = Blocks.arkyicStone; - return Tmp.c1.set(block.mapColor).a(packAlpha(block.albedo, 0f)); + return Tmp.c1.set(block.mapColor).a(1f - block.albedo); } @Override @@ -64,17 +64,17 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ } Block getBlock(Vec3 position){ - float ice = rawTemp(position); - Tmp.v32.set(position); + float px = position.x, py = position.y, pz = position.z; + float ice = rawTemp(position); float height = rawHeight(position); - Tmp.v31.set(position); + height *= 1.2f; height = Mathf.clamp(height); Block result = terrain[Mathf.clamp((int)(height * terrain.length), 0, terrain.length - 1)]; - if(ice < 0.3 + Math.abs(Ridged.noise3d(seed + crystalSeed, position.x + 4f, position.y + 8f, position.z + 1f, crystalOct, crystalScl)) * crystalMag){ + if(ice < 0.3 + Math.abs(Ridged.noise3d(seed + crystalSeed, px + 4f, py + 8f, pz + 1f, crystalOct, crystalScl)) * crystalMag){ return Blocks.crystallineStone; } @@ -85,11 +85,9 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ } } - position = Tmp.v32; - //TODO tweak this to make it more natural //TODO edge distortion? - if(ice < redThresh - noArkThresh && Ridged.noise3d(seed + arkSeed, position.x + 2f, position.y + 8f, position.z + 1f, arkOct, arkScl) > arkThresh){ + if(ice < redThresh - noArkThresh && Ridged.noise3d(seed + arkSeed, px + 2f, py + 8f, pz + 1f, arkOct, arkScl) > arkThresh){ //TODO arkyic in middle result = Blocks.beryllicStone; } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index a785bcf9d0..4744f9329e 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -87,17 +87,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ - float dst = 999f; - for(Sector sector : Planets.serpulo.sectors){ - if(sector.hasEnemyBase() && !sector.isCaptured()){ - dst = Math.min(dst, position.dst(sector.tile.v)); - } - } - - if(position.dst(basePos) < 0.55f && dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f < 0.06f){ - return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); - } - //if(dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 4f, position.x, position.y + 200f, position.z)*0.14f < 0.09f){ // return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); //} @@ -105,7 +94,30 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ Block block = getBlock(position); //replace salt with sand color if(block == Blocks.salt) return Blocks.sand.mapColor; - return Tmp.c1.set(block.mapColor).a(packAlpha(block.albedo, 0f)); + return Tmp.c1.set(block.mapColor).a(1f - block.albedo); + } + + @Override + public boolean hasEmissive(){ + return true; + } + + @Override + public Color getEmissiveColor(Vec3 position){ + float dst = 999f; + for(Sector sector : Planets.serpulo.sectors){ + if(sector.hasEnemyBase() && !sector.isCaptured()){ + dst = Math.min(dst, position.dst(sector.tile.v)); + } + } + + float freq = 0.05f; + if(position.dst(basePos) < 0.55f && dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f){ + return Tmp.c1.set(Team.crux.color).mul(0.8f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) + .lerp(Team.sharded.color, 0.2f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); + } + + return Color.clear; } @Override @@ -123,17 +135,16 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ Block getBlock(Vec3 position){ //float metalDst = position.dst(basePos); float height = rawHeight(position); - Tmp.v31.set(position); - position = Tmp.v33.set(position).scl(scl); + float px = position.x * scl, py = position.y * scl, pz = position.z * scl; float rad = scl; - float temp = Mathf.clamp(Math.abs(position.y * 2f) / (rad)); - float tnoise = Simplex.noise3d(seed, 7, 0.56, 1f/3f, position.x, position.y + 999f, position.z); + float temp = Mathf.clamp(Math.abs(py * 2f) / (rad)); + float tnoise = Simplex.noise3d(seed, 7, 0.56, 1f/3f, px, py + 999f, pz); temp = Mathf.lerp(temp, tnoise, 0.5f); height *= 1.2f; height = Mathf.clamp(height); - float tar = Simplex.noise3d(seed, 4, 0.55f, 1f/2f, position.x, position.y + 999f, position.z) * 0.3f + Tmp.v31.dst(0, 0, 1f) * 0.2f; + float tar = Simplex.noise3d(seed, 4, 0.55f, 1f/2f, px, py + 999f, pz) * 0.3f + Tmp.v31.dst(0, 0, 1f) * 0.2f; Block res = arr[Mathf.clamp((int)(temp * arr.length), 0, arr[0].length - 1)][Mathf.clamp((int)(height * arr[0].length), 0, arr[0].length - 1)]; if(tar > 0.5f){ diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index fddb467bdf..a33e7f18e9 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -32,7 +32,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ @Override public Color getColor(Vec3 position){ float depth = Simplex.noise3d(seed, 2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; - return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(packAlpha(0.2f, 0f)); + return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(1f - 0.2f); } @Override diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 1d3cedacc7..9811d4701d 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -285,6 +285,11 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ lookAt(state.planet.getLastSector()); } + if(state.planet.requiresMeshReload){ + state.planet.requiresMeshReload = false; + state.planet.reloadMesh(); + } + return super.show(); } @@ -652,6 +657,13 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(scene.getDialog() == PlanetDialog.this && (scene.getHoverElement() == null || !scene.getHoverElement().isDescendantOf(e -> e instanceof ScrollPane))){ scene.setScrollFocus(PlanetDialog.this); + if(debugSectorAttackEdit){ + int timeShift = input.keyDown(KeyCode.rightBracket) ? 1 : input.keyDown(KeyCode.leftBracket) ? -1 : 0; + if(timeShift != -1){ + universe.setSeconds(universe.secondsf() + timeShift * Time.delta * 2f); + } + } + if(debugSectorAttackEdit && input.ctrl() && input.keyTap(KeyCode.s)){ try{ PlanetData data = new PlanetData(); From 8f0ca13aceacc365e75855cac394367debffa67d Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 28 May 2025 23:10:45 -0400 Subject: [PATCH 12/84] Player base emissive lights on Serpulo (WIP) --- core/assets/shaders/planet.vert | 5 ++-- core/src/mindustry/core/Logic.java | 10 ++++++++ .../mindustry/graphics/g3d/MeshBuilder.java | 9 +------ .../maps/generators/PlanetGenerator.java | 9 ++++++- .../maps/planet/SerpuloPlanetGenerator.java | 25 ++++++++++++++++--- .../mindustry/ui/dialogs/PlanetDialog.java | 4 +-- 6 files changed, 46 insertions(+), 16 deletions(-) diff --git a/core/assets/shaders/planet.vert b/core/assets/shaders/planet.vert index 26c78456de..e735eb7031 100755 --- a/core/assets/shaders/planet.vert +++ b/core/assets/shaders/planet.vert @@ -23,7 +23,6 @@ void main(){ vec3 vertexEye = normalize(u_campos - (u_trans * a_position).xyz); float albedo = 1.0 - a_color.a; - float emissive = a_emissive.a * u_emissive; float specularFactor = dot(vertexEye, lightReflect); if(specularFactor > 0.0){ @@ -32,6 +31,8 @@ void main(){ vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0))); - v_col = vec4(mix(a_color.rgb, a_emissive.rgb, vec3(1.0 - norc)), 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); + float emissive = a_emissive.a * u_emissive * min(pow(max(0.0, (1.0 - norc.r) * 1.2), 3.0), 1.1); + + v_col = vec4(mix(a_color.rgb, a_emissive.rgb, emissive), 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); gl_Position = u_proj * u_trans * a_position; } diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index f9f56cf13b..1ea0f5cfb4 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -156,6 +156,16 @@ public class Logic implements ApplicationListener{ if(!net.client() && e.sector == state.getSector() && e.sector.isBeingPlayed()){ state.rules.waveTeam.data().destroyToDerelict(); } + + if(!net.client() && e.sector.planet.generator != null){ + e.sector.planet.generator.onSectorCaptured(e.sector); + } + }); + + Events.on(SectorLoseEvent.class, e -> { + if(!net.client() && e.sector.planet.generator != null){ + e.sector.planet.generator.onSectorLost(e.sector); + } }); Events.on(BlockDestroyEvent.class, e -> { diff --git a/core/src/mindustry/graphics/g3d/MeshBuilder.java b/core/src/mindustry/graphics/g3d/MeshBuilder.java index 41af0a641a..891c899377 100644 --- a/core/src/mindustry/graphics/g3d/MeshBuilder.java +++ b/core/src/mindustry/graphics/g3d/MeshBuilder.java @@ -4,7 +4,6 @@ import arc.*; import arc.graphics.*; import arc.math.geom.*; import arc.struct.*; -import arc.util.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.maps.generators.*; @@ -98,6 +97,7 @@ public class MeshBuilder{ }, divisions, radius, 0); } + //TODO: make this thread safe public static Mesh buildHex(HexMesher mesher, int divisions, float radius, float intensity){ PlanetGrid grid = PlanetGrid.create(divisions); @@ -201,8 +201,6 @@ public class MeshBuilder{ } } - static int totalBytes; - private static Mesh end(){ Mesh last = mesh; last.getVerticesBuffer().limit(last.getVerticesBuffer().position()); @@ -211,11 +209,6 @@ public class MeshBuilder{ } mesh = null; - totalBytes += last.getVerticesBuffer().capacity() * 4; - totalBytes += last.getIndicesBuffer().capacity() * 2; - - Log.info("total memory used: @ mb", totalBytes / 1000f / 1000f); - return last; } diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 5fd3b19931..7b998257bc 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -25,11 +25,18 @@ public abstract class PlanetGenerator extends BasicGenerator implements HexMeshe protected @Nullable Sector sector; - /** Should generate sector bases for a planet. */ public void generateSector(Sector sector){ } + public void onSectorCaptured(Sector sector){ + + } + + public void onSectorLost(Sector sector){ + + } + public void getLockedText(Sector hovered, StringBuilder out){ out.append("[gray]").append(Iconc.lock).append(" ").append(Core.bundle.get("locked")); } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 4744f9329e..5609c76090 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -64,6 +64,16 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ return (Mathf.pow(Simplex.noise3d(seed, 7, 0.5f, 1f/3f, position.x * scl, position.y * scl, position.z * scl), 2.3f) + waterOffset) / (1f + waterOffset); } + @Override + public void onSectorCaptured(Sector sector){ + sector.planet.requiresMeshReload = true; + } + + @Override + public void onSectorLost(Sector sector){ + sector.planet.requiresMeshReload = true; + } + @Override public boolean allowLanding(Sector sector){ return sector.planet.allowLaunchToNumbered && (sector.hasBase() || sector.near().contains(s -> s.hasBase() && @@ -104,17 +114,26 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public Color getEmissiveColor(Vec3 position){ - float dst = 999f; + float dst = 999f, captureDst = 999f; for(Sector sector : Planets.serpulo.sectors){ if(sector.hasEnemyBase() && !sector.isCaptured()){ - dst = Math.min(dst, position.dst(sector.tile.v)); + dst = Math.min(dst, position.dst(sector.tile.v) - (sector.preset != null ? sector.preset.difficulty/10f * 0.03f - 0.03f : 0f)); + }else if(sector.hasBase()){ + captureDst = Math.min(captureDst, position.dst(sector.tile.v)); } } float freq = 0.05f; - if(position.dst(basePos) < 0.55f && dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f){ + if(position.dst(basePos) < 0.55f ? + + dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f : + dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 6f, position.x, position.y + 370f, position.z)*0.06f < 0.045){ + return Tmp.c1.set(Team.crux.color).mul(0.8f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) .lerp(Team.sharded.color, 0.2f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); + }else if(captureDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 6f, position.x, position.y + 600f, position.z)*0.07f < 0.05){ + return Tmp.c1.set(Team.sharded.color).mul(0.7f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) + .lerp(Team.crux.color, 0.3f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); } return Color.clear; diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 9811d4701d..ac77cbf556 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -659,8 +659,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(debugSectorAttackEdit){ int timeShift = input.keyDown(KeyCode.rightBracket) ? 1 : input.keyDown(KeyCode.leftBracket) ? -1 : 0; - if(timeShift != -1){ - universe.setSeconds(universe.secondsf() + timeShift * Time.delta * 2f); + if(timeShift != 0){ + universe.setSeconds(universe.secondsf() + timeShift * Time.delta * 2.5f); } } From d4d8e6d42c7f1bb5ae52923b0b1b2ef1c83b4e75 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 29 May 2025 14:19:33 -0400 Subject: [PATCH 13/84] Light coverage based on player structures --- core/src/mindustry/game/SectorInfo.java | 11 +++++++++++ .../maps/planet/SerpuloPlanetGenerator.java | 15 +++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index f9ce1acb9c..5791e6db6f 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -73,6 +73,8 @@ public class SectorInfo{ public float secondsPassed; /** How many minutes this sector has been captured. */ public float minutesCaptured; + /** Light coverage in terms of radius. */ + public float lightCoverage; /** Display name. */ public @Nullable String name; /** Displayed icon. */ @@ -180,6 +182,15 @@ public class SectorInfo{ winWave = state.rules.sector.preset.captureWave; } + lightCoverage = 0f; + for(var build : state.rules.defaultTeam.data().buildings){ + if(build.block.emitLight){ + lightCoverage += build.block.lightRadius * build.efficiency; + } + } + + lightCoverage += state.rules.defaultTeam.data().units.sumf(u -> u.type.lightRadius/2f); + state.wave = wave; state.rules.waves = waves; state.rules.waveSpacing = waveSpacing; diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 5609c76090..2f8c5b7b14 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -114,24 +114,31 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public Color getEmissiveColor(Vec3 position){ - float dst = 999f, captureDst = 999f; + float dst = 999f, captureDst = 999f, lightScl = 0f; for(Sector sector : Planets.serpulo.sectors){ if(sector.hasEnemyBase() && !sector.isCaptured()){ dst = Math.min(dst, position.dst(sector.tile.v) - (sector.preset != null ? sector.preset.difficulty/10f * 0.03f - 0.03f : 0f)); }else if(sector.hasBase()){ - captureDst = Math.min(captureDst, position.dst(sector.tile.v)); + float cdst = position.dst(sector.tile.v); + if(cdst < captureDst){ + captureDst = cdst; + lightScl = sector.info.lightCoverage; + } } } + lightScl = Math.min(lightScl / 50000f, 1.3f); + if(lightScl < 1f) lightScl = Interp.pow5Out.apply(lightScl); + float freq = 0.05f; if(position.dst(basePos) < 0.55f ? dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f : - dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 6f, position.x, position.y + 370f, position.z)*0.06f < 0.045){ + dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 9f, position.x, position.y + 370f, position.z)*0.06f < 0.045){ return Tmp.c1.set(Team.crux.color).mul(0.8f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) .lerp(Team.sharded.color, 0.2f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); - }else if(captureDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 6f, position.x, position.y + 600f, position.z)*0.07f < 0.05){ + }else if(captureDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 9f, position.x, position.y + 600f, position.z)*0.07f < 0.05 * lightScl){ return Tmp.c1.set(Team.sharded.color).mul(0.7f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) .lerp(Team.crux.color, 0.3f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); } From 1e621259d56ea59f3e68083f58da9df465d87fcb Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 29 May 2025 17:39:08 -0400 Subject: [PATCH 14/84] Metal floor for Serpulo crux megabase --- .../maps/planet/SerpuloPlanetGenerator.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 2f8c5b7b14..5b5969ce9c 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -159,7 +159,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ public static double metalMag = 0.11, metalScl = 1, metalDstScl = 0.25, metalThresh = 0.1; Block getBlock(Vec3 position){ - //float metalDst = position.dst(basePos); float height = rawHeight(position); float px = position.x * scl, py = position.y * scl, pz = position.z * scl; @@ -176,11 +175,21 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ if(tar > 0.5f){ return tars.get(res, res); }else{ - //TODO: add this later once presets are defined for this side - /* - if(metalDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, metalScl, position.x, position.y + 99f, position.z)*metalMag < metalThresh){ - return Blocks.metalFloor; - }*/ + if(position.within(basePos, 0.65f)){ + + float dst = 999f; + for(Sector sector : Planets.serpulo.sectors){ + if(sector.hasEnemyBase()){ + dst = Math.min(dst, position.dst(sector.tile.v)); + } + } + + float freq = 0.05f; + + if(dst*0.85f + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.015f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.15f){ + return Blocks.metalFloor; + } + } return res; } } From 82a801b1c0b8e9ddce4b591ac9ad09af1d7aa47b Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 29 May 2025 20:46:17 -0400 Subject: [PATCH 15/84] Async mesh reloading for planets --- core/src/mindustry/graphics/LoadRenderer.java | 2 +- core/src/mindustry/graphics/g3d/HexMesh.java | 2 +- .../src/mindustry/graphics/g3d/HexMesher.java | 15 +- .../mindustry/graphics/g3d/HexSkyMesh.java | 4 +- .../mindustry/graphics/g3d/MeshBuilder.java | 269 +++++++++--------- .../src/mindustry/graphics/g3d/NoiseMesh.java | 8 +- .../mindustry/graphics/g3d/PlanetGrid.java | 2 +- core/src/mindustry/graphics/g3d/SunMesh.java | 5 +- .../maps/generators/BlankPlanetGenerator.java | 12 - .../maps/planet/ErekirPlanetGenerator.java | 6 +- .../maps/planet/SerpuloPlanetGenerator.java | 56 ++-- .../maps/planet/TantrosPlanetGenerator.java | 6 +- core/src/mindustry/type/Planet.java | 17 +- .../mindustry/ui/dialogs/PlanetDialog.java | 10 +- 14 files changed, 218 insertions(+), 196 deletions(-) diff --git a/core/src/mindustry/graphics/LoadRenderer.java b/core/src/mindustry/graphics/LoadRenderer.java index 8e389838c8..da6e58c0ed 100644 --- a/core/src/mindustry/graphics/LoadRenderer.java +++ b/core/src/mindustry/graphics/LoadRenderer.java @@ -32,7 +32,7 @@ public class LoadRenderer implements Disposable{ private float testprogress = 0f; private StringBuilder assetText = new StringBuilder(); private Bar[] bars; - private Mesh mesh = MeshBuilder.buildLineHex(colorRed, 2); + private Mesh mesh = MeshBuilder.buildPlanetGrid(PlanetGrid.create(2), colorRed, 1f); private Camera3D cam = new Camera3D(); private int lastLength = -1; private FxProcessor fx; diff --git a/core/src/mindustry/graphics/g3d/HexMesh.java b/core/src/mindustry/graphics/g3d/HexMesh.java index 2f97859f82..5436cdc79d 100644 --- a/core/src/mindustry/graphics/g3d/HexMesh.java +++ b/core/src/mindustry/graphics/g3d/HexMesh.java @@ -21,7 +21,7 @@ public class HexMesh extends PlanetMesh{ @Override public void preRender(PlanetParams params){ Shaders.planet.planet = planet; - Shaders.planet.emissive = planet.generator != null && planet.generator.hasEmissive(); + Shaders.planet.emissive = planet.generator != null; Shaders.planet.lightDir.set(planet.solarSystem.position).sub(planet.position).rotate(Vec3.Y, planet.getRotation()).nor(); Shaders.planet.ambientColor.set(planet.solarSystem.lightColor); } diff --git a/core/src/mindustry/graphics/g3d/HexMesher.java b/core/src/mindustry/graphics/g3d/HexMesher.java index 4f01af5dc8..a6192f41df 100644 --- a/core/src/mindustry/graphics/g3d/HexMesher.java +++ b/core/src/mindustry/graphics/g3d/HexMesher.java @@ -6,15 +6,16 @@ import arc.math.geom.*; /** Defines color and height for a planet mesh. */ public interface HexMesher{ - float getHeight(Vec3 position); - Color getColor(Vec3 position); - - default Color getEmissiveColor(Vec3 position){ - return Color.clear; + default float getHeight(Vec3 position){ + return 0f; } - default boolean hasEmissive(){ - return false; + default void getColor(Vec3 position, Color out){ + + } + + default void getEmissiveColor(Vec3 position, Color out){ + } default boolean skip(Vec3 position){ diff --git a/core/src/mindustry/graphics/g3d/HexSkyMesh.java b/core/src/mindustry/graphics/g3d/HexSkyMesh.java index 14f4d83b94..b2a3e0ac80 100644 --- a/core/src/mindustry/graphics/g3d/HexSkyMesh.java +++ b/core/src/mindustry/graphics/g3d/HexSkyMesh.java @@ -21,8 +21,8 @@ public class HexSkyMesh extends PlanetMesh{ } @Override - public Color getColor(Vec3 position){ - return color; + public void getColor(Vec3 position, Color out){ + out.set(color); } @Override diff --git a/core/src/mindustry/graphics/g3d/MeshBuilder.java b/core/src/mindustry/graphics/g3d/MeshBuilder.java index 891c899377..9b497bc04e 100644 --- a/core/src/mindustry/graphics/g3d/MeshBuilder.java +++ b/core/src/mindustry/graphics/g3d/MeshBuilder.java @@ -8,65 +8,39 @@ import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.maps.generators.*; public class MeshBuilder{ - private static final Vec3 v1 = new Vec3(), v2 = new Vec3(), v3 = new Vec3(), v4 = new Vec3(); private static final boolean gl30 = Core.gl30 != null; - private static final float[] floats = new float[3 + (gl30 ? 1 : 3) + 1], emissiveFloats = new float[floats.length + 1]; - private static final short[] shorts = new short[3]; - private static float[] tmpHeights = new float[14580]; //highest amount of corners in vanilla - private static Mesh mesh; - - public static Mesh buildIcosphere(int divisions, float radius, Color color){ - begin(20 * (2 << (2 * divisions - 1)) * 3, 0, false); - - float col = color.toFloatBits(); + private static volatile float[] tmpHeights = new float[14580]; //highest amount of corners in vanilla + /** Note that the resulting icosphere does not have normals or a color. */ + public static Mesh buildIcosphere(int divisions, float radius){ MeshResult result = Icosphere.create(divisions); - for(int i = 0; i < result.indices.size; i+= 3){ - v1.set(result.vertices.items, result.indices.items[i] * 3).setLength(radius); - v2.set(result.vertices.items, result.indices.items[i + 1] * 3).setLength(radius); - v3.set(result.vertices.items, result.indices.items[i + 2] * 3).setLength(radius); - verts(v1, v3, v2, normal(v1, v2, v3).scl(-1f), col, 0f); + Mesh mesh = begin(result.vertices.size / 3, result.indices.size, false, false); + + if(result.vertices.size >= 65535) throw new RuntimeException("Due to index size limits, only meshes with a maximum of 65535 vertices are supported. If you want more than that, make your own non-indexed mesh builder."); + + float[] items = result.vertices.items; + for(int i = 0; i < result.vertices.size; i ++){ + items[i] *= radius; } - return end(); - } + mesh.getVerticesBuffer().put(items, 0, result.vertices.size); - public static Mesh buildIcosphere(int divisions, float radius){ - return buildIcosphere(divisions, radius, Color.white); + short[] indices = new short[result.indices.size]; + for(int i = 0; i < result.indices.size; i++){ + indices[i] = (short)result.indices.items[i]; + } + + mesh.getIndicesBuffer().put(indices); + + return end(mesh); } public static Mesh buildPlanetGrid(PlanetGrid grid, Color color, float scale){ - int total = 0; - for(Ptile tile : grid.tiles){ - total += tile.corners.length * 2; - } - - float col = color.toFloatBits(); - - begin(total, 0, false); - for(Ptile tile : grid.tiles){ - Corner[] c = tile.corners; - for(int i = 0; i < c.length; i++){ - Vec3 a = v1.set(c[i].v).scl(scale); - Vec3 b = v2.set(c[(i + 1) % c.length].v).scl(scale); - - vert(a, Vec3.Z, col, 0f); - vert(b, Vec3.Z, col, 0f); - } - } - - return end(); - } - - public static Mesh buildLineHex(Color color, int divisions){ - PlanetGrid grid = PlanetGrid.create(divisions); - - begin(grid.tiles.length * 12, 0, false); - - Vec3 nor = v4.set(1f, 1f, 1f); + Mesh mesh = begin(grid.tiles.length * 12, 0, false, false); float col = color.toFloatBits(); + float[] floats = new float[8]; for(Ptile tile : grid.tiles){ Corner[] c = tile.corners; @@ -75,12 +49,21 @@ public class MeshBuilder{ Vec3 v1 = c[i].v; Vec3 v2 = c[(i + 1) % c.length].v; - vert(v1, nor, col, 0f); - vert(v2, nor, col, 0f); + floats[0] = v1.x * scale; + floats[1] = v1.y * scale; + floats[2] = v1.z * scale; + floats[3] = col; + + floats[4] = v2.x * scale; + floats[5] = v2.y * scale; + floats[6] = v2.z * scale; + floats[7] = col; + + mesh.getVerticesBuffer().put(floats); } } - return end(); + return end(mesh); } public static Mesh buildHex(Color color, int divisions, float radius){ @@ -91,29 +74,24 @@ public class MeshBuilder{ } @Override - public Color getColor(Vec3 position){ - return color; + public void getColor(Vec3 position, Color out){ + out.set(color); } }, divisions, radius, 0); } - //TODO: make this thread safe - public static Mesh buildHex(HexMesher mesher, int divisions, float radius, float intensity){ + //TODO: in principle this should not be synchronized, but I would rather not realloc tmpHeights every time, and it is unlikely that two planets will be reloading at the same time + public static synchronized Mesh buildHex(HexMesher mesher, int divisions, float radius, float intensity){ PlanetGrid grid = PlanetGrid.create(divisions); + //TODO: this is NOT thread safe, but in practice, it should never cause a problem if(mesher instanceof PlanetGenerator generator){ generator.seed = generator.baseSeed; } - boolean emit = mesher.hasEmissive(); + if(grid.tiles.length * 6 >= 65535) throw new RuntimeException("Due to index size limits, only meshes with a maximum of 65535 vertices are supported. If you want more than that, make your own non-indexed mesh builder."); - boolean indexed = grid.tiles.length * 6 < 65535; - - if(indexed){ - begin(grid.tiles.length * 6, grid.tiles.length * 4 * 3, emit); - }else{ - begin(grid.tiles.length * 12, 0, emit); - } + Mesh mesh = begin(grid.tiles.length * 6, grid.tiles.length * 4 * 3, true, true); float[] heights; @@ -130,6 +108,12 @@ public class MeshBuilder{ int position = 0; + short[] shorts = new short[12]; + float[] floats = new float[3 + (gl30 ? 1 : 3) + 1 + 1]; + Vec3 nor = new Vec3(); + + Color tmpCol = new Color(); + for(Ptile tile : grid.tiles){ if(mesher.skip(tile.v)){ continue; @@ -137,60 +121,77 @@ public class MeshBuilder{ Corner[] c = tile.corners; - for(Corner corner : c){ - corner.v.scl((1f + heights[corner.id] * intensity) * radius); + float + h1 = (1f + heights[c[0].id] * intensity) * radius, + h2 = (1f + heights[c[2].id] * intensity) * radius, + h3 = (1f + heights[c[4].id] * intensity) * radius; + + Vec3 + v1 = c[0].v, + v2 = c[2].v, + v3 = c[4].v; + + normal( + v1.x * h1, v1.y * h1, v1.z * h1, + v2.x * h2, v2.y * h2, v2.z * h2, + v3.x * h3, v3.y * h3, v3.z * h3, + nor); + + tmpCol.set(1f, 1f, 1f, 1f); + mesher.getColor(tile.v, tmpCol); + float color = tmpCol.toFloatBits(); + tmpCol.set(0f, 0f, 0f, 0f); + mesher.getEmissiveColor(tile.v, tmpCol); + float emissive = tmpCol.toFloatBits(); + + for(var corner : c){ + float height = (1f + heights[corner.id] * intensity) * radius; + + vert(mesh, floats, corner.v.x * height, corner.v.y * height, corner.v.z * height, nor, color, emissive); } - Vec3 nor = normal(c[0].v, c[2].v, c[4].v); - float color = mesher.getColor(tile.v).toFloatBits(); - float emissive = emit ? mesher.getEmissiveColor(tile.v).toFloatBits() : 0f; + shorts[0] = (short)(position); + shorts[1] = (short)(position + 1); + shorts[2] = (short)(position + 2); - if(indexed){ - for(var corner : c){ - vert(corner.v, nor, color, emissive); - } + shorts[3] = (short)(position); + shorts[4] = (short)(position + 2); + shorts[5] = (short)(position + 3); - indices(position, position + 1, position + 2); - indices(position, position + 2, position + 3); - indices(position, position + 3, position + 4); - if(c.length > 5){ - indices(position, position + 4, position + 5); - } + shorts[6] = (short)(position); + shorts[7] = (short)(position + 3); + shorts[8] = (short)(position + 4); - position += c.length; - - }else{ - verts(c[0].v, c[1].v, c[2].v, nor, color, emissive); - verts(c[0].v, c[2].v, c[3].v, nor, color, emissive); - verts(c[0].v, c[3].v, c[4].v, nor, color, emissive); - - if(c.length > 5){ - verts(c[0].v, c[4].v, c[5].v, nor, color, emissive); - } + if(c.length > 5){ + shorts[9] = (short)(position); + shorts[10] = (short)(position + 4); + shorts[11] = (short)(position + 5); } - //restore mutated corners - for(Corner corner : c){ - corner.v.nor(); - } + mesh.getIndicesBuffer().put(shorts, 0, c.length > 5 ? 12 : 9); + position += c.length; } - return end(); + return end(mesh); } - private static void begin(int vertices, int indices, boolean emissive){ + private static Mesh begin(int vertices, int indices, boolean normal, boolean emissive){ Seq attributes = Seq.with( - VertexAttribute.position3, - //only GL30 supports GL_INT_2_10_10_10_REV - gl30 ? VertexAttribute.packedNormal : VertexAttribute.normal, - VertexAttribute.color + VertexAttribute.position3 ); + if(normal){ + //only GL30 supports GL_INT_2_10_10_10_REV + attributes.add(gl30 ? VertexAttribute.packedNormal : VertexAttribute.normal); + } + + attributes.add(VertexAttribute.color); + if(emissive){ attributes.add(new VertexAttribute(4, GL20.GL_UNSIGNED_BYTE, true, "a_emissive")); } - mesh = new Mesh(true, vertices, indices, attributes.toArray(VertexAttribute.class)); + Mesh mesh = new Mesh(true, vertices, indices, attributes.toArray(VertexAttribute.class)); mesh.getVerticesBuffer().limit(mesh.getVerticesBuffer().capacity()); mesh.getVerticesBuffer().position(0); @@ -199,56 +200,70 @@ public class MeshBuilder{ mesh.getIndicesBuffer().limit(mesh.getIndicesBuffer().capacity()); mesh.getIndicesBuffer().position(0); } + + return mesh; } - private static Mesh end(){ - Mesh last = mesh; - last.getVerticesBuffer().limit(last.getVerticesBuffer().position()); - if(last.getNumIndices() > 0){ - last.getIndicesBuffer().limit(last.getIndicesBuffer().position()); + private static Mesh end(Mesh mesh){ + mesh.getVerticesBuffer().limit(mesh.getVerticesBuffer().position()); + if(mesh.getNumIndices() > 0){ + mesh.getIndicesBuffer().limit(mesh.getIndicesBuffer().position()); } - mesh = null; - return last; + return mesh; } - private static Vec3 normal(Vec3 v1, Vec3 v2, Vec3 v3){ - return v4.set(v2).sub(v1).crs(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z).nor(); + private static void normal(Vec3 v1, Vec3 v2, Vec3 v3, Vec3 out){ + float + x = v2.x - v1.x, + y = v2.y - v1.y, + z = v2.z - v1.z, + vx = v3.x - v1.x, + vy = v3.y - v1.y, + vz = v3.z - v1.z; + + float + cx = y * vz - z * vy, + cy = z * vx - x * vz, + cz = x * vy - y * vx; + + out.set(cx, cy, cz).nor(); } - private static void indices(int a, int b, int c){ - shorts[0] = (short)a; - shorts[1] = (short)b; - shorts[2] = (short)c; - mesh.getIndicesBuffer().put(shorts); + private static void normal(float v1x, float v1y, float v1z, float v2x, float v2y, float v2z, float v3x, float v3y, float v3z, Vec3 out){ + float + x = v2x - v1x, + y = v2y - v1y, + z = v2z - v1z, + vx = v3x - v1x, + vy = v3y - v1y, + vz = v3z - v1z; + + float + cx = y * vz - z * vy, + cy = z * vx - x * vz, + cz = x * vy - y * vx; + + out.set(cx, cy, cz).nor(); } - private static void verts(Vec3 a, Vec3 b, Vec3 c, Vec3 normal, float color, float emissive){ - vert(a, normal, color, emissive); - vert(b, normal, color, emissive); - vert(c, normal, color, emissive); - } - - private static void vert(Vec3 a, Vec3 normal, float color, float emissive){ - boolean emit = mesh.getVertexSize() == emissiveFloats.length*4; - float[] floats = emit ? emissiveFloats : MeshBuilder.floats; - - floats[0] = a.x; - floats[1] = a.y; - floats[2] = a.z; + private static void vert(Mesh mesh, float[] floats, float x, float y, float z, Vec3 normal, float color, float emissive){ + floats[0] = x; + floats[1] = y; + floats[2] = z; if(gl30){ floats[3] = packNormals(normal.x, normal.y, normal.z); floats[4] = color; - if(emit) floats[5] = emissive; + floats[5] = emissive; }else{ floats[3] = normal.x; floats[4] = normal.x; floats[5] = normal.x; floats[6] = color; - if(emit) floats[7] = emissive; + floats[7] = emissive; } mesh.getVerticesBuffer().put(floats); diff --git a/core/src/mindustry/graphics/g3d/NoiseMesh.java b/core/src/mindustry/graphics/g3d/NoiseMesh.java index 30438df7bf..b3863ac6bc 100644 --- a/core/src/mindustry/graphics/g3d/NoiseMesh.java +++ b/core/src/mindustry/graphics/g3d/NoiseMesh.java @@ -18,8 +18,8 @@ public class NoiseMesh extends HexMesh{ } @Override - public Color getColor(Vec3 position){ - return color; + public void getColor(Vec3 position, Color out){ + out.set(color); } }, divisions, radius, 0.2f); } @@ -35,8 +35,8 @@ public class NoiseMesh extends HexMesh{ } @Override - public Color getColor(Vec3 position){ - return Simplex.noise3d(8 + seed, coct, cper, cscl, 5f + position.x, 5f + position.y, 5f + position.z) > cthresh ? color2 : color1; + public void getColor(Vec3 position, Color out){ + out.set(Simplex.noise3d(8 + seed, coct, cper, cscl, 5f + position.x, 5f + position.y, 5f + position.z) > cthresh ? color2 : color1); } }, divisions, radius, 0.2f); } diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index 7e8950d49e..e7f9cfcfc5 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -47,7 +47,7 @@ public class PlanetGrid{ } } - public static PlanetGrid create(int size){ + public static synchronized PlanetGrid create(int size){ //cache grids between calls, since only ~5 different grids total are needed if(size < cache.length && cache[size] != null){ return cache[size]; diff --git a/core/src/mindustry/graphics/g3d/SunMesh.java b/core/src/mindustry/graphics/g3d/SunMesh.java index b858303e39..399b6cde8c 100644 --- a/core/src/mindustry/graphics/g3d/SunMesh.java +++ b/core/src/mindustry/graphics/g3d/SunMesh.java @@ -3,7 +3,6 @@ package mindustry.graphics.g3d; import arc.graphics.*; import arc.math.*; import arc.math.geom.*; -import arc.util.*; import arc.util.noise.*; import mindustry.graphics.*; import mindustry.type.*; @@ -19,9 +18,9 @@ public class SunMesh extends HexMesh{ } @Override - public Color getColor(Vec3 position){ + public void getColor(Vec3 position, Color out){ double height = Math.pow(Simplex.noise3d(0, octaves, persistence, scl, position.x, position.y, position.z), pow) * mag; - return Tmp.c1.set(colors[Mathf.clamp((int)(height * colors.length), 0, colors.length - 1)]).mul(colorScale); + out.set(colors[Mathf.clamp((int)(height * colors.length), 0, colors.length - 1)]).mul(colorScale); } }, divisions, Shaders.unlit); } diff --git a/core/src/mindustry/maps/generators/BlankPlanetGenerator.java b/core/src/mindustry/maps/generators/BlankPlanetGenerator.java index 1fcec6fa0b..7b8aeed5ce 100644 --- a/core/src/mindustry/maps/generators/BlankPlanetGenerator.java +++ b/core/src/mindustry/maps/generators/BlankPlanetGenerator.java @@ -1,7 +1,5 @@ package mindustry.maps.generators; -import arc.graphics.*; -import arc.math.geom.*; import mindustry.game.*; import mindustry.type.*; import mindustry.world.*; @@ -9,16 +7,6 @@ import mindustry.world.*; /** A planet generator that provides no weather, height, color or bases. Override generate().*/ public class BlankPlanetGenerator extends PlanetGenerator{ - @Override - public float getHeight(Vec3 position){ - return 0; - } - - @Override - public Color getColor(Vec3 position){ - return Color.white; - } - @Override public void addWeather(Sector sector, Rules rules){ diff --git a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java index 20cb2c19a7..927e3e755d 100644 --- a/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/ErekirPlanetGenerator.java @@ -39,15 +39,13 @@ public class ErekirPlanetGenerator extends PlanetGenerator{ } @Override - public Color getColor(Vec3 position){ + public void getColor(Vec3 position, Color out){ Block block = getBlock(position); //more obvious color if(block == Blocks.crystallineStone) block = Blocks.crystalFloor; - //TODO this might be too green - //if(block == Blocks.beryllicStone) block = Blocks.arkyicStone; - return Tmp.c1.set(block.mapColor).a(1f - block.albedo); + out.set(block.mapColor).a(1f - block.albedo); } @Override diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 5b5969ce9c..a8b5c3bae9 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -66,12 +66,12 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public void onSectorCaptured(Sector sector){ - sector.planet.requiresMeshReload = true; + sector.planet.reloadMeshAsync(); } @Override public void onSectorLost(Sector sector){ - sector.planet.requiresMeshReload = true; + sector.planet.reloadMeshAsync(); } @Override @@ -96,26 +96,27 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } @Override - public Color getColor(Vec3 position){ + public void getColor(Vec3 position, Color out){ //if(dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 4f, position.x, position.y + 200f, position.z)*0.14f < 0.09f){ // return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); //} Block block = getBlock(position); //replace salt with sand color - if(block == Blocks.salt) return Blocks.sand.mapColor; - return Tmp.c1.set(block.mapColor).a(1f - block.albedo); + if(block == Blocks.salt) block = Blocks.sand; + out.set(block.mapColor).a(1f - block.albedo); } @Override - public boolean hasEmissive(){ - return true; - } - - @Override - public Color getEmissiveColor(Vec3 position){ + public void getEmissiveColor(Vec3 position, Color out){ float dst = 999f, captureDst = 999f, lightScl = 0f; - for(Sector sector : Planets.serpulo.sectors){ + + Object[] sectors = Planets.serpulo.sectors.items; + int size = Planets.serpulo.sectors.size; + + for(int i = 0; i < size; i ++){ + var sector = (Sector)sectors[i]; + if(sector.hasEnemyBase() && !sector.isCaptured()){ dst = Math.min(dst, position.dst(sector.tile.v) - (sector.preset != null ? sector.preset.difficulty/10f * 0.03f - 0.03f : 0f)); }else if(sector.hasBase()){ @@ -133,22 +134,23 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ float freq = 0.05f; if(position.dst(basePos) < 0.55f ? - dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f : + dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f/* || dst <= 0.0001f*/ : dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 9f, position.x, position.y + 370f, position.z)*0.06f < 0.045){ - return Tmp.c1.set(Team.crux.color).mul(0.8f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) - .lerp(Team.sharded.color, 0.2f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); + out.set(Team.crux.color) + .mul(0.8f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) + .lerp(Team.sharded.color, 0.2f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).toFloatBits(); }else if(captureDst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 9f, position.x, position.y + 600f, position.z)*0.07f < 0.05 * lightScl){ - return Tmp.c1.set(Team.sharded.color).mul(0.7f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) - .lerp(Team.crux.color, 0.3f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)); - } + out.set(Team.sharded.color).mul(0.7f + Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 99f, position.z) * 0.4f) + .lerp(Team.crux.color, 0.3f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).toFloatBits(); - return Color.clear; + } } @Override public void genTile(Vec3 position, TileGen tile){ tile.floor = getBlock(position); + if(tile.floor == Blocks.darkPanel6) tile.floor = Blocks.darkPanel3; tile.block = tile.floor.asFloor().wall; if(Ridged.noise3d(seed + 1, position.x, position.y, position.z, 2, 22) > 0.31){ @@ -156,7 +158,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } } - public static double metalMag = 0.11, metalScl = 1, metalDstScl = 0.25, metalThresh = 0.1; + static double metalDstScl = 0.25; Block getBlock(Vec3 position){ float height = rawHeight(position); @@ -169,7 +171,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ height *= 1.2f; height = Mathf.clamp(height); - float tar = Simplex.noise3d(seed, 4, 0.55f, 1f/2f, px, py + 999f, pz) * 0.3f + Tmp.v31.dst(0, 0, 1f) * 0.2f; + float tar = Simplex.noise3d(seed, 4, 0.55f, 1f/2f, px, py + 999f, pz) * 0.3f + position.dst(0, 0, 1f) * 0.2f; Block res = arr[Mathf.clamp((int)(temp * arr.length), 0, arr[0].length - 1)][Mathf.clamp((int)(height * arr[0].length), 0, arr[0].length - 1)]; if(tar > 0.5f){ @@ -178,16 +180,22 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ if(position.within(basePos, 0.65f)){ float dst = 999f; - for(Sector sector : Planets.serpulo.sectors){ + + Object[] sectors = Planets.serpulo.sectors.items; + int size = Planets.serpulo.sectors.size; + + for(int i = 0; i < size; i ++){ + var sector = (Sector)sectors[i]; + if(sector.hasEnemyBase()){ dst = Math.min(dst, position.dst(sector.tile.v)); } } - float freq = 0.05f; + float freq = 0.05f, freq2 = 0.07f; if(dst*0.85f + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.015f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.15f){ - return Blocks.metalFloor; + return ((basePos.dst(position) + 0.01f) % freq2 < freq2*0.65f) ? Blocks.metalFloor : Blocks.darkPanel6; } } return res; diff --git a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java index a33e7f18e9..e1f2f6e564 100644 --- a/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TantrosPlanetGenerator.java @@ -14,7 +14,7 @@ import mindustry.world.*; import static mindustry.Vars.*; public class TantrosPlanetGenerator extends PlanetGenerator{ - Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"), out = new Color(); + Color c1 = Color.valueOf("5057a6"), c2 = Color.valueOf("272766"); Block[][] arr = { {Blocks.redmat, Blocks.redmat, Blocks.darksand, Blocks.bluemat, Blocks.bluemat} @@ -30,9 +30,9 @@ public class TantrosPlanetGenerator extends PlanetGenerator{ } @Override - public Color getColor(Vec3 position){ + public void getColor(Vec3 position, Color out){ float depth = Simplex.noise3d(seed, 2, 0.56, 1.7f, position.x, position.y, position.z) / 2f; - return c1.write(out).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(1f - 0.2f); + out.set(c1).lerp(c2, Mathf.clamp(Mathf.round(depth, 0.15f))).a(1f - 0.2f).toFloatBits(); } @Override diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 1ccbe0e5bb..577b0de7e2 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -43,8 +43,6 @@ public class Planet extends UnlockableContent{ public @Nullable GenericMesh cloudMesh; /** Mesh used for rendering planet grid outlines. Null on server or if {@link #grid} is null. */ public @Nullable Mesh gridMesh; - /** If true, this planet's mesh should be reloaded when it is next shown. */ - public boolean requiresMeshReload; /** Position in global coordinates. Will be 0,0,0 until the Universe updates it. */ public Vec3 position = new Vec3(); /** Grid used for the sectors on the planet. Null if this planet can't be landed on. */ @@ -360,6 +358,21 @@ public class Planet extends UnlockableContent{ mesh = meshLoader.get(); } + public void reloadMeshAsync(){ + if(headless) return; + + mainExecutor.submit(() -> { + var newMesh = meshLoader.get(); + + Core.app.post(() -> { + if(mesh != null){ + mesh.dispose(); + } + mesh = newMesh; + }); + }); + } + @Override public void load(){ super.load(); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index ac77cbf556..e1bfee6fd7 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -33,6 +33,7 @@ import mindustry.graphics.g3d.*; import mindustry.input.*; import mindustry.io.*; import mindustry.maps.*; +import mindustry.maps.planet.*; import mindustry.type.*; import mindustry.type.Planet.*; import mindustry.ui.*; @@ -285,11 +286,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ lookAt(state.planet.getLastSector()); } - if(state.planet.requiresMeshReload){ - state.planet.requiresMeshReload = false; - state.planet.reloadMesh(); - } - return super.show(); } @@ -662,6 +658,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(timeShift != 0){ universe.setSeconds(universe.secondsf() + timeShift * Time.delta * 2.5f); } + + if(input.keyTap(KeyCode.r)){ + state.planet.reloadMeshAsync(); + } } if(debugSectorAttackEdit && input.ctrl() && input.keyTap(KeyCode.s)){ From 0d483cfc91f069e84e10eba9d7d9d5be81d0d446 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 29 May 2025 21:11:56 -0400 Subject: [PATCH 16/84] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0ba2e1b4a2..67b7e30a12 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=f125488119 +archash=212240bb82 From d984c924d02d6cbcdb0f53d4f1a83b0fabdc1aa5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 29 May 2025 21:12:05 -0400 Subject: [PATCH 17/84] arc From cb2a235a45c5403f1f14154a6591a445875917bd Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 30 May 2025 11:17:46 -0400 Subject: [PATCH 18/84] Updated geothermal stronghold submission --- core/assets/maps/geothermalStronghold.msav | Bin 142447 -> 144318 bytes gradle.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/maps/geothermalStronghold.msav b/core/assets/maps/geothermalStronghold.msav index e76157110d5c9d9f0ac14261c35e9e043e08a01a..68503754bf82757733e4ce2ddba1161fa87be87f 100644 GIT binary patch literal 144318 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

uRheXLyis)l<`c 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 brCSbs&}0<<%lMV;cVb+^fByf+7eoR80aLG) diff --git a/gradle.properties b/gradle.properties index 67b7e30a12..a4ecf43c0b 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=212240bb82 +archash=76fa5c1d2c From c797974585c8d11992bb3affc06aee784db21c4c Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 30 May 2025 16:50:22 -0400 Subject: [PATCH 19/84] Serpulo light coverage update fixes --- core/assets/maps/planetaryTerminal.msav | Bin 119922 -> 121025 bytes core/src/mindustry/game/SectorInfo.java | 22 +++++++++++------- .../maps/generators/PlanetGenerator.java | 4 ++++ .../maps/planet/SerpuloPlanetGenerator.java | 14 +++++++---- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/core/assets/maps/planetaryTerminal.msav b/core/assets/maps/planetaryTerminal.msav index b45600882a0453adaeda9ee2de1f89c7dd92663e..bbc295ac126ced02705b786be63af56247f2a96d 100644 GIT binary patch delta 120828 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%0D9pY?g_&%HXYxZkdtv$^=k*TC?g z8~=8#72*5;up~m`q8bjNBoPbRlz5$`eu zD$14{rz@^uw3r_g?Oz{Zw&9`J$Ezmo*NIk94^G8{3$LZF>Q%nSe!ubc!`3w$7dUL4^t_mN zb%@8jU>?6&!AaBB-<&h!ZG?MShV5}BL%oxmGC3CiW>!*|w8q%vU{7XQVZCT1Q{gf%ce*I9mKD}l_sN>29B7RTB z)-_!8IOH&Cd2mJklA`l6-& zeI)|^y)wP;_G4Cr&a57mJ({O38_e?()0p8`$vbtu_iN4CY_$?g;}#CdZ0q!lWv7kB z%dYm^vhIxNIXgkBzde7)te7vMt2*{2Sy!JiT%jdu!Dh(4y`cE`iq#y`dK4p!a$@ej zT=2f$@89!ii=5}P8cwF3f3KYTI8cdk>Hf9qmv{a9!Rz$&__?)5=cjB|y#6aRdXenq zx$6$4o!a%Zy?bZo>E#k^oiUB#j*s8>OgSg3sn($;DzwVt$?EkP3;yn$bmg*}^M-G$ zmdNRPCMkWKn38L}yzA~?Mt{-Qlka8lpAb1%H1(aX&E3ECJbKYb+-@$4jH=L5ELxo1 zyg5PT?PwvFndLDVWl4*S^N%_lgdw>Z%rq_Afcpr*dYN?-Qw_;8h9cs#9kusV>{{(E5|g8jbZ+XYO@e zG~@rJ;@)po+#-9O@81hsK0jag^V*vF_ce!m_f= zrmbC|m7AY*zsR!4xh+I&Q=R0A8E!7s9d|ZvTz50sFH*r#P5$Jhh^X!N!`lzey(}6g zULPozJ#VAFb8o=Z5HsNjcBzG@gwyyIIU4)T_{rM5nXTxDYU}bZ_fI`IyS(U!O*8YZ zf*s9=%6z#jWzHr9|J(gif{lOKe$z)H)mG+`-pA{i)|T&YT&8v6RBUDK$;cmU-YYEk zvcGtg!1`q+GQ%vbvVp8b4x8QbF|&7xQ7nHRW0ebE`!?NJB9C+07*G~K3tH0Zv__2E)W~59h8|deRju*OP4n8N7B6^W1`CC83`( zxpu3>Pd^)NboJDez`n+-=VglmS1Rf%p#6=R{r^;WgY+l-PlI8J)eyKli4tYL5r4SdZ zd{Ft5%1Px-628az1>R)}MmeM%N^$Z%ckJ>-9vj}Xis~LSpLgHs`z27;`xD_S-ME0tDrJH<4Z3SCi7n#khr;@nfPLYeO-UyqiuDzor~sngHAnR6h;GHacT zrl_m;Tvx9!%wiNe^v`oF%^f^7o%gCSB`D&)83o)XW@6b zs}HwcQ~y%^ZKW>%*_ZV}aTibPdi^$=UGDpDe!Sz0*KcjpE}mO|_2H>~&A)i|{CXxN zV%;-E>fu^3me`f`Rjoe@0{5+IS4oSzuXv@dcDC@($)=Jq&gK`5{4}Td`8|Dek1}pFY-J}BIF$Bz$j??;#8{9d@k)3T&qEWhGv`zuYuB`XouFCA z)p%X;e0_yEUK=)H*dV? zn!Sm&kyUxwy*qaMG0CB~AyM*uM^GvTX}_8EzO7UfhDcy0T!_R)mb5gX1#Y93^gT;VQte)m?9 z^VX^ovm<=oiymtKm}ux;b5kSqIa7P@qvfCDlke5DT-+E_4=75MJCVym+PX;{{J>GxC}%(QakPSDYmC?uf;q z&X3yaZpG@yCWiG%Db;REkdWK6Nj%%-{xoG($q)M`SMJkv-j}G&zK5ezd0|mES2+LV zmeoHGlrOrRd2iWohowimL>u2)Jon6aao~%ubH#%568~O^0GeM_RlW9m#FFaU$<();b@JVy`MPQ%;)$# z8A$6i^sgC+S>&EbXYWf3FqRaYBE26Z~G$Z{_meB z+xj#oeC+*yB7>fy}_%dhv2 zNAK90Y2>^*@#=rycNu?s?dL0P))4*}6uj!;j2X-u4W!+(59Ju_KDN=RLb?5x!IH;U zqvKb_ui*Rd6#Vg$!m?9;_P=j_6%sBSaVjyJ&${5o+{33W-<(erZ4b7HIq^_h=3PpG z_+J0yRaYM7UT@cI*-&)(@`Jo}fGg1$xkzsv=+reASPn!EGu zY9%v|N4mmoKC6Y4+6undGAzzN|C>#v`>9s3rxmk*%OvBUo9<8cW0d?AdSZqk|M{<` zk2N!d4;XwhnsapGF5#Z`mZhP0t784_-p9O{zfL{ANV7Ry{`>>qW(k=qQx7g&ZfNnV zUWsjac~Zf@pFDc6&pmj>$YXc3KHqw_(~P4lJ2)<1{r+#psskbh8>h`N)R?eVZO7+U z&Uce^W8}D99=`mr{)3H&g2$_kV)AX%UGGINs$_e0Tk8CQ;}0@Tem;1p z|kWbETi%_;AEPWrbgV7f17Jw<#B9 zm72!C+FNs}`sb4R@1M42t*=Rqo%+6`G}K0Z*J6&N8A;(24>Yp=KE(9VWgmM>`4jc^ zp+Z}Kzj2EsVJ5VNhZIj@0!)wyzTLhY~D({LB~;Z^&vfW``uTp zdDNo+V{)c+?IPJ615>X3CEM1yyfmo4xOjm)j|GLvEI@!t~_ba!y^@!J3m&dAB*JY zz3iX#;ombJyDdx$&NyZyrCpRdCFnNm0K=M24&|d014AF@O*!CW<}hJ$d+M*9Q=>g+ zn;cyvCBUW0!gVdtQ_a?`lq*B{ zt6c`RE4$L{_XfqrmL0pGeOvzaN4sBhEGHaiz2h|Dmd5?_CbQnoPm((OEx#}2!~05} zx?}663!a*B$W4>2{_KZSS~JqNuK5(tGw;7_vw7{Y2Pf|GoRbsC@L0@z?1)|Wzmm&4 zUp?t+Eo{+?ixHk&@4a?^-$i$gPPY9MidOqP5bU+KG7>A_Qa_|g&h?v*i;D<9o*Tj8 z`2CUU(usQ|T6-#uXZI}9`9C{Zcr{mT2WM=9M=8g(iC!z5!Dz9nxbF;~b&VG%Him|C z9+&HBl5l;plf7`i-(-E6sb1b3i(bt9>%QdZ)yw{?1gD#GtURV9Gtca0%Y)*anX!l0 z%=G7MZ}A3{J9eMEe-dTC;d6y`LTKP@w$?4 zH~i0S57~W6VfXsQauU1mH3j?i*r>bh6JC6vGw{U`jiRJ0Mc>>vZuZZ%z901H$co2D zR=hs4BK@es7pZmU4MV&pdRiDpY&7r^%t^PXUz#yFR-f}!cBZ!fw7KuNr+yF?Tlq~| zZJLT?+RCPxH)sE!eCqVFrQQ?uee$Fyr+vB}?{-`NX=?FZ$IK}&laEe+)HQt<%b_Ul zuIbqVKW=exvRQD;OO%VXHFu_-zt^nsCE?Y?4<@T^s=N{-Pj$`ATAXwL7mr+rq)kaY zTmR|)Rc7^myPFTnZ8xq^{9k)lm*?C2;|~h>j(_zJe)@3fiHJ?*8b)uDYj%Xx@9vz@ zFZF`i(=WMi-O6uqo_oIQtrlFl)^TF6kEo?j@cg|Y+pP5Y=H}?e>hu;SUV30ATXoM# zJF8bo>J`%>&z`UEPd$GxwU*`5&(p6~-PoP7m&wgN`;_BGqxz~lHxCBh|9I<8Ng1!-FE(rH*{840kn^}$fAMq5?}rmDXSS=n-O1ncskqqdv+NJX-uX`%C(dNeSFLy< zxo6g%*iSnT+%;UW%<8_JbZSWRCE3}zE8aw!#cXuEBlOndnDqmx4xhz)1#@%VS8jbj zSt$Pa_r?D?qgJoK{M+DF!0`p~52N>a&wIG=*XoHs%sdw@xbRCx?W(%`-b^5%=%=&LDmd5kDRR72hi+8%N<2ZeF z2cvqu>K1Vi-NL%CH0LcfLGd4S534>|(;J?$Ts@<6>y&u~YZqj_Js`bSZ0*CM6^g6p z-sF?J{ycj=@8Koyg(ZGVghw=P)IV-;yW!pWO8buP56;goJ2H7c;FalnUZC2X{_VjB zUbgd(_Md;WfA`1xckPlsym@VT=WN3Fx=pzmOw1ho+!yQFOb`EV+_>---(=mqs(WSa zleF0rJF|M^*8R?WK3V%zE9+{3B~t`A!c?0pjP}(qOBQVV+wyI3zoz8%LYEK|f$yKZ zCNY?I?6|${=+ia2-;?J`*thxLtI&%(ee}nNeUF!Zf0}tued%+J)mCZBwLwcXT|LZ$t18%0@_FJ&@kYdNpX>LhoC*H~_C)Eb^#7J$CBKqdQzdNsf7;f^Nwa?Y?78HdFze@Z5#fX@ zw=8A_2gGj);foRO$uO1M`Qd-C`5Y?^HNDwU#s@9Wlx}0)5a~8~-jAR4erm-99>?p8 z-tSjZXKUPO5XYDAeCvCI$A;*j^_y~D2`MbqI=xKx+{1PrzxT%<^gOnBay`B1Pozx! zx2ZDk(hANUp7{H%|8KE`>%V{LELNFq@G|;|>J3W+r5l_@KHJ{jo!qOr2hl_pSjO_*)5@9rZxOBY?D2lm%ljTd#60g zLN2gPS>*PQ87I;b?&Y4CLd2JChhD8{QV`qa9JciBMUVZn7P)BkG%K$( zn4rhm=3ltqwvNCCXD4@qX_f}-HY7Ftb=FUp439Eg zuq@p2e$iG@=0$2>%C0?@O1E9NHHjg*V6G^0#MIYo>m?Mdb{xDpO?vL%!pWk{ZvOJx zY(3}potyQo_?vsZ;AWnyb5fh$*v?2#c^n!e!})mbO1AkMSNd$2z|C8C?eL!q$Z5j+ceb}~>k(~5X%i#SesRe}Cf?O%m%6u}kbQYGCW1ZX$!j&1sZ#OVmw(um z<92i7-nrRdpKiCWcfYspjAgdTa+%Ecq04mlm96|$dvHtSk#Ae3PFi6%ZMwjF)`}Yn zOq}7V@r@CMYO@slmNp4&xy=4X>&9pE)P>(ytv-Fe=4Wlx-3g0W*ZOyKhuHjG^)yL9 zU}cl~bmf4rtCRa4%{N&Rd$)U1C-aVPE8-NaEx32Fmg@2DGPv^e!l85Zk1TpsWJGqa zUnaSa!JZ+CuY^yLYxm=$E7;>)gAIf>NnF}Dxm<_!EdS2^O)=4aehU}aHB8>|+p|c1 zEKMF7ZvUA3GKZs(wF1Vvl zV4pUp=gzJP%d}r!-#O*ZZi)5kPu?XpZH}mtR{Xss)xL@CvFZ!6pxt&AYL?=Qtxx28 zd^6{;cZsf2&V1PWME38=z1c5!%H8$x+xcdXR8QrM8PJGmS^F7AM+KfW$#F^cNnf^I5xi7FS#yiTd57;0WNUm(j#Bg| zHkE{TbbE* z+r9n?cboc|eO^5CtmbZWKOxo9vb^uEvBL+gh=^O|Hkl9XG-~wDIK?fpH}3FYyfnxB z3hseMg3PnugpcgYO~6t z{BIO&i~Xlj9ev{HE|H&STa@g-$mAEVTymoQa6Nl{edE@ZMmfRn)^TjQy;8C0mcP^& zSHIm}DkmjE-U{sX-Nw_H_-x{0ods@Pnwc{cT%Y{oSmRf%c!QU%z&<3QW2N0Gg?>xz zvaS`&Zcee0TWB!F>YA~4{+1;N>|`^-bk=Nt-I4FgdHeFuYcg)7x)c7L|EwZZ~81th9v5Si&-CgU-x$=ef~AD+1PE zVLE(@|F`99S&Q8Z=2#~4-&i@z(BRL1>{&`;OAL~;^ky0cK2v)CegpfY{j6W| zYj-D3Ub6h$K0jsAg*O%+f6Zz+;l`??&lr49pHBUvlj^eI_=G;z8#48mEFXStk>b3@ z)b(+1&&JKa)TO$Qw|!JTe&M&-KRNy7a%F46*fX}aJ01F`Ccd-ligKOE_53-P>c7W? zX9)M-k(pog`Ou0F7Z#eHFjRf4`YN2=Vv<(3N9w_6A`?%gEwDcEJgII$(KqD}X-w-? zH%vHC(={>V&iexkZ3Fm&g-ia)zOHBenEdq5idUzqIr#i|MLnKt_imL>TA976;a?~&KC|ei9S)f@Y=(b3uAbsTcY&$TmBcTa&5`TSF~;4 z;(y2N-IEi-zY;!tD*hdFy`{j$_}9jFo9)egs@6TMJ}Z!Qf5U0N{^xD&=SzQloHMV* z+)`_&P0jp>x&Bka(#2$VJ1QKNl$_$Q*g*NpyDj#cg&MY9vDOj_3G_dbX#nH-;c|7i!w~t^Tyux;FWt8 z(ki#u>}W+p(uzCN=T?7sY#0-h5z_iB?q%!@E!X+&Ng{uPFQ`_}TV#H5f_%Wi8qRB# zmX~);uCmwrc5c^Kt@_WA;Te{VwymRq+n6JYD>(?uvGkMuw4wTtA`Qlo`<4+1$y$vq6p0}I%a=+XO ztD|X|Z{qW8A0D{1?f!h(r)ghvUF&)8iPiixNnJN>&B@(gH-0H}tYFLczyIl8=JY8W z{|3c8)5`M9w@z7?;8eoE^uFv^@|VY&Qwr)898*_L^_iAi=(+0D{ilNe-u2JfZ~T#4 zLbgBkQFm{Lh-tFrbZHrexAh-3Y?izmx@~KI{3+WNtLL2fQY{!KyQWCs_SSC+Ktd_1?1z5Tv%1?&IXqx&WHY?W`HZ)h>`|2&U+_O)3{Get`U_@lqL zgsyR|s;~1{%JoUB%_KK2cCBRj!Z#^PCd_@Y?qGQNk>J~3PwKc8zyA5{?)#7LXW8{W z+rQmBbOVd+oE-n~CeDy>?Td=O%XK<=-|h`Qsj^|#?u27SGg6Kwhp?oeFSf^^T7@HYsPj z@RZM=Yi`e5dw$;A#W_E~|CU;Mg$cKH0%550aob)RIK<3GN(w{=dutyH%6?Y`wk6&JX9%pUINzkMp<^g*6^ zC+g>WE_4e^oi$UdmwSqM{g1~sB5T;J;*U<4A1%2?qOQ$#SH8f;`;G4%=0$71`LAoo z^YTt-wxE<(6wBSu59cOcjV>xuUv}IeVgJ-;(p?*MQd7&t8hWn0wpC7Ey7JgP{fDM4 zm!jL_)IXFm#UIVSc$wv$g1W^0w+j2WKT>^Rxu@q?P0ieBFGIW65ifhHeP7o9)c5(R zZ}rOPGwZcY={wZ>=G5iQ+|iV`ZjtuRPdwXOPP+UPyRiT3%lKJt=8qQ4wEX;Nq18hk zZq;Z11bnRTm~1dm<2fJxevwA-k^M(YHNOVbZHe%TeUaE`on ztMt^+s|#ngREmDzy8F)3R~I&U>sHS>us^e2R%iDAYlcUjEBMFM7^ojP8|dhg=GVcs zsdD~o&%g8Dg)HB->&?Vx{g+=q@ClnfapApY#ydS_R5 zY3t3-uCIJIYr0z0yRynJaf{uXGLCyJ)N|aOZUW|x;%CI zm$M(gFn*f-RVO9)l+(IJ+7n;JvN1lm{;-!NnKP<)x{#Sr{kf+v9IMtTT)#fy_3D#5 z#nvu*uC-<2gPa6ask5`4wv~kDOfTB7bV^gcM&Jh#;|13pMOJM~l3w}HEa>suAC6A5 z?Ok3Rp8CS{)~2aTwsl|FyyTfc&OgmPGpf$nyGAHX(8`$>sUVWNq5XK&rm4a_X;W7n z_~7yL6Vrlsm8nZ^@}HQKR-Zn5fyt|Dt8;EI<@Rm9yzO)t+wQVw6aKGzvS0h>`^#2^ zC+g>)dq4kN{rrPqbn>+QUw!v%4&gsW(=cb=MdM`cn_Y2pAYau$hbFT$`k=grp;Z~MN z2gb%;jyKK^9I9g1FHJdP^Fm{nhtbJm=4GbqlN`U=3*Nf(_LpSIkK$+d1r*QdaRtnL zv8O9&Mad4Ic&}&cKKa;O_kP^Ty+W+GUbH+;?6I@Hh{K$}=I*VMxAyQQpXP1sNEQ2c z*<8v~XOFl0jZ>?XYs`gKvepDT+1l7QG0b^TpOiAkbgftDow}0zwLB)Fh4Fv0W=$1Y zd`-}EOOC1JPd!bOmH<`f6LIS&&RM4Q@Aa&8ZRS(^V^>byHtCbR<*g4sneBCL>0M?r z3+wBbIhW4w{grOD=kjaz!^ZDT-ep##{k`^^_q@%vTVLi`GOstbF@C-0Ut4;c-j0(W z&aALo&2v8H*7lv(_F7zhILUb4%5`Bk!%u2OUUgk|Ku)ArH0+#-38S^nQ<+u!=_ zm3=GA+1+%#ak*78WUSwTOS!ch zIi57nyYR<1Z?42vwkuj<>3n}&HW_Z2UU9%b-{LK|V`jxBx6B!f6!))tV9Y1d?(ZAn zEZSb`In%cMs!*46Z${Ttg|#i=S9_*+&UY$#JpY)(?sFAeckOx;udS_A|8~}*ZL6h{ zB<&?S*5A_CZ0J}!^{u>S$_Lhezwg?x*+1J~FX5ROxmS>9nqS(7AAvk&`{o{;C-Z*R zd&xa-joH-SFlBf~JPukc7Ere$wMBl?o`Y67wh#6{%`cO_x8ixL-mkyY)%u>_lDD|N z^z%LM(i=A>uHkJtDHNl7BYx||H|w+Nh5zN~UgykfPADm^|qi`_VQHtxo{`M(9+gJbdJGG{3isadI z7IUUpPMX48x}J+k?$xPTB}O;mdpo9xZoMPpc}mLnRHId&N-F2tP5buTbH1!4_j-U3g%?mHhb~+`MteLH&nJuIH+_7oDa_g68Ya0 z4sMF9=jf|>{)?5Z{#+u_N z=jgf2nf5t&->izGS4~U>Wwg#`eq;Qy;pAntcQeo0HWt*|sl59saP?tlrN*4CeFtxP zFS;ImpKHTue%o)%9hYnmed9bCFT1i`mPPj`&rGWEHF)*Zy++M=&BT`{mt5a` z@mtOn)@KV{qO%{VbL(a6&R0&e%bD9`c&K5azWS3(VZl68nI=D)H^Xo5d)Fho?jPH4 z(Ask<_s8mbH`%{Ny2|xS&I$f9TCl<0JHO@q&!y(}!5%*)ZyEcwUKG6ZSbeHl`=muz z?4xVT4|R1|$!1^YdF#{M&Uh;P-PM{~t2J&dmVIZ-bhPTqnfESV47}o1pC%i9Jk_*i zfp5TxMuz7X=f`b-X>N2W`iINl^0&v)bn;sl+nnuf=bH z%X>eay?fq#3eW2cycMN4-Cs{%^7D)Dx8=E|eD7X*zw5s~aJ{9Y!cdRJ=eX~9z^Wcu7|L$7d_?=*|^5B9~p2zGe zvOgZ3wme_mU;a~Iv&p?!pUQO~?*97JKIvNcdz0(uY>E=Ca)dH0;)6aOz)+Hm*^rGJu>?Ood$>g2tc`>oEQ zCs#ezOk(P_k$I7IFxN&P;MEm;QC|$1lwd z6TUZ`RBryD@Jqh=fO7rU#n)TK+|IMkTqjkrWbZpJkB^U~81BAWe{=I`yIWOkZ*wot z<13N4bG_hg)9uc}w=J_TR{TC?7WVVU+Kwaf%l&n)6y&eud$0R<>Y2TFIj2Sb^Z%cC zMex(*(3A7#nH0EPS*v~V^4|Ubg6gV5HZ5OYRW<$3ml-Mk^4E)&{rM8xIZrR(|Hs|; zPx$xye|z^Uf9vG=`=qx;&Q7u2W3FVx*PpfJq`*V|7q=cy6p>}_>znWQKXluPs0ve= z?vsD71wB|K61&0W!6K1a?dC00HO{Z!Gnw!G(dk#`F&c8c6^(vT@Ile{`laat^BL6{ zm8Vnl85IC$?$hQ4Mu5cJ2}38`}D_fw%fJUzb@4U#=q9rPpW_UEo?vc5|%x||N!L3qT-YSU|@3o3Yj$MC$H&fu#=|kIV zw0z=Emn$ltl%4RT>31*p%QJf|CG2IM2;Moe>FM3Z>B-(t8dYbsmBmSPS*<9r@Y+yr zv*?@SlDMwCefYo*$5s@pGr`YL7)Tg}bBOVigjcYlZqdi8jR zX5EZsD{hOgS4d7{?Pw|FjH~xww^m)?U%aQE^PIl&OkJ;iYZr&f z7BrmLv@|e9a)NWq3Y%Sj1v9&}_Zk#yZ8{=$vi^f^k@mwEE%&6QmL8g;`9ekf=aMg1 z*!Df2nY`2H(UFQPogZfiCodL$T&R9b*ssUeuSb2ZgukWXyt1U6vZS2CB%8-aDz0^Y zoFkmPn*CT5`!TaHx1h_deEHi}am^Fvn^|PUH@C8{=Dyp@wTo4?WmKA0cs-~uPq_1+ zk58j3^1z{b#g-}#StqlkX9u5&*?C_MJv`@T)2|sv4|;a$s7wqlymVsH{G*-*H#roq zernh^B}z2?$-55AKfFmNOMWZ32`a8PHs8|YyKMXFGI77jA{+H?3UFrrsek(-HkxyO zNxdmY=_I4IKjSVPZ2j=js?KoTEoZ9}JW1D!FYgJNkl-*)`a^y8H;+Y8+vf?kXe`+3 z)fn=uxFS0B=9{}BeD}YqHP5$rV9)a*|M`st8~ql$%r#hfxu^s)|+=9Z2tLIZEI@An(MKP;zF0iReoKe z(t9mAte)-phx@XACnNvAd{u86cO{!;{dJy;@i{qD&;D`Z?w9(@l3gDDt=eUI{^AXf zr}LC`94zX)|E@T@{;uvTS2oGw)W^wnztZ>Ik8*!@;Nt$f93QTz|E~$U_RGI?zJN&$S-*0Wusd{ ztG{o^mekp+Eu8UorR1-amP&&o2|pHdI)uEbbdC>Q|Ly(MXNS+GW&QZZ=iz?0@&)@f zuD=JWVveM#US|LD_=E8}{u^h%GW@lCvOoQJ!cY5^atVL)@AbWA^l6_cSbF;R*GuZM z-mjF?H>n$*e-is3N6k91$-!~zFRr-{pD8%hp9`*#oc>EMwP~VJL z_HQtCd|Tz~_{Vat+g*p_sz-D}Gn_xxvP|3AYrSKkZb8bTUPEcMtOd7Yj4n)_|E#ER z;-jfi)-xvGHsiTtS?*$dbke-6ue{a2ne0AY(pp-(eBpF<|Jy#hud^?X+aY!+anfq_ z#LZ8hgx;$!D!BE$D%`ilWZf*$-FiB`XKp^xnK^%Jub=6q85m3sFt7Q1HJcCKvXN-8Rw zo%8qdV)a+4uidP#?vMGTetwqC$*iKaD>`S+XA%5)QA)5&a<>l_O`mZLp1bQZaT%{)QQSC%UeSFiA8V#eq3yDwLFaEo-TD2>5 ztIN$@+V(tGgsQrV<}T1MH}HFPct-2VcEj#T{HZs-UVcCS>r$ECcCWb^IolW~etYN` zB;VHg;z`IiPZ8yRC5tYUxtun&*dd*jc+Bkf<_yy{ThwQH*-l)vlkwU^b(Ye4x8rk8 z|1C_`iEx`dUr&F3!pqJn^MWlE?uG|u25e9LcQ1OLyjsA^Cnhb1J$)H7jruR&UU(w% zn9xD>yXTiX|4(0UWABrATj#aygAZ4mZG4UwP5Yv7mg8Z#di1_}v7}jo-y~$!4OKPL z*n+w0;=gcYcv}2xvAwGIkCSQB+8Kd|Ue>o4SzTQ;C$}(D&HX?&`!$`KTNGwh{}LF8wvtv^>0MSsas5Y+42jw{U;bs{r|n zSu%1f*~HRZ5>sD&K9%uYMRN*ov3qxg;!W4Zp_^9EIutB!Tc@agU2@~9V*z_w>jQ3Y zzxX-u)BnX80{t^NHVShxcD_^j{*I&Pva97WbIZ=Ss~Lxil(;Wu{E1k&!jS!&R>^_u zlNXtM^jv(dnnyBM36zdaXs|KXn^eJjJbqHAAL(|zL$za3wF zZu_2RYhJ$QaJ{7KQf995W}h z@7$f_QNJ(7-)|q!#LJp-o8~U>#2=;ed8VX1Uis&2t5xjpJ83s#JiIgS{=63%W3gI1_0+c0?O#+cZ+<)D<(e)h zht>WE%`Hll*X3C6o3QkRw0+k>PF9(|v=8rU_3l*+4r?Q zf9<)43mK!*%G>Ui%I{okeAoU*!^tZXUIoT^zrB36EoGzLw5WGpGvC#i&HGlVn?2{X zJCkD5_N!GlyY$1{jvTHpTs$qZ#wPf(N@9+Ia*|8It+sIf6A>&qR#(2BJCd((WKRAr zuXE<57h?`hJgZRhooCOyIs6wRsy=gW-^P;f@_q7a?-M(FV&=Ecck1Q{-_EmnM_uF9 zm1*mk%^8Yo8O7%}B_w~ezwP`ak4e3F$IOHN-_t+*zF$xcLl?g1 z#TE7rS`St@Yi{`QYGvm~@m;5MmCmkZ66X!) zUR+alyl>CuqI=2m_VH6ws%uO)oYn=`(jlEtl9IU~4LL;rOh%8}_-q)jst1$8}Zd)D>B7vHxE@6`0i09d!4u z%BtOV4^LiSIQwK+o$bPX`3L+L-K#Jyb>7z)@bJ1oRy9K%&sXL2_&t(e)t~1+vAVo+ z&BN?_jAoWorrV`ErtS}z@612j@7ccFtJnNlr#bD%Ch6+>j3xb3Zm(*4@xFhGZ+!SX zzbF4c{r~k&`?0M-i1GeXi-#<(G4=mXe0cP7;*xXQ<}fwK8MuYLSGcuUzmn&9z*&jp zxf10!v(sM(X6G-zzpC?`mA{h2G#Tc$jBg)IE?f-$pq!Z^An<-)_{;T6@;G*0;BCtj zHd$_R%;#C))ypYZ*2HPz?PB3`ti<`;2`lfKr z&QJYtqK419_{4kplkc}b_#XY?x9*R>Vt@Vxg3-n3)XCD51t;7oZ*SOH;+rzdLsO)A z)qjVD{|>L(e{hb~+tbar-_$SO$n*MG$9>7bN8gQarYx2I=5{%|;7j=CUuowRf{k1| zE*c8X-hRPh`<0CMVk`m|1Zxi0Ma`M;!1(yVN|(^rTUOUAu0DA_c5N`%*6jQL{Fg2= zB|LpLmXRZm6HG z7rL$Z;Jy>H_sLI_&s@+qF-gTkcb$t;@{*jG`WwfzPai9`cxlWAIW2O>?1R-mzE=PI zDp_m!JE!3R2h=G6@CU-m7We&ub?wa|ZT!42nbNW0vbSvxiU)agAo_CCdnWG@S^ z3To_i@>FdO`@Az*Vf*BmvvHbj3nB`5T^JKL-g=#Wu@!R)wd^f8$bNy zx#r0{-cSxj|LI38Bh?w8oax<_0fDEE=ph6g;C#Il!L zJT6dftT$HE>F&Aa82>_kgac@cQbJPsYUVp^)~I(->q9ekMr-h7`eUQ zO&{)?X~k9c;m>0prg+(Jy1~^F8V^sO`_U47Xw^bq;a7PqjdSeSw0H5^i(V-|_^Fb^ z_HM;<2}`!@2d;}}YaP~GVHEtZ=F_vxPpkowH2#!Gg?k_sm-_=SybXx@)8x9ck7+ZMo#h2&t1ZdQyCDHCXz-TT(3lyY<}P zrF-T(S626T+%iACBx{yqb>qF}xD`sz<6r7etvK$I&U+|t;;D+JXCEi|I3!~RW%m}e&`{`E{-4V33=gS+HP1#!o z^Vi-Fn!WYO0jd8NKWy*Q*thd;`x<+bu>XoDXRp$T+sS`$w=Pf4B2y>t&@a}R+ZzAu zd-BrBn3HE$k!noHmE8()n^%O=PluWL|jW6utc8S&x3k zU0Yv<@n|HsZSI+Q&M3|D^o+MU$$gu9cAhhOW_fzXd!5I2+HSd=&Z%-UYBwFR(OEIm z!MjTO|Bm)!N)sn=ZeFmhbk%BBo3AUb=DykBAE;))EdA$noaFq}-~SwBqT{UX^^@+) zzu#ET{zPu}N5$8MZ2q=I*YYa({Lj8NpH#e;BgfF|6n)I&Ifvv9HeY>vAPs>!lQ1Sb+;KErk|^F z4E=dk>gCkhC%gY2k6jucvwyydu-MGsQ{G0E80l&D`nZX7G0#e!F1(phwSJyKndijt z-c@f*C!La**J|XJvam;H3#+`#yEp2sAx?MLeB6azY_E~Ox-#$1%IFAnD?Iz0^-^y;^u8E$VyC*~2vGubxQ+wc6 zU;S14G>z6c-rO}Q_hWmu`rd~h_I~ShTff}ZZ|21G8};jFR8D+&F4MR^d&lMSI}h8e zxBuU8p}C5q=aI>>6-xcA;WsCk-EE9d_;~;Qf$W>fVpqG}=J1_w@c8GqO{gmU=j5b! z&Esk^S`lTNowkv;OaV`n;xCu+nPc-VMiZXRXf9 zF2Ct7K0W^T_VNe0Qd^g-3-!yoQ~Io+PIZeA=Na|Q?usgcv6~A_{4W`8(%9AarRnz9 zOMCcs`E3glFRTcd^*eB1>fN(X_=Jthr+k~}q?MEQ+ava|m5lMZshitNY*xJV64P#8 zr@2qNsN(w(w*2}@yO-6N{NWI-F=y74?32A&Bv!GIvF1&K{UogkzM(Oa-8S)14Vm)RMtzp2c9^OPl8pYr82uGe$i%Zu55u-rRp=3DKLXUy|ftb12- z^Yd9HMv>5e`u*#Yzb8NQh}0@%F}W=Hkb~<*yyXg&dZ+#7|Jh?3>+fBzp62lUj^96_ zJoPU+FK@h`wenE1P3YpH$j854K9f2Yd;9q8!w+_}ZQV0r-BbU_SC0>D+-yK||qS{g1T9dm|VCK8MFAg;FE;uPSFNF7m zwY6}CVPpBEv&&~}DzFXIJ>oLwLj8oOvSkc?CT6q4`p>N4Tim^5d+V3H&&rWsuC8I8 z5cxptkBQ<9#yrIjkxcVdul!Q`^xv(-x{j0g@xRbF-Z$UQowHML!ZpRCK9@2@^wm~- zOnq~8sp(0zX>)y8FFs?8*k-rFH_L`U-{G=H|M?@)mHit%7O-x7AzOJ`nV{kR{sp1St3(3Xru8Z7+Ha5R0&mRHIO10R>CH;T zyPTH(Q&?Mcx7J0sop)NS7hq)^v626u)h2$YdLPBo#t-`#_4(YF$Jg#XxKFR6a{l|J zWj^n@P9;TFABa4>YJ&Odb(>dCNDs@H{ZgYq^U3!h*NUjrkko}e5%oW`pP1ffQk?ib z#aO6a@^$6EqxB|{qD=D50doSTr)4JdZQk%eq~P{eA*S6*5eZcj15b&4b=tRLwoK+% z&z|5jzr+2Kd|p2i^O?d{@$<%;RkKz_{LTx%bol3ueU>(|U*^s#_HaMHf^V%NYi07Q z$FDB@{hEC1Sw-a`*DVekJ*S7ZY+dmy{QuD^rL^YN-%J96j(blDsn_+|?Wgk8M`6pW zyFUs|TK~-R`8VI^-+Z-Oe&Lbv$=ns?%px73ff_ddGJd8%t^aj-{a!Q9)4S#$-g>Y2 z>v7+Lf-3uBgPlbJe81<(wUpjD^!rDGbL2|fQ$Joy76-g;`*COKS+BQw8?PLHEbBSr zzsioc`F}U*Xga?SZQobAOL9d?{q0?QR3oBmuBSRnB;1snJ=<)qCCgO%kM?()Z%!+% ziZ{1>J@M&2)1=#sGyX9**Gn}%7qFP4r)c97TOf&*!EH%Dak{2-x#0es6yu8^9egkMj=KF4t=+UVhz<*Nl|v z+d`hLZ;()qxnRGiRp-V2ofWPw(iyia-pux>cx6<|F5NlB(Q0~<)>*M;>EOCG!AoBh zzS1~cz0NT0JO8A2%U9T*3EE?G#B;}9hKK5hzSOg}#2?Z)=YWJVo#MU zFUG>pi9*aX>ifke=(Eof+ORoV&E=Zfr%le81@`R4Hpd%J-njK4r|*93=J1@?S2iD% zS`yt}q;Np=wD=>XsEBQTOSqF(7{59;ePdwCq-#%qNh@x;I&=B&;_p)RwhA^O^|psM zt(LOuJo+xpuH%dZvyH*LPMsMym2_sC{L*i^6`Fg?$=ghDT5)#$?P5hYuRA5&iaPlf zYeJ^XXxI>Pa)#m$SrY;K^V26DyLHs+`mv6e)iKY4j239dUar6V@pOhwo$o7q(dTx5 z>>{uI7kiYFJNe_QMwgaF@5=%cVy{%P*|(Uk;mOH4|0ws#-RKiPZ5}qvcfQTJdsDO2 zbo)j*_5bq;8T08`G7HpjPJ7;+gG+cZ871&VbS6H&Uh7HUy?A@ zTrw{4;ERc3-;b|nbvzJ!^5l_(zaP~(SSPZ+eeap7bM&U?Mocb{AL`DZSZ9^M@umafl2bC+D#yveh;@J=6_o2~p$PxnIqUG1~nH&lu& z`P`HCWJ!Ics`cVmm3FHpnAABG3$@+jb>_eP_4~^Db9=)1cF$gF_-yaL@;!gv&3zg! z7oR3MdDBmuo?Z8g&h3yhU!3n!AAdHeGE2k2G_K>MjL5Mo3A-k76<^5w@zRg~-)p5b zzFB8l^k*Ndn=iCxyTOHxTLPcxDVqE5X4>Ak?Z-ipGj+d|r=H0|_ks@{PfE7qD`ko+ z?bd$q*Zr8_t1p$J^6r}FbdI5cxA03uYVh?MVw|=W~ z!}-JHKU~QMSygk-%=_2z^0sMHo5^!dwfZN%GbHrh{4A|-S8E}@%?78*c-3CB+5hM(v%9r%^!Xka-O*}^J zKF{loRyi-4H z=EwSZ1)Oc2aB;$k`m*#J<<~DwT`?g$Qzz=^kCk&zwuVezs;{nTxOsXkXODcY@ekEZ zw&p)xYKNV^zmN_58QT8+SP1L+qn$OSF}98I{e9Z(<#kJ@{NRXY=`P9=1?)huaM5UU}pP191a!@q*j>OI>XMD7n1dL~V=bW9N@F>i`NZll+Inp(K znwAPjWTD5xvWx={X5Kg&8^8BhVZ!?i)wi;)S5nF)?lt{-{5&9jlm8dh?0;ud-tUmy ze^N^N#h&U#NsnuM=F4TgZ48!rRR840yQa0GJGZ`Dkvn(2zW3+QdG&=ijcqOln3r3B z``^;Ze(0x^rSOIy+jf3Xn$MlKSMi1B^$(FoGrzn^ObHWF7VA>m{MXCW|k4-MPw> z>%XVexK5I+T-;cEt*q}&Pr^3idCkqnY0Ej}B##SQbbk5t@Y0RY@GmJMSDw|&I%}?Y zf57?GpS~>|8_!8!d!N5=+O_v9d@sNKQCgz?&o=gOzVZjLOY5RPWM?SMT*!QKZ{w5K z_nfYMo_%7)tL}J))6ym~{~Q1O*ZM!pfInnzt>Rnn`jB2LzgHOqM+l96E9`FJL&u2>dw#gUn*}ZiDYgvPnmrF>cf(b2Rkw&&wNkl<*c3{ z^yWc`&dr&2k~1n7txsikemyr~gT%Ew!@S;(+@gItzJ6KBe|)FjS^9+eexh}Yk!OMKMds(Q#CQ~lKw-Vxu zEiS$jk)HZe>i_p8o2=*BoX$^Aa{g$Vsqso<0h=LLN2@_}`1eT_2A;>~eSO(dTv3!L z`o3_PT!Qw;?dLydGCW=~(ZnyH_igfek6_pB{f-Ns)b1#C3}$*?|Lk|9tV-%)&SmSg z%*C$FK4`;{+Iql5;>AW~+ZTq?@xs1}xi`f3-xFGKa6{sh1G}Z#yyQCl@~-c4{<(Iw zdd1m2;b)Ee&rLkM#PX2NZD%b$&(AL#Jfa!Cult|>?pE@e73Y4;+&%sDrUnJAh}909 zW?H$uUmHd5sEg*#&XVf(lvk-YmHN$ogV%NU4vpP=)@0`9uJz54a=0m)eYI=prwE4t z;}!PEL4dmh@$>=gH{f7r2Bbg=>q)NNCow9{OCL?;|vKaqObyef#hH`c;0u zeYKs?lD7(q@smw{I{jOkdeJ6Y)pRRgm?%vKfbiF0(USXb2){&U;p{Qc?C z3AayfpMEo#^StQR5+}{iI*%l6&vR*tzs}>G_>y;P=atz}nr|mB-4dL-bD3*x_N4A# zeOdeD->aZrF?rwox`meA1$T0V`RdCTHE&$~Jng&bS-1cDSveZ^UgnCm z)63Z9v|aT^y{shP#O9t;^E~IUGBxZzyl9@6&)(f8joPQ#&Un6DGf{AhVp05rTOW4D zXc=BUV9OrgUiDX2P5)`>lDPN_AC?{Xxa@%Zeudu#FE>6Yd9;Fa#d&0}Pd#XwLs-PK1Kb%ny@8CJ)`yMyA}kvnp= zuGnFg_Yd#=e#3chsrsttd%rL3saqMqeJSHYE=v_xz=_l6YM5;652!w}S$X=$!nBts zGQ8xj=uYW;_QcWOoH?*3St76gQ4e>i_(X#pLVld`&6$}W+$$Q2G^TlS*>dj=GFUMy zqgdk$i%I=-XTF9N+8a_|x>X%xn<>}eyhdGp=}qnRdk@>xw^#n-`~1ZE%H0~l@Ea{` zXL^KUn4K2z8JI}51QzV`5&!UBX{y+dCbbW2PnCR<&K`RCWA&F+&Ud^tzD;;7Sg(0n zDO3G|;xffUy;naS)82eYAo$4slTK=m_m6$4dHe3c%4zXuasz7L78~_xe@lL|t)we* zu8FD?|GQ^e%kHg>&G;Dg?90VV{1G`btSU_n^1~BOeLdLq{{*+L$#zk5T^+I6`8Un> zCq6%CpCYC(yWxqW149qb=B^7zyK812zJFDuUXNj`+)+cTGxH)o7QXzydXHP)H{TWO z3_rf(yL#c)<<`V2bLPDZ)hRVU@pJB)r+?aV4@%q1)S0^^r+#V9VKn=FJKj(y;Id-+ zt(u6lQk*)MpA_twe{+uM?ximuZhUW+GyB%EcGas-1W(UeSR8g);oqubi&G_MI-9h~ zao@e(a#10wK4XUTon_&VJ7 z`QNS1ZG}yOJ%9w?=?SW@t4$n^|2wL zA9BU3+w8xF)$N%o&&__iYM-r~G-q+g>m#4*ryHcVeckm#*vm2U;@-6nr~UtTSd(FW zq{A+S$|}8j>E+JadJnC(eJnY1GMne$Qyt@)JxZ_lJvcdyeb;)=X}hEeS!Z)TpxF5J!sW%G?iV| zcq8+IKTGthWohZnf=ZuGMm6s}aPy**@WZQ#o}2jP=Op}E_i!rzE1hR&_ax;1ZTB^w zQJ1@W)!W@|x6A&V__h1ZgqiP-nCjm+es=TWpcm&&4&JvdR%O4&`qD!-)WquH-umYU zKU6yx@4a+LHRtQL4(F#q683vDH=UdGIN4(XTW{Ltjd3R}Cv(&76zNF%q z=f-=U8xMMJyy&^{r02!QOK!YbawBP}1Y4{6x?-E`r7KuDHU{!Aa(P4cINxZ)E-Sj=G;X z#j(uB_&3kvl^WBkg9T1)`=(YiCF1!iZO_2??l%Hwj$DpE`{lCv-Q|AzvkK2mQGVhZ zWpF-t>V?zUs_NT56-q5Ee8izF&b8O((ngQHds4$6bDzrK^G)2Pzp1J^HzrWuoEMv-OUyw|8u9El-Zy{QGMA{&)S2ZtrH)*Pe^i{KL&tKCRiD ztK6;Z=z~*T=kA^s2<2M96|VL7$T7j+n-zj@rHf=Zi+@-+xx4hYbL`P;uAd)WHk>5C zfAWLlfjxfazm4pUoqyc_F>g!9o0}Up?C90JUtsi9ylS1E@Vd1A=={&Vk$b|PS-&1~pP za*1{elYjX2%&{q5##{$g>co$vag-j3tl06!+q&&ymdbN~^?td6j~X@4`R7daGFGbm z`(~zHjrSbig0x_Pr#*`*&ATEJ4o*vrzL_sp`^9m}W^VbIh1*Z9dfn*gRvT?BR<9ZL zvCVjWaN?p*!Kzc(EoMK^D%>biw>B&-6L&c8&|Q+6X{9Z5 zN9%5o^1|SYXWy9oxTY>@+I`ndgIx~A$T+;1m7P6cq zoSlBoWaG5y?u#xch%H~y)Yfs{RXOvR+V+{tif!G(*k`@au~Reu9Jus;46Df{=X;M{ zf4}r6T=t{z2fpQLUH%`G`1+PP?vdy!JfL@~wl3$%h7*nke&w^)*36&pzhm*$19Qcd z7%G!=C)OXzcl@#BbQEi?WcR=I&*o>fo<8pvxJuRk?aTcAlkzGz@Bd<`-MV9be6;2# zhl}3DKRq|r@O!FA+sJAZUklVRyw#TWBj@BLljOv(lO3u#&w~~D`2<&oFh3~>RnX*q zQS*7dwakLzh^9V1W1qu3cSM{FjFjf@o5i3yuM;}}={+;&$JQBBz@5%0D=;I1=rT-Q|jp|ax{cBgW_UCK;N;V6;);{d+hV>iXI@<4>IdOT6?cWJ+KAPsuc=NZ__TaibYs9|4t-NzzySmv{ zp`SmQf1@^g)??d4%k&S_e%@d3zxV%xf9Y$JcWYt@k!rO*&F_dfnq!9~XR?R)042RHE0n zpGV~8=WpUY82{s&`ag;Mjb|P0f9Dpo*dG7CZ{lhv+k=b~mmDkm@V;E*IqQ^noOk|C&@lWY?H@qM7dB^Sgo{}>%znu(^uGae7A?9*9 ze(H=q9p~vm=Sz%AH1Do{EPm-^*cOkg^^FFlrK+czzOUUN_>nPdRb_T>Cr`-+(}RLP zzp?A@y#2rCn2_D)UoTQ4rp!pblHSny>CKw3ofBqCO5FK&b>fUCvyIe$y|#Y#$7OQ8 z{m-!Hd`U*#MbYY(XOef$;|X5oe&^n){}(e7ykGA*{J!GR()L4tv~p~XJ+p0-KOOq! zRb^{l-??u!!w&X$UGt9cGG0|n&RSRZ{r#T5lP+dUeM~96nmTv7Ysn*~S?Z@krnfV$ z-!J*NRO`XNl;4uGyhMVhKW@EW+q_U{=cl*RwM*yS+`QVVQ02s(gN(Xo_I0^(-rRQR zM~K=rr*-L}M^Aj2ZCR_$oE|t&qTkK$jK0=m(VZuoB-5Jf<7#qtT${hZ!%9N#YKrr= z^0Slnt#Dsi-K=szwRrW>>A8lii>z zn;$Q=wve)lTleEg=#4qGj@<9cZTrvOJnzhYdW-9gGqtzm{?z?S-*EExm#5bs{CmJx zvM1)(qLK?|j@162v_tvXzwZk&cgt#D^ALNWmj1%0XP)vi6^*X0mVFz3{y8mO&)EHA zAOH8+a))ZqZ!g%tlkXsad{UUle5XWJ$#h&yBY{FFsxJqAbYf(UOSdr4n2s2b|dQSAIBH zdA!QlrM1_xt;KO(i=ms=M?>NFi#4D4%(Y4OF9?}?A*<^VN2rcK@LL%R{v2Zs4l^F( zdh^Cp6WUWX0&KV}N=$SDczAYZmK;40c$aIp_rBofr9S;_v86(xj(GuI!4aSC3h9=6 ze?Rm}E{tD#UvviY+SH~?E-)%a+ba%ba;x$RH1T|ek-)KZ{yB%^=ur)5} zg`-kil~2vP%$Pz!bMslp?@aUlGCh6EtGGLQ!WVL6ey6h^PYQXrqA_`K-DUOSzkX52 zyVaI?A9}7i|GjHJ%aa5{>+=z|hGy35YyL<5)9;oMe!Mimp!e@d`G0GBe<&tzD&)>J ziTK0*KkoFRdY2bmYosPAE_ueMYB=HILzPXlwwj7Rm;3xE#^K4PNxhjNa?3v6PMvr1 zr|dLCp}f=nLV4b6mzX}=NxgJk&SHyc z3p|Q0sx4{wR*;_c_MwDHTXn%d#kGbpy=~=MCqCK!`?frax%PPdYje5%eD9nrH)^$3 zzRJ_;T)26`wzK(SOPDu|`&E@8hMB`1;sZGL0?$Qp; zR?MQZ)w{Ay|J;)^x7t`6C?UMI`I^NO?V?@zr#)1cl&rgWYObeQw91l|pEm}~Dlp|z zb>%)X$G7CcXMKl*O#h7cWYov9-CX&>>rB+mmz-;JL<{cq9PZ_{&f60!&HQyqMg5N@ zZ~u7e_szAx+mh>GU%c_grgy(WH>%})Yf@UX#b))YTi+x$RZ7}Dy!(gKezmQl_Z@Q$ z=cuWvFCKSf>2k-E`SPnTTOqRAAyeMCw+e;r_k~#B=jq)SEEhk|BJ95Yv*Ws*$$zU0|IWPiG4{_7skbwdZPGJjMDKi< V>pDN?_go(r@t@D@+b%TR0|44%pvV9K delta 119632 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 u.type.lightRadius/2f); - state.wave = wave; state.rules.waves = waves; state.rules.waveSpacing = waveSpacing; @@ -236,6 +227,15 @@ public class SectorInfo{ damage = 0; hasSpawns = spawner.countSpawns() > 0; + lightCoverage = 0f; + for(var build : state.rules.defaultTeam.data().buildings){ + if(build.block.emitLight){ + lightCoverage += build.block.lightRadius * build.efficiency; + } + } + + lightCoverage += state.rules.defaultTeam.data().units.sumf(u -> u.type.lightRadius/2f); + //cap production at raw production. production.each((item, stat) -> { stat.mean = Math.min(stat.mean, rawProduction.get(item, ExportStat::new).mean); @@ -253,6 +253,10 @@ public class SectorInfo{ if(sector.planet.allowWaveSimulation){ SectorDamage.writeParameters(sector); } + + if(sector.planet.generator != null){ + sector.planet.generator.beforeSaveWrite(sector); + } } /** Update averages of various stats, updates some special sector logic. diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 7b998257bc..59783db265 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -37,6 +37,10 @@ public abstract class PlanetGenerator extends BasicGenerator implements HexMeshe } + public void beforeSaveWrite(Sector sector){ + + } + public void getLockedText(Sector hovered, StringBuilder out){ out.append("[gray]").append(Iconc.lock).append(" ").append(Core.bundle.get("locked")); } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index a8b5c3bae9..fb2467c2ee 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -20,13 +20,14 @@ import mindustry.world.blocks.environment.*; import static mindustry.Vars.*; public class SerpuloPlanetGenerator extends PlanetGenerator{ - //alternate, less direct generation (wip) - public static boolean alt = false; + //alternate, less direct generation + public static boolean indirectPaths = false; + //random water patches + public static boolean genLakes = false; BaseGenerator basegen = new BaseGenerator(); float scl = 5f; float waterOffset = 0.05f; - boolean genLakes = false; Block[][] arr = { @@ -74,6 +75,11 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ sector.planet.reloadMeshAsync(); } + @Override + public void beforeSaveWrite(Sector sector){ + sector.planet.reloadMeshAsync(); + } + @Override public boolean allowLanding(Sector sector){ return sector.planet.allowLaunchToNumbered && (sector.hasBase() || sector.near().contains(s -> s.hasBase() && @@ -234,7 +240,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ Vec2 midpoint = Tmp.v1.set(to.x, to.y).add(x, y).scl(0.5f); rand.nextFloat(); - if(alt){ + if(indirectPaths){ midpoint.add(Tmp.v2.set(1, 0f).setAngle(Angles.angle(to.x, to.y, x, y) + 90f * (rand.chance(0.5) ? 1f : -1f)).scl(Tmp.v1.dst(x, y) * 2f)); }else{ //add randomized offset to avoid straight lines From 39b5d51409081f5a6f37d99fbf6187bab2201a57 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 30 May 2025 23:43:14 -0400 Subject: [PATCH 20/84] Fixed #10863 --- core/src/mindustry/ui/dialogs/KeybindDialog.java | 1 - gradle.properties | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/KeybindDialog.java b/core/src/mindustry/ui/dialogs/KeybindDialog.java index 2ef05ddf87..e56d2f43cc 100644 --- a/core/src/mindustry/ui/dialogs/KeybindDialog.java +++ b/core/src/mindustry/ui/dialogs/KeybindDialog.java @@ -152,7 +152,6 @@ public class KeybindDialog extends Dialog{ rebindKey = name; rebindDialog.titleTable.getCells().first().pad(4); - rebindDialog.addListener(new InputListener(){ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){ diff --git a/gradle.properties b/gradle.properties index a4ecf43c0b..36ca0f7b27 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=76fa5c1d2c +archash=b3aa9759d9 From 5483c6b290c908f7825f255917575213ceb47e59 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 31 May 2025 01:16:53 -0400 Subject: [PATCH 21/84] Fixed #10864 --- core/src/mindustry/graphics/g3d/HexMesh.java | 2 +- .../src/mindustry/graphics/g3d/HexMesher.java | 4 ++ .../mindustry/graphics/g3d/MeshBuilder.java | 56 +++++++++---------- .../maps/planet/SerpuloPlanetGenerator.java | 5 ++ 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/HexMesh.java b/core/src/mindustry/graphics/g3d/HexMesh.java index 5436cdc79d..02a35973f0 100644 --- a/core/src/mindustry/graphics/g3d/HexMesh.java +++ b/core/src/mindustry/graphics/g3d/HexMesh.java @@ -21,7 +21,7 @@ public class HexMesh extends PlanetMesh{ @Override public void preRender(PlanetParams params){ Shaders.planet.planet = planet; - Shaders.planet.emissive = planet.generator != null; + Shaders.planet.emissive = planet.generator != null && planet.generator.isEmissive(); Shaders.planet.lightDir.set(planet.solarSystem.position).sub(planet.position).rotate(Vec3.Y, planet.getRotation()).nor(); Shaders.planet.ambientColor.set(planet.solarSystem.lightColor); } diff --git a/core/src/mindustry/graphics/g3d/HexMesher.java b/core/src/mindustry/graphics/g3d/HexMesher.java index a6192f41df..22a98184ea 100644 --- a/core/src/mindustry/graphics/g3d/HexMesher.java +++ b/core/src/mindustry/graphics/g3d/HexMesher.java @@ -18,6 +18,10 @@ public interface HexMesher{ } + default boolean isEmissive(){ + return false; + } + default boolean skip(Vec3 position){ return false; } diff --git a/core/src/mindustry/graphics/g3d/MeshBuilder.java b/core/src/mindustry/graphics/g3d/MeshBuilder.java index 9b497bc04e..cb9be7b418 100644 --- a/core/src/mindustry/graphics/g3d/MeshBuilder.java +++ b/core/src/mindustry/graphics/g3d/MeshBuilder.java @@ -89,9 +89,11 @@ public class MeshBuilder{ generator.seed = generator.baseSeed; } + boolean emit = mesher.isEmissive(); + if(grid.tiles.length * 6 >= 65535) throw new RuntimeException("Due to index size limits, only meshes with a maximum of 65535 vertices are supported. If you want more than that, make your own non-indexed mesh builder."); - Mesh mesh = begin(grid.tiles.length * 6, grid.tiles.length * 4 * 3, true, true); + Mesh mesh = begin(grid.tiles.length * 6, grid.tiles.length * 4 * 3, true, emit); float[] heights; @@ -103,13 +105,12 @@ public class MeshBuilder{ //cache heights in an array to prevent redundant calls to getHeight for(int i = 0; i < grid.corners.length; i++){ - heights[i] = mesher.getHeight(grid.corners[i].v); + heights[i] = (1f + mesher.getHeight(grid.corners[i].v) * intensity) * radius; } - int position = 0; short[] shorts = new short[12]; - float[] floats = new float[3 + (gl30 ? 1 : 3) + 1 + 1]; + float[] floats = new float[3 + (gl30 ? 1 : 3) + 1 + (emit ? 1 : 0)]; Vec3 nor = new Vec3(); Color tmpCol = new Color(); @@ -122,9 +123,9 @@ public class MeshBuilder{ Corner[] c = tile.corners; float - h1 = (1f + heights[c[0].id] * intensity) * radius, - h2 = (1f + heights[c[2].id] * intensity) * radius, - h3 = (1f + heights[c[4].id] * intensity) * radius; + h1 = heights[c[0].id], + h2 = heights[c[2].id], + h3 = heights[c[4].id]; Vec3 v1 = c[0].v, @@ -140,12 +141,17 @@ public class MeshBuilder{ tmpCol.set(1f, 1f, 1f, 1f); mesher.getColor(tile.v, tmpCol); float color = tmpCol.toFloatBits(); - tmpCol.set(0f, 0f, 0f, 0f); - mesher.getEmissiveColor(tile.v, tmpCol); - float emissive = tmpCol.toFloatBits(); + + float emissive = 0f; + + if(emit){ + tmpCol.set(0f, 0f, 0f, 0f); + mesher.getEmissiveColor(tile.v, tmpCol); + emissive = tmpCol.toFloatBits(); + } for(var corner : c){ - float height = (1f + heights[corner.id] * intensity) * radius; + float height = heights[corner.id]; vert(mesh, floats, corner.v.x * height, corner.v.y * height, corner.v.z * height, nor, color, emissive); } @@ -213,21 +219,8 @@ public class MeshBuilder{ return mesh; } - private static void normal(Vec3 v1, Vec3 v2, Vec3 v3, Vec3 out){ - float - x = v2.x - v1.x, - y = v2.y - v1.y, - z = v2.z - v1.z, - vx = v3.x - v1.x, - vy = v3.y - v1.y, - vz = v3.z - v1.z; - - float - cx = y * vz - z * vy, - cy = z * vx - x * vz, - cz = x * vy - y * vx; - - out.set(cx, cy, cz).nor(); + private static Vec3 normal(Vec3 v1, Vec3 v2, Vec3 v3, Vec3 out){ + return out.set(v2).sub(v1).crs(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z).nor(); } private static void normal(float v1x, float v1y, float v1z, float v2x, float v2y, float v2z, float v3x, float v3y, float v3z, Vec3 out){ @@ -256,23 +249,24 @@ public class MeshBuilder{ floats[3] = packNormals(normal.x, normal.y, normal.z); floats[4] = color; - floats[5] = emissive; + if(floats.length > 5) floats[5] = emissive; }else{ floats[3] = normal.x; floats[4] = normal.x; floats[5] = normal.x; floats[6] = color; - floats[7] = emissive; + if(floats.length > 7) floats[7] = emissive; } mesh.getVerticesBuffer().put(floats); } private static float packNormals(float x, float y, float z){ - int xs = x < 0 ? 1 : 0; - int ys = y < 0 ? 1 : 0; - int zs = z < 0 ? 1 : 0; + int xs = x < -1f/512f ? 1 : 0; + int ys = y < -1f/512f ? 1 : 0; + int zs = z < -1f/512f ? 1 : 0; + int vi = zs << 29 | ((int)(z * 511 + (zs << 9)) & 511) << 20 | ys << 19 | ((int)(y * 511 + (ys << 9)) & 511) << 10 | diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index fb2467c2ee..247553a6bf 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -80,6 +80,11 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ sector.planet.reloadMeshAsync(); } + @Override + public boolean isEmissive(){ + return true; + } + @Override public boolean allowLanding(Sector sector){ return sector.planet.allowLaunchToNumbered && (sector.hasBase() || sector.near().contains(s -> s.hasBase() && From 556cbb48153fcbdf42eb4379ae5408e7c7199b06 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 31 May 2025 01:21:15 -0400 Subject: [PATCH 22/84] Fixed #10848 --- core/src/mindustry/ui/dialogs/SchematicsDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index f64cf14ca2..508ec2a6c9 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -557,7 +557,7 @@ public class SchematicsDialog extends BaseDialog{ next.pack(); float w = next.getWidth() + Scl.scl(9f); - if(w + sum >= Core.graphics.getWidth() * 0.9f){ + if(w*2f + sum >= Core.graphics.getWidth() * 0.9f){ p.add(current).row(); current = new Table(); current.left(); From 33d012f9bbd62778452aa7b6ef9f1d7284f6425a Mon Sep 17 00:00:00 2001 From: Iniquit <45113412+Iniquit@users.noreply.github.com> Date: Sat, 31 May 2025 01:22:06 -0400 Subject: [PATCH 23/84] Display payload capacity in the HUD (#10862) --- core/src/mindustry/ui/fragments/HudFragment.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index c604cf2b32..cac1defa52 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -838,8 +838,12 @@ public class HudFragment{ t.add(new SideBar(() -> player.dead() ? 0f : player.unit().healthf(), () -> true, true)).width(bw).growY().padRight(pad); t.image(() -> player.icon()).scaling(Scaling.bounded).grow().maxWidth(54f); - t.add(new SideBar(() -> player.dead() ? 0f : player.displayAmmo() ? player.unit().ammof() : player.unit().healthf(), () -> !player.displayAmmo(), false)).width(bw).growY().padLeft(pad).update(b -> { - b.color.set(player.displayAmmo() ? player.dead() || player.unit() instanceof BlockUnitc ? Pal.ammo : player.unit().type.ammoType.color() : Pal.health); + + Boolp playerHasPayloads = () -> player.unit() instanceof Payloadc pay && !pay.payloads().isEmpty(); + Floatp playerPayloadCapacityUsed = () -> player.unit() instanceof Payloadc pay ? pay.payloadUsed() / player.unit().type().payloadCapacity : 0f; + + t.add(new SideBar(() -> player.dead() ? 0f : player.displayAmmo() ? player.unit().ammof() : playerHasPayloads.get() ? playerPayloadCapacityUsed.get() : player.unit().healthf(), () -> !(player.displayAmmo() || playerHasPayloads.get()), false)).width(bw).growY().padLeft(pad).update(b -> { + b.color.set(player.displayAmmo() ? player.dead() || player.unit() instanceof BlockUnitc ? Pal.ammo : player.unit().type.ammoType.color() : playerHasPayloads.get() ? Pal.items : Pal.health); }); t.getChildren().get(1).toFront(); From 9419f85642d7270d10a2130e96e4f68341bf35b5 Mon Sep 17 00:00:00 2001 From: Iniquit <45113412+Iniquit@users.noreply.github.com> Date: Sat, 31 May 2025 10:18:14 -0400 Subject: [PATCH 24/84] Allow holding the cargo pickup & dropoff key (#10859) Allow holding down the cargo pickup & cargo drop keys to repeatedly pick up or drop off payloads. This takes effect after a short delay so that tapping to pick up or drop off individual payloads is still reliable. --- core/assets/contributors | 1 + core/src/mindustry/input/DesktopInput.java | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/core/assets/contributors b/core/assets/contributors index c8b2ef69de..f5b70d3741 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -181,3 +181,4 @@ IchMagSchokolade MonoChronos RushieWashie ITY +Iniquit diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 877b2c4cf3..21d7026b81 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -56,6 +56,11 @@ public class DesktopInput extends InputHandler{ /** Time of most recent control group selection */ public long lastCtrlGroupSelectMillis; + /** Time of most recent payload pickup/drop key press*/ + public long lastPayloadKeyTapMillis; + /** Time of most recent payload pickup/drop key hold*/ + public long lastPayloadKeyHoldMillis; + private float buildPlanMouseOffsetX, buildPlanMouseOffsetY; private boolean changedCursor; @@ -970,10 +975,26 @@ public class DesktopInput extends InputHandler{ if(unit instanceof Payloadc){ if(Core.input.keyTap(Binding.pickupCargo)){ tryPickupPayload(); + lastPayloadKeyTapMillis = Time.millis(); + } + + if(Core.input.keyDown(Binding.pickupCargo) + && Time.timeSinceMillis(lastPayloadKeyHoldMillis) > 20 + && Time.timeSinceMillis(lastPayloadKeyTapMillis) > 200){ + tryPickupPayload(); + lastPayloadKeyHoldMillis = Time.millis(); } if(Core.input.keyTap(Binding.dropCargo)){ tryDropPayload(); + lastPayloadKeyTapMillis = Time.millis(); + } + + if(Core.input.keyDown(Binding.dropCargo) + && Time.timeSinceMillis(lastPayloadKeyHoldMillis) > 20 + && Time.timeSinceMillis(lastPayloadKeyTapMillis) > 200){ + tryDropPayload(); + lastPayloadKeyHoldMillis = Time.millis(); } } } From 7b00d4bb1b6cd250b66f1f36f04e199075c7cf34 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 31 May 2025 11:43:25 -0400 Subject: [PATCH 25/84] Fixed Serpulo discontinuity --- core/src/mindustry/game/Saves.java | 2 ++ .../maps/planet/SerpuloPlanetGenerator.java | 12 +++++------- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 - 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index f01be9db6f..1d39087efd 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -97,6 +97,8 @@ public class Saves{ } } + //TODO: sectors like Ruinous Shores get overwritten first and explode when getting remapped + if(remapTarget != null){ //if the file name matches the destination of the remap, assume it has already been remapped, and skip the file movement procedure if(!slot.file.equals(getSectorFile(remapTarget))){ diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index 247553a6bf..d78a58492a 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -26,8 +26,10 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ public static boolean genLakes = false; BaseGenerator basegen = new BaseGenerator(); + float heightYOffset = 42.5f; float scl = 5f; - float waterOffset = 0.05f; + float waterOffset = 0.04f; + float heightScl = 1.01f; Block[][] arr = { @@ -62,7 +64,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ Vec3 basePos = new Vec3(0.9341721, 0.0, 0.3568221); float rawHeight(Vec3 position){ - return (Mathf.pow(Simplex.noise3d(seed, 7, 0.5f, 1f/3f, position.x * scl, position.y * scl, position.z * scl), 2.3f) + waterOffset) / (1f + waterOffset); + return (Mathf.pow(Simplex.noise3d(seed, 7, 0.5f, 1f/3f, position.x * scl, position.y * scl + heightYOffset, position.z * scl) * heightScl, 2.3f) + waterOffset) / (1f + waterOffset); } @Override @@ -108,10 +110,6 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ @Override public void getColor(Vec3 position, Color out){ - //if(dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 4f, position.x, position.y + 200f, position.z)*0.14f < 0.09f){ - // return Tmp.c1.set(Team.crux.color).lerp(Team.sharded.color, 0.4f*Simplex.noise3d(seed, 1, 1, 9f, position.x, position.y + 999f, position.z)).a(packAlpha(0f, 1f)); - //} - Block block = getBlock(position); //replace salt with sand color if(block == Blocks.salt) block = Blocks.sand; @@ -177,7 +175,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ float rad = scl; float temp = Mathf.clamp(Math.abs(py * 2f) / (rad)); - float tnoise = Simplex.noise3d(seed, 7, 0.56, 1f/3f, px, py + 999f, pz); + float tnoise = Simplex.noise3d(seed, 7, 0.56, 1f/3f, px, py + 999f - 0.1f, pz); temp = Mathf.lerp(temp, tnoise, 0.5f); height *= 1.2f; height = Mathf.clamp(height); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index e1bfee6fd7..83f52873c8 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -33,7 +33,6 @@ import mindustry.graphics.g3d.*; import mindustry.input.*; import mindustry.io.*; import mindustry.maps.*; -import mindustry.maps.planet.*; import mindustry.type.*; import mindustry.type.Planet.*; import mindustry.ui.*; From 8991af95981a4ddfbb6ee4f6a2b34c33d8ffbd7b Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 31 May 2025 18:25:18 -0400 Subject: [PATCH 26/84] Planet generation noise tweaks --- core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java | 2 +- core/src/mindustry/type/Planet.java | 2 -- core/src/mindustry/world/blocks/environment/SteamVent.java | 1 - gradle.properties | 2 +- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index d78a58492a..fbf48dd0b5 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -26,7 +26,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ public static boolean genLakes = false; BaseGenerator basegen = new BaseGenerator(); - float heightYOffset = 42.5f; + float heightYOffset = 42.7f; float scl = 5f; float waterOffset = 0.04f; float heightScl = 1.01f; diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 577b0de7e2..502cd0286d 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -11,7 +11,6 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import arc.util.*; -import arc.util.noise.*; import mindustry.content.*; import mindustry.content.TechTree.*; import mindustry.ctype.*; @@ -403,7 +402,6 @@ public class Planet extends UnlockableContent{ } if(generator != null){ - Noise.setSeed(sectorSeed < 0 ? id + 1 : sectorSeed); for(Sector sector : sectors){ generator.generateSector(sector); diff --git a/core/src/mindustry/world/blocks/environment/SteamVent.java b/core/src/mindustry/world/blocks/environment/SteamVent.java index a41efba7a0..c211964a7a 100644 --- a/core/src/mindustry/world/blocks/environment/SteamVent.java +++ b/core/src/mindustry/world/blocks/environment/SteamVent.java @@ -51,7 +51,6 @@ public class SteamVent extends Floor{ parent.drawBase(tile); if(checkAdjacent(tile)){ - Mathf.rand.setSeed(tile.pos()); Draw.rect(variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, variantRegions.length - 1))], tile.worldx() - tilesize, tile.worldy() - tilesize); } } diff --git a/gradle.properties b/gradle.properties index 36ca0f7b27..b9e9ed4883 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=b3aa9759d9 +archash=7fce1757dc From 44b25d6e64b88b75b86441528a6344eed7186e4b Mon Sep 17 00:00:00 2001 From: Iniquit <45113412+Iniquit@users.noreply.github.com> Date: Sun, 1 Jun 2025 11:46:55 -0400 Subject: [PATCH 27/84] Clamp continuous laser bullet position to min zero (#10873) This prevents the laser from moving behind the unit at the end of the animation. --- .../mindustry/entities/bullet/ContinuousLaserBulletType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java index df7cebd304..f19e8f7a37 100644 --- a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java @@ -55,13 +55,13 @@ public class ContinuousLaserBulletType extends ContinuousBulletType{ float ellipseLenScl = Mathf.lerp(1 - i / (float)(colors.length), 1f, pointyScaling); Lines.stroke(stroke); - Lines.lineAngle(b.x, b.y, rot, realLength - frontLength, false); + Lines.lineAngle(b.x, b.y, rot, Math.max(0, realLength - frontLength), false); //back ellipse Drawf.flameFront(b.x, b.y, divisions, rot + 180f, backLength, stroke / 2f); //front ellipse - Tmp.v1.trnsExact(rot, realLength - frontLength); + Tmp.v1.trnsExact(rot, Math.max(0, realLength - frontLength)); Drawf.flameFront(b.x + Tmp.v1.x, b.y + Tmp.v1.y, divisions, rot, frontLength * ellipseLenScl, stroke / 2f); } From 6c29460ade529d5a9f236f2f7e9b77da85e3b80c Mon Sep 17 00:00:00 2001 From: Sh1p*nfire <73347888+Sh1penfire@users.noreply.github.com> Date: Mon, 2 Jun 2025 01:49:03 +1000 Subject: [PATCH 28/84] Fix randomWaveAI causing units to target untargetable blocks (#10870) * Update Pathfinder.java * Update FlyingAI.java --- core/src/mindustry/ai/Pathfinder.java | 2 +- core/src/mindustry/ai/types/FlyingAI.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index 1b095760ca..2c950e8636 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -540,7 +540,7 @@ public class Pathfinder implements Runnable{ if(!targets.isEmpty()){ boolean any = false; for(Building other : targets){ - if((other.items != null && other.items.any()) || other.status() != BlockStatus.noInput){ + if(((other.items != null && other.items.any()) || other.status() != BlockStatus.noInput) && other.block.targetable){ out.add(other.tile.array()); any = true; } diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index a412c6f4da..c328b41b41 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -41,7 +41,7 @@ public class FlyingAI extends AIController{ Building closest = null; float cdist = 0f; for(Building t : list){ - if((t.items != null && t.items.any()) || t.status() != BlockStatus.noInput){ + if(((t.items != null && t.items.any()) || t.status() != BlockStatus.noInput) && t.block.targetable){ float dst = t.dst2(x, y); if(closest == null || dst < cdist){ closest = t; From ab73305df9f703a1e7c370d0195cc9d68c8b42cd Mon Sep 17 00:00:00 2001 From: KochiyaUenehaaa <119563256+Uenhe@users.noreply.github.com> Date: Sun, 1 Jun 2025 23:58:42 +0800 Subject: [PATCH 29/84] building dumps faster when overdriven (#10871) * Update Binding.java * Update UnitCommand.java * building dumps faster when overdriven --- core/src/mindustry/world/blocks/production/BeamDrill.java | 2 +- core/src/mindustry/world/blocks/production/BurstDrill.java | 2 +- core/src/mindustry/world/blocks/production/Drill.java | 2 +- core/src/mindustry/world/blocks/production/Separator.java | 2 +- core/src/mindustry/world/blocks/production/WallCrafter.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/world/blocks/production/BeamDrill.java b/core/src/mindustry/world/blocks/production/BeamDrill.java index 9921e4d7cf..27c1aac52c 100644 --- a/core/src/mindustry/world/blocks/production/BeamDrill.java +++ b/core/src/mindustry/world/blocks/production/BeamDrill.java @@ -262,7 +262,7 @@ public class BeamDrill extends Block{ time %= drillTime; } - if(timer(timerDump, dumpTime)){ + if(timer(timerDump, dumpTime / timeScale)){ dump(); } } diff --git a/core/src/mindustry/world/blocks/production/BurstDrill.java b/core/src/mindustry/world/blocks/production/BurstDrill.java index 150800705c..2c8563899c 100644 --- a/core/src/mindustry/world/blocks/production/BurstDrill.java +++ b/core/src/mindustry/world/blocks/production/BurstDrill.java @@ -80,7 +80,7 @@ public class BurstDrill extends Drill{ if(invertTime > 0f) invertTime -= delta() / invertedTime; - if(timer(timerDump, dumpTime)){ + if(timer(timerDump, dumpTime / timeScale)){ dump(items.has(dominantItem) ? dominantItem : null); } diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index 12ef7bace5..c327111e03 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -286,7 +286,7 @@ public class Drill extends Block{ @Override public void updateTile(){ - if(timer(timerDump, dumpTime)){ + if(timer(timerDump, dumpTime / timeScale)){ dump(dominantItem != null && items.has(dominantItem) ? dominantItem : null); } diff --git a/core/src/mindustry/world/blocks/production/Separator.java b/core/src/mindustry/world/blocks/production/Separator.java index 1bd5351b5e..22ad5c94ab 100644 --- a/core/src/mindustry/world/blocks/production/Separator.java +++ b/core/src/mindustry/world/blocks/production/Separator.java @@ -162,7 +162,7 @@ public class Separator extends Block{ } } - if(timer(timerDump, dumpTime)){ + if(timer(timerDump, dumpTime / timeScale)){ dump(); } } diff --git a/core/src/mindustry/world/blocks/production/WallCrafter.java b/core/src/mindustry/world/blocks/production/WallCrafter.java index df2395faa4..9c70967212 100644 --- a/core/src/mindustry/world/blocks/production/WallCrafter.java +++ b/core/src/mindustry/world/blocks/production/WallCrafter.java @@ -216,7 +216,7 @@ public class WallCrafter extends Block{ totalTime += edelta() * warmup * (eff <= 0f ? 0f : 1f); - if(timer(timerDump, dumpTime)){ + if(timer(timerDump, dumpTime / timeScale)){ dump(output); } } From 2e64f7663a69938d150482fe1704b047d9d16a29 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 1 Jun 2025 23:10:05 -0400 Subject: [PATCH 30/84] Fixed some issues with sector positions not migrating correctly --- core/src/mindustry/game/Saves.java | 76 +++++++++++++------ .../maps/planet/SerpuloPlanetGenerator.java | 2 +- 2 files changed, 55 insertions(+), 23 deletions(-) diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index 1d39087efd..720fc0fe8a 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -72,7 +72,32 @@ public class Saves{ lastSectorSave = saves.find(s -> s.isSector() && s.getName().equals(Core.settings.getString("last-sector-save", ""))); - ObjectSet infoToClear = new ObjectSet<>(), remapped = new ObjectSet<>(); + class Remap{ + //file in the temp folder + Fi sourceFile; + //slot of source sector to move file for + SaveSlot slot; + Sector sourceSector; + //sector info from source sector to move into + SectorInfo sourceInfo; + + //file to copy to + Fi destFile; + //destination sector to move to + Sector destSector; + + Remap(SaveSlot slot, Fi sourceFile, Sector sourceSector, SectorInfo sourceInfo, Fi destFile, Sector destSector){ + this.slot = slot; + this.sourceFile = sourceFile; + this.sourceSector = sourceSector; + this.sourceInfo = sourceInfo; + this.destFile = destFile; + this.destSector = destSector; + } + } + + Seq remaps = new Seq<>(); + ObjectSet remapped = new ObjectSet<>(); //automatically assign sector save slots for(SaveSlot slot : saves){ @@ -97,29 +122,18 @@ public class Saves{ } } - //TODO: sectors like Ruinous Shores get overwritten first and explode when getting remapped - if(remapTarget != null){ //if the file name matches the destination of the remap, assume it has already been remapped, and skip the file movement procedure if(!slot.file.equals(getSectorFile(remapTarget))){ Log.info("Remapping sector: @ -> @ (@)", sector.id, remapTarget.id, remapTarget.preset); - sector.loadInfo(); - //overwrite the target sector's info with the save's info - Core.settings.putJson(remapTarget.planet.name + "-s-" + remapTarget.id + "-info", sector.info); - remapTarget.loadInfo(); - - //queue a clear of the sector that had its data moved - infoToClear.add(sector); - //add to the remapped list (if it was remapped, don't clear it!) - remapped.add(remapTarget); - - remapTarget.save = slot; try{ - Fi target = getSectorFile(remapTarget); - //move over save file - slot.file.moveTo(target); - slot.file = target; + SectorInfo info = Core.settings.getJson(sector.planet.name + "-s-" + sector.id + "-info", SectorInfo.class, SectorInfo::new); + Fi tmpRemapFile = saveDirectory.child("remap_" + sector.planet.name + "_" + sector.id + "." + saveExtension); + slot.file.moveTo(tmpRemapFile); + + remaps.add(new Remap(slot, tmpRemapFile, sector, info, getSectorFile(remapTarget), remapTarget)); + remapped.add(remapTarget); }catch(Exception e){ Log.err("Failed to move sector files when remapping: " + sector.id + " -> " + remapTarget.id, e); } @@ -127,6 +141,7 @@ public class Saves{ remapTarget.save = slot; slot.meta.rules.sector = remapTarget; + }else{ if(sector.save != null){ Log.warn("Sector @ has two corresponding saves: @ and @", sector, sector.save.file, slot.file); @@ -136,10 +151,27 @@ public class Saves{ } } - for(var sector : infoToClear){ - if(!remapped.contains(sector)){ - sector.clearInfo(); - } + //process remaps later to allow swaps of sectors + for(var remap : remaps){ + var remapTarget = remap.destSector; + + //overwrite the target sector's info with the save's info + Core.settings.putJson(remapTarget.planet.name + "-s-" + remapTarget.id + "-info", remap.sourceInfo); + remapTarget.loadInfo(); + + remapTarget.save = remap.slot; + try{ + //move file from tmp directory back into the correct location + remap.sourceFile.moveTo(remap.destFile); + remap.slot.file = remap.destFile; + }catch(Exception e){ + Log.err("Failed to move back sector files when remapping: " + remap.sourceSector.id + " -> " + remapTarget.id, e); + } + + //clear the info, assuming it wasn't a sector that got mapped to + if(!remapped.contains(remap.sourceSector)){ + remap.sourceSector.clearInfo(); + } } } diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index fbf48dd0b5..8e0931974e 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -143,7 +143,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ float freq = 0.05f; if(position.dst(basePos) < 0.55f ? - dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f/* || dst <= 0.0001f*/ : + dst*metalDstScl + Simplex.noise3d(seed + 1, 3, 0.4, 5.5f, position.x, position.y + 200f, position.z)*0.08f + ((basePos.dst(position) + 0.00f) % freq < freq/2f ? 1f : 0f) * 0.07f < 0.08f/* || dst <= 0.0001f*/ : dst*metalDstScl + Simplex.noise3d(seed, 3, 0.4, 9f, position.x, position.y + 370f, position.z)*0.06f < 0.045){ out.set(Team.crux.color) From ea333a0a63e8dbca8d4c1c9d0ea89a8f5667a1d0 Mon Sep 17 00:00:00 2001 From: Redstonneur1256 <29004178+Redstonneur1256@users.noreply.github.com> Date: Mon, 2 Jun 2025 20:05:45 +0200 Subject: [PATCH 31/84] True modulo and unsigned right shift. (#10885) --- core/assets/bundles/bundle.properties | 2 ++ core/src/mindustry/logic/LogicOp.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index a2098265a6..4fa00bd859 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/src/mindustry/logic/LogicOp.java b/core/src/mindustry/logic/LogicOp.java index 5cdc476209..e474bf68be 100644 --- a/core/src/mindustry/logic/LogicOp.java +++ b/core/src/mindustry/logic/LogicOp.java @@ -11,6 +11,7 @@ public enum LogicOp{ div("/", (a, b) -> a / b), idiv("//", (a, b) -> Math.floor(a / b)), mod("%", (a, b) -> a % b), + emod("%%", (a, b) -> ((a % b) + b) % b), pow("^", Math::pow), equal("==", (a, b) -> Math.abs(a - b) < 0.000001 ? 1 : 0, (a, b) -> Structs.eq(a, b) ? 1 : 0), @@ -24,6 +25,7 @@ public enum LogicOp{ shl("<<", (a, b) -> (long)a << (long)b), shr(">>", (a, b) -> (long)a >> (long)b), + ushr(">>>", (a, b) -> (long)a >>> (long)b), or("or", (a, b) -> (long)a | (long)b), and("b-and", (a, b) -> (long)a & (long)b), xor("xor", (a, b) -> (long)a ^ (long)b), From ee06e8b19fe3ca6b7fceaef8d750cce0b1480b60 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Mon, 2 Jun 2025 18:09:30 +0000 Subject: [PATCH 32/84] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 2 ++ core/assets/bundles/bundle_bg.properties | 2 ++ core/assets/bundles/bundle_ca.properties | 2 ++ core/assets/bundles/bundle_cs.properties | 2 ++ core/assets/bundles/bundle_da.properties | 2 ++ core/assets/bundles/bundle_de.properties | 2 ++ core/assets/bundles/bundle_es.properties | 2 ++ core/assets/bundles/bundle_et.properties | 2 ++ core/assets/bundles/bundle_eu.properties | 2 ++ core/assets/bundles/bundle_fi.properties | 2 ++ core/assets/bundles/bundle_fil.properties | 2 ++ core/assets/bundles/bundle_fr.properties | 2 ++ core/assets/bundles/bundle_hu.properties | 2 ++ core/assets/bundles/bundle_id_ID.properties | 2 ++ core/assets/bundles/bundle_it.properties | 2 ++ core/assets/bundles/bundle_ja.properties | 2 ++ core/assets/bundles/bundle_ko.properties | 2 ++ core/assets/bundles/bundle_lt.properties | 2 ++ core/assets/bundles/bundle_nl.properties | 2 ++ core/assets/bundles/bundle_nl_BE.properties | 2 ++ core/assets/bundles/bundle_pl.properties | 2 ++ core/assets/bundles/bundle_pt_BR.properties | 2 ++ core/assets/bundles/bundle_pt_PT.properties | 2 ++ core/assets/bundles/bundle_ro.properties | 2 ++ core/assets/bundles/bundle_ru.properties | 2 ++ core/assets/bundles/bundle_sr.properties | 2 ++ core/assets/bundles/bundle_sv.properties | 2 ++ core/assets/bundles/bundle_th.properties | 2 ++ core/assets/bundles/bundle_tk.properties | 2 ++ core/assets/bundles/bundle_tr.properties | 2 ++ core/assets/bundles/bundle_uk_UA.properties | 2 ++ core/assets/bundles/bundle_vi.properties | 2 ++ core/assets/bundles/bundle_zh_CN.properties | 2 ++ core/assets/bundles/bundle_zh_TW.properties | 2 ++ 34 files changed, 68 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 7c540f7f1d..7986182a6f 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 95c1b5cc76..58adf38f19 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -2599,11 +2599,13 @@ lenum.always = Винаги вярно lenum.idiv = Деление с цели числа. lenum.div = Деление.\nВръща [accent]null[] при делене на 0. lenum.mod = Модул. +lenum.emod = True modulo, result is always positive. lenum.equal = Равенство. Конвертира променливите в еднакъв тип.\nНе-null обекти стават 1, null обекти стават 0. lenum.notequal = Неравенство. Конвертира променливите в еднакъв тип. lenum.strictequal = Стриктно равенство. Отрицателно при различни типове променливи.\nМоже да се използва за проверка на [accent]null[]. lenum.shl = Побитово изместване наляво. lenum.shr = Побитово изместване надясно. +lenum.ushr = Unsigned bit-shift right. lenum.or = Побитово ИЛИ. lenum.land = Логическо И. lenum.and = Побитово И. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 2cc2771af6..e4a7eab595 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -2599,11 +2599,13 @@ lenum.always = Sempre cert. lenum.idiv = Divisió entera. lenum.div = Divisió.\nRetorna [accent]null[] si es divideix per zero. lenum.mod = Mòdul (residu de la divisió entera). +lenum.emod = True modulo, result is always positive. lenum.equal = Igual. Força els tipus.\nCompara objectes no nuls amb nombres. Si són iguals, retorna 1. Si no, retorna 0. lenum.notequal = No igual. Força els tipus. lenum.strictequal = Igualtat estricta sense forçar el tipus.\nEs pot fer servir amb objectes nuls. lenum.shl = Desplaça els bits a l’esquerra. lenum.shr = Desplaça els bits a la dreta. +lenum.ushr = Unsigned bit-shift right. lenum.or = Operació lògica OR bit a bit. lenum.land = Operació lògica AND bit a bit. lenum.and = Operació lògica AND bit a bit. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 0bc5bd515f..3ad3a37731 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -2599,11 +2599,13 @@ lenum.always = Vždy pravda. lenum.idiv = Číselné dělení. lenum.div = Dělení.\nVrací [accent]null[], pokud je děleno nulou. lenum.mod = Modulo (Vydělí 2 hodnoty a vrací zbytek). +lenum.emod = True modulo, result is always positive. lenum.equal = Stejné. Vynucuje typy.\nNon-null objekty porovnané s čísly se stanou 1, jinak 0. lenum.notequal = Není stejné. Vynucuje typy. lenum.strictequal = Přísná rovnost. Nevynucuje typy.\nMůže být použít, jestli je [accent]null[]. lenum.shl = Bitový posun vlevo. lenum.shr = Bitový posun vpravo. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitový OR. lenum.land = Logický AND. lenum.and = Bitový AND. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 2d7af2122f..331fef6689 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index fd56c0fb0c..350f6f14b4 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -2599,11 +2599,13 @@ lenum.always = Immer. lenum.idiv = Division mit ganzen Zahlen. lenum.div = Division.\nGibt bei Teilung durch null [accent]null[] zurück. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Prüft Gleichheit.\nNicht-null Objekte, die mit Zahlen verglichen werden, werden 1. lenum.notequal = Prüft Ungleichheit. lenum.strictequal = Prüft strenge Gleichheit.\nKann verwendet werden, um [accent]null[] zu finden. lenum.shl = Bit-Shift nacht links. lenum.shr = Bit-Shift nach rechts. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise ODER. lenum.land = Logisches AND. lenum.and = Bitweises UND. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index c2167d1371..1ad5835978 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -2599,11 +2599,13 @@ lenum.always = Siempre "true". lenum.idiv = División de un número entero. lenum.div = División.\nDevuelve [accent]null[] al dividir entre cero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Igual. Coacciona tipos.\nObjetos no-nulos coaccionados con números pasan a 1, si no coinciden pasan a 0. lenum.notequal = No igual. Coacciona tipos. lenum.strictequal = Igualdad estricta. No coacciona tipos.\nSe puede usar para comprobar si un resultado es [accent]null[]. lenum.shl = Cambia bits a izquierda. lenum.shr = Cambia bits a derecha. +lenum.ushr = Unsigned bit-shift right. lenum.or = Comprobación bit a bit OR. lenum.land = Comprobación lógica AND. lenum.and = Comprobación bit a bit AND. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index ccdeb2a02f..0e6855a391 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index a5e2d30886..1c130a7934 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index f457b166ea..6be991fd93 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -2599,11 +2599,13 @@ lenum.always = Aina tosi. lenum.idiv = Kokonaislukujen osamäärä. lenum.div = Osamäärä.\nPalauttaa arvon [accent]null[] jaettaessa nollalla. lenum.mod = Lukuun ottamatta. +lenum.emod = True modulo, result is always positive. lenum.equal = Yhtä suuri. Pakottaa tyypit.\nMuut kohteet kuin null palauttavat arvon 1 verrattaessa numeroihin, muussa tapauksessa palautus on 0. lenum.notequal = Erisuuri. Pakottaa tyypit. lenum.strictequal = Tarkka yhtäsuuruus. Ei pakota tyyppejä.\nVoidaan käyttää tarkistamaan arvon [accent]null[] varalta. lenum.shl = Siirrä bittejä vasemmalle. lenum.shr = Siirrä bittejä oikealle. +lenum.ushr = Unsigned bit-shift right. lenum.or = Binäärinen OR. lenum.land = Looginen AND. lenum.and = Binäärinen AND. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index a4242fc278..782bf79193 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index cb158cfe19..4f7615778f 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -2599,11 +2599,13 @@ lenum.always = Toujours [accent]true[]. lenum.idiv = Division entière. lenum.div = Division.\nRetourne [accent]null[] lors d'une division par zéro. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Égalité. Conversion des types.\nLes objets non-nuls comparés avec des nombres deviennent 1, sinon 0. lenum.notequal = Inégalité. Conversion des types. lenum.strictequal = Égalité stricte. Ne convertit pas les types.\nPeut être utilisé pour vérifier les valeurs [accent]null[]. lenum.shl = Décalage de bits vers la gauche. lenum.shr = Décalage de bits vers la droite. +lenum.ushr = Unsigned bit-shift right. lenum.or = Opération binaire OR. lenum.land = Opération logique AND. lenum.and = Opération binaire AND. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index a6008a2733..1a86faba90 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -2599,11 +2599,13 @@ lenum.always = Mindig igaz. lenum.idiv = Egész osztás. lenum.div = Osztás.\nNullával való osztáskor a visszatérési érték [accent]null[]. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Egyenlő. Kényszeríti a típusokat.\nA nem null értékű objektumok értéke 1 lesz, egyébként 0. lenum.notequal = Nem egyenlő. Kényszeríti a típusokat. lenum.strictequal = Szigorúan egyenlőség. Nem kényszeríti a típusokat.\nA [accent]null[] ellenőrzésére is használható. lenum.shl = Biteltolás balra. lenum.shr = Biteltolás jobbra. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitenkénti VAGY. lenum.land = Logikai ÉS. lenum.and = Bitenkénti ÉS. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 9eec13d42f..3e7853295a 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -2599,11 +2599,13 @@ lenum.always = Selalu benar. lenum.idiv = Pembagian integer. lenum.div = Pembagian.\nMengembalikan [accent]null[] pada pembagian dengan nol. lenum.mod = Modulus. +lenum.emod = True modulo, result is always positive. lenum.equal = Kesetaraan. Mengonversikan tipe.\nObjek bukan nol dibandingkan dengan angka menjadi 1, jika tidak 0. lenum.notequal = Kesetaraan tanpa jenis pemaksaan. Mengonversikan tipe. lenum.strictequal = Kesetaraan dengan jenis pemaksaan. Tidak mengonversikan tipe.\nDapat digunakan untuk memeriksa [accent]null[]. lenum.shl = Bit-shift kiri. lenum.shr = Bit-shift kanan. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logika AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 9a1ba71c60..5872b9d592 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index c09dc24d25..f35c0ab766 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -2599,11 +2599,13 @@ lenum.always = 常にtrueを返します。 lenum.idiv = 整数の割り算をします。 lenum.div = 割り算をします。\nゼロ除算で [accent]null[] を返します。 lenum.mod = 割ったあまりを返します。 +lenum.emod = True modulo, result is always positive. lenum.equal = 等しいかどうかを比較します。型を強制します。\n数値と比較される非NULLオブジェクトは1になり、そうでない場合は0になる。 lenum.notequal = 等しくないかどうかを比較します。型を強制します。 lenum.strictequal = より厳密な比較をします。型の強制はしません。\n [accent]null[] のチェックに使用することができます。 lenum.shl = ビットを左にシフトします。 lenum.shr = ビットを右にシフトします。 +lenum.ushr = Unsigned bit-shift right. lenum.or = ビット単位でのOR演算をします。 lenum.land = 論理的なAND演算をします。 lenum.and = ビット単位でのAND演算をします。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 66eca86845..895b70e0ff 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -2599,11 +2599,13 @@ lenum.always = 항상 참 lenum.idiv = 정수 나누기 lenum.div = 나누기\n0으로 나누면 [accent]null[]을 반환합니다. lenum.mod = 나머지 +lenum.emod = True modulo, result is always positive. lenum.equal = 동치 비교. 형변환 가능\nNull이 아닌 객체가 숫자와 비교하려면 1이 되고, 아니면 0이 됩니다. lenum.notequal = 동치 부정. 형변환 가능 lenum.strictequal = 엄격한 동치 비교. 형변환 불가능\n[accent]null[]을 확인할 때 쓸 수 있습니다. lenum.shl = 왼쪽으로 비트 이동 lenum.shr = 오른쪽으로 비트 이동 +lenum.ushr = Unsigned bit-shift right. lenum.or = 비트연산자 OR lenum.land = 논리연산자 AND lenum.and = 비트연산자 AND diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index a5777616ee..d2ce17ad7a 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 388d43d9ba..b8aa0a3769 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 4ce0a9690e..769cf64c99 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 260a82bd89..620033e883 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -2599,11 +2599,13 @@ lenum.always = Zawsze prawda. lenum.idiv = Dzielenie liczb całkowitych. lenum.div = Dzielenie.\nZwraca [accent]null[] w trakcie dzielenia przez zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Równość. Wymusza typ.\nNiezerowe objekty połączone z liczbami stają się 1, w innym wypadku 0. lenum.notequal = Nierówność. Wymusza typ. lenum.strictequal = Ścisła równość. Nie wymusza typów.\nMoże być użyte do wykrycia [accent]null[]. lenum.shl = Przesunięcie bitowe w lewo. lenum.shr = Przesunięcie bitowe w prawo. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitowe OR (lub). lenum.land = Logiczne AND (i). lenum.and = Bitowe AND (i). diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index f407bafac1..90805c50e1 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -2599,11 +2599,13 @@ lenum.always = Sempre verdade. lenum.idiv = Divisão inteira. lenum.div = Divisão.\nRetorna [accent]null[] na divisão por zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Igual. Coage tipos.\nObjetos não nulos comparados com números tornam-se 1, caso contrário, 0. lenum.notequal = Não igual. Tipos de coerção. lenum.strictequal = Igualdade estrita. Não coage tipos.Pode ser usado para verificar [accent]null[]. lenum.shl = Deslocamento de bit para a esquerda. lenum.shr = Deslocamento de bits para a direita. +lenum.ushr = Unsigned bit-shift right. lenum.or = OU bit a bit. lenum.land = Lógico E. lenum.and = E bit a bit. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index ae76623896..de4987ca75 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -2599,11 +2599,13 @@ lenum.always = Sempre verdade. lenum.idiv = Divisão inteira. lenum.div = Divisão.\nRetorna [accent]null[] na divisão por zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Igual. Coage tipos.\nObjetos não nulos comparados com números tornam-se 1, caso contrário, 0. lenum.notequal = Não igual. Tipos de coerção. lenum.strictequal = Igualdade estrita. Não coage tipos.Pode ser usado para verificar [accent]null[]. lenum.shl = Deslocamento de bit para a esquerda. lenum.shr = Deslocamento de bits para a direita. +lenum.ushr = Unsigned bit-shift right. lenum.or = OU bit a bit. lenum.land = Lógico E. lenum.and = E bit a bit. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 621169d964..00f7698d4a 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -2599,11 +2599,13 @@ lenum.always = Mereu adevărat. lenum.idiv = Împărțirea naturală a numerelor (int). lenum.div = Împărțirea.\nReturnează [accent]null[] dacă împarți la 0. lenum.mod = Modulo (restul împărțirii). +lenum.emod = True modulo, result is always positive. lenum.equal = Egal. Convertește tipurile variabilelor.\nObiectele nenule comparate cu numere devin 1, cele nule devin 0. lenum.notequal = Nu e egal. Convertește tipurile variabilelor. lenum.strictequal = Egalitate strictă. Nu convertește tipurile variabilelor.\nPoate fi folosit pt a verifica dacă ceva este [accent]null[]. lenum.shl = Shift left pe biți. lenum.shr = Shift right pe biți. +lenum.ushr = Unsigned bit-shift right. lenum.or = OR/SAU. Ține cont de biți. lenum.land = Logical AND/ȘI logic. Nu ține cont de biți. lenum.and = AND/ȘI. Ține cont de biți. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index bf71eebfa9..c2106df496 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -2599,11 +2599,13 @@ lenum.always = Всегда истина. lenum.idiv = Целочисленное деление. lenum.div = Деление.\nВозвращает [accent]null[] при делении на ноль. lenum.mod = Остаток от деления. +lenum.emod = True modulo, result is always positive. lenum.equal = Равно. Приводит типы.\nНе-null объекты, по сравнению с числами, становятся 1, иначе — 0. lenum.notequal = Не равно. Приводит типы. lenum.strictequal = Строгое равенство. Не приводит типы.\nМожет быть использовано для проверки на [accent]null[]. lenum.shl = Побитовый сдвиг влево. lenum.shr = Побитовый сдвиг вправо. +lenum.ushr = Unsigned bit-shift right. lenum.or = Побитовое ИЛИ. lenum.land = Булевое И. lenum.and = Побитовое И. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 46b6a00aa3..c003fbed86 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -2599,11 +2599,13 @@ lenum.always = Uvek Tačno. lenum.idiv = Integer division. lenum.div = Deljenje.Šalje [accent]null[] kada se deli sa nulom. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Jednakost. Primorava vrste.\nObjekti koji nisu [accent]null[] poređeni sa brojevima postaju 1, u suprotnom 0. lenum.notequal = Nejednakost. Primorava vrste. lenum.strictequal = Zacrtana jednakost. Ne primorava vrste.\nMože se koristiti radi provere [accent]null[]-a. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index ffe6dbeaae..dc342190fe 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index f7b8ebb662..1694e9a3dc 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -2599,11 +2599,13 @@ lenum.always = เป็นจริงเสมอ lenum.idiv = หารจำนวนเต็ม lenum.div = หาร\nจะส่งกลับ[accent]ค่าว่าง[] หากหารศูนย์ lenum.mod = โมดูโล่ (หารหาเศษ) +lenum.emod = True modulo, result is always positive. lenum.equal = เท่ากับ แบบบังคับประเภท\nสิ่งที่ไม่ใช่ค่าว่างเมื่อเทียบกับตัวเลขจะส่งกลับค่า 1 นอกนั้นจะส่งกลับค่า 0 lenum.notequal = ไม่เท่ากับ บังคับประเภท lenum.strictequal = เท่ากับที่เข้มงวด ไม่บังคับประเภท\nสามารถใช้ตรวจสอบหา[accent]ค่าว่าง[]ได้ lenum.shl = เลื่อนบิตไปทางซ้าย lenum.shr = เลื่อนบิตไปทางขวา +lenum.ushr = Unsigned bit-shift right. lenum.or = หรือ แบบบิต lenum.land = และ เชิงตรรกะ lenum.and = และ แบบบิต diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index a498bf910f..486aae1910 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -2599,11 +2599,13 @@ lenum.always = Always true. lenum.idiv = Integer division. lenum.div = Division.\nReturns [accent]null[] on divide-by-zero. lenum.mod = Modulo. +lenum.emod = True modulo, result is always positive. lenum.equal = Equal. Coerces types.\nNon-null objects compared with numbers become 1, otherwise 0. lenum.notequal = Not equal. Coerces types. lenum.strictequal = Strict equality. Does not coerce types.\nCan be used to check for [accent]null[]. lenum.shl = Bit-shift left. lenum.shr = Bit-shift right. +lenum.ushr = Unsigned bit-shift right. lenum.or = Bitwise OR. lenum.land = Logical AND. lenum.and = Bitwise AND. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 3c6b3fbce8..c33a791505 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -2599,11 +2599,13 @@ lenum.always = Her Zaman Doğru lenum.idiv = Tamsayı Bölme lenum.div = Bölme lenum.mod = Mod +lenum.emod = True modulo, result is always positive. lenum.equal = Eşit lenum.notequal = Eşit Değil lenum.strictequal = Aynı lenum.shl = Shift Sol lenum.shr = Shift Sağ +lenum.ushr = Unsigned bit-shift right. lenum.or = Veya lenum.land = Çapraz Ve lenum.and = Ve diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 2188523398..37de88d540 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -2599,11 +2599,13 @@ lenum.always = Завжди істинне. lenum.idiv = Ціле ділення. lenum.div = Ділення.\nПовертає [accent]null[] при діленні на нуль. lenum.mod = Залишок від ділення. +lenum.emod = True modulo, result is always positive. lenum.equal = Рівно. Примусове приведення типів.\nНе-null об’єкти у порівнянні з числами стають 1, інакше — 0. lenum.notequal = Не рівно. Примусове приведення типів. lenum.strictequal = Сувора рівність. Примусового приведення типів немає.\nМожна використати для перевірки на [accent]null[]. lenum.shl = Зсув бітів ліворуч. lenum.shr = Зсув бітів праворуч. +lenum.ushr = Unsigned bit-shift right. lenum.or = Побітове АБО (OR). lenum.land = Побітове логічне І. lenum.and = Побітове І. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index b6cd5e027d..99a08552ab 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -2599,11 +2599,13 @@ lenum.always = Luôn đúng. lenum.idiv = Chia lấy phần nguyên. lenum.div = Phép chia.\nTrả về [accent]rỗng (null)[] khi chia cho 0. lenum.mod = Chia lấy phần dư. +lenum.emod = True modulo, result is always positive. lenum.equal = Bằng nhau. Ép kiểu.\nĐối tượng không-rỗng (non-null) so sánh với số sẽ thành 1, ngược lại là 0. lenum.notequal = Không bằng nhau. Ép kiểu. lenum.strictequal = Bằng nhau ràng buộc. Không ép kiểu.\nCó thể dùng để kiểm tra [accent]rỗng (null)[]. lenum.shl = Nhảy bit sang trái. lenum.shr = Nhảy bit sang phải. +lenum.ushr = Unsigned bit-shift right. lenum.or = Phép toán bit OR. lenum.land = Phép toán logic AND. lenum.and = Phép toán bit AND. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index a2b1686e48..142df457db 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -2599,11 +2599,13 @@ lenum.always = 无条件跳转 lenum.idiv = 整数除法,返回不带小数的商 lenum.div = 除法,除以 0 时返回 [accent]null[] lenum.mod = 求除法的余数 +lenum.emod = True modulo, result is always positive. lenum.equal = 相等。转换参数类型后进行比较\n与数字进行比较时,null 转换为 0 ,非 null 对象转换为 1 lenum.notequal = 不相等。转换参数类型后进行比较 lenum.strictequal = 严格相等。不转换参数类型\n可用于准确检查 [accent]null[] 对象 lenum.shl = 左移位 lenum.shr = 右移位 +lenum.ushr = Unsigned bit-shift right. lenum.or = 按位或 lenum.land = 逻辑与 lenum.and = 按位与 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 6ecba66c23..d1bd362c8e 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -2599,11 +2599,13 @@ lenum.always = 永遠 true (直接跳). lenum.idiv = 整數除法,無條件捨去. lenum.div = 除法.\n除以零時回傳 [accent]null[] lenum.mod = Modulo,求餘數 +lenum.emod = True modulo, result is always positive. lenum.equal = 是否相等,不管資料型態。\n非null 物件和數值相比時回傳1 lenum.notequal = 是否不相等,不管資料型態. lenum.strictequal = 嚴格檢查是否相等,會比照資料型態。\n可用來檢查[accent]null[] lenum.shl = 左移n位元 lenum.shr = 右移n位元 +lenum.ushr = Unsigned bit-shift right. lenum.or = 位元 OR lenum.land = 邏輯 AND lenum.and = 位元 AND From fbc2794fde86a549972e8a1c73fedde34ad052e0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Jun 2025 14:30:19 -0400 Subject: [PATCH 33/84] Fixed #10876 --- core/src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/game/FogControl.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 950226b0c1..84ebbedc4e 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -35,7 +35,7 @@ import static mindustry.logic.GlobalVars.*; @Component(base = true) abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Syncc, Shieldc, Displayable, Ranged, Minerc, Builderc, Senseable, Settable{ private static final Vec2 tmp1 = new Vec2(), tmp2 = new Vec2(); - static final float warpDst = 20f; + static final float warpDst = 16f; @Import boolean dead, disarmed; @Import float x, y, rotation, maxHealth, drag, armor, hitSize, health, shield, ammo, dragMultiplier, armorOverride, speedMultiplier; @@ -647,7 +647,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I if(y > top) dy -= (y - top)/warpDst; velAddNet(dx * Time.delta, dy * Time.delta); - float margin = tilesize * 2f; + float margin = tilesize * 1f; x = Mathf.clamp(x, left - margin, right - tilesize + margin); y = Mathf.clamp(y, bot - margin, top - tilesize + margin); } diff --git a/core/src/mindustry/game/FogControl.java b/core/src/mindustry/game/FogControl.java index 8d67a35d7f..4ef68bf44d 100644 --- a/core/src/mindustry/game/FogControl.java +++ b/core/src/mindustry/game/FogControl.java @@ -119,8 +119,7 @@ public final class FogControl implements CustomChunk{ var data = data(team); if(data == null) return false; - if(x < 0 || y < 0 || x >= ww || y >= wh) return false; - return data.read.get(x + y * ww); + return data.read.get(Mathf.clamp(x, 0, ww - 1) + Mathf.clamp(y, 0, wh - 1) * ww); } public void resetFog(){ From 7076d1bf975365e3cdc1e306f6ebb75250dfbffc Mon Sep 17 00:00:00 2001 From: Wxp <102459686+DSFdsfWxp@users.noreply.github.com> Date: Tue, 3 Jun 2025 02:32:24 +0800 Subject: [PATCH 34/84] Fix Android loadJar (#10867) * Fix Android loadJar * Using another way * Code formating * Fix mod update --- .../mindustry/android/AndroidLauncher.java | 65 ++++++++++++++----- core/assets/contributors | 1 + core/src/mindustry/mod/Mods.java | 28 ++++++-- 3 files changed, 70 insertions(+), 24 deletions(-) diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index 548f1b6078..e6809bec45 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -73,28 +73,57 @@ public class AndroidLauncher extends AndroidApplication{ @Override public ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{ //Required to load jar files in Android 14: https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading - jar.file().setReadOnly(); - return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent){ - @Override - protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ - //check for loaded state - Class loadedClass = findLoadedClass(name); - if(loadedClass == null){ - try{ - //try to load own class first - loadedClass = findClass(name); - }catch(ClassNotFoundException | NoClassDefFoundError e){ - //use parent if not found - return parent.loadClass(name); + try{ + jar.file().setReadOnly(); + return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent){ + @Override + protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ + //check for loaded state + Class loadedClass = findLoadedClass(name); + if(loadedClass == null){ + try{ + //try to load own class first + loadedClass = findClass(name); + }catch(ClassNotFoundException | NoClassDefFoundError e){ + //use parent if not found + return parent.loadClass(name); + } } - } - if(resolve){ - resolveClass(loadedClass); + if(resolve){ + resolveClass(loadedClass); + } + return loadedClass; } - return loadedClass; + }; + }catch(SecurityException e){ + //`setReadOnly` to jar file in `/sdcard/Android/data/...` does not work on some Android 14 device + //But in `/data/...` it works + + if(Build.VERSION.SDK_INT < VERSION_CODES.O_MR1){ + throw e; } - }; + + Fi cacheDir = new Fi(getCacheDir()).child("mods"); + cacheDir.mkdirs(); + + //long file name support + Fi modCacheDir = cacheDir.child(jar.nameWithoutExtension()); + Fi modCache = modCacheDir.child(Long.toHexString(jar.lastModified()) + ".zip"); + + if(modCacheDir.equals(jar.parent())){ + //should not reach here, just in case + throw e; + } + + //Cache will be deleted when mod is removed + if(!modCache.exists() || jar.length() != modCache.length()){ + modCacheDir.mkdirs(); + jar.copyTo(modCache); + } + modCache.file().setReadOnly(); + return loadJar(modCache, parent); + } } @Override diff --git a/core/assets/contributors b/core/assets/contributors index f5b70d3741..bb40130061 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -182,3 +182,4 @@ MonoChronos RushieWashie ITY Iniquit +DSFdsfWxp diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index b3044a2a4a..a1c6196f30 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -413,11 +413,22 @@ public class Mods implements Loadable{ /** Removes a mod file and marks it for requiring a restart. */ public void removeMod(LoadedMod mod){ - if(!android && mod.loader != null){ - try{ - ClassLoaderCloser.close(mod.loader); - }catch(Exception e){ - Log.err(e); + boolean deleted = true; + + if(mod.loader != null){ + if(android){ + //Try to remove cache for Android 14 security problem + Fi cacheDir = new Fi(Core.files.getCachePath()).child("mods"); + Fi modCacheDir = cacheDir.child(mod.file.nameWithoutExtension()); + if(modCacheDir.exists()){ + deleted = modCacheDir.deleteDirectory(); + } + }else{ + try{ + ClassLoaderCloser.close(mod.loader); + }catch(Exception e){ + Log.err(e); + } } } @@ -425,7 +436,7 @@ public class Mods implements Loadable{ mod.root.delete(); } - boolean deleted = mod.file.isDirectory() ? mod.file.deleteDirectory() : mod.file.delete(); + deleted &= mod.file.isDirectory() ? mod.file.deleteDirectory() : mod.file.delete(); if(!deleted){ ui.showErrorMessage("@mod.delete.error"); @@ -1112,6 +1123,11 @@ public class Mods implements Loadable{ //close the classloader for jar mods if(!android){ ClassLoaderCloser.close(other.loader); + }else if(other.loader != null){ + //Try to remove cache for Android 14 security problem + Fi cacheDir = new Fi(Core.files.getCachePath()).child("mods"); + Fi modCacheDir = cacheDir.child(other.file.nameWithoutExtension()); + modCacheDir.deleteDirectory(); } //close zip file From a22e532034abbef62250ad20adefb9a0f6295f8b Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 3 Jun 2025 15:37:19 -0400 Subject: [PATCH 35/84] Fixed #10891 --- core/src/mindustry/game/Schematics.java | 2 +- core/src/mindustry/ui/dialogs/ModsDialog.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index acab4144c1..71c227a32b 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -97,7 +97,7 @@ public class Schematics implements Loadable{ all.sort(); - if(shadowBuffer == null){ + if(shadowBuffer == null && !headless){ Core.app.post(() -> shadowBuffer = new FrameBuffer(maxSchematicSize + padding + 8, maxSchematicSize + padding + 8)); } } diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index f177ac7e32..3e7a2e2448 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -365,7 +365,7 @@ public class ModsDialog extends BaseDialog{ private @Nullable String getStateDetails(LoadedMod item){ if(item.isOutdated()){ - return Core.bundle.format("mod.outdated.details", item.isJava() ? minJavaModGameVersion : minModGameVersion); + return "@mod.incompatiblemod.details"; }else if(item.isBlacklisted()){ return "@mod.blacklisted.details"; }else if(!item.isSupported()){ From bcbe0890fef2b12dcc7eb2ca58c70919667e3dba Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 3 Jun 2025 15:40:03 -0400 Subject: [PATCH 36/84] Fixed #10886 --- core/src/mindustry/game/MapObjectives.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index 7c772e0a21..b554b9e277 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -714,7 +714,7 @@ public class MapObjectives implements Iterable, Eachable Date: Tue, 3 Jun 2025 16:04:23 -0400 Subject: [PATCH 37/84] Fixed #10887 --- core/src/mindustry/ai/RtsAI.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/ai/RtsAI.java b/core/src/mindustry/ai/RtsAI.java index 6c5292421b..21c2b8a843 100644 --- a/core/src/mindustry/ai/RtsAI.java +++ b/core/src/mindustry/ai/RtsAI.java @@ -141,6 +141,8 @@ public class RtsAI{ boolean handleSquad(Seq units, boolean noDefenders){ if(units.isEmpty()) return false; + boolean naval = units.first() instanceof WaterMovec; + float health = 0f, dps = 0f; float ax = 0f, ay = 0f; boolean targetAir = true, targetGround = true; @@ -165,7 +167,7 @@ public class RtsAI{ boolean defendingCore = false; //there is something to defend, see if it's worth the time - if(damaged.size > 0){ + if(damaged.size > 0 && !naval){ //TODO do the weights matter at all? //for(var build : damaged){ //float w = estimateStats(ax, ay, dps, health); @@ -251,7 +253,7 @@ public class RtsAI{ } } - var build = anyDefend ? null : findTarget(ax, ay, units.size, dps, health, units.first().flag == 0, units.first().isFlying()); + var build = anyDefend ? null : findTarget(ax, ay, units.size, dps, health, units.first().flag == 0, units.first().isFlying(), naval); if(build != null || anyDefend){ for(var unit : units){ @@ -274,7 +276,7 @@ public class RtsAI{ return anyDefend; } - @Nullable Building findTarget(float x, float y, int total, float dps, float health, boolean checkWeight, boolean air){ + @Nullable Building findTarget(float x, float y, int total, float dps, float health, boolean checkWeight, boolean air, boolean naval){ if(total < data.team.rules().rtsMinSquad) return null; //flag priority? @@ -282,8 +284,13 @@ public class RtsAI{ //2. factory //3. core targets.clear(); - for(var flag : flags){ - targets.addAll(Vars.indexer.getEnemy(data.team, flag)); + if(naval){ + //naval units can only target enemy cores, because those are assumed to always be reachable. other blocks may not be! + targets.addAll(Vars.indexer.getEnemy(data.team, BlockFlag.core)); + }else{ + for(var flag : flags){ + targets.addAll(Vars.indexer.getEnemy(data.team, flag)); + } } targets.removeAll(b -> assignedTargets.contains(b.id) || invalidTarget.contains(b.pos())); From 945f916d2c49ef13230233d9b13b69542d2f0280 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 4 Jun 2025 13:34:39 -0400 Subject: [PATCH 38/84] Fixed #10895 --- core/src/mindustry/world/blocks/campaign/Accelerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/campaign/Accelerator.java b/core/src/mindustry/world/blocks/campaign/Accelerator.java index 164e9cd746..3a0efce2f9 100644 --- a/core/src/mindustry/world/blocks/campaign/Accelerator.java +++ b/core/src/mindustry/world/blocks/campaign/Accelerator.java @@ -223,7 +223,7 @@ public class Accelerator extends Block{ } public boolean canLaunch(){ - return isValid() && state.isCampaign() && efficiency > 0f && power.graph.getBatteryStored() >= powerBufferRequirement-0.00001f && progress >= 1f && !launching; + return isValid() && !net.client() && state.isCampaign() && efficiency > 0f && power.graph.getBatteryStored() >= powerBufferRequirement-0.00001f && progress >= 1f && !launching; } @Override From 47c19487fc7502a6903a825d5b1fa1c8bfa2a1c6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 5 Jun 2025 13:12:08 -0400 Subject: [PATCH 39/84] Fixed #10901 --- core/src/mindustry/ui/dialogs/PlanetDialog.java | 2 +- core/src/mindustry/world/blocks/distribution/MassDriver.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 83f52873c8..a6844d01e1 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -1149,7 +1149,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ } } - void selectSector(Sector sector){ + public void selectSector(Sector sector){ selected = sector; updateSelected(); } diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index 4aef759357..91910e2388 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -215,7 +215,7 @@ public class MassDriver extends Block{ @Override public double sense(LAccess sensor){ - if(sensor == LAccess.progress) return Mathf.clamp(1f - reloadCounter / reload); + if(sensor == LAccess.progress) return Mathf.clamp(1f - reloadCounter); return super.sense(sensor); } @@ -305,7 +305,7 @@ public class MassDriver extends Block{ smokeEffect.at(x + Angles.trnsx(angle, translation), y + Angles.trnsy(angle, translation), angle); Effect.shake(shake, shake, this); - + shootSound.at(tile, Mathf.random(0.9f, 1.1f)); } From a18c5d148d45f39e8aaab7fdbb5c25194e1e5097 Mon Sep 17 00:00:00 2001 From: Lett Date: Sat, 7 Jun 2025 00:13:15 -0400 Subject: [PATCH 40/84] Improve server control and logging of the DOS blacklist (#10904) * Log kicks related to DOS bans * unBlacklistDos method Added a method to remove an IP that was blacklisted for being a potential DOS attack. * Added a command to add/remove/list DOS bans * Switched from spaces to a tab in the subnet-ban command Switched from spaces to a tab in the subnet-ban command's listing function. This is better for accessibility and customizability. * Use info(String, Object...) instead of String.format * Fixed formatting to fit style guidelines --- core/src/mindustry/net/Administration.java | 4 +++ core/src/mindustry/net/ArcNetProvider.java | 2 ++ .../src/mindustry/server/ServerControl.java | 31 ++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index b978d4bc7b..76d21c6028 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -91,6 +91,10 @@ public class Administration{ dosBlacklist.add(address); } + public synchronized void unBlacklistDos(String address){ + dosBlacklist.remove(address); + } + public synchronized boolean isDosBlacklisted(String address){ return dosBlacklist.contains(address); } diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java index 66d2d5278c..dde8aba760 100644 --- a/core/src/mindustry/net/ArcNetProvider.java +++ b/core/src/mindustry/net/ArcNetProvider.java @@ -113,6 +113,8 @@ public class ArcNetProvider implements NetProvider{ //kill connections above the limit to prevent spam if((playerLimitCache > 0 && server.getConnections().length > playerLimitCache) || netServer.admins.isDosBlacklisted(ip)){ + Log.info("Closing connection @ - IP marked as a potential DOS attack.", ip); + connection.close(DcReason.closed); return; } diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 453c73e9a4..6b0a840ec9 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -666,7 +666,7 @@ public class ServerControl implements ApplicationListener{ if(arg.length == 0){ info("Subnets banned: @", netServer.admins.getSubnetBans().isEmpty() ? "" : ""); for(String subnet : netServer.admins.getSubnetBans()){ - info("&lw " + subnet); + info("&lw\t" + subnet); } }else if(arg.length == 1){ err("You must provide a subnet to add or remove."); @@ -1054,6 +1054,35 @@ public class ServerControl implements ApplicationListener{ } }); + handler.register("dos-ban", "[add/remove] [ip]", "Add or remove a DOS ban.", arg -> { + if(arg.length == 0){ + info("DOS bans: @", netServer.admins.dosBlacklist.isEmpty() ? "" : ""); + + netServer.admins.dosBlacklist.forEach(address -> { + info("&lw\t" + address); + }); + return; + }else if(arg.length == 1){ + err("Expected either zero or two parameters, but only got one parameter."); + return; + } + + String action = arg[0].toLowerCase(); + String ip = arg[1]; + + if(action.equals("add")){ + netServer.admins.blacklistDos(ip); + info("Dos banned: @", ip); + return; + }else if(action.equals("remove")){ + netServer.admins.unBlacklistDos(ip); + info("Removed dos ban: @", ip); + return; + } + + err("Unrecognized action: @", action); + }); + mods.eachClass(p -> p.registerServerCommands(handler)); } From f21429f3f1c2b6be996fb9415661323705abc431 Mon Sep 17 00:00:00 2001 From: KochiyaUenehaaa <119563256+Uenhe@users.noreply.github.com> Date: Sun, 8 Jun 2025 22:26:28 +0800 Subject: [PATCH 41/84] display StatusDuration to one decimal place (#10908) --- core/src/mindustry/content/Blocks.java | 4 ---- core/src/mindustry/world/meta/StatValues.java | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index fc1b4d5f75..48c2ebd1d5 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -3437,7 +3437,6 @@ public class Blocks{ hitEffect = Fx.hitLancer; despawnEffect = Fx.none; status = StatusEffects.shocked; - statusDuration = 10f; hittable = false; lightColor = Color.white; collidesAir = false; @@ -3489,7 +3488,6 @@ public class Blocks{ despawnEffect = Fx.blastExplosion; status = StatusEffects.blasted; - statusDuration = 60f; hitColor = backColor = trailColor = Pal.blastAmmoBack; frontColor = Pal.blastAmmoFront; @@ -3915,7 +3913,6 @@ public class Blocks{ collidesGround = true; status = StatusEffects.blasted; - statusDuration = 60f; backColor = hitColor = trailColor = Pal.blastAmmoBack; frontColor = Pal.blastAmmoFront; @@ -5455,7 +5452,6 @@ public class Blocks{ hitEffect = Fx.hitLancer; despawnEffect = Fx.none; status = StatusEffects.shocked; - statusDuration = 10f; hittable = false; lightColor = Color.white; buildingDamageMultiplier = 0.25f; diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index cad7a64a4a..886fa305ab 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -710,7 +710,7 @@ public class StatValues{ if(type.status != StatusEffects.none){ sep(bt, (type.status.hasEmoji() ? type.status.emoji() : "") + "[stat]" + type.status.localizedName + (type.status.reactive ? "" : "[lightgray] ~ [stat]" + - ((int)(type.statusDuration / 60f)) + "[lightgray] " + Core.bundle.get("unit.seconds"))).with(c -> withTooltip(c, type.status)); + Strings.autoFixed(type.statusDuration / 60f, 1) + "[lightgray] " + Core.bundle.get("unit.seconds"))).with(c -> withTooltip(c, type.status)); } if(!type.targetMissiles){ From 4469bfc4bcb65a1f10a917dae256820acb874954 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 9 Jun 2025 15:56:08 -0400 Subject: [PATCH 42/84] Bounds clamp fixes --- core/src/mindustry/entities/comp/UnitComp.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 84ebbedc4e..68a22f48fc 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -35,7 +35,7 @@ import static mindustry.logic.GlobalVars.*; @Component(base = true) abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Syncc, Shieldc, Displayable, Ranged, Minerc, Builderc, Senseable, Settable{ private static final Vec2 tmp1 = new Vec2(), tmp2 = new Vec2(); - static final float warpDst = 16f; + static final float warpDst = 8f; @Import boolean dead, disarmed; @Import float x, y, rotation, maxHealth, drag, armor, hitSize, health, shield, ammo, dragMultiplier, armorOverride, speedMultiplier; @@ -643,8 +643,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I //repel unit out of bounds if(x < left) dx += (-(x - left)/warpDst); if(y < bot) dy += (-(y - bot)/warpDst); - if(x > right) dx -= (x - right)/warpDst; - if(y > top) dy -= (y - top)/warpDst; + if(x > right - tilesize) dx -= (x - (right - tilesize))/warpDst; + if(y > top - tilesize) dy -= (y - (top - tilesize))/warpDst; velAddNet(dx * Time.delta, dy * Time.delta); float margin = tilesize * 1f; From 70ad6eb7d1d02750e7f111393f11923206aac710 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 9 Jun 2025 17:08:18 -0400 Subject: [PATCH 43/84] Autotile support for floors (untested) --- .../mindustry/world/blocks/TileBitmask.java | 23 ++++++++++++++++ .../world/blocks/environment/Floor.java | 26 +++++++++++++++++++ .../blocks/logic/TileableLogicDisplay.java | 22 ++-------------- 3 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 core/src/mindustry/world/blocks/TileBitmask.java diff --git a/core/src/mindustry/world/blocks/TileBitmask.java b/core/src/mindustry/world/blocks/TileBitmask.java new file mode 100644 index 0000000000..f911469267 --- /dev/null +++ b/core/src/mindustry/world/blocks/TileBitmask.java @@ -0,0 +1,23 @@ +package mindustry.world.blocks; + +public class TileBitmask{ + /** Autotile bitmasks for 8-directional sprites (see tile-gen)*/ + public static final int[] values = { + 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, + 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, + 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, + 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, + 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, + 5, 28, 5, 28, 29, 10, 29, 23, 5, 28, 5, 28, 31, 11, 31, 32, + 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, + 2, 30, 2, 30, 9, 46, 9, 22, 2, 30, 2, 30, 14, 44, 14, 6, + 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, + 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, + 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, + 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, + 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, + 5, 8, 5, 8, 29, 35, 29, 33, 5, 8, 5, 8, 31, 34, 31, 7, + 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, + 2, 1, 2, 1, 9, 45, 9, 19, 2, 1, 2, 1, 14, 18, 14, 13, + }; +} diff --git a/core/src/mindustry/world/blocks/environment/Floor.java b/core/src/mindustry/world/blocks/environment/Floor.java index 68809deafe..7b9f9ebe3f 100644 --- a/core/src/mindustry/world/blocks/environment/Floor.java +++ b/core/src/mindustry/world/blocks/environment/Floor.java @@ -15,6 +15,7 @@ import mindustry.graphics.*; import mindustry.graphics.MultiPacker.*; import mindustry.type.*; import mindustry.world.*; +import mindustry.world.blocks.*; import java.util.*; @@ -77,8 +78,11 @@ public class Floor extends Block{ public int blendId = -1; /** If >0, this floor is drawn as parts of a large texture. */ public int tilingVariants = 0; + /** If true, this floor uses autotiling; variants are not supported. See https://github.com/GglLfr/tile-gen*/ + public boolean autotile = false; protected TextureRegion[][][] tilingRegions; + protected TextureRegion[] autotileRegions; protected int tilingSize; protected TextureRegion[][] edges; protected Seq blenders = new Seq<>(); @@ -104,6 +108,10 @@ public class Floor extends Block{ public void load(){ super.load(); + if(autotile){ + variants = 0; + } + int tsize = (int)(tilesize / Draw.scl); if(tilingVariants > 0 && !headless){ @@ -132,6 +140,13 @@ public class Floor extends Block{ variantRegions[0] = Core.atlas.find(name); } + if(autotile){ + autotileRegions = new TextureRegion[47]; + for(int i = 0; i < 47; i++){ + autotileRegions[i] = Core.atlas.find(name + "-" + i); + } + } + if(Core.atlas.has(name + "-edge")){ edges = Core.atlas.find(name + "-edge").split(tsize, tsize); } @@ -208,6 +223,17 @@ public class Floor extends Block{ int index = Mathf.randomSeed(Point2.pack(tile.x / tilingSize, tile.y / tilingSize), 0, tilingVariants - 1); TextureRegion[][] regions = tilingRegions[index]; Draw.rect(regions[tile.x % tilingSize][tilingSize - 1 - tile.y % tilingSize], tile.worldx(), tile.worldy()); + }else if(autotile){ + int bits = 0; + + for(int i = 0; i < 8; i++){ + Tile other = tile.nearby(Geometry.d8[i]); + if(other != null && other.floor().blendGroup == blendGroup){ + bits |= (1 << i); + } + } + + Draw.rect(autotileRegions[TileBitmask.values[bits]], tile.worldx(), tile.worldy()); }else{ Draw.rect(variantRegions[variant(tile.x, tile.y)], tile.worldx(), tile.worldy()); } diff --git a/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java b/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java index 03effdfcc4..a6ff9d3aed 100644 --- a/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/TileableLogicDisplay.java @@ -13,6 +13,7 @@ import mindustry.annotations.Annotations.*; import mindustry.graphics.*; import mindustry.logic.*; import mindustry.world.*; +import mindustry.world.blocks.*; import static mindustry.Vars.*; @@ -27,25 +28,6 @@ public class TileableLogicDisplay extends LogicDisplay{ public @Load(value = "@-#", length = 47) TextureRegion[] tileRegion; public @Load("@-back") TextureRegion backRegion; - static final int[] bitmasks = { - 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, - 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, - 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, - 5, 28, 5, 28, 29, 10, 29, 23, 5, 28, 5, 28, 31, 11, 31, 32, - 3, 4, 3, 4, 15, 40, 15, 20, 3, 4, 3, 4, 15, 40, 15, 20, - 2, 30, 2, 30, 9, 46, 9, 22, 2, 30, 2, 30, 14, 44, 14, 6, - 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, - 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 39, 36, 39, 36, 27, 16, 27, 24, 39, 36, 39, 36, 27, 16, 27, 24, - 38, 37, 38, 37, 17, 41, 17, 43, 38, 37, 38, 37, 26, 21, 26, 25, - 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, - 5, 8, 5, 8, 29, 35, 29, 33, 5, 8, 5, 8, 31, 34, 31, 7, - 3, 0, 3, 0, 15, 42, 15, 12, 3, 0, 3, 0, 15, 42, 15, 12, - 2, 1, 2, 1, 9, 45, 9, 19, 2, 1, 2, 1, 14, 18, 14, 13, - }; - public TileableLogicDisplay(String name){ super(name); @@ -247,7 +229,7 @@ public class TileableLogicDisplay extends LogicDisplay{ Draw.z(Layer.block + 0.02f); - Draw.rect(tileRegion[bitmasks[bits]], x, y); + Draw.rect(tileRegion[TileBitmask.values[bits]], x, y); } @Override From e5c745ee16b932a826f11be29eadb40938cd541f Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 10 Jun 2025 20:21:20 -0400 Subject: [PATCH 44/84] Generate autotiles at gradle pack time --- core/assets/maps/weatheredChannels.msav | Bin 50824 -> 52670 bytes core/src/mindustry/io/TypeIO.java | 2 +- .../consumers/ConsumePayloadDynamic.java | 1 + tools/src/mindustry/tools/Generators.java | 22 ++++++ .../mindustry/tools/ImageTileGenerator.java | 68 ++++++++++++++++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 tools/src/mindustry/tools/ImageTileGenerator.java diff --git a/core/assets/maps/weatheredChannels.msav b/core/assets/maps/weatheredChannels.msav index f9ef2030e115c972e978bcc955391b3088c0baca..aa02ffabf714f557b05faf873f225071ba1297e0 100644 GIT binary patch literal 52670 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

NQ>j*jCxDoRTlSEqtARb=*03v82lT|JSAdXa3*B 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 diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index bf0ce88256..7d26433a16 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -1104,7 +1104,7 @@ public class TypeIO{ } } - /** Represents a unit that has not been resolved yet. TODO unimplemented / unused*/ + /** Represents a unit that has not been resolved yet. */ public static class UnitBox implements Boxed{ public int id; diff --git a/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java b/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java index ebb6f32430..c2d52fcefd 100644 --- a/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java +++ b/core/src/mindustry/world/consumers/ConsumePayloadDynamic.java @@ -60,6 +60,7 @@ public class ConsumePayloadDynamic extends Consume{ var inv = build.getPayloads(); var pay = payloads.get(build); + table.clear(); table.table(c -> { int i = 0; for(var stack : pay){ diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 8503c80b26..833ffae080 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -69,6 +69,28 @@ public class Generators{ public static void run(){ ObjectMap gens = new ObjectMap<>(); + generate("autotiles", () -> { + for(Floor floor : content.blocks().select(b -> b.isFloor() && b.asFloor().autotile).as()){ + Fi basePath = new Fi("../../../assets-raw/sprites_out/blocks/environment/" + floor.name + "-autotile.png"); + + if(basePath.exists()){ + //theoretically this might not finish in time, but I doubt that will ever happen + mainExecutor.submit(() -> { + try{ + ImageTileGenerator.generate(basePath, floor.name, new Fi("../../../assets-raw/sprites_out/blocks/environment/" + floor.name)); + }catch(Exception e){ + Log.err("Failed to autotile: " + floor.name, e); + }finally{ + //the raw autotile source image must never be included, it isn't useful + basePath.delete(); + } + }); + }else{ + Log.warn("Autotile floor '@' not found: @", floor.name, basePath.absolutePath()); + } + } + }); + generate("splashes", () -> { int frames = 12; diff --git a/tools/src/mindustry/tools/ImageTileGenerator.java b/tools/src/mindustry/tools/ImageTileGenerator.java new file mode 100644 index 0000000000..bc5c01138d --- /dev/null +++ b/tools/src/mindustry/tools/ImageTileGenerator.java @@ -0,0 +1,68 @@ +package mindustry.tools; + +import arc.files.*; +import arc.graphics.*; +import arc.math.geom.*; +import arc.struct.*; +import arc.util.serialization.*; + +import java.io.*; + +/** Java port of https://github.com/GglLfr/tile-gen/blob/master/src/main.rs */ +public class ImageTileGenerator{ + private static final int layoutWidth = 384, layoutHeight = 128; + private static final Pixmap layout = new Pixmap(Base64Coder.decode("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")); + + public static void generate(Fi path, String name, Fi outputDir) throws IOException{ + Pixmap image = new Pixmap(path); + + try{ + int width = image.width, height = image.height; + + if(width % 4 != 0 || height % 4 != 0) throw new IOException("Image dimensions are not divisible by 4: " + width + "x" + height); + if(width != height) throw new IOException("Image is not square: " + width + "x" + height); + + int cellSize = width / 4; + + IntIntMap colorToPosition = new IntIntMap(); + + for(int x = 0; x < 4; x++){ + for(int y = 0; y < 4; y++){ + colorToPosition.put(layout.get(x * layoutWidth / 12, y * layoutHeight / 4), Point2.pack(x * width / 4, y * height / 4)); + } + } + + int outWidth = width / 4 * 12, outHeight = height; + Pixmap out = new Pixmap(outWidth, outHeight); + + for(int cx = 0; cx < 12; cx++){ + for(int cy = 0; cy < 4; cy++){ + for(int rx = 0; rx < cellSize; rx++){ + for(int ry = 0; ry < cellSize; ry++){ + int point = colorToPosition.get(layout.get( + (cx * cellSize + rx) * layoutWidth / (width * 3), + (cy * cellSize + ry) * layoutHeight / height + ), -1); + + if(point != -1){ + int sx = Point2.x(point), sy = Point2.y(point); + out.set(cx * cellSize + rx, cy * cellSize + ry, image.get(sx + rx, sy + ry)); + } + } + } + } + } + + for(int i = 0; i < 47; i++){ + int cx = i % 12, cy = i / 12; + Pixmap cropped = out.crop(cx * cellSize, cy * cellSize, cellSize, cellSize); + outputDir.child(name + "-" + i).writePng(cropped); + cropped.dispose(); + } + + out.dispose(); + }finally{ + image.dispose(); + } + } +} From 7da5f0a6d93f6e0a36e8ecbbc2ccb899aefde5cb Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Jun 2025 00:03:31 -0400 Subject: [PATCH 45/84] Fixed #10915 --- .../mindustry/entities/units/BuildPlan.java | 13 +------------ core/src/mindustry/game/Schematics.java | 2 +- core/src/mindustry/input/InputHandler.java | 18 +++++++++--------- .../world/blocks/power/PowerNode.java | 5 +++++ tools/src/mindustry/tools/Generators.java | 2 +- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/core/src/mindustry/entities/units/BuildPlan.java b/core/src/mindustry/entities/units/BuildPlan.java index f9930f707f..8dfb53de7a 100644 --- a/core/src/mindustry/entities/units/BuildPlan.java +++ b/core/src/mindustry/entities/units/BuildPlan.java @@ -21,8 +21,6 @@ public class BuildPlan implements Position, QuadTreeObject{ public boolean breaking; /** Config int. Not used unless hasConfig is true.*/ public Object config; - /** Original position, only used in schematics.*/ - public int originalX, originalY, originalWidth, originalHeight; /** Last progress.*/ public float progress; @@ -65,6 +63,7 @@ public class BuildPlan implements Position, QuadTreeObject{ public BuildPlan(){ } + public boolean placeable(Team team){ return Build.validPlace(block, team, x, y, rotation); } @@ -111,22 +110,12 @@ public class BuildPlan implements Position, QuadTreeObject{ copy.block = block; copy.breaking = breaking; copy.config = config; - copy.originalX = originalX; - copy.originalY = originalY; copy.progress = progress; copy.initialized = initialized; copy.animScale = animScale; return copy; } - public BuildPlan original(int x, int y, int originalWidth, int originalHeight){ - originalX = x; - originalY = y; - this.originalWidth = originalWidth; - this.originalHeight = originalHeight; - return this; - } - public Rect bounds(Rect rect){ if(breaking){ return rect.set(-100f, -100f, 0f, 0f); diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 71c227a32b..93b85a591a 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -275,7 +275,7 @@ public class Schematics implements Loadable{ /** 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 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)) + 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)); } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 6edf52a2cc..345202ea8e 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1331,9 +1331,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ plans.each(plan -> { if(plan.breaking) return; + float off = plan.block.size % 2 == 0 ? -0.5f : 0f; + plan.pointConfig(p -> { - int cx = p.x, cy = p.y; - int lx = cx; + float cx = p.x + off, cy = p.y + off; + float lx = cx; if(direction >= 0){ cx = -cy; @@ -1342,7 +1344,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ cx = cy; cy = -lx; } - p.set(cx, cy); + p.set(Mathf.floor(cx - off), Mathf.floor(cy - off)); }); //rotate actual plan, centered on its multiblock position @@ -1376,14 +1378,12 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } plan.pointConfig(p -> { - int corigin = x ? plan.originalWidth/2 : plan.originalHeight/2; - int nvalue = -(x ? p.x : p.y); if(x){ - plan.originalX = -(plan.originalX - corigin) + corigin; - p.x = nvalue; + if(plan.block.size % 2 == 0) p.x --; + p.x = -p.x; }else{ - plan.originalY = -(plan.originalY - corigin) + corigin; - p.y = nvalue; + if(plan.block.size % 2 == 0) p.y --; + p.y = -p.y; } }); diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index a3eae8fb08..f01d93ef9a 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -328,6 +328,11 @@ public class PowerNode extends PowerBlock{ } }); + //uncomment for debugging connection translation issues in schematics + //Draw.color(Color.red); + //Lines.line(plan.drawx(), plan.drawy(), px * tilesize, py * tilesize); + //Draw.color(); + if(otherReq == null || otherReq.block == null) continue; drawLaser(plan.drawx(), plan.drawy(), otherReq.drawx(), otherReq.drawy(), size, otherReq.block.size); diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 833ffae080..8fbda7d9f8 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -78,7 +78,7 @@ public class Generators{ mainExecutor.submit(() -> { try{ ImageTileGenerator.generate(basePath, floor.name, new Fi("../../../assets-raw/sprites_out/blocks/environment/" + floor.name)); - }catch(Exception e){ + }catch(Throwable e){ Log.err("Failed to autotile: " + floor.name, e); }finally{ //the raw autotile source image must never be included, it isn't useful From 432adbd1d4644dad8bb3cca9748ce19429154591 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Jun 2025 11:55:55 -0400 Subject: [PATCH 46/84] Closes Anuken/Mindustry-Suggestions/issues/5670 --- core/src/mindustry/content/SectorPresets.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 066afe3241..c1c387e74e 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -111,7 +111,7 @@ public class SectorPresets{ }}; fungalPass = new SectorPreset("fungalPass", serpulo, 21){{ - difficulty = 4; + difficulty = 2; }}; infestedCanyons = new SectorPreset("infestedCanyons", serpulo, 210){{ From 39ad275cb439f6ebbbc2b485448e8a22894a52e7 Mon Sep 17 00:00:00 2001 From: WhiteSpike <58040140+WhiteSpike@users.noreply.github.com> Date: Fri, 13 Jun 2025 22:52:20 +0100 Subject: [PATCH 47/84] Included self check when disabling the redirect prompt from Landing Pad (#10925) - If a sector had both a launch and landing pad of the same resource, when clicking "Redirect Launch Pads" to make other sectors' launch pads to send theirs to that sector, the prompt would remain enabled due to the disable check not considering self sending that same resource, making it seem it did nothing. Implementation details: - Refactored some variable names and code blocks for easier reading. - Created ``canRedirectExports`` method which determines if the provided sector's launch pads can be redirected to the player's current sector. This method is used in both the button's disabled attribute and during execution of redirecting sectors. Testing details: - Utilized Windows instructions for compilation and running the application; - Used save file from Steam's "v8-beta" branch; - Selected a sector which contained both a launch and landing pad of the same resource. Before the changes, the button would remain enabled after pressing it. After the changes, the button now remains disabled (as all other sectors were already exporting to that sector). --- .../world/blocks/campaign/LandingPad.java | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/core/src/mindustry/world/blocks/campaign/LandingPad.java b/core/src/mindustry/world/blocks/campaign/LandingPad.java index e9e44418a6..2179627b6e 100644 --- a/core/src/mindustry/world/blocks/campaign/LandingPad.java +++ b/core/src/mindustry/world/blocks/campaign/LandingPad.java @@ -383,21 +383,24 @@ public class LandingPad extends Block{ t.background(Styles.black6); t.button(Icon.downOpen, Styles.clearNonei, 40f, () -> { - if(config != null && state.isCampaign()){ - for(Sector sector : state.getPlanet().sectors){ - if(sector.hasBase() && sector != state.getSector() && sector.info.destination != state.getSector() && sector.info.hasExport(config)){ - sector.info.destination = state.getSector(); - sector.saveInfo(); - } - } - state.getSector().info.refreshImportRates(state.getPlanet()); + if(config == null || !state.isCampaign()) return; + + for(Sector sector : state.getPlanet().sectors){ + if(!canRedirectExports(sector)) continue; + sector.info.destination = state.getSector(); + sector.saveInfo(); } - }).disabled(b -> config == null || !state.isCampaign() || (!state.getPlanet().sectors.contains(s -> s.hasBase() && s.info.hasExport(config) && s.info.destination != state.getSector()))) + state.getSector().info.refreshImportRates(state.getPlanet()); + }).disabled(button -> config == null || !state.isCampaign() || (!state.getPlanet().sectors.contains(this::canRedirectExports))) .tooltip("@sectors.redirect").get(); }).fillX().left(); } } + private boolean canRedirectExports(Sector sector){ + return sector.hasBase() && sector != state.getSector() && sector.info.hasExport(config) && sector.info.destination != state.getSector(); + } + @Override public void display(Table table){ super.display(table); @@ -416,14 +419,13 @@ public class LandingPad extends Block{ int sources = 0; float perSecond = 0f; - for(var s : state.getPlanet().sectors){ - if(s != state.getSector() && s.hasBase() && s.info.destination == state.getSector()){ - float amount = s.info.getExport(config); - if(amount > 0){ - sources ++; - perSecond += s.info.getExport(config); - } - } + for(var otherSector : state.getPlanet().sectors){ + if(otherSector == state.getSector() || !otherSector.hasBase() || otherSector.info.destination != state.getSector()) continue; + + float amount = otherSector.info.getExport(config); + if(amount <= 0) continue; + sources ++; + perSecond += amount; } String str = Core.bundle.format("landing.sources", sources == 0 ? Core.bundle.get("none") : sources); From 0b1399b3b1f5e5287ca7fc863148864ffe5107ee Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Jun 2025 17:54:55 -0400 Subject: [PATCH 48/84] Closes #10921 --- core/src/mindustry/world/meta/BuildVisibility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/world/meta/BuildVisibility.java b/core/src/mindustry/world/meta/BuildVisibility.java index 06d08323f2..8b7042d6b0 100644 --- a/core/src/mindustry/world/meta/BuildVisibility.java +++ b/core/src/mindustry/world/meta/BuildVisibility.java @@ -16,7 +16,7 @@ public class BuildVisibility{ sandboxOnly = new BuildVisibility(() -> Vars.state == null || Vars.state.rules.infiniteResources), campaignOnly = new BuildVisibility(() -> Vars.state == null || Vars.state.isCampaign()), legacyLaunchPadOnly = new BuildVisibility(() -> (Vars.state == null || Vars.state.isCampaign() && Vars.state.getPlanet().campaignRules.legacyLaunchPads) && Blocks.advancedLaunchPad != null && Blocks.advancedLaunchPad.unlocked()), - notLegacyLaunchPadOnly = new BuildVisibility(() -> (Vars.state == null || Vars.state.isCampaign() && !Vars.state.getPlanet().campaignRules.legacyLaunchPads)), + notLegacyLaunchPadOnly = new BuildVisibility(() -> (Vars.state == null || Vars.state.rules.infiniteResources || Vars.state.isCampaign() && !Vars.state.getPlanet().campaignRules.legacyLaunchPads)), lightingOnly = new BuildVisibility(() -> Vars.state == null || Vars.state.rules.lighting || Vars.state.isCampaign()), ammoOnly = new BuildVisibility(() -> Vars.state == null || Vars.state.rules.unitAmmo), fogOnly = new BuildVisibility(() -> Vars.state == null || Vars.state.rules.fog || Vars.state.rules.editor); From 19d3e203284d1121b37ab2ad1175f5daf305ce2d Mon Sep 17 00:00:00 2001 From: SomeonesShade Date: Sat, 14 Jun 2025 06:04:09 +0800 Subject: [PATCH 49/84] Temporarily Invincible Missiles Quell (#10674) * quell changes version 1 (draft) * Quell Homing Workaround and Stat Display Working * Quell, 16 close range instead of 19 * final color adjustment * quell description attempt 1 * quell desc attempt 2 * e * oop * Added Homing to Quell Plasma Shielding --------- Co-authored-by: EggleEgg <125359838+EggleEgg@users.noreply.github.com> --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/content/UnitTypes.java | 73 +++++++++++++------ .../abilities/SuppressionFieldAbility.java | 5 +- 3 files changed, 54 insertions(+), 26 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4fa00bd859..94a4e69a14 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2448,7 +2448,7 @@ unit.collaris.description = Fires long-range fragmenting artillery at enemy targ unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. unit.avert.description = Fires twisting pairs of bullets at enemy targets. unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. +unit.quell.description = Fires long-range homing missiles with unstable plasma shielding at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. Capable of carrying 2x2 structures. unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. Capable of carrying 2x2 structures. diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 6e34ac4264..113193b15a 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3829,8 +3829,10 @@ public class UnitTypes{ engineSize = 4.8f; engineOffset = 61 / 4f; + range = 4.3f * 60f * 1.4f; abilities.add(new SuppressionFieldAbility(){{ + reload = 60f * 8f; orbRadius = 5.3f; y = 1f; }}); @@ -3846,36 +3848,59 @@ public class UnitTypes{ recoil = 1f; rotationLimit = 60f; - bullet = new BulletType(){{ + bullet = new BasicBulletType(4.3f, 70f, "missile-large"){{ shootEffect = Fx.shootBig; smokeEffect = Fx.shootBigSmoke2; shake = 1f; - speed = 0f; + lifetime = 60 * 0.496f; + rangeOverride = 361.2f; + followAimSpeed = 5f; + + width = 12f; + height = 22f; + hitSize = 7f; + hitColor = backColor = trailColor = Pal.sapBulletBack; + trailWidth = 3f; + trailLength = 12; + hitEffect = despawnEffect = Fx.hitBulletColor; + keepVelocity = false; + collidesGround = true; collidesAir = false; - spawnUnit = new MissileUnitType("quell-missile"){{ - targetAir = false; - speed = 4.3f; - maxRange = 6f; - lifetime = 60f * 1.4f; - outlineColor = Pal.darkOutline; - engineColor = trailColor = Pal.sapBulletBack; - engineLayer = Layer.effect; - health = 45; - loopSoundVolume = 0.1f; + //workaround to get the missile to behave like in spawnUnit while still spawning on death + fragRandomSpread = 0; + fragBullets = 1; + fragVelocityMin = 1f; + fragOffsetMax = 1f; - weapons.add(new Weapon(){{ - shootSound = Sounds.none; - shootCone = 360f; - mirror = false; - reload = 1f; - shootOnDeath = true; - bullet = new ExplosionBulletType(110f, 25f){{ - shootEffect = Fx.massiveExplosion; - collidesAir = false; - }}; - }}); + fragBullet = new BulletType(){{ + speed = 0f; + keepVelocity = false; + collidesAir = false; + spawnUnit = new MissileUnitType("quell-missile"){{ + targetAir = false; + speed = 4.3f; + maxRange = 6f; + lifetime = 60f * (1.4f - 0.496f); + outlineColor = Pal.darkOutline; + engineColor = trailColor = Pal.sapBulletBack; + engineLayer = Layer.effect; + health = 45; + loopSoundVolume = 0.1f; + + weapons.add(new Weapon() {{ + shootSound = Sounds.none; + shootCone = 360f; + mirror = false; + reload = 1f; + shootOnDeath = true; + bullet = new ExplosionBulletType(110f, 25f) {{ + shootEffect = Fx.massiveExplosion; + collidesAir = false; + }}; + }}); + }}; }}; }}; }}); @@ -3909,6 +3934,8 @@ public class UnitTypes{ int parts = 10; abilities.add(new SuppressionFieldAbility(){{ + reload = 60 * 15f; + range = 320f; orbRadius = orbRad; particleSize = partRad; y = 10f; diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index be69a45797..9785ac6597 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -17,6 +17,7 @@ public class SuppressionFieldAbility extends Ability{ protected static Rand rand = new Rand(); public float reload = 60f * 1.5f; + public float maxDelay = 60f * 1.5f; public float range = 200f; public float orbRadius = 4.1f, orbMidScl = 0.33f, orbSinScl = 8f, orbSinMag = 1f; @@ -55,9 +56,9 @@ public class SuppressionFieldAbility extends Ability{ public void update(Unit unit){ if(!active) return; - if((timer += Time.delta) >= reload){ + if((timer += Time.delta) >= maxDelay){ Tmp.v1.set(x, y).rotate(unit.rotation - 90f).add(unit); - Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, reload, applyParticleChance, unit, effectColor); + Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, maxDelay, applyParticleChance, unit, effectColor); timer = 0f; } } From ef5fae289c5a2372d1db90bc2d3a3029978cee75 Mon Sep 17 00:00:00 2001 From: Iniquit <45113412+Iniquit@users.noreply.github.com> Date: Fri, 13 Jun 2025 18:06:14 -0400 Subject: [PATCH 50/84] Allow block info hotkey to also work on units (#10894) * Allow the block info key to also work on units * Follow code formatting guidelines --- .../ui/fragments/PlacementFragment.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 6213c923c3..013695c336 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -251,12 +251,16 @@ public class PlacementFragment{ } if(Core.input.keyTap(Binding.blockInfo)){ - var build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); - Block hovering = build == null ? null : build instanceof ConstructBuild c ? c.current : build.block; - Block displayBlock = menuHoverBlock != null ? menuHoverBlock : input.block != null ? input.block : hovering; - if(displayBlock != null && displayBlock.unlockedNow()){ - ui.content.show(displayBlock); - Events.fire(new BlockInfoEvent()); + if(hovered() instanceof Unit unit && unit.type.unlockedNow()){ + ui.content.show(unit.type()); + }else{ + var build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); + Block hovering = build == null ? null : build instanceof ConstructBuild c ? c.current : build.block; + Block displayBlock = menuHoverBlock != null ? menuHoverBlock : input.block != null ? input.block : hovering; + if(displayBlock != null && displayBlock.unlockedNow()){ + ui.content.show(displayBlock); + Events.fire(new BlockInfoEvent()); + } } } From ac1f49aeb53e7968d806d7d8cfb5437b45da18e4 Mon Sep 17 00:00:00 2001 From: grely <182034229+grelylrz@users.noreply.github.com> Date: Sat, 14 Jun 2025 03:07:35 +0500 Subject: [PATCH 51/84] Update servers_v7.json (#10893) --- servers_v7.json | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index d7ced22a1e..3bd2d4a4df 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,27 +1,4 @@ [ - { - "name": "EscoCorp", - "address": [ - "121.127.37.17", - "121.127.37.17:6568", - "121.127.37.17:6569", - "121.127.37.17:6570", - "121.121.37.17:6571", - "121.127.37.17:6572", - "121.127.37.17:6573", - "31.58.85.20:6567", - "194.164.245.218:6567", - "194.164.245.218:6568", - "194.164.245.218:6569", - "194.164.245.218:6570", - "194.164.245.218:6571", - "194.164.245.218:6572", - "194.164.245.218:6573", - "194.164.245.218:6574", - "194.164.245.218:6575", - "194.164.245.218:6576" - ] - }, { "name": "EchoDustry", "address": [ From 339f6fcc9c2bb54038b0ec31cf135189ea23005a Mon Sep 17 00:00:00 2001 From: abcxyzDustry <138785336+abcxyzDustry@users.noreply.github.com> Date: Sat, 14 Jun 2025 05:07:44 +0700 Subject: [PATCH 52/84] Update servers_v7.json (#10924) we negotiated with the mindustry tool programmer, and he agreed to let us merge into one until v8 is actually released, and before leading to the above agreement we used to have a separate group for our server, why did you delete it, hope you agree to approve for us --- servers_v7.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 3bd2d4a4df..9f4177a0a5 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -306,7 +306,12 @@ "server.mindustry-tool.com:10002", "server.mindustry-tool.com:10003", "server.mindustry-tool.com:10004", - "server.mindustry-tool.com:10005" + "server.mindustry-tool.com:10005", + "144.76.57.59:14899", + "144.76.57.59:24942", + "144.76.57.59:19672", + "144.76.57.59:12858", + "144.76.57.59:14761" ] }, { From 807517e828037aaecb867d49c31252fdcce8186f Mon Sep 17 00:00:00 2001 From: Alpha <102418650+Alpha182@users.noreply.github.com> Date: Fri, 13 Jun 2025 23:18:50 +0100 Subject: [PATCH 53/84] Update servers_v7.json (#10903) Changed domains from: mindustry.kalpe.games to mv7-survival.kalpe.games --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 9f4177a0a5..b3d254ae05 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -239,7 +239,7 @@ { "name": "Kalpe Games", "address": [ - "mindustry.kalpe.games" + "mv7-survival.kalpe.games" ] }, { From f4e8325238b10e07c4a8474056a46e40283eacba Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Jun 2025 19:02:40 -0400 Subject: [PATCH 54/84] Fixed player stuck shooting in certain situations --- core/src/mindustry/input/DesktopInput.java | 8 ++++---- gradle.properties | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 21d7026b81..ce505d6091 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -430,10 +430,6 @@ public class DesktopInput extends InputHandler{ } } - if(Core.input.keyRelease(Binding.select)){ - player.shooting = false; - } - if(state.isGame() && !scene.hasDialog() && !scene.hasField()){ if(Core.input.keyTap(Binding.minimap)) ui.minimapfrag.toggle(); if(Core.input.keyTap(Binding.planetMap) && state.isCampaign()) ui.planet.toggle(); @@ -560,6 +556,10 @@ public class DesktopInput extends InputHandler{ changedCursor = false; } } + + if(Core.input.keyRelease(Binding.select)){ + player.shooting = false; + } } @Override diff --git a/gradle.properties b/gradle.properties index b9e9ed4883..c3ff1feb6e 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=7fce1757dc +archash=7c091c5e33 From 96b0544261b9a258cf2ed50b0aa373be9f4306db Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 Jun 2025 10:29:51 -0400 Subject: [PATCH 55/84] Fixed #10927 --- core/src/mindustry/input/DesktopInput.java | 1 + gradle.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index ce505d6091..15719eff81 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -733,6 +733,7 @@ public class DesktopInput extends InputHandler{ mode = none; }else if(!selectPlans.isEmpty()){ flushPlans(selectPlans); + movedPlan = true; }else if(isPlacing()){ selectX = cursorX; selectY = cursorY; diff --git a/gradle.properties b/gradle.properties index c3ff1feb6e..dffe670de1 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=7c091c5e33 +archash=8abaedb419 From 981e954c61b9dc0b09da731dafef8edd9da563dc Mon Sep 17 00:00:00 2001 From: Cardillan <122014763+cardillan@users.noreply.github.com> Date: Sat, 14 Jun 2025 17:21:18 +0200 Subject: [PATCH 56/84] Sense number of graphics operations (#10898) * Sense number of graphics operations * int to long --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/logic/LAccess.java | 1 + core/src/mindustry/world/blocks/logic/LogicDisplay.java | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 94a4e69a14..23220138c7 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/src/mindustry/logic/LAccess.java b/core/src/mindustry/logic/LAccess.java index 8c25b36c75..d9e3805d10 100644 --- a/core/src/mindustry/logic/LAccess.java +++ b/core/src/mindustry/logic/LAccess.java @@ -41,6 +41,7 @@ public enum LAccess{ displayWidth, displayHeight, bufferUsage, + operations, size, solid, dead, diff --git a/core/src/mindustry/world/blocks/logic/LogicDisplay.java b/core/src/mindustry/world/blocks/logic/LogicDisplay.java index 66099d29d5..641366a226 100644 --- a/core/src/mindustry/world/blocks/logic/LogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/LogicDisplay.java @@ -78,6 +78,7 @@ public class LogicDisplay extends Block{ public float stroke = 1f; public LongQueue commands = new LongQueue(256); public @Nullable Mat transform; + public long operations; @Override public void draw(){ @@ -111,6 +112,7 @@ public class LogicDisplay extends Block{ return switch(sensor){ case displayWidth, displayHeight -> displaySize; case bufferUsage -> commands.size; + case operations -> operations; default -> super.sense(sensor); }; } @@ -121,6 +123,8 @@ public class LogicDisplay extends Block{ for(int i = 0; i < added; i++){ commands.addLast(graphicsBuffer.items[i]); } + + operations++; } public void processCommands(){ From 77c4f2704645b76ddc62473228c41d690fdb5726 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Sat, 14 Jun 2025 15:22:35 +0000 Subject: [PATCH 57/84] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 7986182a6f..423144e04f 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 58adf38f19..e26cf2c422 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -2566,6 +2566,7 @@ laccess.id = ID на единица/блок/предмет/течност.\nТ laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Неизвестно lcategory.unknown.description = Некатегоризирани указания. diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index e4a7eab595..62b47deb41 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -2566,6 +2566,7 @@ laccess.id = Identificador d’unitat/bloc/element/líquid.\nÉs l’invers de l laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Desconegut lcategory.unknown.description = Instruccions sense categoria. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 3ad3a37731..3706290f24 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Šířka displeje v pixelech. laccess.displayheight = Výška displeje v pixelech. laccess.bufferusage = Počet nezpracovaných příkazů ve vyrovnávací paměti displeje. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Neznámé lcategory.unknown.description = Nezařazené instrukce. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 331fef6689..35e93ea70e 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 350f6f14b4..fd5e6fbbef 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -2566,6 +2566,7 @@ laccess.id = ID einer Einheit/eines Blocks/eines Materials/einer Flüssigkeit\nT laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unbekannt lcategory.unknown.description = Unbekannte Anweisungen diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 1ad5835978..6229acf3c5 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Desconocido lcategory.unknown.description = Instrucciones no clasificadas. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 0e6855a391..2db9097670 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 1c130a7934..480fb53bbc 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 6be991fd93..b5d3fd2d25 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Tuntematon lcategory.unknown.description = Luokittelemattomat ohjeet. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 782bf79193..af0a61a12f 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 4f7615778f..d007f1d33f 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -2566,6 +2566,7 @@ laccess.id = L'ID d'une unité/bloc/ressource/liquide.\nCeci est l'inverse de l' laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Inconnu lcategory.unknown.description = Instructions sans catégorie. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 1a86faba90..01d71d6379 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -2566,6 +2566,7 @@ laccess.id = Egy egység/blokk/nyersanyag/folyadék azonosítója.\nEz a keresé laccess.displaywidth = Egy kijelzőblokk szélessége pixelben. laccess.displayheight = Egy kijelzőblokk magassága pixelben. laccess.bufferusage = A kijelző grafikus pufferében lévő feldolgozatlan parancsok száma. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Ismeretlen lcategory.unknown.description = Nem kategorizált utasítások. diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 3e7853295a..49010f4fe2 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -2566,6 +2566,7 @@ laccess.id = ID suatu unit/blok/bahan/cairan.\nIni adalah kebalikan dari operasi laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Tak Diketahui lcategory.unknown.description = Instruksi tanpa kategori. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 5872b9d592..d71dc9fea0 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index f35c0ab766..1da365551c 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = 不明 lcategory.unknown.description = 未分類の指示です。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 895b70e0ff..073ea43c10 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -2566,6 +2566,7 @@ laccess.id = 유닛/블록/아이템/액체의 ID.\n이것은 조회 작업의 laccess.displaywidth = 디스플레이 블록의 픽셀 단위 너비. laccess.displayheight = 디스플레이 블록의 픽셀 단위 높이. laccess.bufferusage = 디스플레이의 그래픽 버퍼에 있는 처리되지 않은 명령의 수. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = 알 수 없음 lcategory.unknown.description = 분류되지 않은 설명 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index d2ce17ad7a..93d1edd8a8 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index b8aa0a3769..70a41be30f 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index 769cf64c99..b103ca13b7 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index 620033e883..b5a8d7ed3e 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -2566,6 +2566,7 @@ laccess.id = ID jednostki/bloku/przedmiotu/płynu.\nOdwrotnośc operacji wyszuki laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Inne lcategory.unknown.description = Niezkategoryzowane instrukcje. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 90805c50e1..35e3fac90c 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Desconhecido lcategory.unknown.description = Instruções não categorizadas. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index de4987ca75..9142df0b2a 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Desconhecido lcategory.unknown.description = Instruções não categorizadas. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 00f7698d4a..cd98ba5f86 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index c2106df496..26312e9b8e 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -2566,6 +2566,7 @@ laccess.id = Идентификатор единицы/блока/предмет laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Неизвестно lcategory.unknown.description = Нет категории. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index c003fbed86..5a5b2cb045 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Nepoznato lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index dc342190fe..f2cf7bad1d 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 1694e9a3dc..e1ddd9933f 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -2566,6 +2566,7 @@ laccess.id = ID ของยูนิต/บล็อก/ไอเท็ม/ข laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = ไม่ทราบ lcategory.unknown.description = คำสั่งที่ไม่อยู่ในหมวดหมู่ใดๆเลย diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 486aae1910..2d5e49bb47 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Unknown lcategory.unknown.description = Uncategorized instructions. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index c33a791505..67f95f4878 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -2566,6 +2566,7 @@ laccess.id = Bir birim/blok/eşya/sıvı kimliği. \nBu arama operasyonun zıtt laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = ??? lcategory.unknown.description = Kategorize edilmemiş talimatlar diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 37de88d540..1abcc18959 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -2566,6 +2566,7 @@ laccess.id = Ідентифікатор одиниці/блоку/предмет laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Невідома категорія lcategory.unknown.description = Команди без категорії. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 99a08552ab..7bea0831e0 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -2566,6 +2566,7 @@ laccess.id = Định danh của một đơn vị/khối/vật phẩm/chất lỏ laccess.displaywidth = Độ rộng của một khối hiển thị tính bằng pixel. laccess.displayheight = Độ cao của một khối hiển thị tính bằng pixel. laccess.bufferusage = Số lệnh chưa xử lý trong bộ đệm đồ họa của một hiển thị. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = Không xác định lcategory.unknown.description = Chỉ lệnh không được phân loại. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 142df457db..8513cbd960 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -2566,6 +2566,7 @@ laccess.id = 单位/块/物品/液体的 ID。\n这是 Lookup 的反向操作。 laccess.displaywidth = 显示屏的宽度(以像素为单位)。 laccess.displayheight = 显示屏的高度(以像素为单位)。 laccess.bufferusage = 显示器图形缓冲区中未处理的命令数。 +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = 未知 lcategory.unknown.description = 未分类的指令 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index d1bd362c8e..a71cc86374 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -2566,6 +2566,7 @@ laccess.id = ID of a unit/block/item/liquid.\nThis is the inverse of the lookup laccess.displaywidth = Width of a display block in pixels. laccess.displayheight = Height of a display block in pixels. laccess.bufferusage = Number of unprocessed commands in the graphics buffer of a display. +laccess.operations = Number of operations performed on the block.\nFor displays, returns the number of drawflush operations. lcategory.unknown = 未知 lcategory.unknown.description = Uncategorized instructions. From fbf41641d3d0da6b24976e04752f92bfcbe0bf9e Mon Sep 17 00:00:00 2001 From: Jason <131086642+JasonP01@users.noreply.github.com> Date: Sat, 14 Jun 2025 17:44:03 +0200 Subject: [PATCH 58/84] Update servers_v7.json (#10929) Re-added CN events server --- servers_v7.json | 1 + 1 file changed, 1 insertion(+) diff --git a/servers_v7.json b/servers_v7.json index b3d254ae05..d007a2da46 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -78,6 +78,7 @@ "name": "Chaotic Neutral", "address": [ "37.187.73.180:7011", + "37.187.73.180.7012", "37.187.73.180:7013", "37.187.73.180:7014", "37.187.73.180:7015", From d79802836c5b524c0639e1eb5b85f133e9bb197b Mon Sep 17 00:00:00 2001 From: Jason <131086642+JasonP01@users.noreply.github.com> Date: Sat, 14 Jun 2025 19:27:59 +0200 Subject: [PATCH 59/84] fix typo (#10934) Signed-off-by: Jason <131086642+JasonP01@users.noreply.github.com> --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index d007a2da46..a503cd1491 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -78,7 +78,7 @@ "name": "Chaotic Neutral", "address": [ "37.187.73.180:7011", - "37.187.73.180.7012", + "37.187.73.180:7012", "37.187.73.180:7013", "37.187.73.180:7014", "37.187.73.180:7015", From 3cffbec92cf46c4e75d7c735a98f082d8bb0ccb5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Jun 2025 12:40:09 -0400 Subject: [PATCH 60/84] Don't fill core with hidden items --- core/src/mindustry/core/Logic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 1ea0f5cfb4..3185bc131a 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -472,7 +472,7 @@ public class Logic implements ApplicationListener{ if(rules.fillItems && data.cores.size > 0){ var core = data.cores.first(); content.items().each(i -> { - if(i.isOnPlanet(Vars.state.getPlanet())){ + if(i.isOnPlanet(Vars.state.getPlanet()) && !i.isHidden()){ core.items.set(i, core.getMaximumAccepted(i)); } }); From c27eac9bedea0ee883c16bfa62fe7da91084bfee Mon Sep 17 00:00:00 2001 From: Redstonneur1256 <29004178+Redstonneur1256@users.noreply.github.com> Date: Sun, 15 Jun 2025 21:28:20 +0200 Subject: [PATCH 61/84] Marker `outline` control (#10931) * Marker `outline` control * Text/ShapeText marker outline --- core/src/mindustry/game/MapObjectives.java | 36 +++++--------------- core/src/mindustry/logic/LMarkerControl.java | 1 + gradle.properties | 2 +- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index b554b9e277..3371998af8 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -822,13 +822,8 @@ public class MapObjectives implements Iterable, Eachable fontSize = (float)p1; case textHeight -> textHeight = (float)p1; - case labelFlags -> { - if(!Mathf.equal((float)p1, 0f)){ - flags |= WorldLabel.flagBackground; - }else{ - flags &= ~WorldLabel.flagBackground; - } - } + case outline -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagOutline, !Mathf.equal((float)p1, 0f)); + case labelFlags -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagBackground, !Mathf.equal((float)p1, 0f)); case radius -> radius = (float)p1; case rotation -> rotation = (float)p1; case color -> color.fromDouble(p1); @@ -838,13 +833,7 @@ public class MapObjectives implements Iterable, Eachable { - if(!Mathf.equal((float)p2, 0f)){ - flags |= WorldLabel.flagOutline; - }else{ - flags &= ~WorldLabel.flagOutline; - } - } + case labelFlags -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagOutline, !Mathf.equal((float)p2, 0f)); } } } @@ -962,6 +951,7 @@ public class MapObjectives implements Iterable, Eachable radius = (float)p1; case stroke -> stroke = (float)p1; + case outline -> outline = !Mathf.equal((float)p1, 0f); case rotation -> rotation = (float)p1; case color -> color.fromDouble(p1); case shape -> sides = (int)p1; @@ -1025,25 +1015,14 @@ public class MapObjectives implements Iterable, Eachable fontSize = (float)p1; - case labelFlags -> { - if(!Mathf.equal((float)p1, 0f)){ - flags |= WorldLabel.flagBackground; - }else{ - flags &= ~WorldLabel.flagBackground; - } - } + case outline -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagOutline, !Mathf.equal((float)p1, 0f)); + case labelFlags -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagBackground, !Mathf.equal((float)p1, 0f)); } } if(!Double.isNaN(p2)){ switch(type){ - case labelFlags -> { - if(!Mathf.equal((float)p2, 0f)){ - flags |= WorldLabel.flagOutline; - }else{ - flags &= ~WorldLabel.flagOutline; - } - } + case labelFlags -> flags = (byte)Pack.bitmask(flags, WorldLabel.flagOutline, !Mathf.equal((float)p2, 0f)); } } } @@ -1101,6 +1080,7 @@ public class MapObjectives implements Iterable, Eachable endPos.x = (float)p1 * tilesize; case stroke -> stroke = (float)p1; case color -> color1.set(color2.fromDouble(p1)); + case outline -> outline = !Mathf.equal((float)p1, 0f); } } diff --git a/core/src/mindustry/logic/LMarkerControl.java b/core/src/mindustry/logic/LMarkerControl.java index c24775af02..57780d8187 100644 --- a/core/src/mindustry/logic/LMarkerControl.java +++ b/core/src/mindustry/logic/LMarkerControl.java @@ -11,6 +11,7 @@ public enum LMarkerControl{ color("color"), radius("radius"), stroke("stroke"), + outline("outline"), rotation("rotation"), shape("sides", "fill", "outline"), arc("start", "end"), diff --git a/gradle.properties b/gradle.properties index dffe670de1..08ad9ff775 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=8abaedb419 +archash=79c4cf021d \ No newline at end of file From 067e24318c935f559636d6cdf619c43152a77ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BE=D0=BB=D1=88=D0=B5=D0=B1=D0=BD=D0=B8=D0=BA?= <127457914+VikoMin@users.noreply.github.com> Date: Mon, 16 Jun 2025 07:23:23 +0700 Subject: [PATCH 62/84] Update servers_v7.json (#10937) For new servers --- servers_v7.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index a503cd1491..f97d325400 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -278,11 +278,11 @@ "194.164.245.218:6569", "194.164.245.218:6570", "194.164.245.218:6571", + "194.164.245.218:6572", + "194.164.245.218:6573", + "194.164.245.218:6574", "194.164.245.218:6597", - "194.164.245.218:6598", - "194.164.245.218:6599", - "194.164.245.218:6600", - "194.164.245.218:6601" + "194.164.245.218:6598" ] }, { From 7a1279fc306a0b0106d7d85b001807533f8a40d3 Mon Sep 17 00:00:00 2001 From: grely <182034229+grelylrz@users.noreply.github.com> Date: Mon, 16 Jun 2025 21:48:12 +0500 Subject: [PATCH 63/84] Update servers_v7.json | replaced ip's (#10935) * Update servers_v7.json | replaced ip's * Update servers_v7.json * Update servers_v7.json --- servers_v7.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/servers_v7.json b/servers_v7.json index f97d325400..0ae0dd8831 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,4 +1,16 @@ [ + { + "name": "EscoCorp Servers", + "address": [ + "95.215.56.128", + "95.215.56.128:6568", + "95.215.56.128:6569", + "95.215.56.128:6570", + "95.215.56.128:6571", + "95.215.56.128:6572", + "95.215.56.128:6573" + ] + }, { "name": "EchoDustry", "address": [ From 2d14cd2232d15ee2ef38d57c289bb10183c19390 Mon Sep 17 00:00:00 2001 From: grely <182034229+grelylrz@users.noreply.github.com> Date: Mon, 16 Jun 2025 22:27:12 +0500 Subject: [PATCH 64/84] Update servers_v7.json | Okay, this looks like crap. (#10941) --- servers_v7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers_v7.json b/servers_v7.json index 0ae0dd8831..6d33eca3db 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,6 +1,6 @@ [ { - "name": "EscoCorp Servers", + "name": "EscoCorp", "address": [ "95.215.56.128", "95.215.56.128:6568", From 536f4db5fe5b91f455c9b904b8572d3399819c27 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 17 Jun 2025 11:20:21 -0400 Subject: [PATCH 65/84] Sublimate collision fix --- core/src/mindustry/content/Blocks.java | 1 + core/src/mindustry/entities/Damage.java | 16 ++++++++-------- .../entities/bullet/ContinuousBulletType.java | 2 +- .../entities/bullet/RailBulletType.java | 2 +- core/src/mindustry/io/MapIO.java | 6 ++++-- gradle.properties | 2 +- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 48c2ebd1d5..a90ba05e77 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4382,6 +4382,7 @@ public class Blocks{ targetInterval = 5f; newTargetInterval = 30f; targetUnderBlocks = false; + shootY = 7.5f; float r = range = 130f; diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index 767a7ace78..a3fcd86e8f 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -222,38 +222,38 @@ public class Damage{ public static float collideLaser(Bullet b, float length, boolean large, boolean laser, int pierceCap){ float resultLength = findPierceLength(b, pierceCap, laser, length); - collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), resultLength, large, laser, pierceCap); + collideLine(b, b.team, b.x, b.y, b.rotation(), resultLength, large, laser, pierceCap); b.fdata = resultLength; return resultLength; } - public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length){ - collideLine(hitter, team, effect, x, y, angle, length, false); + public static void collideLine(Bullet hitter, Team team, float x, float y, float angle, float length){ + collideLine(hitter, team, x, y, angle, length, false); } /** * Damages entities in a line. * Only enemies of the specified team are damaged. */ - public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large){ - collideLine(hitter, team, effect, x, y, angle, length, large, true); + public static void collideLine(Bullet hitter, Team team, float x, float y, float angle, float length, boolean large){ + collideLine(hitter, team, x, y, angle, length, large, true); } /** * Damages entities in a line. * Only enemies of the specified team are damaged. */ - public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large, boolean laser){ - collideLine(hitter, team, effect, x, y, angle, length, large, laser, -1); + public static void collideLine(Bullet hitter, Team team, float x, float y, float angle, float length, boolean large, boolean laser){ + collideLine(hitter, team, x, y, angle, length, large, laser, -1); } /** * Damages entities in a line. * Only enemies of the specified team are damaged. */ - public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large, boolean laser, int pierceCap){ + public static void collideLine(Bullet hitter, Team team, float x, float y, float angle, float length, boolean large, boolean laser, int pierceCap){ length = findLength(hitter, length, laser, pierceCap); hitter.fdata = length; diff --git a/core/src/mindustry/entities/bullet/ContinuousBulletType.java b/core/src/mindustry/entities/bullet/ContinuousBulletType.java index a9ea18876b..9dfb85ad25 100644 --- a/core/src/mindustry/entities/bullet/ContinuousBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousBulletType.java @@ -85,7 +85,7 @@ public class ContinuousBulletType extends BulletType{ if(timescaleDamage && b.owner instanceof Building build){ b.damage *= build.timeScale(); } - Damage.collideLine(b, b.team, hitEffect, b.x, b.y, b.rotation(), currentLength(b), largeHit, laserAbsorb, pierceCap); + Damage.collideLine(b, b.team, b.x, b.y, b.rotation(), currentLength(b), largeHit, laserAbsorb, pierceCap); b.damage = damage; } diff --git a/core/src/mindustry/entities/bullet/RailBulletType.java b/core/src/mindustry/entities/bullet/RailBulletType.java index dfa41520f4..ea5f336d22 100644 --- a/core/src/mindustry/entities/bullet/RailBulletType.java +++ b/core/src/mindustry/entities/bullet/RailBulletType.java @@ -59,7 +59,7 @@ public class RailBulletType extends BulletType{ super.init(b); b.fdata = length; - Damage.collideLine(b, b.team, b.type.hitEffect, b.x, b.y, b.rotation(), length, false, false, pierceCap); + Damage.collideLine(b, b.team, b.x, b.y, b.rotation(), length, false, false, pierceCap); float resultLen = b.fdata; Vec2 nor = Tmp.v1.trns(b.rotation(), 1f).nor(); diff --git a/core/src/mindustry/io/MapIO.java b/core/src/mindustry/io/MapIO.java index 172118097a..26cc9cd8ac 100644 --- a/core/src/mindustry/io/MapIO.java +++ b/core/src/mindustry/io/MapIO.java @@ -172,7 +172,7 @@ public class MapIO{ for(Tile tile : tiles){ //while synthetic blocks are possible, most of their data is lost, so in order to avoid questions like //"why is there air under my drill" and "why are all my conveyors facing right", they are disabled - int color = tile.block().hasColor && !tile.block().synthetic() ? tile.block().mapColor.rgba() : tile.floor().mapColor.rgba(); + int color = tile.block().hasColor && !tile.block().hasBuilding() ? tile.block().mapColor.rgba() : tile.floor().mapColor.rgba(); pix.set(tile.x, tiles.height - 1 - tile.y, color); } return pix; @@ -183,6 +183,9 @@ public class MapIO{ int color = pixmap.get(tile.x, pixmap.height - 1 - tile.y); Block block = ColorMapper.get(color); + //ignore buildings; reading images is only intended for environment tiles + if(block.hasBuilding()) continue; + if(block.isOverlay()){ tile.setOverlay(block.asFloor()); }else if(block.isFloor()){ @@ -194,7 +197,6 @@ public class MapIO{ } } - //guess at floors by grabbing a random adjacent floor for(Tile tile : tiles){ //default to stone floor if(tile.floor() == Blocks.air){ diff --git a/gradle.properties b/gradle.properties index dffe670de1..ce43e41c4b 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=8abaedb419 +archash=79c4cf021d From 7a33de8fe3006eb123447dbb7fa089d36f34741f Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 17 Jun 2025 12:23:49 -0400 Subject: [PATCH 66/84] Fixed #10942 --- core/src/mindustry/editor/DrawOperation.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/mindustry/editor/DrawOperation.java b/core/src/mindustry/editor/DrawOperation.java index a49b09525e..6ef2d2e3b4 100755 --- a/core/src/mindustry/editor/DrawOperation.java +++ b/core/src/mindustry/editor/DrawOperation.java @@ -64,6 +64,9 @@ public class DrawOperation{ Block block = content.block(to); tile.setBlock(block, tile.team(), tile.build == null ? 0 : tile.build.rotation); + if(tile.build != null){ + tile.build.enabled = true; + } tile.getLinkedTiles(t -> editor.renderer.updatePoint(t.x, t.y)); }else if(type == OpType.rotation.ordinal()){ From 0185b08ca766bfede446376f9de43bde7b98fd03 Mon Sep 17 00:00:00 2001 From: The4codeblocks <72419529+The4codeblocks@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:36:42 -0500 Subject: [PATCH 67/84] canvas read/write + multiplayer overwrite bug fix (#10899) * stuff * Update CanvasBlock.java * canvas read/write * updated flag * dispose on every possible closing condition (back/cancel/ok) * arraycopy * hide listener * partial colons * fix updated and dedupe closing * typo? --- core/src/mindustry/logic/LExecutor.java | 5 ++ .../world/blocks/logic/CanvasBlock.java | 73 +++++++++++++++---- 2 files changed, 62 insertions(+), 16 deletions(-) diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 043dcc9f7c..8da4f9201f 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -25,6 +25,7 @@ import mindustry.ui.*; import mindustry.world.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.logic.*; +import mindustry.world.blocks.logic.CanvasBlock.*; import mindustry.world.blocks.logic.LogicBlock.*; import mindustry.world.blocks.logic.LogicDisplay.*; import mindustry.world.blocks.logic.MemoryBlock.*; @@ -581,6 +582,8 @@ public class LExecutor{ } }else if(target.isobj && target.objval instanceof CharSequence str){ output.setnum(address < 0 || address >= str.length() ? Double.NaN : (int)str.charAt(address)); + }else if(from instanceof CanvasBuild canvas && (exec.privileged || (from.team == exec.team))){ + output.setnum(canvas.getPixel(address)); } } } @@ -611,6 +614,8 @@ public class LExecutor{ toVar.numval = value.numval; toVar.isobj = value.isobj; } + }else if(from instanceof CanvasBuild canvas && (exec.privileged || (from.team == exec.team))){ + canvas.setPixel(address, (int)(value.numval)); } } } diff --git a/core/src/mindustry/world/blocks/logic/CanvasBlock.java b/core/src/mindustry/world/blocks/logic/CanvasBlock.java index 9bab59a42a..5ec712dcb9 100644 --- a/core/src/mindustry/world/blocks/logic/CanvasBlock.java +++ b/core/src/mindustry/world/blocks/logic/CanvasBlock.java @@ -17,6 +17,7 @@ import mindustry.annotations.Annotations.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.ui.*; import mindustry.world.*; @@ -35,7 +36,7 @@ public class CanvasBlock extends Block{ public @Load("@-corner1") TextureRegion corner1; public @Load("@-corner2") TextureRegion corner2; - protected @Nullable Pixmap previewPixmap; + protected @Nullable Pixmap previewPixmap; // please use only for previews protected @Nullable Texture previewTexture; protected int tempBlend = 0; @@ -49,7 +50,7 @@ public class CanvasBlock extends Block{ config(byte[].class, (CanvasBuild build, byte[] bytes) -> { if(build.data.length == bytes.length){ - build.data = bytes; + System.arraycopy(bytes, 0, build.data, 0, bytes.length); build.updateTexture(); } }); @@ -65,13 +66,15 @@ public class CanvasBlock extends Block{ bitsPerPixel = Mathf.log2(Mathf.nextPowerOfTwo(palette.length)); clipSize = Math.max(clipSize, size * 8 - padding); + + previewPixmap = new Pixmap(canvasSize, canvasSize); } @Override public void drawPlanRegion(BuildPlan plan, Eachable list){ //only draw the preview in schematics, as it lags otherwise if(!plan.worldContext && plan.config instanceof byte[] data){ - Pixmap pix = makePixmap(data); + Pixmap pix = makePixmap(data, previewPixmap); if(previewTexture == null){ previewTexture = new Texture(pix); @@ -123,20 +126,15 @@ public class CanvasBlock extends Block{ } } - /** returns the same pixmap instance each time, use with care */ - public Pixmap makePixmap(byte[] data){ - if(previewPixmap == null){ - previewPixmap = new Pixmap(canvasSize, canvasSize); - } - + public Pixmap makePixmap(byte[] data, Pixmap target){ int bpp = bitsPerPixel; int pixels = canvasSize * canvasSize; for(int i = 0; i < pixels; i++){ int bitOffset = i * bpp; int pal = getByte(data, bitOffset); - previewPixmap.set(i % canvasSize, i / canvasSize, palette[pal]); + target.set(i % canvasSize, i / canvasSize, palette[pal]); } - return previewPixmap; + return target; } protected int getByte(byte[] data, int bitOffset){ @@ -152,11 +150,41 @@ public class CanvasBlock extends Block{ public @Nullable Texture texture; public byte[] data = new byte[Mathf.ceil(canvasSize * canvasSize * bitsPerPixel / 8f)]; public int blending; + + protected boolean updated = false; + + public void setPixel(int pos, int index){ + if(pos < canvasSize * canvasSize && pos >= 0 && index >= 0 && index < palette.length){ + setByte(data, pos * bitsPerPixel, index); + updated = true; + } + } + + public void setPixel(int x, int y, int index){ + if(x >= 0 && y >= 0 && x < canvasSize && y < canvasSize && index >= 0 && index < palette.length){ + setByte(data, (y * canvasSize + x) * bitsPerPixel, index); + updated = true; + } + } + + public int getPixel(int pos){ + if(pos >= 0 && pos < canvasSize * canvasSize){ + return getByte(data, pos * bitsPerPixel); + } + return 0; + } + + public int getPixel(int x, int y){ + if(x >= 0 && y >= 0 && x < canvasSize && y < canvasSize){ + return getByte(data, (y * canvasSize + x) * bitsPerPixel); + } + return 0; + } public void updateTexture(){ if(headless) return; - Pixmap pix = makePixmap(data); + Pixmap pix = makePixmap(data, previewPixmap); if(texture != null){ texture.draw(pix); }else{ @@ -214,7 +242,8 @@ public class CanvasBlock extends Block{ super.draw(); } - if(texture == null){ + if(texture == null || updated){ + updated = false; updateTexture(); } Tmp.tr1.set(texture); @@ -237,6 +266,14 @@ public class CanvasBlock extends Block{ } } } + + @Override + public double sense(LAccess sensor){ + return switch(sensor){ + case displayWidth, displayHeight -> canvasSize; + default -> super.sense(sensor); + }; + } @Override public void remove(){ @@ -252,12 +289,17 @@ public class CanvasBlock extends Block{ table.button(Icon.pencil, Styles.cleari, () -> { Dialog dialog = new Dialog(); - Pixmap pix = makePixmap(data); + Pixmap pix = makePixmap(data, new Pixmap(canvasSize, canvasSize)); Texture texture = new Texture(pix); int[] curColor = {palette[0]}; boolean[] modified = {false}; boolean[] fill = {false}; - + + dialog.hidden(() -> { + texture.dispose(); + pix.dispose(); + }); + dialog.resized(dialog::hide); dialog.cont.table(Tex.pane, body -> { @@ -395,7 +437,6 @@ public class CanvasBlock extends Block{ dialog.buttons.button("@ok", Icon.ok, () -> { if(modified[0]){ configure(packPixmap(pix)); - texture.dispose(); } dialog.hide(); }); From b73c85ff75f811a53efb5a067d5c8f76f4b7d508 Mon Sep 17 00:00:00 2001 From: Redstonneur1256 <29004178+Redstonneur1256@users.noreply.github.com> Date: Thu, 19 Jun 2025 01:05:08 +0200 Subject: [PATCH 68/84] Quad marker tweaks (#10787) * Don't clamp UV on repeat textures * Cleanup --- core/src/mindustry/game/MapObjectives.java | 37 +++++++++++++--------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index 3371998af8..31fac3c1e0 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -3,6 +3,7 @@ package mindustry.game; import arc.*; import arc.func.*; import arc.graphics.*; +import arc.graphics.Texture.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; @@ -98,7 +99,7 @@ public class MapObjectives implements Iterable, Eachable prov) { + public static void registerLegacyMarker(String name, Prov prov){ Class type = prov.get().getClass(); markerNameToType.put(name, prov); @@ -663,7 +664,7 @@ public class MapObjectives implements Iterable, Eachable, Eachable, Eachable ((int)p1 == 0 ? pos : (int)p1 == 1 ? endPos : Tmp.v1).x = (float)p2 * tilesize; case colori -> ((int)p1 == 0 ? color1 : (int)p1 == 1 ? color2 : Tmp.c1).fromDouble(p2); } @@ -1179,7 +1180,7 @@ public class MapObjectives implements Iterable, Eachable, Eachable, Eachable= 0 && i < 4){ if(!Double.isNaN(x)) vertices[i * 6] = (float)x * tilesize; @@ -1270,11 +1272,16 @@ public class MapObjectives implements Iterable, Eachable= 0 && i < 4){ if(fetchedRegion == null) setTexture(textureName); - if(!Double.isNaN(u)) vertices[i * 6 + 3] = Mathf.map(Mathf.clamp((float)u), fetchedRegion.u, fetchedRegion.u2); - if(!Double.isNaN(v)) vertices[i * 6 + 4] = Mathf.map(1 - Mathf.clamp((float)v), fetchedRegion.v, fetchedRegion.v2); + if(!Double.isNaN(u)){ + boolean clampU = fetchedRegion.texture.getUWrap() != TextureWrap.mirroredRepeat && fetchedRegion.texture.getUWrap() != TextureWrap.repeat; + vertices[i * 6 + 3] = Mathf.map(clampU ? Mathf.clamp((float)u) : (float)u, fetchedRegion.u, fetchedRegion.u2); + } + if(!Double.isNaN(v)){ + boolean clampV = fetchedRegion.texture.getVWrap() != TextureWrap.mirroredRepeat && fetchedRegion.texture.getVWrap() != TextureWrap.repeat; + vertices[i * 6 + 4] = Mathf.map(clampV ? 1 - Mathf.clamp((float)v) : 1 - (float)v, fetchedRegion.v, fetchedRegion.v2); + } } } - } private static void lookupRegion(String name, TextureRegion out){ From 8569eed795dcf4889c337ac9612729352419552b Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Jun 2025 19:14:10 -0400 Subject: [PATCH 69/84] Closes Anuken/Mindustry-Suggestions/issues/5674 --- .../mindustry/world/blocks/power/LightBlock.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/src/mindustry/world/blocks/power/LightBlock.java b/core/src/mindustry/world/blocks/power/LightBlock.java index 529ba33ac0..d36cc97e72 100644 --- a/core/src/mindustry/world/blocks/power/LightBlock.java +++ b/core/src/mindustry/world/blocks/power/LightBlock.java @@ -58,10 +58,26 @@ public class LightBlock extends Block{ Placement.calculateNodes(points, this, rotation, (point, other) -> point.dst2(other) <= placeRadius2); } + @Override + public int minimapColor(Tile tile){ + var build = (LightBuild)tile.build; + //make sure A is 255 + return build == null ? 0 : build.color | 0xff; + } + public class LightBuild extends Building{ public int color = Pal.accent.rgba(); public float smoothTime = 1f; + @Override + public void configured(Unit player, Object value){ + super.configured(player, value); + + if(!headless){ + renderer.minimap.update(tile); + } + } + @Override public void control(LAccess type, double p1, double p2, double p3, double p4){ if(type == LAccess.color){ From f7c72e950ca6aac5744b5c7cc521c38f74b36195 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Jun 2025 20:11:06 -0400 Subject: [PATCH 70/84] Illuminator rendering optimization --- core/src/mindustry/world/blocks/power/LightBlock.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/mindustry/world/blocks/power/LightBlock.java b/core/src/mindustry/world/blocks/power/LightBlock.java index d36cc97e72..fafe8e2060 100644 --- a/core/src/mindustry/world/blocks/power/LightBlock.java +++ b/core/src/mindustry/world/blocks/power/LightBlock.java @@ -1,6 +1,5 @@ package mindustry.world.blocks.power; -import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; @@ -96,11 +95,9 @@ public class LightBlock extends Block{ @Override public void draw(){ super.draw(); - Draw.blend(Blending.additive); - Draw.color(Tmp.c1.set(color), efficiency * 0.3f); + Draw.color(Tmp.c1.set(color), 0.4f); Draw.rect(topRegion, x, y); Draw.color(); - Draw.blend(); } @Override From 78e5ff2636c54abc3e453d5ea76108dbd8eca75e Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 18 Jun 2025 21:08:11 -0400 Subject: [PATCH 71/84] Another possible sublimate fix --- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/world/blocks/power/LightBlock.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index a90ba05e77..ad48586fcf 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4382,7 +4382,7 @@ public class Blocks{ targetInterval = 5f; newTargetInterval = 30f; targetUnderBlocks = false; - shootY = 7.5f; + shootY = 8f; float r = range = 130f; diff --git a/core/src/mindustry/world/blocks/power/LightBlock.java b/core/src/mindustry/world/blocks/power/LightBlock.java index fafe8e2060..374ec2d568 100644 --- a/core/src/mindustry/world/blocks/power/LightBlock.java +++ b/core/src/mindustry/world/blocks/power/LightBlock.java @@ -95,7 +95,7 @@ public class LightBlock extends Block{ @Override public void draw(){ super.draw(); - Draw.color(Tmp.c1.set(color), 0.4f); + Draw.color(Tmp.c1.set(color).a(0.4f)); Draw.rect(topRegion, x, y); Draw.color(); } From 7447e1f2bbe6eb4c825be51be24f9403f4086e93 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 19 Jun 2025 14:21:42 -0400 Subject: [PATCH 72/84] Fixed #10948 --- core/src/mindustry/content/Blocks.java | 1 - core/src/mindustry/world/blocks/power/LightBlock.java | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index ad48586fcf..4491580f73 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -4419,7 +4419,6 @@ public class Blocks{ ); scaledHealth = 210; - shootY = 7f; size = 3; researchCost = with(Items.tungsten, 400, Items.silicon, 400, Items.oxide, 80, Items.beryllium, 800); diff --git a/core/src/mindustry/world/blocks/power/LightBlock.java b/core/src/mindustry/world/blocks/power/LightBlock.java index 374ec2d568..041399f5b7 100644 --- a/core/src/mindustry/world/blocks/power/LightBlock.java +++ b/core/src/mindustry/world/blocks/power/LightBlock.java @@ -72,15 +72,15 @@ public class LightBlock extends Block{ public void configured(Unit player, Object value){ super.configured(player, value); - if(!headless){ - renderer.minimap.update(tile); - } + if(!headless) renderer.minimap.update(tile); } @Override public void control(LAccess type, double p1, double p2, double p3, double p4){ if(type == LAccess.color){ color = Tmp.c1.fromDouble(p1).rgba8888(); + + if(!headless) renderer.minimap.update(tile); } super.control(type, p1, p2, p3, p4); From 48d09decf51c1316fbd258fabcf5f7fa88afc1a0 Mon Sep 17 00:00:00 2001 From: Tegas Aziz <49786146+WilloIzCitron@users.noreply.github.com> Date: Sun, 22 Jun 2025 08:15:57 +0700 Subject: [PATCH 73/84] Update README.md (#10954) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 30e864545c..25cc008cd0 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md). Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). If you'd rather compile on your own, follow these instructions. -First, make sure you have [JDK 17](https://adoptium.net/archive.html?variant=openjdk17&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: +First, make sure you have [JDK 17](https://adoptium.net/temurin/releases/?os=any&arch=any&version=17) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: ### Windows From 4f04bf4b113802c9b35bbb806ad621a48cc81391 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 21 Jun 2025 21:18:25 -0400 Subject: [PATCH 74/84] Fixed #10956 --- core/src/mindustry/ai/UnitGroup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ai/UnitGroup.java b/core/src/mindustry/ai/UnitGroup.java index 0c0366cf29..b79fde2099 100644 --- a/core/src/mindustry/ai/UnitGroup.java +++ b/core/src/mindustry/ai/UnitGroup.java @@ -158,7 +158,7 @@ public class UnitGroup{ } private void updateRaycast(int index, Vec2 dest, Vec2 v1){ - if(collisionLayer != PhysicsProcess.layerFlying){ + if(collisionLayer != PhysicsProcess.layerFlying && originalPositions != null && positions != null){ //coordinates in world space float From 289889a68566cf70444e622f029e3468154047d8 Mon Sep 17 00:00:00 2001 From: Cardillan <122014763+cardillan@users.noreply.github.com> Date: Sun, 22 Jun 2025 03:20:43 +0200 Subject: [PATCH 75/84] Small canvas read/write fixes (#10955) --- core/src/mindustry/logic/LExecutor.java | 2 +- core/src/mindustry/world/blocks/logic/CanvasBlock.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 8da4f9201f..29172fc63f 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -615,7 +615,7 @@ public class LExecutor{ toVar.isobj = value.isobj; } }else if(from instanceof CanvasBuild canvas && (exec.privileged || (from.team == exec.team))){ - canvas.setPixel(address, (int)(value.numval)); + canvas.setPixel(address, value.numi()); } } } diff --git a/core/src/mindustry/world/blocks/logic/CanvasBlock.java b/core/src/mindustry/world/blocks/logic/CanvasBlock.java index 5ec712dcb9..6e4e4ab782 100644 --- a/core/src/mindustry/world/blocks/logic/CanvasBlock.java +++ b/core/src/mindustry/world/blocks/logic/CanvasBlock.java @@ -167,11 +167,11 @@ public class CanvasBlock extends Block{ } } - public int getPixel(int pos){ + public double getPixel(int pos){ if(pos >= 0 && pos < canvasSize * canvasSize){ return getByte(data, pos * bitsPerPixel); } - return 0; + return Double.NaN; } public int getPixel(int x, int y){ From b3cdec91b8d47d662cfa20e92aea5cd998fb4c6d Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Jun 2025 12:19:13 -0400 Subject: [PATCH 76/84] Fixed #10962 --- core/src/mindustry/input/MobileInput.java | 4 ++-- .../mindustry/world/blocks/payloads/PayloadConveyor.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 5b61bcb907..3c291a14a3 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -98,7 +98,7 @@ public class MobileInput extends InputHandler implements GestureListener{ }else{ Building tile = world.buildWorld(x, y); - if((tile != null && player.team() != tile.team && (tile.team != Team.derelict || state.rules.coreCapture)) || (tile != null && player.unit().type.canHeal && tile.team == player.team() && tile.damaged())){ + if((tile != null && (player.team() != tile.team && (tile.team != Team.derelict || state.rules.coreCapture)) && player.unit().type.canAttack) || (tile != null && player.unit().type.canHeal && tile.team == player.team() && tile.damaged())){ player.unit().mineTile = null; target = tile; } @@ -1078,7 +1078,7 @@ public class MobileInput extends InputHandler implements GestureListener{ //this may be a bad idea, aiming for a point far in front could work better, test it out unit.aim(Core.input.mouseWorldX(), Core.input.mouseWorldY()); }else{ - Vec2 intercept = Predict.intercept(unit, target, bulletSpeed); + Vec2 intercept = player.unit().type.weapons.contains(w -> w.predictTarget) ? Predict.intercept(unit, target, bulletSpeed) : Tmp.v1.set(target); player.mouseX = intercept.x; player.mouseY = intercept.y; diff --git a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java index a2bceb9977..37f489f8d9 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadConveyor.java @@ -48,12 +48,12 @@ public class PayloadConveyor extends Block{ public void drawPlace(int x, int y, int rotation, boolean valid){ super.drawPlace(x, y, rotation, valid); - int ntrns = 1 + size/2; + int ntrns = size; for(int i = 0; i < 4; i++){ - Building other = world.build(x + Geometry.d4x[i] * ntrns, y + Geometry.d4y[i] * ntrns); - if(other != null && other.block.outputsPayload && other.block.size == size){ - Drawf.selected(other.tileX(), other.tileY(), other.block, other.team.color); + Tile tile = world.tile(x + Geometry.d4x[i] * ntrns, y + Geometry.d4y[i] * ntrns); + if(tile != null && tile.build != null && tile.isCenter() && tile.build.block.outputsPayload && tile.build.block.size == size && (i == rotation || tile.block().rotate && i == (tile.build.rotation + 2) % 4)){ + Drawf.selected(tile.x, tile.y, tile.block(), tile.build.team.color); } } } From 9bd1c7d783fd0b3ab0c4ee771dab352299f08bb8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Jun 2025 14:36:29 -0400 Subject: [PATCH 77/84] Hidden sector submission thread link button --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/Vars.java | 2 + .../src/mindustry/maps/SectorSubmissions.java | 73 +++++++++++++++++++ .../mindustry/ui/dialogs/PlanetDialog.java | 9 +++ 4 files changed, 85 insertions(+) create mode 100644 core/src/mindustry/maps/SectorSubmissions.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 23220138c7..fb255a8813 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index e2394a3c0d..ecaca32343 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -51,6 +51,8 @@ public class Vars implements Loadable{ public static final int minModGameVersion = 136; /** Min game version for java mods specifically - this is higher, as Java mods have more breaking changes. */ public static final int minJavaModGameVersion = 147; + /** If true, a button to view sector submission threads is shown. */ + public static boolean showSectorSubmissions = true; /** If true, the BE server list is always used. */ public static boolean forceBeServers = false; /** If true, mod code and scripts do not run. For internal testing only. This WILL break mods if enabled. */ diff --git a/core/src/mindustry/maps/SectorSubmissions.java b/core/src/mindustry/maps/SectorSubmissions.java new file mode 100644 index 0000000000..8fc5758c6c --- /dev/null +++ b/core/src/mindustry/maps/SectorSubmissions.java @@ -0,0 +1,73 @@ +package mindustry.maps; + +import arc.struct.*; +import arc.util.*; +import mindustry.type.*; + +/** Class for temporarily (?) storing links to map submissions on Discord. */ +public class SectorSubmissions{ + private static IntMap hiddenMap = new IntMap<>(); + + static{ + //autogenerated + hiddenMap.put(0, "https://discord.com/channels/391020510269669376/1379926780860698784"); + hiddenMap.put(6, "https://discord.com/channels/391020510269669376/1379926782966497322"); + hiddenMap.put(13, "https://discord.com/channels/391020510269669376/1379926785164312810"); + hiddenMap.put(16, "https://discord.com/channels/391020510269669376/1379926788280680579"); + hiddenMap.put(19, "https://discord.com/channels/391020510269669376/1379926792479183019"); + hiddenMap.put(20, "https://discord.com/channels/391020510269669376/1379926794114961634"); + hiddenMap.put(24, "https://discord.com/channels/391020510269669376/1379926797042581716"); + hiddenMap.put(27, "https://discord.com/channels/391020510269669376/1379926798833287289"); + hiddenMap.put(30, "https://discord.com/channels/391020510269669376/1379926800854945823"); + hiddenMap.put(47, "https://discord.com/channels/391020510269669376/1379926802591645820"); + hiddenMap.put(55, "https://discord.com/channels/391020510269669376/1379926823277695189"); + hiddenMap.put(66, "https://discord.com/channels/391020510269669376/1379926825941078128"); + hiddenMap.put(67, "https://discord.com/channels/391020510269669376/1379926828696866898"); + hiddenMap.put(69, "https://discord.com/channels/391020510269669376/1379926831326822610"); + hiddenMap.put(76, "https://discord.com/channels/391020510269669376/1379926833411391580"); + hiddenMap.put(92, "https://discord.com/channels/391020510269669376/1379926835621527615"); + hiddenMap.put(94, "https://discord.com/channels/391020510269669376/1379926838079393802"); + hiddenMap.put(103, "https://discord.com/channels/391020510269669376/1379926839559979030"); + hiddenMap.put(111, "https://discord.com/channels/391020510269669376/1379926842659569864"); + hiddenMap.put(116, "https://discord.com/channels/391020510269669376/1379926845058711734"); + hiddenMap.put(127, "https://discord.com/channels/391020510269669376/1379926869465632829"); + hiddenMap.put(133, "https://discord.com/channels/391020510269669376/1379926871227240770"); + hiddenMap.put(138, "https://discord.com/channels/391020510269669376/1379926873152164004"); + hiddenMap.put(150, "https://discord.com/channels/391020510269669376/1379926876457537547"); + hiddenMap.put(157, "https://discord.com/channels/391020510269669376/1379926879502598155"); + hiddenMap.put(161, "https://discord.com/channels/391020510269669376/1379926882203730024"); + hiddenMap.put(162, "https://discord.com/channels/391020510269669376/1379926884606808247"); + hiddenMap.put(176, "https://discord.com/channels/391020510269669376/1379926887203213353"); + hiddenMap.put(180, "https://discord.com/channels/391020510269669376/1379926889648619580"); + hiddenMap.put(185, "https://discord.com/channels/391020510269669376/1379926892181983283"); + hiddenMap.put(191, "https://discord.com/channels/391020510269669376/1379926912004001914"); + hiddenMap.put(192, "https://discord.com/channels/391020510269669376/1379926914122256449"); + hiddenMap.put(197, "https://discord.com/channels/391020510269669376/1379926916911599676"); + hiddenMap.put(200, "https://discord.com/channels/391020510269669376/1379926918429806755"); + hiddenMap.put(204, "https://discord.com/channels/391020510269669376/1379926921130807447"); + hiddenMap.put(207, "https://discord.com/channels/391020510269669376/1379926923370827827"); + hiddenMap.put(225, "https://discord.com/channels/391020510269669376/1379926925719376152"); + hiddenMap.put(230, "https://discord.com/channels/391020510269669376/1379926927585841163"); + hiddenMap.put(237, "https://discord.com/channels/391020510269669376/1379926929636851812"); + hiddenMap.put(242, "https://discord.com/channels/391020510269669376/1379926931923013843"); + hiddenMap.put(243, "https://discord.com/channels/391020510269669376/1379926955423694978"); + hiddenMap.put(244, "https://discord.com/channels/391020510269669376/1379926957738954762"); + hiddenMap.put(245, "https://discord.com/channels/391020510269669376/1379926971286290584"); + hiddenMap.put(246, "https://discord.com/channels/391020510269669376/1379926973454745600"); + hiddenMap.put(247, "https://discord.com/channels/391020510269669376/1379926976361533752"); + hiddenMap.put(248, "https://discord.com/channels/391020510269669376/1379926979129774151"); + hiddenMap.put(251, "https://discord.com/channels/391020510269669376/1379928042637361382"); + hiddenMap.put(254, "https://discord.com/channels/391020510269669376/1379928045577703424"); + hiddenMap.put(259, "https://discord.com/channels/391020510269669376/1379928048245280871"); + hiddenMap.put(263, "https://discord.com/channels/391020510269669376/1379928050010951694"); + hiddenMap.put(265, "https://discord.com/channels/391020510269669376/1379928052921929891"); + } + + /** @return the link to the Discord discussion thread of the specified hidden sector submission. */ + public static @Nullable String getSectorThread(Sector sector){ + if(sector.generateEnemyBase){ + return hiddenMap.get(sector.id); + } + return null; + } +} diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index a6844d01e1..c2f2fbe99d 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -1299,6 +1299,15 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ } if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){ + if(Vars.showSectorSubmissions){ + String link = SectorSubmissions.getSectorThread(sector); + if(link != null){ + stable.button("@sectors.viewsubmission", Icon.link, () -> { + Core.app.openURI(link); + }).growX().height(54f).minWidth(170f).padTop(2f).row(); + } + } + stable.button( mode == select ? "@sectors.select" : sector.isBeingPlayed() ? "@sectors.resume" : From 2a47725362e3807251cee3e2e3e2778a16210b2f Mon Sep 17 00:00:00 2001 From: Github Actions Date: Mon, 23 Jun 2025 18:38:08 +0000 Subject: [PATCH 78/84] Automatic bundle update --- core/assets/bundles/bundle_be.properties | 1 + core/assets/bundles/bundle_bg.properties | 1 + core/assets/bundles/bundle_ca.properties | 1 + core/assets/bundles/bundle_cs.properties | 1 + core/assets/bundles/bundle_da.properties | 1 + core/assets/bundles/bundle_de.properties | 1 + core/assets/bundles/bundle_es.properties | 1 + core/assets/bundles/bundle_et.properties | 1 + core/assets/bundles/bundle_eu.properties | 1 + core/assets/bundles/bundle_fi.properties | 1 + core/assets/bundles/bundle_fil.properties | 1 + core/assets/bundles/bundle_fr.properties | 1 + core/assets/bundles/bundle_hu.properties | 1 + core/assets/bundles/bundle_id_ID.properties | 1 + core/assets/bundles/bundle_it.properties | 1 + core/assets/bundles/bundle_ja.properties | 1 + core/assets/bundles/bundle_ko.properties | 1 + core/assets/bundles/bundle_lt.properties | 1 + core/assets/bundles/bundle_nl.properties | 1 + core/assets/bundles/bundle_nl_BE.properties | 1 + core/assets/bundles/bundle_pl.properties | 1 + core/assets/bundles/bundle_pt_BR.properties | 1 + core/assets/bundles/bundle_pt_PT.properties | 1 + core/assets/bundles/bundle_ro.properties | 1 + core/assets/bundles/bundle_ru.properties | 1 + core/assets/bundles/bundle_sr.properties | 1 + core/assets/bundles/bundle_sv.properties | 1 + core/assets/bundles/bundle_th.properties | 1 + core/assets/bundles/bundle_tk.properties | 1 + core/assets/bundles/bundle_tr.properties | 1 + core/assets/bundles/bundle_uk_UA.properties | 1 + core/assets/bundles/bundle_vi.properties | 1 + core/assets/bundles/bundle_zh_CN.properties | 1 + core/assets/bundles/bundle_zh_TW.properties | 1 + 34 files changed, 34 insertions(+) diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 423144e04f..633ca8b6b0 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -793,6 +793,7 @@ sectors.wave = Хваля: sectors.stored = Захавана: sectors.resume = Працягнуць sectors.launch = Запусціць +sectors.viewsubmission = \ue80d View Submissions sectors.select = Выбраць sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]нічога (sun) diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index e26cf2c422..f594a8149f 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -793,6 +793,7 @@ sectors.wave = Вълна: sectors.stored = Съхранени: sectors.resume = Продължи sectors.launch = Изстреляй +sectors.viewsubmission = \ue80d View Submissions sectors.select = Избери sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]няма (Слънцето) diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 62b47deb41..e5b04cfe2f 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -793,6 +793,7 @@ sectors.wave = Onada: sectors.stored = Emmagatzemat: sectors.resume = Continua sectors.launch = Llança +sectors.viewsubmission = \ue80d View Submissions sectors.select = Selecciona sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]cap (sol) diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 3706290f24..776045a123 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -793,6 +793,7 @@ sectors.wave = Vlna: sectors.stored = Uskladněno: sectors.resume = Pokračovat sectors.launch = Vyslat +sectors.viewsubmission = \ue80d View Submissions sectors.select = Vybrat sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]bez (slunce)[] diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 35e93ea70e..f63f404e72 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Genoptag sectors.launch = Affyr +sectors.viewsubmission = \ue80d View Submissions sectors.select = Vælg sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]ingen (solen) diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index fd5e6fbbef..e768e33aba 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -793,6 +793,7 @@ sectors.wave = Welle: sectors.stored = Gelagert: sectors.resume = Weiterspielen sectors.launch = Start +sectors.viewsubmission = \ue80d View Submissions sectors.select = Auswählen sectors.launchselect = Ziel auswählen sectors.nonelaunch = [lightgray]keiner (Sonne) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 6229acf3c5..5c4ffedad9 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -793,6 +793,7 @@ sectors.wave = Oleada: sectors.stored = Almacenado: sectors.resume = Reanudar sectors.launch = Lanzar +sectors.viewsubmission = \ue80d View Submissions sectors.select = Seleccionar sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]Ninguno (sol) diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 2db9097670..d8d2dbbefa 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 480fb53bbc..6f848b4fc9 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index b5d3fd2d25..e27b253357 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -793,6 +793,7 @@ sectors.wave = Taso: sectors.stored = Säilötty: sectors.resume = Jatka sectors.launch = Laukaise +sectors.viewsubmission = \ue80d View Submissions sectors.select = Valitse sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]ei mitään (sun) diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index af0a61a12f..7691c6bb59 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -793,6 +793,7 @@ sectors.wave = Mga Waves: sectors.stored = Stored: sectors.resume = Resume sectors.launch = I-Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = I-Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index d007f1d33f..aa2481790d 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -793,6 +793,7 @@ sectors.wave = Vague : sectors.stored = Stockage : sectors.resume = Reprendre sectors.launch = Décoller +sectors.viewsubmission = \ue80d View Submissions sectors.select = Sélectionner sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]Vide (soleil) diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index 01d71d6379..e4d10987b2 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -793,6 +793,7 @@ sectors.wave = Hullám: sectors.stored = Tárolt nyersanyagok: sectors.resume = Folytatás sectors.launch = Kilövés +sectors.viewsubmission = \ue80d View Submissions sectors.select = Kiválasztás sectors.launchselect = Célállomás kiválasztása sectors.nonelaunch = [lightgray]semmi (nap) diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index 49010f4fe2..62a88a3a9f 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -793,6 +793,7 @@ sectors.wave = Gelombang: sectors.stored = Terisi: sectors.resume = Lanjutkan sectors.launch = Luncurkan +sectors.viewsubmission = \ue80d View Submissions sectors.select = Pilih sectors.launchselect = Pilih Destinasi Peluncuran sectors.nonelaunch = [lightgray]tidak ada (matahari) diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index d71dc9fea0..27750736c1 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -793,6 +793,7 @@ sectors.wave = Ondata: sectors.stored = Immagazzinato: sectors.resume = Riprendi sectors.launch = Lancia +sectors.viewsubmission = \ue80d View Submissions sectors.select = Seleziona sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]nessuno (sole) diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 1da365551c..b4766dcfff 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -793,6 +793,7 @@ sectors.wave = ウェーブ: sectors.stored = コアの資源: sectors.resume = 再開 sectors.launch = 打ち上げ +sectors.viewsubmission = \ue80d View Submissions sectors.select = 選択 sectors.launchselect = 発射先 sectors.nonelaunch = [lightgray]無し (sun) diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 073ea43c10..53952fcabd 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -793,6 +793,7 @@ sectors.wave = 단계: sectors.stored = 저장량: sectors.resume = 재개 sectors.launch = 출격 +sectors.viewsubmission = \ue80d View Submissions sectors.select = 선택 sectors.launchselect = 발사 대상 선택 sectors.nonelaunch = [lightgray]없음 (태양)[] diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 93d1edd8a8..2ee4d91a3f 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 70a41be30f..8823da211c 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -793,6 +793,7 @@ sectors.wave = Golf: sectors.stored = Opgeslagen: sectors.resume = Doorgaan sectors.launch = Lanceer +sectors.viewsubmission = \ue80d View Submissions sectors.select = Selecteer sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]geen (sun) diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index b103ca13b7..dc1807484d 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index b5a8d7ed3e..d74fa7d3d8 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -793,6 +793,7 @@ sectors.wave = Fala: sectors.stored = Zmagazynowane: sectors.resume = Kontynuuj sectors.launch = Wystrzel +sectors.viewsubmission = \ue80d View Submissions sectors.select = Wybierz sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]Żaden (Słońce) diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 35e3fac90c..0b381cb0d2 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -793,6 +793,7 @@ sectors.wave = Horda: sectors.stored = Armazenado: sectors.resume = Continuar sectors.launch = Lançar +sectors.viewsubmission = \ue80d View Submissions sectors.select = Selecionar sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]nenhum (sun) diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 9142df0b2a..30d99e2d18 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -793,6 +793,7 @@ sectors.wave = Horda: sectors.stored = Armazenado: sectors.resume = Continuar sectors.launch = Lançar +sectors.viewsubmission = \ue80d View Submissions sectors.select = Selecionar sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]nenhum (sun) diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index cd98ba5f86..f705cf3c20 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -793,6 +793,7 @@ sectors.wave = Valul: sectors.stored = Stocat: sectors.resume = Revino sectors.launch = Lansare +sectors.viewsubmission = \ue80d View Submissions sectors.select = Selectează sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]nimic (soarele) diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 26312e9b8e..391a8ca224 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -793,6 +793,7 @@ sectors.wave = Волна: sectors.stored = Накоплено: sectors.resume = Продолжить sectors.launch = Высадка +sectors.viewsubmission = \ue80d View Submissions sectors.select = Выбор sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]нет (солнце) diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index 5a5b2cb045..cfcf7df9dd 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -793,6 +793,7 @@ sectors.wave = Talas: sectors.stored = Skladišćeno: sectors.resume = Nastavi sectors.launch = Lansiraj +sectors.viewsubmission = \ue80d View Submissions sectors.select = Izaberi sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]nema (sunce) diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index f2cf7bad1d..e8759c3d0c 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Lagrade: sectors.resume = Återuppta sectors.launch = Skjuta upp +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index e1ddd9933f..2531956d18 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -793,6 +793,7 @@ sectors.wave = คลื่น: sectors.stored = คลังไอเท็ม: sectors.resume = ไปต่อ sectors.launch = ลงจอด +sectors.viewsubmission = \ue80d View Submissions sectors.select = เลือก sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]ไม่มี (ดวงอาทิตย์) diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 2d5e49bb47..4612337ea4 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -793,6 +793,7 @@ sectors.wave = Wave: sectors.stored = Stored: sectors.resume = Resume sectors.launch = Launch +sectors.viewsubmission = \ue80d View Submissions sectors.select = Select sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]none (sun) diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 67f95f4878..be8fc804ad 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -793,6 +793,7 @@ sectors.wave = Dalga: sectors.stored = Depolanan: sectors.resume = Devam Et sectors.launch = Fırlat +sectors.viewsubmission = \ue80d View Submissions sectors.select = Seç sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]yok (güneş) diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 1abcc18959..4da480112b 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -793,6 +793,7 @@ sectors.wave = Хвиля: sectors.stored = Зберігає: sectors.resume = Продовжити sectors.launch = Запустити +sectors.viewsubmission = \ue80d View Submissions sectors.select = Вибрати sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]нічого (сонце) diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 7bea0831e0..ac7ab1dd32 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -793,6 +793,7 @@ sectors.wave = Đợt: sectors.stored = Lưu trữ: sectors.resume = Tiếp tục sectors.launch = Phóng +sectors.viewsubmission = \ue80d View Submissions sectors.select = Chọn sectors.launchselect = Chọn đích phóng sectors.nonelaunch = [lightgray]không có (mặt trời) diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 8513cbd960..da56fe8187 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -793,6 +793,7 @@ sectors.wave = 波次: sectors.stored = 贮存: sectors.resume = 继续 sectors.launch = 发射 +sectors.viewsubmission = \ue80d View Submissions sectors.select = 选择 sectors.launchselect = 选择发射目的地 sectors.nonelaunch = [lightgray]无(自动销毁) diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index a71cc86374..af371091ad 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -793,6 +793,7 @@ sectors.wave = 波次: sectors.stored = 儲存: sectors.resume = 繼續 sectors.launch = 發射 +sectors.viewsubmission = \ue80d View Submissions sectors.select = 選取 sectors.launchselect = Select Launch Destination sectors.nonelaunch = [lightgray]無(太陽) From 908b0a2dc566165300a4b1bfd59daa60613fd605 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Jun 2025 14:47:05 -0400 Subject: [PATCH 79/84] Fixed rare explosion damage freeze --- core/src/mindustry/entities/Damage.java | 4 +++- core/src/mindustry/net/CrashHandler.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index a3fcd86e8f..d75098db20 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -545,8 +545,10 @@ public class Damage{ tileDamage(team, x, y, baseRadius, damage, null); } - public static void tileDamage(Team team, int x, int y, float baseRadius, float damage, @Nullable Bullet source){ + public static void tileDamage(Team team, int tx, int ty, float baseRadius, float damage, @Nullable Bullet source){ Time.run(0f, () -> { + int x = Mathf.clamp(tx, -100, world.width() + 100), y = Mathf.clamp(ty, -100, world.height() + 100); + var in = world.build(x, y); //spawned inside a multiblock. this means that damage needs to be dealt directly. //why? because otherwise the building would absorb everything in one cell, which means much less damage than a nearby explosion. diff --git a/core/src/mindustry/net/CrashHandler.java b/core/src/mindustry/net/CrashHandler.java index 7ed5ade848..1b52810d28 100644 --- a/core/src/mindustry/net/CrashHandler.java +++ b/core/src/mindustry/net/CrashHandler.java @@ -28,6 +28,8 @@ public class CrashHandler{ report += "Report this at " + Vars.reportIssueURL + "\n\n"; } + var enabledMods = mods == null ? null : mods.list().select(m -> m.shouldBeEnabled() && m.isSupported()); + return report + "Version: " + Version.combined() + (Version.buildDate.equals("unknown") ? "" : " (Built " + Version.buildDate + ")") + (Vars.headless ? " (Server)" : "") + "\n" + "Date: " + new SimpleDateFormat("MMMM d, yyyy HH:mm:ss a", Locale.getDefault()).format(new Date()) + "\n" @@ -37,7 +39,7 @@ public class CrashHandler{ + "Runtime Available Memory: " + (Runtime.getRuntime().maxMemory() / 1024 / 1024) + "mb\n" + "Cores: " + OS.cores + "\n" + (cause == null ? "" : "Likely Cause: " + cause.meta.displayName + " (" + cause.name + " v" + cause.meta.version + ")\n") - + (mods == null ? "" : "Mods: " + (!mods.list().contains(LoadedMod::shouldBeEnabled) ? "none (vanilla)" : mods.list().select(LoadedMod::shouldBeEnabled).toString(", ", mod -> mod.name + ":" + mod.meta.version))) + + (enabledMods == null ? "" : "Mods: " + (enabledMods.isEmpty() ? "none (vanilla)" : enabledMods.toString(", ", mod -> mod.name + ":" + mod.meta.version))) + "\n\n" + error; } From b7cb080f367f32c24edffa930df47474f7a7f739 Mon Sep 17 00:00:00 2001 From: Agzam4 <75160721+Agzam4@users.noreply.github.com> Date: Fri, 27 Jun 2025 01:51:16 +0300 Subject: [PATCH 80/84] Mass driver bullets are destroyed like the blocks with items (#10969) * Mass driver bullets explosions like the blocks * Better code style --------- Co-authored-by: TempUser --- .../mindustry/entities/bullet/MassDriverBolt.java | 14 ++++++++++++++ .../world/blocks/distribution/MassDriver.java | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/bullet/MassDriverBolt.java b/core/src/mindustry/entities/bullet/MassDriverBolt.java index b9a0526e40..67b581a34b 100644 --- a/core/src/mindustry/entities/bullet/MassDriverBolt.java +++ b/core/src/mindustry/entities/bullet/MassDriverBolt.java @@ -4,8 +4,10 @@ import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; import mindustry.content.*; +import mindustry.entities.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.type.*; import mindustry.world.blocks.distribution.MassDriver.*; import static mindustry.Vars.*; @@ -89,5 +91,17 @@ public class MassDriverBolt extends BasicBulletType{ public void hit(Bullet b, float hitx, float hity){ super.hit(b, hitx, hity); despawned(b); + if(b.data() instanceof DriverBulletData data){ + float explosiveness = 0f; + float flammability = 0f; + float power = 0f; + for(int i = 0; i < data.items.length; i++){ + Item item = content.item(i); + explosiveness += item.explosiveness * data.items[i]; + flammability += item.flammability * data.items[i]; + power += item.charge * Mathf.pow(data.items[i], 1.1f) * 25f; + } + Damage.dynamicExplosion(b.x, b.y, flammability / 10f, explosiveness / 10f, power, 1f, state.rules.damageExplosions); + } } } diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index 91910e2388..f79d55042a 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -299,7 +299,7 @@ public class MassDriver extends Block{ bullet.create(this, team, x + Angles.trnsx(angle, translation), y + Angles.trnsy(angle, translation), - angle, -1f, bulletSpeed, bulletLifetime, data); + angle, totalUsed/2f, bulletSpeed, bulletLifetime, data); shootEffect.at(x + Angles.trnsx(angle, translation), y + Angles.trnsy(angle, translation), angle); smokeEffect.at(x + Angles.trnsx(angle, translation), y + Angles.trnsy(angle, translation), angle); From bbc8d77386ac48d76bc33c58ff5cec45b1501797 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 26 Jun 2025 20:14:42 -0400 Subject: [PATCH 81/84] Steam achievement for killing a unit with a mass driver --- core/src/mindustry/service/Achievement.java | 1 + core/src/mindustry/service/GameService.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/core/src/mindustry/service/Achievement.java b/core/src/mindustry/service/Achievement.java index cd62301fae..a883c0ab66 100644 --- a/core/src/mindustry/service/Achievement.java +++ b/core/src/mindustry/service/Achievement.java @@ -67,6 +67,7 @@ public enum Achievement{ have10mItems(SStat.totalCampaignItems, 10_000_000), killEclipseDuo, + killMassDriver, completeErekir, completeSerpulo, diff --git a/core/src/mindustry/service/GameService.java b/core/src/mindustry/service/GameService.java index 341fad2879..814facaf2c 100644 --- a/core/src/mindustry/service/GameService.java +++ b/core/src/mindustry/service/GameService.java @@ -5,6 +5,7 @@ import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; +import mindustry.entities.bullet.*; import mindustry.game.EventType.*; import mindustry.game.SectorInfo.*; import mindustry.gen.*; @@ -394,6 +395,10 @@ public class GameService{ if(e.unit.type == UnitTypes.eclipse && e.bullet.owner instanceof TurretBuild turret && turret.block == Blocks.duo){ killEclipseDuo.complete(); } + + if(e.bullet.type instanceof MassDriverBolt){ + killMassDriver.complete(); + } } }); From 0df2289d40cdf7f6e9dde7f798328560f9efb908 Mon Sep 17 00:00:00 2001 From: xem8k5 <69492624+xem8k5@users.noreply.github.com> Date: Sat, 28 Jun 2025 00:07:45 +0800 Subject: [PATCH 82/84] Update servers_v7.json (#10970) --- servers_v7.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index 6d33eca3db..b77c1cceae 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -128,12 +128,6 @@ "name": "OmniCorp Classic", "address": ["omnidustry.ru:6567", "omnidustry.ru:6568", "omnidustry.ru:6569", "omnidustry.ru:6570", "omnidustry.ru:6571", "omnidustry.ru:6572", "omnidustry.ru:6573", "omnidustry.ru:6574", "omnidustry.ru:6575", "omnidustry.ru:6576"] }, - { - "name": "The Devil", - "address": [ - "new.xem8k5.top" - ] - }, { "name": "Eradication Mindustry", "address": [ From c677b5cb173c2d2499b297a2a796bfe1b9ea22d4 Mon Sep 17 00:00:00 2001 From: Phinner <62483793+phinner@users.noreply.github.com> Date: Fri, 27 Jun 2025 18:08:03 +0200 Subject: [PATCH 83/84] Remove CN from servers_v7.json (#10971) --- servers_v7.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/servers_v7.json b/servers_v7.json index b77c1cceae..4b3b49a5de 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -86,18 +86,6 @@ "147.45.230.117:3011" ] }, - { - "name": "Chaotic Neutral", - "address": [ - "37.187.73.180:7011", - "37.187.73.180:7012", - "37.187.73.180:7013", - "37.187.73.180:7014", - "37.187.73.180:7015", - "37.187.73.180:7016", - "37.187.73.180:7017" - ] - }, { "name": "io", "address": [ From 5d9f519426a4f1c849d1db6bd9e33c1727afa0a4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 27 Jun 2025 23:56:58 -0400 Subject: [PATCH 84/84] Fixed #10974 --- core/src/mindustry/ui/dialogs/PlanetDialog.java | 2 +- .../world/blocks/distribution/DirectionalUnloader.java | 3 +-- gradle.properties | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index c2f2fbe99d..1b18bc31db 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -1274,7 +1274,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(sector.isAttacked()){ addSurvivedInfo(sector, stable, false); - }else if(sector.hasBase() && sector.planet.campaignRules.sectorInvasion && sector.near().contains(Sector::hasEnemyBase)){ + }else if(sector.hasBase() && sector.planet.campaignRules.sectorInvasion && sector.near().contains(s -> s.hasEnemyBase() && (s.preset == null || !s.preset.requireUnlock))){ stable.add("@sectors.vulnerable"); stable.row(); }else if(!sector.hasBase() && sector.hasEnemyBase()){ diff --git a/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java b/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java index 313426c159..76d6fb0ae4 100644 --- a/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java +++ b/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java @@ -96,8 +96,7 @@ public class DirectionalUnloader extends Block{ front.handleItem(this, item); back.items.remove(item, 1); back.itemTaken(item); - offset ++; - offset %= itemc; + offset = item.id + 1; break; } } diff --git a/gradle.properties b/gradle.properties index ce43e41c4b..a8e0be2bf0 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=79c4cf021d +archash=9b55a5d628