From fa6495ceebf072ccd0dff3e80a2fdafe0e129e50 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 26 Sep 2017 17:03:17 -0400 Subject: [PATCH] More balancing --- .gitignore | 1 + .../io/anuke/mindustry/AndroidLauncher.java | 20 ++++++++++++------ core/src/io/anuke/mindustry/Control.java | 15 ++++++++----- core/src/io/anuke/mindustry/Mindustry.java | 16 ++++++++++++++ core/src/io/anuke/mindustry/UI.java | 4 +--- core/src/io/anuke/mindustry/Vars.java | 2 +- .../anuke/mindustry/entities/BulletType.java | 4 ++-- .../entities/enemies/BlastEnemy.java | 2 +- .../mindustry/entities/enemies/Enemy.java | 12 +++++++---- core/src/io/anuke/mindustry/io/Formatter.java | 8 +++++++ core/src/io/anuke/mindustry/io/SaveIO.java | 16 +++++--------- .../io/anuke/mindustry/resource/Recipe.java | 12 +++++------ .../io/anuke/mindustry/ui/UpgradeDialog.java | 3 +++ .../io/anuke/mindustry/world/Generator.java | 2 +- .../world/blocks/ProductionBlocks.java | 6 +++--- .../mindustry/world/blocks/WeaponBlocks.java | 15 +++++++------ desktop/mindustry-saves/0.mins | Bin 6955 -> 10994 bytes desktop/mindustry-saves/1.mins | Bin 1357 -> 11100 bytes desktop/mindustry-saves/3.mins | Bin 0 -> 12697 bytes .../mindustry/desktop/DesktopLauncher.java | 16 +++++++++----- gradle.properties | 2 +- .../anuke/mindustry/client/HtmlLauncher.java | 18 +++++++++++----- 22 files changed, 112 insertions(+), 62 deletions(-) create mode 100644 core/src/io/anuke/mindustry/io/Formatter.java create mode 100644 desktop/mindustry-saves/3.mins diff --git a/.gitignore b/.gitignore index bafe066cda..b77615b838 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /deploy/ /desktop/packr-out/ /desktop/packr-export/ +/core/lib/ ## Java diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index f847e53a79..24f61c1e50 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -1,15 +1,14 @@ package io.anuke.mindustry; +import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.Locale; import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; - +import android.annotation.SuppressLint; import android.os.Bundle; -import io.anuke.mindustry.io.SaveIO; -import io.anuke.mindustry.io.SaveIO.FormatProvider; +import io.anuke.mindustry.io.Formatter; public class AndroidLauncher extends AndroidApplication { @Override @@ -18,13 +17,20 @@ public class AndroidLauncher extends AndroidApplication { AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.useImmersiveMode = true; - SaveIO.setFormatProvider(new FormatProvider(){ - SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH); + Mindustry.formatter = new Formatter(){ + @SuppressLint("SimpleDateFormat") + SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm"); + @Override public String format(Date date){ return format.format(date); } - }); + + @Override + public String format(int number){ + return NumberFormat.getIntegerInstance().format(number); + } + }; initialize(new Mindustry(), config); } diff --git a/core/src/io/anuke/mindustry/Control.java b/core/src/io/anuke/mindustry/Control.java index b828f521c2..488570801a 100644 --- a/core/src/io/anuke/mindustry/Control.java +++ b/core/src/io/anuke/mindustry/Control.java @@ -95,8 +95,8 @@ public class Control extends Module{ spawns = Array.with( new EnemySpawn(Enemy.class){{ - scaling = 2; - tierscaleback = 4; + scaling = 3; + tierscaleback = 3; }}, new EnemySpawn(FastEnemy.class){{ after = 2; @@ -114,7 +114,8 @@ public class Control extends Module{ }}, new EnemySpawn(RapidEnemy.class){{ after = 7; - spacing = 4; + spacing = 3; + scaling = 3; }}, new EnemySpawn(TankEnemy.class){{ after = 4; @@ -129,13 +130,13 @@ public class Control extends Module{ ); - /* + //TODO remove this debugging for(int i = 1; i < 60; i ++){ UCore.log("\n\n--WAVE " + i); printEnemies(i); } - */ + } public void reset(){ @@ -250,13 +251,17 @@ public class Control extends Module{ } void printEnemies(int wave){ + int total = 0; for(EnemySpawn spawn : spawns){ int spawnamount = spawn.evaluate(wave, 0); + total += spawnamount; if(spawnamount > 0){ UCore.log(ClassReflection.getSimpleName(spawn.type) + " t" + spawn.tier(wave, 0) + " x" + spawnamount); } } + + UCore.log("Total: " + total); } public void enemyDeath(){ diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index c98842a851..ba9a7a05f7 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -1,12 +1,28 @@ package io.anuke.mindustry; +import java.util.Date; + import io.anuke.mindustry.GameState.State; +import io.anuke.mindustry.io.Formatter; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.modules.ModuleCore; public class Mindustry extends ModuleCore { public static String[] args = {}; + public static Formatter formatter = new Formatter(){ + + @Override + public String format(Date date){ + return "invalid date"; + } + + @Override + public String format(int number){ + return number + ""; + } + + }; @Override public void init(){ diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index 9bbe03a06a..793745e5be 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -3,8 +3,6 @@ package io.anuke.mindustry; import static io.anuke.mindustry.Vars.*; import static io.anuke.ucore.scene.actions.Actions.*; -import java.text.NumberFormat; - import com.badlogic.gdx.Application.ApplicationType; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; @@ -701,7 +699,7 @@ public class UI extends SceneModule{ for(Item stack : Inventory.getItemTypes()){ Image image = new Image(Draw.region("icon-" + stack.name())); - Label label = new Label("" + NumberFormat.getIntegerInstance().format(Inventory.getAmount(stack))); + Label label = new Label("" + Mindustry.formatter.format(Inventory.getAmount(stack))); label.setFontScale(fontscale*1.5f); itemtable.add(image).size(8*3).units(Unit.dp); itemtable.add(label).left(); diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 7da5cbb7f1..382a12fc0e 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -14,7 +14,7 @@ public class Vars{ //respawn time in frames public static final float respawnduration = 60*4; //time between waves in frames - public static final float wavespace = 25*60*(android ? 1 : 1); + public static final float wavespace = 30*60*(android ? 1 : 1); //waves can last no longer than 6 minutes, otherwise the next one spawns public static final float maxwavespace = 60*60*6; //how far away from spawn points the player can't place blocks diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index 40ddf23f25..24c364168b 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -31,7 +31,7 @@ public abstract class BulletType extends BaseBulletType{ Draw.reset(); } }, - sniper = new BulletType(3f, 20){ + sniper = new BulletType(3f, 23){ public void draw(Bullet b){ Draw.color(Color.LIGHT_GRAY); Draw.thick(1f); @@ -45,7 +45,7 @@ public abstract class BulletType extends BaseBulletType{ } } }, - shell = new BulletType(1.1f, 80){ + shell = new BulletType(1.1f, 85){ { lifetime = 110f; hitsize = 8f; diff --git a/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java index 1e1dc26315..2142dbbf23 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java @@ -7,7 +7,7 @@ public class BlastEnemy extends Enemy{ public BlastEnemy(int spawn) { super(spawn); - maxhealth = 15; + maxhealth = 30; speed = 0.65f; bullet = null; turretrotatespeed = 0f; diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 332667fa3e..0c4a934ce6 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -23,7 +23,7 @@ public class Enemy extends DestructibleEntity{ public final static int maxtier = 4; protected float speed = 0.3f; - protected float reload = 40; + protected float reload = 32; protected float range = 60; protected float length = 4; protected float rotatespeed = 7f; @@ -47,7 +47,7 @@ public class Enemy extends DestructibleEntity{ hitsize = 5; - maxhealth = 50; + maxhealth = 60; heal(); } @@ -104,17 +104,21 @@ public class Enemy extends DestructibleEntity{ } node = cindex; + + //node = 0; + + //set(World.spawnpoints.get(spawn).worldx(), World.spawnpoints.get(spawn).worldy()); } @Override public void added(){ if(bullet != null){ - damage = (int)(bullet.damage * (1 + (tier - 1) * 0.5f)); + damage = (int)(bullet.damage * (1 + (tier - 1) * 1f)); } maxhealth *= tier; speed += 0.04f*tier + Mathf.range(0.1f); - reload /= Math.max(tier /1.5f, 1f); + reload /= Math.max(tier / 1.5f, 1f); range += tier*5; heal(); diff --git a/core/src/io/anuke/mindustry/io/Formatter.java b/core/src/io/anuke/mindustry/io/Formatter.java new file mode 100644 index 0000000000..d6dc1278dd --- /dev/null +++ b/core/src/io/anuke/mindustry/io/Formatter.java @@ -0,0 +1,8 @@ +package io.anuke.mindustry.io; + +import java.util.Date; + +public interface Formatter{ + public String format(Date date); + public String format(int number); +} diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index 5f360e9841..980141f3eb 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -15,6 +15,7 @@ import com.badlogic.gdx.utils.TimeUtils; import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.Inventory; +import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.resource.Item; @@ -85,8 +86,6 @@ public class SaveIO{ /**Save file version ID. Should be incremented every breaking release.*/ private static final int fileVersionID = 7; - private static FormatProvider provider = null; - //TODO automatic registration of types? private static final Array> enemyIDs = Array.with( Enemy.class, @@ -126,7 +125,7 @@ public class SaveIO{ try(DataInputStream stream = new DataInputStream(fileFor(slot).read())){ stream.readInt(); Date date = new Date(stream.readLong()); - return provider.format(date); + return Mindustry.formatter.format(date); }catch (IOException e){ throw new RuntimeException(e); } @@ -147,10 +146,6 @@ public class SaveIO{ return Gdx.files.local("mindustry-saves/" + slot + ".mins"); } - public static void setFormatProvider(FormatProvider prov){ - provider = prov; - } - public static void write(FileHandle file){ try(DataOutputStream stream = new DataOutputStream(file.write(false))){ @@ -290,6 +285,9 @@ public class SaveIO{ //weapons + Vars.control.getWeapons().clear(); + Vars.control.getWeapons().add(Weapon.blaster); + int weapons = stream.readByte(); for(int i = 0; i < weapons; i ++){ @@ -400,8 +398,4 @@ public class SaveIO{ throw new RuntimeException(e); } } - - public static interface FormatProvider{ - public String format(Date date); - } } diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java index 335be66618..7b81c9cb4e 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/resource/Recipe.java @@ -21,10 +21,10 @@ public enum Recipe{ router(distribution, ProductionBlocks.router, stack(Item.stone, 2)), junction(distribution, ProductionBlocks.junction, stack(Item.iron, 2)), - turret(defense, WeaponBlocks.turret, stack(Item.stone, 3)), - dturret(defense, WeaponBlocks.doubleturret, stack(Item.stone, 6)), - machineturret(defense, WeaponBlocks.machineturret, stack(Item.iron, 7), stack(Item.stone, 10)), - shotgunturret(defense, WeaponBlocks.shotgunturret, stack(Item.iron, 9), stack(Item.stone, 10)), + turret(defense, WeaponBlocks.turret, stack(Item.stone, 4)), + dturret(defense, WeaponBlocks.doubleturret, stack(Item.stone, 7)), + machineturret(defense, WeaponBlocks.machineturret, stack(Item.iron, 8), stack(Item.stone, 10)), + shotgunturret(defense, WeaponBlocks.shotgunturret, stack(Item.iron, 10), stack(Item.stone, 10)), flameturret(defense, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), sniperturret(defense, WeaponBlocks.sniperturret, stack(Item.iron, 15), stack(Item.steel, 10)), laserturret(defense, WeaponBlocks.laserturret, stack(Item.steel, 10), stack(Item.titanium, 10)), @@ -32,8 +32,8 @@ public enum Recipe{ teslaturret(defense, WeaponBlocks.teslaturret, stack(Item.steel, 10), stack(Item.titanium, 15), stack(Item.dirium, 15)), plasmaturret(defense, WeaponBlocks.plasmaturret, stack(Item.steel, 10), stack(Item.titanium, 10), stack(Item.dirium, 15)), - healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 25)), - megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 15), stack(Item.steel, 25)), + healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 30)), + megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), drill(production, ProductionBlocks.stonedrill, stack(Item.stone, 16)), irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 25)), diff --git a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java index 3adf08de73..223f177c4a 100644 --- a/core/src/io/anuke/mindustry/ui/UpgradeDialog.java +++ b/core/src/io/anuke/mindustry/ui/UpgradeDialog.java @@ -60,6 +60,9 @@ public class UpgradeDialog extends Dialog{ button.setColor(Color.GRAY); }else if(!Inventory.hasItems(weapon.requirements)){ button.setDisabled(true); + }else{ + button.setDisabled(false); + button.setColor(Color.WHITE); } }); diff --git a/core/src/io/anuke/mindustry/world/Generator.java b/core/src/io/anuke/mindustry/world/Generator.java index c5bd03ee2f..60f89f5bba 100644 --- a/core/src/io/anuke/mindustry/world/Generator.java +++ b/core/src/io/anuke/mindustry/world/Generator.java @@ -58,7 +58,7 @@ public class Generator{ floor = Blocks.iron; } - if(Noise.nnoise(x, y, 6, 1) > 0.24){ + if(Noise.nnoise(x, y, 6, 1) > 0.238){ floor = Blocks.coal; } diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index c9e75ba886..4665fde7f9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -122,7 +122,7 @@ public class ProductionBlocks{ liquidAmount = 19.99f; output = Item.coal; health = 50; - purifyTime = 80; + purifyTime = 70; } @Override @@ -135,11 +135,11 @@ public class ProductionBlocks{ { formalName = "titanium\nextractor"; input = Item.iron; - inputAmount = 11; + inputAmount = 6; inputLiquid = Liquid.water; liquidAmount = 40f; liquidCapacity = 41f; - purifyTime = 90; + purifyTime = 80; output = Item.titanium; health = 70; } diff --git a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java index 23286e2abc..d49786fe43 100644 --- a/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/WeaponBlocks.java @@ -98,10 +98,10 @@ public class WeaponBlocks{ { formalName = "railgun turret"; range = 120; - reload = 60f; + reload = 50f; bullet = BulletType.sniper; ammo = Item.steel; - health = 60; + health = 70; } }, @@ -111,7 +111,7 @@ public class WeaponBlocks{ rotatespeed = 0.1f; formalName = "flak turret"; range = 120; - reload = 120f; + reload = 100f; bullet = BulletType.shell; ammo = Item.coal; ammoMultiplier = 5; @@ -128,9 +128,10 @@ public class WeaponBlocks{ formalName = "laser turret"; range = 60; reload = 4f; - damage = 9; + damage = 10; ammo = Item.coal; health = 110; + ammoMultiplier = 60; } }, @@ -139,7 +140,7 @@ public class WeaponBlocks{ { formalName = "tesla turret"; range = 70; - reload = 20f; + reload = 15f; bullet = BulletType.shell; ammo = Item.coal; health = 140; @@ -151,7 +152,7 @@ public class WeaponBlocks{ Angles.translation(entity.rotation, 4); new TeslaOrb(tile.worldx() + Angles.x(), tile.worldy() + Angles.y(), - 70, (int)(8*Vars.multiplier)).add(); + 70, (int)(9*Vars.multiplier)).add(); } }, @@ -161,7 +162,7 @@ public class WeaponBlocks{ inaccuracy = 7f; formalName = "plasma turret"; range = 60f; - reload = 3f; + reload = 2f; bullet = BulletType.plasmaflame; ammo = Item.coal; health = 180; diff --git a/desktop/mindustry-saves/0.mins b/desktop/mindustry-saves/0.mins index 4646b8f1e13663757ac19e098492831f69a8d721..dc050ee814c221015975d38ed6d2ec0f5cbd44b8 100644 GIT binary patch literal 10994 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 Tz}NjVHa_?-8gMQBf*St^kpvFN diff --git a/desktop/mindustry-saves/1.mins b/desktop/mindustry-saves/1.mins index 2b3704d019c127241d7ad7ea457251639042ac0a..3d8dcb4cb5ec0990200ab9711064fec1f6b002bf 100644 GIT binary patch literal 11100 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 QriEkv#R5#5KB&U~0i?57-~a#s literal 1357 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 literal 0 HcmV?d00001 diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 1ccc698348..1ef0c9c4a4 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.desktop; +import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -7,8 +8,7 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import io.anuke.mindustry.Mindustry; -import io.anuke.mindustry.io.SaveIO; -import io.anuke.mindustry.io.SaveIO.FormatProvider; +import io.anuke.mindustry.io.Formatter; public class DesktopLauncher { @@ -20,13 +20,19 @@ public class DesktopLauncher { config.setWindowedMode(800, 600); config.setWindowIcon("sprites/icon.png"); - SaveIO.setFormatProvider(new FormatProvider(){ - SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); + Mindustry.formatter = new Formatter(){ + SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm"); + @Override public String format(Date date){ return format.format(date); } - }); + + @Override + public String format(int number){ + return NumberFormat.getIntegerInstance().format(number); + } + }; Mindustry.args = arg; diff --git a/gradle.properties b/gradle.properties index bad4dbbeee..db1e76fccf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true -org.gradle.jvmargs=-Xms1024m -Xmx2048m +org.gradle.jvmargs=-Xms512m -Xmx1536m org.gradle.configureondemand=true diff --git a/html/src/io/anuke/mindustry/client/HtmlLauncher.java b/html/src/io/anuke/mindustry/client/HtmlLauncher.java index 4eb1d891d3..5bbc443c58 100644 --- a/html/src/io/anuke/mindustry/client/HtmlLauncher.java +++ b/html/src/io/anuke/mindustry/client/HtmlLauncher.java @@ -6,13 +6,14 @@ import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.backends.gwt.GwtApplication; import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration; import com.google.gwt.dom.client.*; +import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.i18n.shared.DateTimeFormat; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.VerticalPanel; import io.anuke.mindustry.Mindustry; -import io.anuke.mindustry.io.SaveIO; -import io.anuke.mindustry.io.SaveIO.FormatProvider; +import io.anuke.mindustry.io.Formatter; public class HtmlLauncher extends GwtApplication { static final int WIDTH = 800; @@ -54,12 +55,19 @@ public class HtmlLauncher extends GwtApplication { } }); - SaveIO.setFormatProvider(new FormatProvider(){ + Mindustry.formatter = new Formatter(){ + DateTimeFormat format = DateTimeFormat.getFormat("EEE, dd MMM yyyy HH:mm:ss"); + @Override public String format(Date date){ - return "saving not supported"; + return format.format(date); } - }); + + @Override + public String format(int number){ + return NumberFormat.getDecimalFormat().format(number); + } + }; return new Mindustry(); }