diff --git a/.github/Mindustry-CodeStyle-IJ.xml b/.github/Mindustry-CodeStyle-IJ.xml
index 94486ff95b..e63661b6d3 100644
--- a/.github/Mindustry-CodeStyle-IJ.xml
+++ b/.github/Mindustry-CodeStyle-IJ.xml
@@ -82,4 +82,4 @@
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
index 771f4a3107..088d6576fb 100644
--- a/README.md
+++ b/README.md
@@ -21,13 +21,13 @@ First, make sure you have [JDK 8](https://adoptopenjdk.net/) installed. Open a t
#### Windows
-_Running:_ `gradlew desktop:run`
+_Running:_ `gradlew desktop:run`
_Building:_ `gradlew desktop:dist`
_Sprite Packing:_ `gradlew tools:pack`
#### Linux/Mac OS
-_Running:_ `./gradlew desktop:run`
+_Running:_ `./gradlew desktop:run`
_Building:_ `./gradlew desktop:dist`
_Sprite Packing:_ `./gradlew tools:pack`
diff --git a/android/build.gradle b/android/build.gradle
index 015656f543..e82a957ba5 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -162,4 +162,4 @@ task run(type: Exec){
def adb = path + "/platform-tools/adb"
commandLine "$adb", 'shell', 'am', 'start', '-n', 'io.anuke.mindustry/mindustry.android.AndroidLauncher'
-}
\ No newline at end of file
+}
diff --git a/android/res/mipmap-anydpi-v26/ic_launcher.xml b/android/res/mipmap-anydpi-v26/ic_launcher.xml
index 4ae7d12378..cb73a95729 100644
--- a/android/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/android/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -2,4 +2,4 @@
-
\ No newline at end of file
+
diff --git a/android/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 4ae7d12378..cb73a95729 100644
--- a/android/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/android/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -2,4 +2,4 @@
-
\ No newline at end of file
+
diff --git a/android/res/values-v21/styles.xml b/android/res/values-v21/styles.xml
index 699b6a05d7..e1bed057f8 100644
--- a/android/res/values-v21/styles.xml
+++ b/android/res/values-v21/styles.xml
@@ -8,4 +8,4 @@
@nulltrue
-
\ No newline at end of file
+
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index b77280e581..d40cf3accd 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -3,4 +3,4 @@
Mindustry
-
\ No newline at end of file
+
diff --git a/android/res/xml/backup_rules.xml b/android/res/xml/backup_rules.xml
index bfa7569b2e..072948235f 100644
--- a/android/res/xml/backup_rules.xml
+++ b/android/res/xml/backup_rules.xml
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
diff --git a/core/assets-raw/fontgen/config.json b/core/assets-raw/fontgen/config.json
index e5034e70fe..f2421542a9 100644
--- a/core/assets-raw/fontgen/config.json
+++ b/core/assets-raw/fontgen/config.json
@@ -921,4 +921,4 @@
"src": "fontawesome"
}
]
-}
\ No newline at end of file
+}
diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties
index 9249b5d1f5..a490645d52 100644
--- a/core/assets/bundles/bundle_cs.properties
+++ b/core/assets/bundles/bundle_cs.properties
@@ -1254,4 +1254,4 @@ block.omega-mech-pad.description = Umožňuje přeměnu Tvého vozidla na těžc
block.javelin-ship-pad.description = Umožňuje přeměnu Tvého vozidla na rychlou, lehce obrněnou stíhačku.\nAktivuj kliknutím nebo ťupnutím, když se nacházíš nad plošinou.
block.trident-ship-pad.description = Umožňuje přeměnu Tvého vozidla na těžkého podpůrného bombardéra.\nAktivuj kliknutím nebo ťupnutím, když se nacházíš nad plošinou.
block.glaive-ship-pad.description = Umožňuje přeměnu Tvého vozidla na velkou, dobře obrněnou střeleckou loď.\nAktivuj kliknutím nebo ťupnutím, když se nacházíš nad plošinou.
-
\ No newline at end of file
+
diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties
index f61896411f..0a3b80f76c 100644
--- a/core/assets/bundles/bundle_de.properties
+++ b/core/assets/bundles/bundle_de.properties
@@ -1,27 +1,27 @@
credits.text = Entwickelt von [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n\n[GRAY]
credits = Danksagungen
contributors = Übersetzer und Mitwirkende
-discord = Tritt dem Mindustry Discord bei!
-link.discord.description = Der offizielle Mindustry Discord-Server
+discord = Tritt dem Mindustry-Discord bei!
+link.discord.description = Der offizielle Mindustry Discord-Chatroom
link.reddit.description = Der Mindustry Subreddit
link.github.description = Quellcode des Spiels
link.changelog.description = Liste der Änderungen
link.dev-builds.description = Entwicklungs-Builds (instabil)
-link.trello.description = Offizielles Trello Board für geplante Features
+link.trello.description = Offizielles Trello-Board für geplante Features
link.itch.io.description = itch.io-Seite mit Downloads und der Web-Version des Spiels
-link.google-play.description = Google Play Store Seite
+link.google-play.description = Google Play Store-Seite
link.f-droid.description = F-Droid catalogue listing
-link.wiki.description = Offizelles Mindustry Wiki
+link.wiki.description = Offizelles Mindustry-Wiki
link.feathub.description = Suggest new features
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
-screenshot = Screenshot gespeichert nach {0}
+screenshot = Screenshot gespeichert unter {0}.
screenshot.invalid = Karte zu groß! Eventuell nicht ausreichend Arbeitsspeicher für Screenshot.
gameover = Der Kern wurde zerstört.
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
highscore = [YELLOW] Neuer Highscore!
copied = Kopiert.
-load.sound = Sounds
+load.sound = Audio
load.map = Karten
load.image = Bilder
load.content = Inhalt
@@ -39,17 +39,17 @@ be.check = Check for updates
schematic = Entwürfe
schematic.add = Entwurf speichern...
schematics = Entwürfe
-schematic.replace = Ein anderer Entwurf hat bereits diesen Namen. Diesen Ersetzen?
+schematic.replace = Ein anderer Entwurf hat bereits diesen Namen. Diesen ersetzen?
schematic.import = Entwurf importieren...
-schematic.exportfile = Entwurf exportieren
-schematic.importfile = Detei importieren
-schematic.browseworkshop = Workshop erkunden
-schematic.copy = In Zwischenablage speichern
-schematic.copy.import = Aus Zwischenablage ziehen
+schematic.exportfile = Datei exportieren
+schematic.importfile = Datei importieren
+schematic.browseworkshop = Workshop durchsuchen
+schematic.copy = In Zwischenablage kopieren
+schematic.copy.import = Aus Zwischenablage importieren
schematic.shareworkshop = Im Workshop teilen
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Entwurf umkehren
schematic.saved = Entwurf gespeichert.
-schematic.delete.confirm = Dieser Entwurf wird absolut ausgelöscht.
+schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
schematic.rename = Entwurf umbenennen
schematic.info = {0}x{1}, {2} Blöcke
@@ -82,43 +82,43 @@ position = Position
close = Schließen
website = Website
quit = Verlassen
-save.quit = Speichern & Beenden
+save.quit = Speichern & Verlassen
maps = Karten
-maps.browse = Karten durschsuchen
+maps.browse = Karten durchsuchen
continue = Weiter
maps.none = [LIGHT_GRAY]Keine Karten gefunden!
-invalid = ungültig
+invalid = Ungültig
pickcolor = Pick Color
preparingconfig = Konfiguration vorbereiten
-preparingcontent = Inhalte vorbereiten
-uploadingcontent = Inhalte hochladen
-uploadingpreviewfile = Vorschau hochladen
-committingchanges = Veränderungen bestätigen
+preparingcontent = Inhalt vorbereiten
+uploadingcontent = Inhalt hochladen
+uploadingpreviewfile = Vorschaudatei hochladen
+committingchanges = Veränderungen übernehmen
done = Fertig
feature.unsupported = Dein System unsterstützt dieses Feature nicht.
-mods.alphainfo = Vergiss nicht, dass Mods in der Alpha sind, und sehr Fehlerhaft sein [scarlet]könnten[].\nSende alle Probleme an den Mindustry Github oder Discord.
+mods.alphainfo = Vergiss nicht, dass Mods in der Alpha sind, und[scarlet] sehr fehlerhaft sein können[].\nMelde alle Probleme an den Mindustry GitHub oder Discord.
mods.alpha = [accent](Alpha)
mods = Mods
mods.none = [LIGHT_GRAY]Keine Mods gefunden!
mods.guide = Modding Anleitung
-mods.report = Problem senden
-mods.openfolder = Mod Verzeichnis öffnen
+mods.report = Problem melden
+mods.openfolder = Mod-Verzeichnis öffnen
mod.enabled = [lightgray]Aktiviert
mod.disabled = [scarlet]Deaktiviert
mod.disable = Deaktivieren
mod.delete.error = Unfähig Mod zu löschen; Datei könnte in Benutzung sein.
mod.requiresversion = [scarlet]Requires min game version: [accent]{0}
-mod.missingdependencies = [scarlet]Fehldene Abhängigkeiten: {0}
+mod.missingdependencies = [scarlet]Fehlende Abhängigkeiten: {0}
mod.erroredcontent = [scarlet]Content Errors
mod.errors = Errors have occurred loading content.
mod.noerrorplay = [scarlet]You have mods with errors.[] Either disable the affected mods or fix the errors before playing.
-mod.nowdisabled = [scarlet]Mod '{0}' fehlt Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert.
+mod.nowdisabled = [scarlet]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert.
mod.enable = Aktivieren
-mod.requiresrestart = Das Spiel schließt nun, um Modänderungen wirksam zu machen.
+mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
mod.reloadrequired = [scarlet]Neuladen benötigt
mod.import = Mod importieren
-mod.import.github = GitHub Mod importieren
+mod.import.github = GitHub-Mod importieren
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod.
mod.remove.confirm = Dieser Mod wird gelöscht.
mod.author = [LIGHT_GRAY]Author:[] {0}
@@ -140,14 +140,14 @@ researched = [LIGHT_GRAY]{0} erforscht.
players = {0} Spieler online
players.single = {0} Spieler online
server.closing = [accent]Schließe den Server ...
-server.kicked.kick = Du wurdest vom Server gekickt!
-server.kicked.whitelist = Du bist hier nicht auf der Whitelist.
+server.kicked.kick = Du wurdest vom Server geworfen!
+server.kicked.whitelist = Du befindest dich nicht auf der Whitelist des Servers.
server.kicked.serverClose = Server geschlossen.
-server.kicked.vote = Es wurde abgestimmt, dich zu kicken. Tschüss.
+server.kicked.vote = Es wurde abgestimmt, dich rauszuwerfen. Tschüss.
server.kicked.clientOutdated = Veralteter Client! Aktualisiere dein Spiel!
server.kicked.serverOutdated = Veralteter Server! Bitte den Host um ein Update!
server.kicked.banned = Du wurdest vom Server verbannt.
-server.kicked.typeMismatch = Der Server ist nicht mit deinem Versionstyp kompatibel.
+server.kicked.typeMismatch = Dieser Server ist nicht mit deinem Buildtyp kompatibel.
server.kicked.playerLimit = Dieser Server ist voll. Warte auf einen freien Platz.
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte bevor du dich wieder verbindest.
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
@@ -157,8 +157,8 @@ server.kicked.customClient = Der Server akzeptiert keine Custom Builds von Mindu
server.kicked.gameover = Game Over!
server.kicked.serverRestarting = The server is restarting.
server.versions = Deine Version:[accent] {0}[]\nServerversion:[accent] {1}[]
-host.info = Der [accent]Server hosten[]-Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [LIGHT_GRAY]W-Lan oder lokalen Netzwerk[] sollte deinen Server in seiner Server Liste sehen können.\n\nWenn du anderen die Verbindung über IP ermöglichen willst, benötigst du [accent]Port-Forwarding[].\n\n[LIGHT_GRAY]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stelle sicher, dass Mindustry in deinen Firewall Einstellungen Zugriff auf das lokale Netzwerk hat.
-join.info = Hier kannst du eine [accent]Server-IP[] eingeben um dich zu verbinden oder Server im [accent]lokalen Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[LIGHT_GRAY]Hinweis: Es gibt keine globale Server Liste; Wenn du dich mit jemandem per IP verbinden willst, musst du den Host nach seiner IP fragen.
+host.info = Der [accent]Server hosten[]-Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [LIGHT_GRAY]W-Lan oder lokalen Netzwerk[] sollte deinen Server in seiner Serverliste sehen können.\n\nWenn du anderen die Verbindung über deine IP-Adresse ermöglichen willst, benötigst du [accent]Port-Forwarding[].\n\n[LIGHT_GRAY]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stelle sicher, dass Mindustry in deinen Firewall-Einstellungen Zugriff auf das lokale Netzwerk hat.
+join.info = Hier kannst du eine [accent]Server-IP[] eingeben, um dich zu verbinden, oder Server im [accent]lokalen Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[LIGHT_GRAY]Hinweis: Es gibt keine globale Serverliste; wenn du dich mit jemandem per IP-Adresse verbinden willst, musst du den Host nach seiner IP-Adresse fragen.
hostserver = Server hosten
invitefriends = Freunde einladen
hostserver.mobile = Host\nSpiel
@@ -177,10 +177,10 @@ trace.id = Eindeutige ID: [accent]{0}
trace.mobile = Mobiler Client: [accent]{0}
trace.modclient = Gemoddeter Client: [accent]{0}
invalidid = Ungültige Client-ID! Berichte den Fehler.
-server.bans = Bans
-server.bans.none = Keine gebannten Spieler gefunden!
-server.admins = Admins
-server.admins.none = Keine Admins gefunden!
+server.bans = Verbannungen
+server.bans.none = Keine verbannten Spieler gefunden!
+server.admins = Administratoren
+server.admins.none = Keine Administratoren gefunden!
server.add = Server hinzufügen
server.delete = Bist du dir sicher, dass du diesen Server löschen möchtest?
server.edit = Server bearbeiten
@@ -189,17 +189,17 @@ server.outdated.client = [crimson]Veralteter Client![]
server.version = [lightgray]Version: {0}
server.custombuild = [yellow]Benutzerdefinierter Build
confirmban = Bist du sicher, dass du diesen Spieler verbannen möchtest?
-confirmkick = Bist du sicher, dass du diesen Spieler kicken willst?
-confirmvotekick = Bist du sicher diesen Spieler mit einer Abstimmung rauszuwerfen?
+confirmkick = Bist du sicher, dass du diesen Spieler rauswerfen willst?
+confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen?
confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst?
-confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Admin machen möchtest?
-confirmunadmin = Bis du sicher, dass dieser Spieler kein Admin mehr sein soll?
+confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest?
+confirmunadmin = Bis du sicher, dass dieser Spieler kein Administrator mehr sein soll?
joingame.title = Spiel beitreten
joingame.ip = IP:
disconnect = Verbindung unterbrochen.
disconnect.error = Verbindungsfehler.
disconnect.closed = Verbindung geschlossen.
-disconnect.timeout = Zeit Überschreitung.
+disconnect.timeout = Zeitüberschreitung.
disconnect.data = Fehler beim Laden der Welt!
cantconnect = Nicht möglich beizutreten ([accent]{0}[]).
connecting = [accent] Verbinde...
@@ -212,7 +212,7 @@ save.new = Neuer Spielstand
save.overwrite = Möchtest du diesen Spielstand wirklich überschreiben?
overwrite = Überschreiben
save.none = Keine Spielstände gefunden!
-saveload = [accent] Speichern ...
+saveload = [accent] Speichern...
savefail = Fehler beim Speichern des Spiels!
save.delete.confirm = Möchtest du diesen Spielstand wirklich löschen?
save.delete = Löschen
@@ -221,7 +221,7 @@ save.import.invalid = [accent] Dieser Spielstand ist ungültig!
save.import.fail = [crimson] Spielstand konnte nicht importiert werden: [accent] {0}
save.export.fail = [crimson] Spielstand konnte nicht exportiert werden: [accent] {0}
save.import = Spielstand importieren
-save.newslot = Name speichern:
+save.newslot = Name:
save.rename = Umbenennen
save.rename.text = Neuer Name
selectslot = Wähle einen Spielstand
@@ -234,36 +234,36 @@ off = Aus
save.autosave = Automatisches Speichern: {0}
save.map = Karte: {0}
save.wave = Welle: {0}
-save.mode = Gamemode: {0}
+save.mode = Spielmodus: {0}
save.date = Zuletzt gespeichert: {0}
save.playtime = Spielzeit: {0}
-warning = Warnung.
+warning = Warnung
confirm = Bestätigen
delete = Löschen
-view.workshop = Im Workshop betrachten
-workshop.listing = Workshop Auflistung bearbeiten
+view.workshop = Im Workshop ansehen
+workshop.listing = Workshop-Auflistung bearbeiten
ok = OK
open = Öffnen
customize = Anpassen
cancel = Abbruch
openlink = Link öffnen
-copylink = Kopiere Link
+copylink = Link kopieren
back = Zurück
data.export = Daten exportieren
data.import = Daten importieren
data.exported = Daten exportiert.
-data.invalid = Das sind ungültige Spieldateien.
-data.import.confirm = Externe Spielstände zu importieren löscht[scarlet] all[] deine jetzigen Spielstände.\n[accent]Dies kann nicht rückgängig gemacht werden![]\n\nSobald die Daten importiert sind, schließt das Spiel.
+data.invalid = Dies sind keine gültigen Spieldaten.
+data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Dies kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet.
classic.export = Klassische Dateien exportieren
-classic.export.text = [accent]Mindustry[] Mindustry hatte gerade ein rießiges Update.\nKlassische (v3.5 build 40) Spielstand oder Karten-Daten wurden gefunden. Willst du sie in den home-Ordner deines Smartphones exportieren, um sie für die Mindustry-Klassik App zu verwenden?
+classic.export.text = [accent]Mindustry[] hat ein großes Update bekommen.\nEin Classic (v3.5 build 40) -Speicherstand oder eine -Karte wurde gefunden. Möchtest du diese Daten in den home-Ordner deines Smartphones exportieren, um sie in der Mindustry Classic-App zu verwenden?
quit.confirm = Willst du wirklich aufhören?
-quit.confirm.tutorial = Willst du das Tutorial wirklich abbrechen?\nDu kannst es unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
+quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
loading = [accent]Wird geladen...
-reloading = [accent]Mods neuladen...
+reloading = [accent]Lade Mods neu...
saving = [accent]Speichere...
-cancelbuilding = [accent][[{0}][] um Plan zu löschen
+cancelbuilding = [accent][[{0}][] um den Plan zu leeren
selectschematic = [accent][[{0}][] zum Auswählen+Kopieren
-pausebuilding = [accent][[{0}][] zum Pausieren des Bauens
+pausebuilding = [accent][[{0}][] um das Bauen zu pausieren
resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen
wave = [accent]Welle {0}
wave.waiting = Welle in {0}
@@ -277,33 +277,33 @@ saveimage = Bild speichern
unknown = Unbekannt
custom = Benutzerdefiniert
builtin = Enthalten
-map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Die Aktion kann nicht rückgänig gemacht werden!
+map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Dies kann nicht rückgänig gemacht werden!
map.random = [accent]Zufällige Karte
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
-map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
+map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne in denen Gegner starten können! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
map.nospawn.attack = Diese Karte hat keine gengnerischen Kerne, die Spieler angreifen können! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
-map.invalid = Fehler beim Laden der Karte: Beschädigtes oder ungültige Karten Datei.
-workshop.update = Item aktualisieren
-workshop.error = Fehler beim laden von Workshop-Daten: {0}
-map.publish.confirm = Willst du wirklich diese Map hochladen?\n\n[lightgray]Vergewissere dich die, der Workshop-EULA zugestimmt zu haben, sonst tauch deine Map nicht auf!
-workshop.menu = Wähle aus, was du mit diesem Item machen willst.
-workshop.info = Item Info
+map.invalid = Fehler beim Laden der Karte: Beschädigte oder ungültige Kartendatei.
+workshop.update = Objekt aktualisieren
+workshop.error = Fehler beim Laden von Workshop-Details: {0}
+map.publish.confirm = Willst du diese Karte wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Karten nicht auf!
+workshop.menu = Wähle aus, was du mit diesem Objekt tun willst.
+workshop.info = Objekt-Info
changelog = Changelog (optional):
eula = Steam EULA
-missing = Dieses Item wurde verschoben oder gelöscht.\n[lightgray]Die Workshop-Auflistung wird nun automatisch ungekoppelt.
+missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Workshop-Auflistung ist nun automatisch getrennt worden.
publishing = [accent]Veröffentlichen...
-publish.confirm = Bist du sicher, dies zu veröffentlichen?\n\n[lightgray]Vergewissere dich die, der Workshop-EULA zugestimmt zu haben, sonst tauch deine Karte nicht auf!
-publish.error = Fehler beim veröffentlichen des Items: {0}
+publish.confirm = Willst du das wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Objekte nicht auf!
+publish.error = Fehler beim Veröffentlichen des Objekts: {0}
steam.error = Fehler beim laden der Steam-Dienste.\nError: {0}
editor.brush = Pinsel
editor.openin = Öffne im Editor
editor.oregen = Erze generieren
editor.oregen.info = Erze generiert:
-editor.mapinfo = Karten Info
+editor.mapinfo = Karten-Info
editor.author = Autor:
editor.description = Beschreibung:
-editor.nodescription = Eine Karte benötigt mindestens 4 Buchstaben in der Beschreibung, bevor sie veröffentlich werden kann.
+editor.nodescription = Eine Karte benötigt eine Beschreibung mit mindestens 4 Buchstaben, bevor sie veröffentlich werden kann.
editor.waves = Wellen:
editor.rules = Regeln:
editor.generation = Generator:
@@ -325,23 +325,23 @@ waves.copy = Aus der Zwischenablage kopieren
waves.load = Aus der Zwischenablage laden
waves.invalid = Ungültige Wellen in der Zwischenablage.
waves.copied = Wellen kopiert.
-waves.none = Keine Gegner definiert.\nInfo: Leere Wellen Entwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
+waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
editor.default = [LIGHT_GRAY]
-details = Details...
-edit = Bearbeiten...
+details = Details
+edit = Bearbeiten
editor.name = Name:
-editor.spawn = Spawn Bereich
-editor.removeunit = Entferne Bereich
+editor.spawn = Spawnbereich
+editor.removeunit = Bereich entfernen
editor.teams = Teams
editor.errorload = Fehler beim Laden der Datei:\n[accent]{0}
editor.errorsave = Fehler beim Speichern der Datei:\n[accent]{0}
-editor.errorimage = Das ist ein Bild, keine Karte. Wechsel nicht den Dateityp und erwarte, dass es funktioniert.\n\nWenn du eine alte Karte importieren möchtest, benutze den 'Importiere Terrain Bild' Knopf in dem Editor.
-editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Karten Format, das nicht mehr unterstützt wird.
-editor.errornot = Dies ist keine Kartendatei
+editor.errorimage = Das ist ein Bild, keine Karte. Wechsle nicht den Dateityp und erwarte, dass es funktioniert.\n\nWenn du eine 3.5/build 40-Karte importieren möchtest, benutze den 'Importiere Terrainbild' Knopf im Editor.
+editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Kartenformat, das nicht mehr unterstützt wird.
+editor.errornot = Dies ist keine Kartendatei.
editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt.
editor.errorname = Karte hat keinen Namen.
editor.update = Aktualisieren
-editor.randomize = Zufällig Anordnen
+editor.randomize = Zufällig anordnen
editor.apply = Anwenden
editor.generate = Generieren
editor.resize = Größe\nanpassen
@@ -355,22 +355,22 @@ editor.import = Importieren...
editor.importmap = Importiere Karte
editor.importmap.description = Importiere von einer bestehenden Karte
editor.importfile = Importiere Datei
-editor.importfile.description = Importiere aus einer Karten Datei
-editor.importimage = Importiere Terrain Bild
-editor.importimage.description = Importiere aus einer Terrain Bild Datei
-editor.export = Exportieren...
+editor.importfile.description = Importiere aus einer Kartendatei
+editor.importimage = Importiere Terrainbild
+editor.importimage.description = Importiere aus einer Terrainbild-Datei
+editor.export = Exportiere...
editor.exportfile = Export in Datei
-editor.exportfile.description = Exportiere in eine Karten Datei
-editor.exportimage = Export in Terrain Bild Datei
-editor.exportimage.description = Exportiere in eine Karten Bild Datei
+editor.exportfile.description = Exportiere in eine Karten-Datei
+editor.exportimage = Export in Terrainbild-Datei
+editor.exportimage.description = Exportiere in ein Kartenbild
editor.loadimage = Bild\nladen
editor.saveimage = Bild\nspeichern
-editor.unsaved = [crimson] Du hast Änderungen nicht gespeichert [] Möchtest du wirklich aufhören?
+editor.unsaved = [crimson] Einige Änderungen wurden noch nicht gespeichert! [] Möchtest du den Editor wirklich verlassen?
editor.resizemap = Größe der Karte ändern
-editor.mapname = Karten Name
+editor.mapname = Kartenname
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
editor.overwrite.confirm = [scarlet]Warnung![] Eine Karte mit diesem Namen existiert bereits. Bist du sicher, dass du sie überschreiben willst?
-editor.exists = A map with this name already exists.
+editor.exists = Eine Karte mit diesem Namen existiert bereits.
editor.selectmap = Wähle eine Karte zum Laden:
toolmode.replace = Ersetzen
@@ -380,23 +380,23 @@ toolmode.replaceall.description = Alle Blöcke auf der Karte ersetzen.
toolmode.orthogonal = Rechtwinkelig
toolmode.orthogonal.description = Zeichnet nur rechtwinkelige Linien.
toolmode.square = Quadrat
-toolmode.square.description = Quadrat Pinsel.
+toolmode.square.description = Quadratpinsel.
toolmode.eraseores = Erze löschen
toolmode.eraseores.description = Löscht nur Erze.
-toolmode.fillteams = Teams Ausfüllen
-toolmode.fillteams.description = Füllt Teams aus anstatt Blöcke.
+toolmode.fillteams = Teams ausfüllen
+toolmode.fillteams.description = Füllt Teams aus statt Blöcke.
toolmode.drawteams = Teams Zeichnen
-toolmode.drawteams.description = Zeichnet Teams anstatt Blöcke.
+toolmode.drawteams.description = Zeichnet Teams statt Blöcke.
filters.empty = [LIGHT_GRAY]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
filter.distort = Verzerren
filter.noise = Rauschen
-filter.median = Mittelwert
-filter.oremedian =Erz Median
+filter.median = Median
+filter.oremedian = Erzmedian
filter.blend = Mischen
-filter.defaultores = Standard Erze
+filter.defaultores = Standarderze
filter.ore = Erz
-filter.rivernoise = Fluss Rauschen
+filter.rivernoise = Flussrauschen
filter.mirror = Spiegel
filter.clear = Löschen
filter.option.ignore = Ignorieren
@@ -406,7 +406,7 @@ filter.option.scale = Skalierung
filter.option.chance = Wahrscheinlichkeit
filter.option.mag = Größe
filter.option.threshold = Grenzwert
-filter.option.circle-scale = Kreis Skalierung
+filter.option.circle-scale = Kreisskalierung
filter.option.octaves = Oktaven
filter.option.falloff = Rückgang
filter.option.angle = Winkel
@@ -434,29 +434,29 @@ settings = Einstellungen
tutorial = Tutorial
tutorial.retake = Tutorial wiederholen
editor = Editor
-mapeditor = Karten Editor
+mapeditor = Karteneditor
abandon = Aufgeben
abandon.text = Diese Zone sowie alle Ressourcen werden dem Gegner überlassen.
locked = Gesperrt
complete = [LIGHT_GRAY]Abschließen:
-requirement.wave = Erreiche {0} in {1}
-requirement.core = Zerstöre Gegnerbasis in {0}
-requirement.unlock = Schalte {0} freo
+requirement.wave = Erreiche Welle {0} in {1}
+requirement.core = Zerstöre den feindlichen Kern in {0}
+requirement.unlock = Schalte {0} frei
resume = Zu Zone zurückkehren:\n[LIGHT_GRAY]{0}
bestwave = [LIGHT_GRAY]Beste Welle: {0}
-launch = Abschluss
-launch.title = Abschluss erfolgreich
+launch = Starten
+launch.title = Start erfolgreich
launch.next = [LIGHT_GRAY]Nächste Möglichkeit bei Welle {0}
-launch.unable2 = [scarlet]Unfähig abzuschließen.[]
+launch.unable2 = [scarlet]START nicht möglich.[]
launch.confirm = Dies wird alle Ressourcen in deinen Kern übertragen.\nDu kannst nicht wieder zu dieser Karte zurückkehren.
-launch.skip.confirm = Wenn du jetzt überspringst, kannst du nicht vor späteren Wellen abschließen.
+launch.skip.confirm = Wenn du die Wartezeit überspringst, kannst du den Kern bis zu einer späteren Welle nicht mehr starten.
uncover = Freischalten
configure = Startitems festlegen
bannedblocks = Gesperrte Blöcke
addall = Alle hinzufügen
-configure.locked = [LIGHT_GRAY]Erreiche Welle {0}\n, um Startitems festlegen zu können.
-configure.invalid = Anzahl muss zwischen 0 und {0} sein.
+configure.locked = [lightgray]Festlegen von Startitems freischalten: {0}.
+configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
zone.unlocked = [LIGHT_GRAY]{0} freigeschaltet.
zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt.
zone.config.unlocked = Konfiguration:[lightgray]\n{0}
@@ -465,7 +465,7 @@ zone.objective = [lightgray]Ziel: [accent]{0}
zone.objective.survival = Überlebe
zone.objective.attack = Zerstöre den feindlichen Kern
add = Hinzufügen...
-boss.health = Boss Lebenskraft
+boss.health = Boss-Lebenskraft
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
error.unreachable = Server nicht erreichbar.
@@ -487,14 +487,14 @@ zone.stainedMountains.name = Gefleckte Berge
zone.desolateRift.name = Trostloser Riss
zone.nuclearComplex.name = Kernkraftwerk
zone.overgrowth.name = Überwucherung
-zone.tarFields.name = Ölfelder
-zone.saltFlats.name = Salztiefen
-zone.impact0078.name = Auswirkung 0078
+zone.tarFields.name = Teerfelder
+zone.saltFlats.name = Salzebenen
+zone.impact0078.name = Einschlag 0078
zone.crags.name = Felsen
zone.fungalPass.name = Sporenpass
zone.groundZero.description = Der optimale Ort, um anzufangen. Niedrige Bedrohung durch Gegner. Wenige Ressourcen.\nSammel so viel Kupfer und Blei wie möglich.\nMach weiter!
-zone.frozenForest.description = Sogar hier, näher an den Bergen, haben sich die Sporen verbreitet. Die kalten Temperaturen können sie nicht für immer im Schach halten.\n\nStarte das Wagnis in Strom. Baue Verbrennungsgeneratoren. Lerne Heiler zu benutzen.
+zone.frozenForest.description = Sogar hier, näher an den Bergen, haben sich die Sporen verbreitet. Die kalten Temperaturen können sie nicht für immer im Schach halten.\n\nStarte das Wagnis in Strom. Baue Verbrennungsgeneratoren. Lerne Reparateure zu benutzen.
zone.desertWastes.description = Diese Abfälle sind riesig, unberechenbar, und durchzogen von verfallenen Sektorstrukturen.\nKohle ist in dieser Region vorhanden. Verbrenne es für Strom, oder synthetisiere Graphit.\n\n[lightgray]Dieser Landeort kann nicht garantiert werden.
zone.saltFlats.description = Am Rande der Wüste liegen die Salzebenen. In dieser Gegend können wenige Ressourcen gefunden werden.\n\nDer Feind hat hier einen Ressourcenspeicherkomplex errichtet. Zerstöre ihren Kern. Lass nichts stehen.
zone.craters.description = Wasser hat sich in diesem Krater angesammelt, ein Relikt von den alten Kriegen. Gewinne dieses Gebiet zurück. Sammle Sand. Schmelze Metaglass. Pumpe Wasser, um Geschütztürme und Bohrer zu kühlen.
@@ -504,7 +504,7 @@ zone.overgrowth.description = Dieser Bereich ist bewachsen, näher an der Quelle
zone.tarFields.description = Der Rand einer Ölförderzone, zwischen Bergen und Wüste. Eine der wenigen Plätze mit nutzbare Teer Reserven.\nObwohl es aufgegeben wurde, hat dieses Gebiet einige gefährliche feindliche Kräfte in der Nähe. Unterschätze sie nicht.\n\n[lightgray]Wenn möglich, erforsche Technologien zur Ölverarbeitung.
zone.desolateRift.description = Eine extrem gefährliche Zone. Reichlich Ressourcen, aber wenig Platz. Hohe Zerstörungsgefahr. Verlasse es so schnell wie möglich. Lassen Sie sich nicht von den großen Abständen zwischen feindlichen Angriffen in die Irre führen.
zone.nuclearComplex.description = Eine ehemalige Anlage zur Herstellung und Verarbeitung von Thorium, die in Trümmern liegt.\n[lightgray]Erforsche das Thorium und seine vielen Verwendungsmöglichkeiten.\n\nDer Feind ist hier in großer Zahl präsent und sucht ständig nach Angreifern.
-zone.fungalPass.description = Ein Übergangsgebiet zwischen hohen Bergen und tieferen, sporengeplagter Länder. Eine kleine Späherbasis ist hier angelegt.\nZerstöre sie.\nNutze Dagger und Crawler. Zerstöre die zwei Basen.
+zone.fungalPass.description = Ein Übergangsgebiet zwischen hohen Bergen und niedrigeren, sporenverseuchten Landschaften. Ein kleiner feindlicher Außenposten wurde hier entdeckt.\nZerstöre ihn.\nNutze Dagger und Crawler-Einheiten. Zerstöre die zwei Kerne.
zone.impact0078.description =
zone.crags.description =
@@ -519,7 +519,7 @@ settings.sound = Audio
settings.graphics = Grafik
settings.cleardata = Spieldaten zurücksetzen...
settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden!
-settings.clearall.confirm = [scarlet]Warnung![]\nDas wird jegliche Spieldaten zurücksetzen inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Nachdem du 'OK' drückst wird alles zurückgesetzt und das Spiel schließt sich automatisch.
+settings.clearall.confirm = [scarlet]Warnung![]\nDas wird jegliche Spieldaten zurücksetzen, inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Nachdem du 'OK' drückst wird alles zurückgesetzt und das Spiel schließt sich automatisch.
paused = Pausiert
clear = Leeren
banned = [scarlet]Banned
@@ -535,8 +535,8 @@ block.unknown = [LIGHT_GRAY]???
blocks.powercapacity = Kapazität
blocks.powershot = Stromverbrauch/Schuss
blocks.damage = Schaden
-blocks.targetsair = Visiert Luft Einheiten an
-blocks.targetsground = Visiert Boden Einheiten an
+blocks.targetsair = Visiert Lufteinheiten an
+blocks.targetsground = Visiert Bodeneinheiten an
blocks.itemsmoved = Bewegungsgeschwindigkeit
blocks.launchtime = Zeit zwischen Starts
blocks.shootrange = Reichweite
@@ -549,13 +549,13 @@ blocks.powerdamage = Stromverbrauch/Schadenspunkt
blocks.itemcapacity = Materialkapazität
blocks.basepowergeneration = Basis-Stromerzeugung
blocks.productiontime = Produktionszeit
-blocks.repairtime = Zeit zur vollständigen Heilung
+blocks.repairtime = Zeit zur vollständigen Reparatur
blocks.speedincrease = Geschwindigkeitserhöhung
blocks.range = Reichweite
blocks.drilltier = Abbaubare Erze
blocks.drillspeed = Bohrgeschwindigkeit
blocks.boosteffect = Verstärkungseffekt
-blocks.maxunits = Max aktive Einheiten
+blocks.maxunits = Max. aktive Einheiten
blocks.health = Lebenspunkte
blocks.buildtime = Baudauer
blocks.buildcost = Baukosten
@@ -564,14 +564,14 @@ blocks.shots = Schüsse
blocks.reload = Schüsse/Sekunde
blocks.ammo = Munition
-bar.drilltierreq = Besserer Bohrer benötigt
+bar.drilltierreq = Besserer Bohrer Benötigt
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
bar.pumpspeed = Pump Speed: {0}/s
bar.efficiency = Effizienz: {0}%
bar.powerbalance = Strom: {0}
bar.powerstored = Gespeichert: {0}/{1}
bar.poweramount = Strom: {0}
-bar.poweroutput = Stromgeneration: {0}
+bar.poweroutput = Stromgenerierung: {0}
bar.items = Items: {0}
bar.capacity = Kapazität: {0}
bar.liquid = Flüssigkeit
@@ -586,7 +586,7 @@ bullet.damage = [stat]{0}[lightgray] Schaden
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
bullet.incendiary = [stat]entzündend
bullet.homing = [stat]zielsuchend
-bullet.shock = [stat]schock
+bullet.shock = [stat]schockend
bullet.frag = [stat]explosiv
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
bullet.freezing = [stat]frierend
@@ -602,7 +602,7 @@ unit.liquidunits = Flüssigkeitseinheiten
unit.powerunits = Stromeinheiten
unit.degrees = Grad
unit.seconds = Sekunden
-unit.persecond = /s
+unit.persecond = /sek
unit.timesspeed = x Geschwindigkeit
unit.percent = %
unit.items = Materialeinheiten
@@ -627,8 +627,8 @@ setting.antialias.name = Antialias[LIGHT_GRAY] (Neustart erforderlich)[]
setting.indicators.name = Verbündeten-Indikatoren
setting.autotarget.name = Auto-Zielauswahl
setting.keyboard.name = Maus+Tastatur Steuerung
-setting.touchscreen.name = Touchscreen Controls
-setting.fpscap.name = Max FPS
+setting.touchscreen.name = Touchscreen-Steuerung
+setting.fpscap.name = Max. FPS
setting.fpscap.none = kein
setting.fpscap.text = {0} FPS
setting.uiscale.name = UI-Skalierung[lightgray] (Neustart erforderlich)[]
@@ -645,12 +645,12 @@ setting.destroyedblocks.name = Zerstörte Blöcke anzeigen
setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern
setting.coreselect.name = Allow Schematic Cores
setting.sensitivity.name = Controller-Empfindlichkeit
-setting.saveinterval.name = Autosave Häufigkeit
+setting.saveinterval.name = Autosave-Häufigkeit
setting.seconds = {0} Sekunden
setting.blockselecttimeout.name = Block Auswahl Timeout
setting.milliseconds = {0} Millisekunden
setting.fullscreen.name = Vollbild
-setting.borderlesswindow.name = Randloses Fenster[LIGHT_GRAY] (Neustart teilweise erforderlich)
+setting.borderlesswindow.name = Randloses Fenster[LIGHT_GRAY] (Neustart vielleicht erforderlich)
setting.fps.name = Zeige FPS
setting.blockselectkeys.name = Block Shortcuts anzeigen
setting.vsync.name = VSync
@@ -663,10 +663,10 @@ setting.mutemusic.name = Musik stummschalten
setting.sfxvol.name = Audioeffekt-Lautstärke
setting.mutesound.name = Audioeffekte stummschalten
setting.crashreport.name = Anonyme Absturzberichte senden
-setting.savecreate.name = Automatisch Speicherstände anlegen
-setting.publichost.name = Public Game Visibility
-setting.chatopacity.name = Chat Deckkraft
-setting.lasersopacity.name = Power Laser Opacity
+setting.savecreate.name = Automatisch speichern
+setting.publichost.name = Öffentliche Sichtbarkeit des Spiels
+setting.chatopacity.name = Chat-Deckkraft
+setting.lasersopacity.name = Power-Laser-Deckkraft
setting.playerchat.name = Chat im Spiel anzeigen
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden.
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
@@ -679,7 +679,7 @@ category.general.name = Allgemein
category.view.name = Ansicht
category.multiplayer.name = Mehrspieler
command.attack = Angreifen
-command.rally = Rally
+command.rally = Patrouillieren
command.retreat = Rückzug
placement.blockselectkeys = \n[lightgray]Shortcut: [{0},
keybind.clear_building.name = Clear Building
@@ -690,11 +690,11 @@ keybind.toggle_power_lines.name = Toggle Power Lasers
keybind.move_x.name = X-Achse
keybind.move_y.name = Y-Achse
keybind.mouse_move.name = Follow Mouse
-keybind.dash.name = Bindestrich
+keybind.dash.name = Sprinten
keybind.schematic_select.name = Bereich auswählen
-keybind.schematic_menu.name = Schematic Menu
+keybind.schematic_menu.name = Entwurfsmenü
keybind.schematic_flip_x.name = Entwurf umdrehen X
-keybind.schematic_flip_y.name = Entwurf umdrehn Y
+keybind.schematic_flip_y.name = Entwurf umdrehen Y
keybind.category_prev.name = Vorige Kategorie
keybind.category_next.name = Nächste Kategorie
keybind.block_select_left.name = Block-Auswahl nach links
@@ -711,10 +711,10 @@ keybind.block_select_07.name = Kategorie/Block 7 auswählen
keybind.block_select_08.name = Kategorie/Block 8 auswählen
keybind.block_select_09.name = Kategorie/Block 9 auswählen
keybind.block_select_10.name = Kategorie/Block 10 auswählen
-keybind.fullscreen.name = Vollbild umschalten
+keybind.fullscreen.name = Vollbildmodus umschalten
keybind.select.name = Auswählen/Schießen
keybind.diagonal_placement.name = Diagonal platzieren
-keybind.pick.name = Block Auswählen
+keybind.pick.name = Block auswählen
keybind.break_block.name = Block zerstören
keybind.deselect.name = Auswahl aufheben
keybind.shoot.name = Schießen
@@ -741,14 +741,14 @@ mode.sandbox.name = Sandkasten
mode.sandbox.description = Unendliche Ressourcen und kein Timer für Wellen.
mode.editor.name = Editor
mode.pvp.name = PvP
-mode.pvp.description = Kämpfe gegen andere Spieler lokal.
+mode.pvp.description = Kämpfe lokal gegen andere Spieler.
mode.attack.name = Angriff
-mode.attack.description = Keine Wellen, das Ziel ist es die gegnerische Basis zu zerstören.
+mode.attack.description = Keine Wellen, das Ziel ist es, die gegnerische Basis zu zerstören.
mode.custom = Angepasste Regeln
rules.infiniteresources = Unbegrenzte Ressourcen
rules.reactorexplosions = Reactor Explosions
-rules.wavetimer = Wellen Timer
+rules.wavetimer = Wellen-Timer
rules.waves = Wellen
rules.attack = Angriff-Modus
rules.enemyCheat = Unbegrenzte Ressourcen für KI
@@ -760,16 +760,16 @@ rules.playerhealthmultiplier = Spieler-Lebenspunkte Multiplikator
rules.playerdamagemultiplier = Spieler-Schaden Multiplikator
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
rules.enemycorebuildradius = Bauverbot Radius druch feindlichen Kern:[LIGHT_GRAY] (Kacheln)
-rules.respawntime = Respawn Zeit:[LIGHT_GRAY] (Sek)
-rules.wavespacing = Wellen Abstand:[LIGHT_GRAY] (Sek)
+rules.respawntime = Respawn-Zeit:[LIGHT_GRAY] (Sek)
+rules.wavespacing = Wellen-Abstand:[LIGHT_GRAY] (Sek)
rules.buildcostmultiplier = Bau-Kosten Multiplikator
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
rules.waitForWaveToEnd = Warten bis Welle endet
-rules.dropzoneradius = Drop Zonen Radius:[LIGHT_GRAY] (Kacheln)
-rules.respawns = Max Respawns pro Welle
-rules.limitedRespawns = Respawn-Limit
+rules.dropzoneradius = Drop-Zonen-Radius:[LIGHT_GRAY] (Kacheln)
+rules.respawns = Max. Wiederbelebungen pro Welle
+rules.limitedRespawns = Wiederbelebungslimit
rules.title.waves = Wellen
-rules.title.respawns = Respawns
+rules.title.respawns = Wiederbelebungen
rules.title.resourcesbuilding = Ressourcen & Gebäude
rules.title.player = Spieler
rules.title.enemy = Gegner
@@ -792,7 +792,7 @@ item.thorium.name = Thorium
item.silicon.name = Silizium
item.plastanium.name = Plastanium
item.phase-fabric.name = Phasengewebe
-item.surge-alloy.name = Spannungsstoß-Legierung
+item.surge-alloy.name = Spannungslegierung
item.spore-pod.name = Sporen-Pod
item.sand.name = Sand
item.blast-compound.name = Explosive Mischung
@@ -802,7 +802,7 @@ item.scrap.name = Schrott
liquid.water.name = Wasser
liquid.slag.name = Lava
liquid.oil.name = Öl
-liquid.cryofluid.name = Kryoflüssigkeit
+liquid.cryofluid.name = Kühlflüssigkeit
mech.alpha-mech.name = Alpha
mech.alpha-mech.weapon = Schwerer Mehrlader
mech.alpha-mech.ability = Drohnenschwarm
@@ -896,7 +896,7 @@ block.pine.name = Kiefer
block.white-tree-dead.name = Weißer toter Baum
block.white-tree.name = Weißer Baum
block.spore-cluster.name = Sporen-Cluster
-block.metal-floor.name = Metallboden
+block.metal-floor.name = Metallboden 1
block.metal-floor-2.name = Metallboden 2
block.metal-floor-3.name = Metallboden 3
block.metal-floor-5.name = Metallboden 5
@@ -931,8 +931,8 @@ block.hail.name = Streuer
block.lancer.name = Lanzer
block.conveyor.name = Förderband
block.titanium-conveyor.name = Titan-Förderband
-block.armored-conveyor.name = Gepanzertes-Förderband
-block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyors.
+block.armored-conveyor.name = Gepanzertes Förderband
+block.armored-conveyor.description = Bewegt Gegenstände genauso schnell wie das Titan-Förderband, ist aber besser gepanzert. Akzeptiert nur Verbindungen mit anderen Förderbändern.
block.junction.name = Kreuzung
block.router.name = Verteiler
block.distributor.name = Großer Verteiler
@@ -966,13 +966,13 @@ block.pneumatic-drill.name = Pneumatischer Bohrer
block.laser-drill.name = Laser-Bohrer
block.water-extractor.name = Wasser-Extraktor
block.cultivator.name = Kultivierer
-block.dart-mech-pad.name = Dart Mech-Pad
-block.delta-mech-pad.name = Delta Mech-Pad
-block.javelin-ship-pad.name = Javelin Luftschiff-Pad
-block.trident-ship-pad.name = Dreizack Luftschiff-Pad
-block.glaive-ship-pad.name = Glaive Luftschiff-Pad
-block.omega-mech-pad.name = Omega Mech-Pad
-block.tau-mech-pad.name = Tau Mech-Pad
+block.dart-mech-pad.name = Dart-Mech-Pad
+block.delta-mech-pad.name = Delta-Mech-Pad
+block.javelin-ship-pad.name = Javelin-Luftschiff-Pad
+block.trident-ship-pad.name = Dreizack-Luftschiff-Pad
+block.glaive-ship-pad.name = Glaive-Luftschiff-Pad
+block.omega-mech-pad.name = Omega-Mech-Pad
+block.tau-mech-pad.name = Tau-Mech-Pad
block.conduit.name = Leitungsrohr
block.mechanical-pump.name = Mechanische Pumpe
block.item-source.name = Materialquelle
@@ -987,25 +987,25 @@ block.wave.name = Welle
block.swarmer.name = Schwärmer
block.salvo.name = Salve
block.ripple.name = Zerstörer
-block.phase-conveyor.name = Phasen-Transportband
-block.bridge-conveyor.name = Brücken-Transportband
+block.phase-conveyor.name = Phasen-Förderband
+block.bridge-conveyor.name = Brücken-Förderband
block.plastanium-compressor.name = Plastanium-Verdichter
block.pyratite-mixer.name = Pyratit-Mixer
block.blast-mixer.name = Sprengmixer
block.solar-panel.name = Solarpanel
block.solar-panel-large.name = Großes Solarpanel
block.oil-extractor.name = Öl-Extraktor
-block.command-center.name = Kommandozentrum
-block.draug-factory.name = Draug Miner-Drohnenfactory
+block.command-center.name = Kommandozentrale
+block.draug-factory.name = Draug-Miner-Dronenfabrik
block.spirit-factory.name = Spirit-Drohnenfabrik
block.phantom-factory.name = Phantom-Drohnenfabrik
-block.wraith-factory.name = Wraith Fighter-Fabrik
-block.ghoul-factory.name = Ghoul Bomber-Fabrik
-block.dagger-factory.name = Dagger Mech-Fabrik
-block.crawler-factory.name = Crawler Mech-Fabrik
-block.titan-factory.name = Titan Mech-Fabrik
-block.fortress-factory.name = Fortress Mech-Fabrik
-block.revenant-factory.name = Revenant Fighter-Fabrik
+block.wraith-factory.name = Wraith-Fighter-Fabrik
+block.ghoul-factory.name = Ghoul-Bomber-Fabrik
+block.dagger-factory.name = Dagger-Mech-Fabrik
+block.crawler-factory.name = Crawler-Mech-Fabrik
+block.titan-factory.name = Titan-Mech-Fabrik
+block.fortress-factory.name = Fortress-Mech-Fabrik
+block.revenant-factory.name = Revenant-Fighter-Fabrik
block.repair-point.name = Reparaturpunkt
block.pulse-conduit.name = Impulskanal
block.plated-conduit.name = Plated Conduit
@@ -1023,8 +1023,8 @@ block.thermal-generator.name = Thermischer Generator
block.alloy-smelter.name = Legierungsschmelze
block.mender.name = Reparateur
block.mend-projector.name = Reparaturprojektor
-block.surge-wall.name = Spannungsstoß-Mauer
-block.surge-wall-large.name = Große Spannungsstoß-Mauer
+block.surge-wall.name = Spannungsmauer
+block.surge-wall-large.name = Große Spannungsmauer
block.cyclone.name = Zyklon
block.fuse.name = Zünder
block.shock-mine.name = Schock-Mine
@@ -1041,11 +1041,11 @@ team.blue.name = Blau
team.crux.name = red
team.sharded.name = orange
team.orange.name = Orange
-team.derelict.name = derelict
+team.derelict.name = Derelict
team.green.name = Grün
team.purple.name = Lila
unit.spirit.name = Spirit-Drohne
-unit.draug.name = Draug Miner-Drone
+unit.draug.name = Draug-Miner-Drone
unit.phantom.name = Phantom-Drohne
unit.dagger.name = Dagger
unit.crawler.name = Crawler
@@ -1120,7 +1120,7 @@ unit.eruptor.description = Ein schwerer Mech, der Strukturen abbaut. Feuert eine
unit.wraith.description = Eine schneller Abfangjäger.
unit.ghoul.description = Ein schwerer Flächenbomber.
unit.revenant.description = Eine schwere, schwebende Raketengruppe.
-block.message.description = Benutzt um Nachrichten mit Verbündeten auszutauschen.
+block.message.description = Speichert eine Nachricht. Wird genutzt, um mit Verbündeten zu kommunizieren.
block.graphite-press.description = Komprimiert Kohlestücke zu reinen Graphitplatten.
block.multi-press.description = Eine aktualisierte Version der Graphitpresse. Setzt Wasser und Strom ein, um Kohle schnell und effizient zu verarbeiten.
block.silicon-smelter.description = Reduziert Sand mit hochreinem Kohlenstoff, um Silizium zu produzieren.
@@ -1129,12 +1129,12 @@ block.plastanium-compressor.description = Produziert Plastanium aus Öl und Tita
block.phase-weaver.description = Produziert Phasengewebe aus radioaktivem Thorium und großen Mengen an Sand.
block.alloy-smelter.description = Verarbeitet Titan, Blei, Silizium und Kupfer zu einer Stromstoßlegierung.
block.cryofluidmixer.description = Verarbeitet Wasser mit Titan zu einer Kryoflüssigkeit, die viel effizienter kühlt.
-block.blast-mixer.description = Verwendet Öl, um Pyratit in eine weniger enzündliche aber explosive Mischung umzuwandeln.
+block.blast-mixer.description = Verwendet Sporen, um Pyratit in eine weniger enzündliche aber explosive Mischung umzuwandeln.
block.pyratite-mixer.description = Vermischt Kohle, Blei und Sand zu hochentzündlichem Pyratit.
-block.melter.description = Erhitzt Stein auf extrem hohe Temperaturen, um Lava zu erhalten.
-block.separator.description = Setzt Stein Wasserdruck aus, um verschiedene Mineralien im Stein freizulegen.
+block.melter.description = Erhitzt Schrott auf extrem hohe Temperaturen, um Lava zu erhalten.
+block.separator.description = Setzt Lava Wasserdruck aus, um verschiedene Mineralien freizulegen.
block.spore-press.description = Komprimiert Sporenhülsen zu Öl.
-block.pulverizer.description = Zertrümmert Stein zu Sand. Nützlich, wenn kein natürlicher Sand verfügbar ist.
+block.pulverizer.description = Zertrümmert Schrott zu Sand. Nützlich, wenn kein natürlicher Sand verfügbar ist.
block.coal-centrifuge.description = Verfestigt Öl zu Kohlenstücken.
block.incinerator.description = Vernichtet beliebige überschüssige Materialien oder Flüssigkeiten.
block.power-void.description = Verschlingt den kompletten übrigen Strom. Nur im Sandkasten-Modus verfügbar.
@@ -1157,8 +1157,8 @@ block.surge-wall.description = Der stärkste Verteidigungsblock.\nHat eine klein
block.surge-wall-large.description = Der stärkste Verteidigungsblock.\nHat eine kleine Chance, bei einem Schuss einen Lichtbogen in Richtung Angreifer auszulösen.\nBenötigt mehrere Kacheln.
block.door.description = Eine kleine Tür, die durch Tippen geöffnet und geschlossen werden kann.\nGegner können durch geöffnete Türen schießen und laufen.
block.door-large.description = Eine kleine Tür, die durch Tippen geöffnet und geschlossen werden kann.\nGegner können durch geöffnete Türen schießen und laufen.\nBenötigt mehrere Kacheln.
-block.mender.description = Repariert regelmäßig Blöcke in der Nähe. Hält die Abwehrkräfte zwischen den Wellen instand.\nVerwendet optional Silizium, um Reichweite und Effizienz zu steigern.
-block.mend-projector.description = Heilt zyklisch Blöcke in seiner Umgebung.
+block.mender.description = Repariert regelmäßig Blöcke in seiner Umgebung. Hält die Abwehrkräfte zwischen den Wellen instand.\nVerwendet optional Silizium, um Reichweite und Effizienz zu steigern.
+block.mend-projector.description = Eine verbesserte Version des Reparateurs. Repariert regelmäßig Blöcke in seiner Umgebung.\nVerwendet optional Phasengewebe, um Reichweite und Effizienz zu steigern.
block.overdrive-projector.description = Erhöht die Geschwindigkeit von nahegelegenen Blöcken, wie Bohrer und Förderbänder.
block.force-projector.description = Erzeugt ein sechseckiges Kraftfeld um sich herum, das Blöcke und Einheiten vor Schaden schützt.
block.shock-mine.description = Beschädigt Gegner, die auf die Mine laufen. Für Gegener schwer zu sehen.
@@ -1228,13 +1228,13 @@ block.ripple.description = Ein großer Artillerie-Geschützturm, der mehrere Sch
block.cyclone.description = Ein großer Schnellfeuer-Geschützturm.
block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert.
block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert.
-block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command.
+block.command-center.description = Erteilt allen verbündeten Einheiten auf der Karte Bewegungsbefehle. \nBringt Einheiten zum Patrouillieren, Angreifen eines feindlichen Kerns oder Rückzug zur Fabrik/ zum Kern. Wenn es keinen feindlichen Kern gibt, patrouillieren die Einheiten bei einem Angriffsbefehl.
block.draug-factory.description = Produziert Draug-Mining-Drohnen.
block.spirit-factory.description = Produziert leichte Drohnen, die Erz abbauen und Blöcke reparieren können.
block.phantom-factory.description = Produziert erweiterte Drohnen, die deutlich effizienter sind als Spirit-Drohnen.
block.wraith-factory.description = Produziert schnelle Abfangjäger.
block.ghoul-factory.description = Produziert schwere Flächenbomber.
-block.revenant-factory.description = Produziert schwere Raketen basierte Flugeinheiten.
+block.revenant-factory.description = Produziert schwere Raketen-basierte Flugeinheiten.
block.dagger-factory.description = Produziert Standard-Bodeneinheiten.
block.crawler-factory.description = Produziert schnelle, selbstzerstörende Schwarmeinheiten.
block.titan-factory.description = Produziert fortgeschrittene, gepanzerte Bodeneinheiten.
diff --git a/core/assets/scripts/base.js b/core/assets/scripts/base.js
index 6ce3070968..9c06bed19c 100755
--- a/core/assets/scripts/base.js
+++ b/core/assets/scripts/base.js
@@ -17,4 +17,4 @@ const cons = method => new Cons(){get: method}
const prov = method => new Prov(){get: method}
const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer}))
Call = Packages.mindustry.gen.Call
-const Calls = Call //backwards compat
\ No newline at end of file
+const Calls = Call //backwards compat
diff --git a/core/build.gradle b/core/build.gradle
index ea07c810b3..0923858a74 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -1,4 +1,4 @@
apply plugin: "java"
sourceCompatibility = 1.8
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
-sourceSets.main.java.srcDirs = ["src/", "$buildDir/generated/sources/annotationProcessor/java/main"]
\ No newline at end of file
+sourceSets.main.java.srcDirs = ["src/", "$buildDir/generated/sources/annotationProcessor/java/main"]
diff --git a/core/src/mindustry/core/Platform.java b/core/src/mindustry/core/Platform.java
index fda4ea4564..ba23ff61a5 100644
--- a/core/src/mindustry/core/Platform.java
+++ b/core/src/mindustry/core/Platform.java
@@ -130,4 +130,4 @@ public interface Platform{
/** Stops forcing the app into landscape orientation.*/
default void endForceLandscape(){
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/editor/MapEditor.java b/core/src/mindustry/editor/MapEditor.java
index 7cab015b1f..508db8b6e2 100644
--- a/core/src/mindustry/editor/MapEditor.java
+++ b/core/src/mindustry/editor/MapEditor.java
@@ -337,4 +337,4 @@ public class MapEditor{
world.endMapLoad();
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/entities/type/BaseUnit.java b/core/src/mindustry/entities/type/BaseUnit.java
index 6062662e9b..5691661acf 100644
--- a/core/src/mindustry/entities/type/BaseUnit.java
+++ b/core/src/mindustry/entities/type/BaseUnit.java
@@ -414,4 +414,4 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
public void onSuperDeath(){
super.onDeath();
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/entities/units/UnitCommand.java b/core/src/mindustry/entities/units/UnitCommand.java
index dccc5076f6..dada524b84 100644
--- a/core/src/mindustry/entities/units/UnitCommand.java
+++ b/core/src/mindustry/entities/units/UnitCommand.java
@@ -15,4 +15,4 @@ public enum UnitCommand{
public String localized(){
return localized;
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/io/MapIO.java b/core/src/mindustry/io/MapIO.java
index 85c5cc9cb7..10bcd5cda9 100644
--- a/core/src/mindustry/io/MapIO.java
+++ b/core/src/mindustry/io/MapIO.java
@@ -176,4 +176,4 @@ public class MapIO{
interface TileProvider{
Tile get(int x, int y);
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/maps/Maps.java b/core/src/mindustry/maps/Maps.java
index d94852cf0d..ec9e033eea 100644
--- a/core/src/mindustry/maps/Maps.java
+++ b/core/src/mindustry/maps/Maps.java
@@ -501,4 +501,4 @@ public class Maps{
return provider.next(previous);
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/maps/filters/TerrainFilter.java b/core/src/mindustry/maps/filters/TerrainFilter.java
index d8ad659f8a..f35bf2b3c6 100644
--- a/core/src/mindustry/maps/filters/TerrainFilter.java
+++ b/core/src/mindustry/maps/filters/TerrainFilter.java
@@ -39,4 +39,4 @@ public class TerrainFilter extends GenerateFilter{
in.block = Blocks.air;
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java
index ccfdafb94f..1ed6713e93 100644
--- a/core/src/mindustry/net/ArcNetProvider.java
+++ b/core/src/mindustry/net/ArcNetProvider.java
@@ -418,4 +418,4 @@ public class ArcNetProvider implements NetProvider{
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/net/Interpolator.java b/core/src/mindustry/net/Interpolator.java
index b2a544dbd6..42cf9df137 100644
--- a/core/src/mindustry/net/Interpolator.java
+++ b/core/src/mindustry/net/Interpolator.java
@@ -65,4 +65,4 @@ public class Interpolator{
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/ui/dialogs/CustomGameDialog.java b/core/src/mindustry/ui/dialogs/CustomGameDialog.java
index 03ec05961e..f47a3ac796 100644
--- a/core/src/mindustry/ui/dialogs/CustomGameDialog.java
+++ b/core/src/mindustry/ui/dialogs/CustomGameDialog.java
@@ -91,4 +91,4 @@ public class CustomGameDialog extends FloatingDialog{
cont.add(pane).uniformX();
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/ui/layout/BranchTreeLayout.java b/core/src/mindustry/ui/layout/BranchTreeLayout.java
index 15dbe4ae6f..0e24685705 100644
--- a/core/src/mindustry/ui/layout/BranchTreeLayout.java
+++ b/core/src/mindustry/ui/layout/BranchTreeLayout.java
@@ -288,4 +288,4 @@ public class BranchTreeLayout implements TreeLayout{
public enum TreeAlignment{
center, towardsRoot, awayFromRoot
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/world/blocks/Floor.java b/core/src/mindustry/world/blocks/Floor.java
index c9d7759bc9..ba4f5db8e5 100644
--- a/core/src/mindustry/world/blocks/Floor.java
+++ b/core/src/mindustry/world/blocks/Floor.java
@@ -221,4 +221,4 @@ public class Floor extends Block{
return block.edges()[x][2 - y];
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java
index 983db90810..25c45c2df4 100644
--- a/core/src/mindustry/world/blocks/distribution/Conveyor.java
+++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java
@@ -379,4 +379,4 @@ public class Conveyor extends Block implements Autotiler{
}
}
}
-}
\ No newline at end of file
+}
diff --git a/core/src/mindustry/world/meta/values/FloorValue.java b/core/src/mindustry/world/meta/values/FloorValue.java
index 7993a60eb0..81b612164b 100644
--- a/core/src/mindustry/world/meta/values/FloorValue.java
+++ b/core/src/mindustry/world/meta/values/FloorValue.java
@@ -18,4 +18,4 @@ public class FloorValue implements StatValue{
table.add(new Image(floor.icon(Cicon.small))).padRight(3);
table.add(floor.localizedName).padRight(3);
}
-}
\ No newline at end of file
+}
diff --git a/fastlane/metadata/android/cs-CZ/title.txt b/fastlane/metadata/android/cs-CZ/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/cs-CZ/title.txt
+++ b/fastlane/metadata/android/cs-CZ/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/en-US/changelogs/12203.txt b/fastlane/metadata/android/en-US/changelogs/12203.txt
index 942424c5ea..8cefa14d20 100644
--- a/fastlane/metadata/android/en-US/changelogs/12203.txt
+++ b/fastlane/metadata/android/en-US/changelogs/12203.txt
@@ -1,3 +1,3 @@
- Fixed incorrect attribution in credits; music was made by "A Drop A Day"
- Removed unneeded 3.5 upgrade dialog that sometimes showed up in main menu
-- Added information dialog regarding v4 beta
\ No newline at end of file
+- Added information dialog regarding v4 beta
diff --git a/fastlane/metadata/android/en-US/changelogs/12205.txt b/fastlane/metadata/android/en-US/changelogs/12205.txt
index 70bcab4bfc..d2fbea0415 100644
--- a/fastlane/metadata/android/en-US/changelogs/12205.txt
+++ b/fastlane/metadata/android/en-US/changelogs/12205.txt
@@ -1,4 +1,4 @@
- Fixed incorrect attribution in credits; music was made by "A Drop A Day"
- Removed unneeded 3.5 upgrade dialog that sometimes showed up in main menu
- Added information dialog regarding v4 beta
-- Fixed Discord link
\ No newline at end of file
+- Fixed Discord link
diff --git a/fastlane/metadata/android/en-US/changelogs/26593.txt b/fastlane/metadata/android/en-US/changelogs/26593.txt
index 610563a652..7e281e161b 100644
--- a/fastlane/metadata/android/en-US/changelogs/26593.txt
+++ b/fastlane/metadata/android/en-US/changelogs/26593.txt
@@ -1 +1 @@
-sound.
\ No newline at end of file
+sound.
diff --git a/fastlane/metadata/android/en-US/changelogs/27434.txt b/fastlane/metadata/android/en-US/changelogs/27434.txt
index 5240303123..0228878dee 100644
--- a/fastlane/metadata/android/en-US/changelogs/27434.txt
+++ b/fastlane/metadata/android/en-US/changelogs/27434.txt
@@ -1 +1 @@
-everything
\ No newline at end of file
+everything
diff --git a/fastlane/metadata/android/en-US/changelogs/27476.txt b/fastlane/metadata/android/en-US/changelogs/27476.txt
index ec779fbdba..f7a9042cc4 100644
--- a/fastlane/metadata/android/en-US/changelogs/27476.txt
+++ b/fastlane/metadata/android/en-US/changelogs/27476.txt
@@ -1 +1 @@
-Fixed some minor sound/multiplayer issues
\ No newline at end of file
+Fixed some minor sound/multiplayer issues
diff --git a/fastlane/metadata/android/en-US/changelogs/27689.txt b/fastlane/metadata/android/en-US/changelogs/27689.txt
index 92e8a8c47e..f849f7a245 100644
--- a/fastlane/metadata/android/en-US/changelogs/27689.txt
+++ b/fastlane/metadata/android/en-US/changelogs/27689.txt
@@ -1 +1 @@
-Bugfixes
\ No newline at end of file
+Bugfixes
diff --git a/fastlane/metadata/android/en-US/changelogs/27770.txt b/fastlane/metadata/android/en-US/changelogs/27770.txt
index 04d19b551f..06f22342a3 100644
--- a/fastlane/metadata/android/en-US/changelogs/27770.txt
+++ b/fastlane/metadata/android/en-US/changelogs/27770.txt
@@ -1 +1 @@
-Added ambient sounds for machines.
\ No newline at end of file
+Added ambient sounds for machines.
diff --git a/fastlane/metadata/android/en-US/changelogs/27997.txt b/fastlane/metadata/android/en-US/changelogs/27997.txt
index 2b2809c72d..9b26aa3618 100644
--- a/fastlane/metadata/android/en-US/changelogs/27997.txt
+++ b/fastlane/metadata/android/en-US/changelogs/27997.txt
@@ -1,2 +1,2 @@
The first release of version 4.0; an update that has been in the works for over a year.
-Extensive changes, including new gamemodes, customizable rules, a new editor, new graphics, new enemies, unit production, new progression, a campaign, and more. See the in-game changelog link for specific details of what has been added and removed over the past year.
\ No newline at end of file
+Extensive changes, including new gamemodes, customizable rules, a new editor, new graphics, new enemies, unit production, new progression, a campaign, and more. See the in-game changelog link for specific details of what has been added and removed over the past year.
diff --git a/fastlane/metadata/android/en-US/changelogs/28409.txt b/fastlane/metadata/android/en-US/changelogs/28409.txt
index 670c65cc45..72fac509ef 100644
--- a/fastlane/metadata/android/en-US/changelogs/28409.txt
+++ b/fastlane/metadata/android/en-US/changelogs/28409.txt
@@ -1,2 +1,2 @@
Fixed multiplayer not syncing positions and shots correctly on certain networks or situations.
-Various other bugfixes.
\ No newline at end of file
+Various other bugfixes.
diff --git a/fastlane/metadata/android/en-US/changelogs/721.txt b/fastlane/metadata/android/en-US/changelogs/721.txt
index 8361896cef..4e72aaf3d6 100644
--- a/fastlane/metadata/android/en-US/changelogs/721.txt
+++ b/fastlane/metadata/android/en-US/changelogs/721.txt
@@ -2,4 +2,4 @@
- Fixed wave timer being extremely slow at high TPS with multithreading enabled
- Fixed scrolling on player menu causing the whole screen to pan
- Updated Polish translation
-- Updated Russian translation with new text (Thanks to @Prosta4okua)
\ No newline at end of file
+- Updated Russian translation with new text (Thanks to @Prosta4okua)
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt
index b9958053f1..d95c57b64d 100644
--- a/fastlane/metadata/android/en-US/full_description.txt
+++ b/fastlane/metadata/android/en-US/full_description.txt
@@ -11,4 +11,4 @@ Feature include:
- Cross-platform multiplayer via local networks or dedicated servers
- Custom game rules: Change block costs, enemy stats, starting items, wave timing and more
- A powerful editor, with tools to randomly generate ores, terrain, decoration and apply symmetry to maps
-- Customizable map wave layouts
\ No newline at end of file
+- Customizable map wave layouts
diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt
index b6b5a942cd..ac569c2687 100644
--- a/fastlane/metadata/android/en-US/short_description.txt
+++ b/fastlane/metadata/android/en-US/short_description.txt
@@ -1 +1 @@
-A factory-based sandbox tower defense game.
\ No newline at end of file
+A factory-based sandbox tower defense game.
diff --git a/fastlane/metadata/android/en-US/summary.txt b/fastlane/metadata/android/en-US/summary.txt
index b6b5a942cd..ac569c2687 100644
--- a/fastlane/metadata/android/en-US/summary.txt
+++ b/fastlane/metadata/android/en-US/summary.txt
@@ -1 +1 @@
-A factory-based sandbox tower defense game.
\ No newline at end of file
+A factory-based sandbox tower defense game.
diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/en-US/title.txt
+++ b/fastlane/metadata/android/en-US/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/fr-FR/title.txt b/fastlane/metadata/android/fr-FR/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/fr-FR/title.txt
+++ b/fastlane/metadata/android/fr-FR/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/fr-FR/video.txt b/fastlane/metadata/android/fr-FR/video.txt
index e69de29bb2..8b13789179 100644
--- a/fastlane/metadata/android/fr-FR/video.txt
+++ b/fastlane/metadata/android/fr-FR/video.txt
@@ -0,0 +1 @@
+
diff --git a/fastlane/metadata/android/it-IT/changelogs/102.2.txt b/fastlane/metadata/android/it-IT/changelogs/102.2.txt
index db62ea93f9..718fa43d87 100644
--- a/fastlane/metadata/android/it-IT/changelogs/102.2.txt
+++ b/fastlane/metadata/android/it-IT/changelogs/102.2.txt
@@ -2,4 +2,4 @@
- Aggiunta regola della salute dei blocchi
- Aggiunte ulteriori squadre interne per modalità di gioco alternative
- Aggiunte funzionalità per migliorare il server modding
-- Cambiamenti interni: il package ora è "mindustry" invece di "io.anuke.mindustry" (i plugin non funzioneranno)
\ No newline at end of file
+- Cambiamenti interni: il package ora è "mindustry" invece di "io.anuke.mindustry" (i plugin non funzioneranno)
diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt
index 1cf2ed8e9c..071cef4ed0 100644
--- a/fastlane/metadata/android/it-IT/full_description.txt
+++ b/fastlane/metadata/android/it-IT/full_description.txt
@@ -11,4 +11,4 @@ Funzionalità:
- Modalità multigiocatore cross-platform attraverso la rete locale o i server dedicati
- Regole di gioco personalizzate: modifica i costi dei blocchi, le statistiche nemiche, gli oggetti di partenza, i tempi tra le ondate e molto altro
- Un editor potente, con strumenti che permettono di generare i minerali in modo casuale, il terreno, le decorazioni e applicare simmetria alle mappe
-- Ondate delle mappe completamente personalizzabili
\ No newline at end of file
+- Ondate delle mappe completamente personalizzabili
diff --git a/fastlane/metadata/android/it-IT/short_description.txt b/fastlane/metadata/android/it-IT/short_description.txt
index 92c1aa2e38..335469c50a 100644
--- a/fastlane/metadata/android/it-IT/short_description.txt
+++ b/fastlane/metadata/android/it-IT/short_description.txt
@@ -1 +1 @@
-Un gioco sandbox basato sulla produzione e sulla difesa.
\ No newline at end of file
+Un gioco sandbox basato sulla produzione e sulla difesa.
diff --git a/fastlane/metadata/android/it-IT/summary.txt b/fastlane/metadata/android/it-IT/summary.txt
index 92c1aa2e38..335469c50a 100644
--- a/fastlane/metadata/android/it-IT/summary.txt
+++ b/fastlane/metadata/android/it-IT/summary.txt
@@ -1 +1 @@
-Un gioco sandbox basato sulla produzione e sulla difesa.
\ No newline at end of file
+Un gioco sandbox basato sulla produzione e sulla difesa.
diff --git a/fastlane/metadata/android/it-IT/title.txt b/fastlane/metadata/android/it-IT/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/it-IT/title.txt
+++ b/fastlane/metadata/android/it-IT/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/it-IT/video.txt b/fastlane/metadata/android/it-IT/video.txt
index e69de29bb2..8b13789179 100644
--- a/fastlane/metadata/android/it-IT/video.txt
+++ b/fastlane/metadata/android/it-IT/video.txt
@@ -0,0 +1 @@
+
diff --git a/fastlane/metadata/android/ja-JP/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt
index d76eb7a53c..8b0405139b 100644
--- a/fastlane/metadata/android/ja-JP/full_description.txt
+++ b/fastlane/metadata/android/ja-JP/full_description.txt
@@ -11,4 +11,4 @@ Mindustryの特徴:
- ローカルネットワークや専用サーバーで、クロスプラットフォームのマルチプレイが可能
- カスタマイズ可能なゲーム: ブロックのコスト変更、敵のステータス、初期アイテム、ウェーブのタイミング など…
- 強力なエディター、鉱石をランダムに生成したり、地形、デコレーション、左右対称なマップも制作可能
-- マップごとにウェーブの構成もカスタマイズ可能
\ No newline at end of file
+- マップごとにウェーブの構成もカスタマイズ可能
diff --git a/fastlane/metadata/android/ja-JP/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt
index a7430009eb..093c9d2745 100644
--- a/fastlane/metadata/android/ja-JP/short_description.txt
+++ b/fastlane/metadata/android/ja-JP/short_description.txt
@@ -1 +1 @@
-工場ベースのサンドボックスタワーディフェンスゲーム。
\ No newline at end of file
+工場ベースのサンドボックスタワーディフェンスゲーム。
diff --git a/fastlane/metadata/android/ja-JP/title.txt b/fastlane/metadata/android/ja-JP/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/ja-JP/title.txt
+++ b/fastlane/metadata/android/ja-JP/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/pl-PL/short_description.txt b/fastlane/metadata/android/pl-PL/short_description.txt
index 6628c453f0..520c848bcf 100644
--- a/fastlane/metadata/android/pl-PL/short_description.txt
+++ b/fastlane/metadata/android/pl-PL/short_description.txt
@@ -1 +1 @@
-Bazująca na przetrwaniu i zarządzaniu fabryką sandboxowa gra typu obrony wieży.
\ No newline at end of file
+Bazująca na przetrwaniu i zarządzaniu fabryką sandboxowa gra typu obrony wieży.
diff --git a/fastlane/metadata/android/pl-PL/summary.txt b/fastlane/metadata/android/pl-PL/summary.txt
index 6628c453f0..520c848bcf 100644
--- a/fastlane/metadata/android/pl-PL/summary.txt
+++ b/fastlane/metadata/android/pl-PL/summary.txt
@@ -1 +1 @@
-Bazująca na przetrwaniu i zarządzaniu fabryką sandboxowa gra typu obrony wieży.
\ No newline at end of file
+Bazująca na przetrwaniu i zarządzaniu fabryką sandboxowa gra typu obrony wieży.
diff --git a/fastlane/metadata/android/pl-PL/title.txt b/fastlane/metadata/android/pl-PL/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/pl-PL/title.txt
+++ b/fastlane/metadata/android/pl-PL/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/pt-PT/changelogs/102.txt b/fastlane/metadata/android/pt-PT/changelogs/102.txt
index 784f53ea20..f1fb5da19e 100644
--- a/fastlane/metadata/android/pt-PT/changelogs/102.txt
+++ b/fastlane/metadata/android/pt-PT/changelogs/102.txt
@@ -2,4 +2,4 @@
- Foi adicionada regra de integridade do bloco
- Adicionado mais equipes internas para modos de jogo alternativos
- Adicionado recursos para melhorar a modificação do servidor
--Grande mudança interna: o pacote agora é "mindustry" em vez de "io.anuke.mindustry" (irá quebrar os plugins)
\ No newline at end of file
+-Grande mudança interna: o pacote agora é "mindustry" em vez de "io.anuke.mindustry" (irá quebrar os plugins)
diff --git a/fastlane/metadata/android/pt-PT/full_description.txt b/fastlane/metadata/android/pt-PT/full_description.txt
index 07cf8233b3..78d122abe5 100644
--- a/fastlane/metadata/android/pt-PT/full_description.txt
+++ b/fastlane/metadata/android/pt-PT/full_description.txt
@@ -11,4 +11,4 @@ Recursos incluidos:
- Multijogador multiplataforma através de redes locais ou servidores dedicados
- Regras personalizadas do jogo: altere os custos de bloqueio, estatísticas do inimigo, itens iniciais, tempo das ondas e muito mais
- Um editor poderoso, com ferramentas para gerar aleatoriamente minérios, terrenos, decoração e aplicar simetria a mapas
-- Layouts de rondas de mapa personalizáveis
\ No newline at end of file
+- Layouts de rondas de mapa personalizáveis
diff --git a/fastlane/metadata/android/pt-PT/summary.txt b/fastlane/metadata/android/pt-PT/summary.txt
index 24b4edd83d..6ecbaf697a 100644
--- a/fastlane/metadata/android/pt-PT/summary.txt
+++ b/fastlane/metadata/android/pt-PT/summary.txt
@@ -1 +1 @@
-Um jogo de defesa de torre de sandbox baseado em construção.
\ No newline at end of file
+Um jogo de defesa de torre de sandbox baseado em construção.
diff --git a/fastlane/metadata/android/pt-PT/title.txt b/fastlane/metadata/android/pt-PT/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/pt-PT/title.txt
+++ b/fastlane/metadata/android/pt-PT/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt
index 03219413cc..2b1647994e 100644
--- a/fastlane/metadata/android/ru-RU/full_description.txt
+++ b/fastlane/metadata/android/ru-RU/full_description.txt
@@ -12,4 +12,4 @@
- Кроссплатформенный мультиплеер с поддержкой как и локальных сетей, так и серверов
- Пользовательские настройки игры — изменяйте цену блоков, силу врагов, количество стартовых ресурсов, интервал между волнами и т.д.
- Редактор карт с бесчисленными возможностями, инструментами для случайной генерации руд, рельефа, декораций, а также для симметрии карт
-- Настраиваемые раскладки волн для карт
\ No newline at end of file
+- Настраиваемые раскладки волн для карт
diff --git a/fastlane/metadata/android/ru-RU/title.txt b/fastlane/metadata/android/ru-RU/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/ru-RU/title.txt
+++ b/fastlane/metadata/android/ru-RU/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/uk/title.txt b/fastlane/metadata/android/uk/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/uk/title.txt
+++ b/fastlane/metadata/android/uk/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/fastlane/metadata/android/zh-TW/title.txt b/fastlane/metadata/android/zh-TW/title.txt
index 2beb939017..e2842b447a 100644
--- a/fastlane/metadata/android/zh-TW/title.txt
+++ b/fastlane/metadata/android/zh-TW/title.txt
@@ -1 +1 @@
-Mindustry
\ No newline at end of file
+Mindustry
diff --git a/ios/data/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/data/Assets.xcassets/AppIcon.appiconset/Contents.json
index 2210d686de..8d0bc9cd26 100644
--- a/ios/data/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/data/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -113,4 +113,4 @@
"version": 1,
"author": "xcode"
}
-}
\ No newline at end of file
+}
diff --git a/ios/data/Assets.xcassets/Contents.json b/ios/data/Assets.xcassets/Contents.json
index 121dee67a6..97a8662ebd 100644
--- a/ios/data/Assets.xcassets/Contents.json
+++ b/ios/data/Assets.xcassets/Contents.json
@@ -3,4 +3,4 @@
"version": 1,
"author": "xcode"
}
-}
\ No newline at end of file
+}
diff --git a/server/server_template/run_server.bat b/server/server_template/run_server.bat
index 26d919a77b..8084a7149f 100644
--- a/server/server_template/run_server.bat
+++ b/server/server_template/run_server.bat
@@ -1 +1 @@
-java -jar server.jar
\ No newline at end of file
+java -jar server.jar
diff --git a/server/server_template/run_server.sh b/server/server_template/run_server.sh
index 26d919a77b..8084a7149f 100755
--- a/server/server_template/run_server.sh
+++ b/server/server_template/run_server.sh
@@ -1 +1 @@
-java -jar server.jar
\ No newline at end of file
+java -jar server.jar
diff --git a/server/src/mindustry/server/ServerLauncher.java b/server/src/mindustry/server/ServerLauncher.java
index 8b668ae669..c7d2ea9b3f 100644
--- a/server/src/mindustry/server/ServerLauncher.java
+++ b/server/src/mindustry/server/ServerLauncher.java
@@ -82,4 +82,4 @@ public class ServerLauncher implements ApplicationListener{
Events.fire(new ServerLoadEvent());
}
-}
\ No newline at end of file
+}
diff --git a/servers_be.json b/servers_be.json
index be72d9d6da..e99eefaaad 100644
--- a/servers_be.json
+++ b/servers_be.json
@@ -2,4 +2,4 @@
{
"address": "mindustry.us.to:6568"
}
-]
\ No newline at end of file
+]
diff --git a/tests/build.gradle b/tests/build.gradle
index 93595748d0..14b7dccb41 100644
--- a/tests/build.gradle
+++ b/tests/build.gradle
@@ -8,4 +8,4 @@ sourceSets{
srcDir "src/test/resources"
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/src/test/java/ApplicationTests.java b/tests/src/test/java/ApplicationTests.java
index 1ca2a6d03d..8bb1ba3206 100644
--- a/tests/src/test/java/ApplicationTests.java
+++ b/tests/src/test/java/ApplicationTests.java
@@ -447,4 +447,4 @@ public class ApplicationTests{
tile.block().handleStack(item, 1, tile, unit);
assertEquals(capacity, tile.entity.items.get(item));
}
-}
\ No newline at end of file
+}
diff --git a/tools/run-newline b/tools/run-newline
new file mode 100755
index 0000000000..e9e4394169
--- /dev/null
+++ b/tools/run-newline
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+# add newlines to all files
+git ls-files -z | while IFS= read -rd '' f; do tail -c1 < "$f" | read -r _ || echo >> "$f"; done
+
+# undo the changes in these
+git checkout -- "*.png"
+git checkout -- "*.msav"
+git checkout -- "*.jar"
+git checkout -- "*.ogg"
+git checkout -- "*.ico"
+git checkout -- "*.icns"
+git checkout -- "*.ttf"
+git checkout -- "*.glsl"