Merge branch 'master' of https://github.com/Anuken/Mindustry into v9

# Conflicts:
#	core/src/mindustry/mod/DataImagePacker.java
This commit is contained in:
Anuken
2026-09-16 10:18:34 -04:00
9 changed files with 28 additions and 13 deletions
+5 -5
View File
@@ -1420,8 +1420,8 @@ category.function = Funkció
category.optional = Lehetséges fejlesztések category.optional = Lehetséges fejlesztések
setting.alwaysmusic.name = Folyamatos zenelejátszás setting.alwaysmusic.name = Folyamatos zenelejátszás
setting.alwaysmusic.description = Amikor engedélyezve van, akkor a zene folyamatosan szól a játékban.\nHa ki van kapcsolva, akkor csak véletlenszerű időközönként szólal meg. setting.alwaysmusic.description = Amikor engedélyezve van, akkor a zene folyamatosan szól a játékban.\nHa ki van kapcsolva, akkor csak véletlenszerű időközönként szólal meg.
setting.skipcoreanimation.name = Támaszpont animációjának kihagyása kilövéskor és leszálláskor setting.skipcoreanimation.name = Támaszpont animációinak kihagyása
setting.skipcoreanimation.description = Ha engedélyezve van, akkor a támaszpont fel- és leszállásának\nanimációja nem lesz megjelenítve. setting.skipcoreanimation.description = Ha engedélyezve van, akkor a támaszpont fel- és leszállási\nanimációja nem lesz megjelenítve.
setting.landscape.name = Fekvő mód zárolása setting.landscape.name = Fekvő mód zárolása
setting.landscape.description = Ha engedélyezve van, akkor a képernyő tájolása fekvő módban lesz rögzítve. setting.landscape.description = Ha engedélyezve van, akkor a képernyő tájolása fekvő módban lesz rögzítve.
setting.blockreplace.name = Automatikus blokkjavaslatok setting.blockreplace.name = Automatikus blokkjavaslatok
@@ -1474,8 +1474,8 @@ setting.destroyedblocks.name = Lerombolt építmények megjelenítése
setting.destroyedblocks.description = Ha engedélyezve van, akkor a megsemmisített blokkok\ntörmeléket hagynak maguk után. setting.destroyedblocks.description = Ha engedélyezve van, akkor a megsemmisített blokkok\ntörmeléket hagynak maguk után.
setting.blockstatus.name = Blokkok állapotának megjelenítése setting.blockstatus.name = Blokkok állapotának megjelenítése
setting.blockstatus.description = A blokkok felett színes állapotikonok jelennek meg. setting.blockstatus.description = A blokkok felett színes állapotikonok jelennek meg.
setting.conveyorpathfinding.name = Szállítószalag nyomvonalkeresése építéskor setting.conveyorpathfinding.name = Nyomvonalkeresés szállítószalag-építéskor
setting.conveyorpathfinding.description = Ha engedélyezve van, akkor a szállítószalagok elhelyezésekor a rendszer\nautomatikusan megpróbálja megtalálni az útvonalat a célállomásig. setting.conveyorpathfinding.description = Ha engedélyezve van, akkor a szállítószalagok elhelyezésekor a rendszer\nautomatikusan megpróbálja megtalálni azok nyomvonalát a célállomásig.
setting.sensitivity.name = Játékvezérlők érzékenysége setting.sensitivity.name = Játékvezérlők érzékenysége
setting.sensitivity.description = A játékvezérlők (joystick) érzékenységét lehet vele finomhangolni. setting.sensitivity.description = A játékvezérlők (joystick) érzékenységét lehet vele finomhangolni.
setting.saveinterval.name = Mentési időköz setting.saveinterval.name = Mentési időköz
@@ -1484,7 +1484,7 @@ setting.seconds = {0} másodperc
setting.milliseconds = {0} ezredmásodperc setting.milliseconds = {0} ezredmásodperc
setting.fullscreen.name = Teljes képernyő setting.fullscreen.name = Teljes képernyő
setting.fps.name = FPS, memóriahasználat és ping megjelenítése setting.fps.name = FPS, memóriahasználat és ping megjelenítése
setting.fps.description = Megjeleníti a jelenlegi képkockasebességet (FPS), a memóriahasználatot MB/GB-ban\nés a hálózati pinget a képernyő sarkában. setting.fps.description = Megjeleníti a jelenlegi képkockasebességet, a memóriahasználatot MB/GB-ban\nés a hálózati pinget a képernyő sarkában.
setting.console.name = Konzol engedélyezése setting.console.name = Konzol engedélyezése
setting.console.description = Engedélyezi a játékon belüli JavaScript-konzolt. setting.console.description = Engedélyezi a játékon belüli JavaScript-konzolt.
setting.drawhitboxes.name = Ütközési dobozok megjelenítése setting.drawhitboxes.name = Ütközési dobozok megjelenítése
+1 -1
View File
@@ -457,7 +457,7 @@ public class ControlPathfinder implements Runnable{
Cluster[][] dim1 = clusters[team]; Cluster[][] dim1 = clusters[team];
if(dim1 == null){ if(dim1 == null){
dim1 = clusters[team] = new Cluster[Team.all.length][]; dim1 = clusters[team] = new Cluster[costTypes.size][];
} }
Cluster[] dim2 = dim1[pathCost]; Cluster[] dim2 = dim1[pathCost];
+3 -1
View File
@@ -972,8 +972,10 @@ public class NetServer implements ApplicationListener{
}else{ }else{
Seq<DataAsset> res = new Seq<>(); Seq<DataAsset> res = new Seq<>();
Seq<DataAsset> allAssets = state.data.getAllExternalAssets(); Seq<DataAsset> allAssets = state.data.getAllExternalAssets();
Bits requestedIds = new Bits(allAssets.size);
for(short id : ids){ for(short id : ids){
if(id >= allAssets.size || id < 0) continue; if(id >= allAssets.size || id < 0 || requestedIds.get(id)) continue;
requestedIds.set(id);
res.add(allAssets.get(id)); res.add(allAssets.get(id));
} }
+5 -1
View File
@@ -78,7 +78,11 @@ public class MapEditor{
if(build != null && tile.isCenter()){ if(build != null && tile.isCenter()){
builds.add(build); builds.add(build);
} }
tiles.seti(i, new EditorTile(tile.x, tile.y, tile.floorID(), tile.overlayID(), build == null ? tile.blockID() : 0));
var newTile = new EditorTile(tile.x, tile.y, tile.floorID(), tile.overlayID(), build == null ? tile.blockID() : 0);
newTile.floorData = tile.floorData;
newTile.extraData = tile.extraData;
tiles.seti(i, newTile);
} }
for(var build : builds){ for(var build : builds){
+1 -1
View File
@@ -84,7 +84,7 @@ public class Lightning{
Unit furthest = Geometry.findFurthest(x, y, entities); Unit furthest = Geometry.findFurthest(x, y, entities);
if(furthest != null){ if(furthest != null && furthest.dst(x, y) < length * 1.5f){
hit.add(furthest.id()); hit.add(furthest.id());
x = furthest.x(); x = furthest.x();
y = furthest.y(); y = furthest.y();
@@ -22,4 +22,11 @@ abstract class TargetDummyComp implements Unitc, Healthc{
td.dummyHit(amount); td.dummyHit(amount);
} }
} }
@Override
@Replace
public boolean canLand(){
//dummies should always respect the boost config even when the landing area is obstructed (usually by other dummies)
return true;
}
} }
@@ -174,7 +174,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
/** @return whether there is solid, un-occupied ground under this unit. */ /** @return whether there is solid, un-occupied ground under this unit. */
public boolean canLand(){ public boolean canLand(){
return !onSolid() && Units.count(x, y, physicSize(), f -> f != self() && f.isGrounded()) == 0; float psize = physicSize();
return !onSolid() && !Units.any(x - psize/2f, y - psize/2f, psize, psize, f -> f != self() && f.isGrounded());
} }
public boolean inRange(Position other){ public boolean inRange(Position other){
+2
View File
@@ -122,6 +122,8 @@ public class LExecutor{
/** Loads with a specified assembler. Resets all variables. */ /** Loads with a specified assembler. Resets all variables. */
public void load(LAssembler builder){ public void load(LAssembler builder){
stop = false; stop = false;
textBuffer.setLength(0);
graphicsBuffer.clear();
nameMap = null; nameMap = null;
//retain constants that are links, which, by convention, don't start with @ (builtin) or _ (numeric constant) //retain constants that are links, which, by convention, don't start with @ (builtin) or _ (numeric constant)
vars = builder.vars.values().toSeq().retainAll(var -> !var.constant || var.name.charAt(0) != '_' && var.name.charAt(0) != '@').toArray(LVar.class); vars = builder.vars.values().toSeq().retainAll(var -> !var.constant || var.name.charAt(0) != '_' && var.name.charAt(0) != '@').toArray(LVar.class);
@@ -132,8 +132,7 @@ public class PlayerListFragment{
}); });
button.add(iconTable).size(h); button.add(iconTable).size(h);
button.labelWrap("[#" + user.color().toString().toUpperCase() + "]" + user.name()).style(Styles.outlineLabel).width(170f).pad(10); button.add("[#" + user.color().toString().toUpperCase() + "]" + user.name()).style(Styles.outlineLabel).growX().wrap(true).pad(10);
button.add().grow();
button.background(Tex.underline); button.background(Tex.underline);
@@ -249,7 +248,7 @@ public class PlayerListFragment{
.size(h); .size(h);
} }
content.add(button).width(350f).height(h + 14); content.add(button).width(mobile ? 350f : 470f).height(h + 14);
content.row(); content.row();
} }