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/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/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"