From 09d00b30e9031c90f4f1080706b922e3f34e482f Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 29 Jul 2023 09:51:58 -0400 Subject: [PATCH] Fixed incorrect consumption rate in booster stats --- .../src/mindustry/ctype/UnlockableContent.java | 2 +- core/src/mindustry/mod/Mods.java | 18 +++++++++++------- .../mindustry/ui/dialogs/MapListDialog.java | 2 +- core/src/mindustry/ui/dialogs/ModsDialog.java | 10 +++++----- .../mindustry/ui/dialogs/SchematicsDialog.java | 2 +- core/src/mindustry/world/meta/StatValues.java | 6 +++--- server/src/mindustry/server/ServerControl.java | 4 ++-- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index 566b625205..844f28aefd 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -69,7 +69,7 @@ public abstract class UnlockableContent extends MappableContent{ } public String displayDescription(){ - return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName()); + return minfo.mod == null ? description : description + "\n" + Core.bundle.format("mod.display", minfo.mod.meta.displayName); } /** Checks stat initialization state. Call before displaying stats. */ diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 3834582f10..cbbf2cdf4c 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -798,8 +798,7 @@ public class Mods implements Loadable{ } /** Tries to find the config file of a mod/plugin. */ - @Nullable - public ModMeta findMeta(Fi file){ + public @Nullable ModMeta findMeta(Fi file){ Fi metaFile = null; for(String name : metaFiles){ if((metaFile = file.child(name)).exists()){ @@ -1167,7 +1166,12 @@ public class Mods implements Loadable{ /** Mod metadata information.*/ public static class ModMeta{ - public String name, minGameVersion = "0", internalName; + /** Name as defined in mod.json. Stripped of colors, but may contain spaces. */ + public String name; + /** Name without spaces in all lower case. */ + public String internalName; + /** Minimum game version that this mod requires, e.g. "140.1" */ + public String minGameVersion = "0"; public @Nullable String displayName, author, description, subtitle, version, main, repo; public Seq dependencies = Seq.with(); public Seq softDependencies = Seq.with(); @@ -1183,7 +1187,8 @@ public class Mods implements Loadable{ public boolean pregenerated; public String displayName(){ - return displayName == null ? name : displayName; + //useless, kept for legacy reasons + return displayName; } public String shortDescription(){ @@ -1194,12 +1199,11 @@ public class Mods implements Loadable{ public void cleanup(){ if(name != null) name = Strings.stripColors(name); if(displayName != null) displayName = Strings.stripColors(displayName); + if(displayName == null) displayName = name; if(author != null) author = Strings.stripColors(author); if(description != null) description = Strings.stripColors(description); if(subtitle != null) subtitle = Strings.stripColors(subtitle).replace("\n", ""); - if(name != null){ - internalName = name.toLowerCase(Locale.ROOT).replace(" ", "-"); - } + if(name != null) internalName = name.toLowerCase(Locale.ROOT).replace(" ", "-"); } public int getMinMajor(){ diff --git a/core/src/mindustry/ui/dialogs/MapListDialog.java b/core/src/mindustry/ui/dialogs/MapListDialog.java index 149e08629e..1cdd01e0c6 100644 --- a/core/src/mindustry/ui/dialogs/MapListDialog.java +++ b/core/src/mindustry/ui/dialogs/MapListDialog.java @@ -153,7 +153,7 @@ public abstract class MapListDialog extends BaseDialog{ if(displayType){ button.row(); - button.add(map.custom ? "@custom" : map.workshop ? "@workshop" : map.mod != null ? "[lightgray]" + map.mod.meta.displayName() : "@builtin").color(Color.gray).padTop(3); + button.add(map.custom ? "@custom" : map.workshop ? "@workshop" : map.mod != null ? "[lightgray]" + map.mod.meta.displayName : "@builtin").color(Color.gray).padTop(3); } i++; diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index 140970200e..cfc64166ab 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -215,7 +215,7 @@ public class ModsDialog extends BaseDialog{ pane[0].clear(); boolean any = false; for(LoadedMod item : mods.list()){ - if(Strings.matches(query, item.meta.displayName())){ + if(Strings.matches(query, item.meta.displayName)){ any = true; if(!item.enabled() && !anyDisabled[0] && mods.list().size > 0){ anyDisabled[0] = true; @@ -249,7 +249,7 @@ public class ModsDialog extends BaseDialog{ boolean hideDisabled = !item.isSupported() || item.hasUnmetDependencies() || item.hasContentErrors(); String shortDesc = item.meta.shortDescription(); - text.add("[accent]" + Strings.stripColors(item.meta.displayName()) + "\n" + + text.add("[accent]" + Strings.stripColors(item.meta.displayName) + "\n" + (shortDesc.length() > 0 ? "[lightgray]" + shortDesc + "\n" : "") //so does anybody care about version? //+ "[gray]v" + Strings.stripColors(trimText(item.meta.version)) + "\n" @@ -369,7 +369,7 @@ public class ModsDialog extends BaseDialog{ } private void showMod(LoadedMod mod){ - BaseDialog dialog = new BaseDialog(mod.meta.displayName()); + BaseDialog dialog = new BaseDialog(mod.meta.displayName); dialog.addCloseButton(); @@ -390,7 +390,7 @@ public class ModsDialog extends BaseDialog{ desc.add("@editor.name").padRight(10).color(Color.gray).padTop(0); desc.row(); - desc.add(mod.meta.displayName()).growX().wrap().padTop(2); + desc.add(mod.meta.displayName).growX().wrap().padTop(2); desc.row(); if(mod.meta.author != null){ desc.add("@editor.author").padRight(10).color(Color.gray); @@ -418,7 +418,7 @@ public class ModsDialog extends BaseDialog{ if(all.any()){ dialog.cont.row(); dialog.cont.button("@mods.viewcontent", Icon.book, () -> { - BaseDialog d = new BaseDialog(mod.meta.displayName()); + BaseDialog d = new BaseDialog(mod.meta.displayName); d.cont.pane(cs -> { int i = 0; for(UnlockableContent c : all){ diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index 8bf0f8d514..51b4e294ec 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -154,7 +154,7 @@ public class SchematicsDialog extends BaseDialog{ }else{ buttons.button(Icon.trash, style, () -> { if(s.mod != null){ - ui.showInfo(Core.bundle.format("mod.item.remove", s.mod.meta.displayName())); + ui.showInfo(Core.bundle.format("mod.item.remove", s.mod.meta.displayName)); }else{ ui.showConfirm("@confirm", "@schematic.delete.confirm", () -> { schematics.remove(s); diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index bf6fd1490f..7258dbb89a 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -273,7 +273,7 @@ public class StatValues{ b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); b.table(info -> { info.add(liquid.localizedName).left().row(); - info.add(Strings.autoFixed(maxUsed * 60f, 1) + StatUnit.perSecond.localized()).left().color(Color.lightGray); + info.add(Strings.autoFixed(maxUsed * 60f, 2) + StatUnit.perSecond.localized()).left().color(Color.lightGray); }); b.table(bt -> { @@ -282,7 +282,7 @@ public class StatValues{ float reloadRate = (baseReload ? 1f : 0f) + maxUsed * multiplier * liquid.heatCapacity; float standardReload = baseReload ? reload : reload / (maxUsed * multiplier * 0.4f); float result = standardReload / (reload / reloadRate); - bt.add(Core.bundle.format("bullet.reload", Strings.autoFixed(result * 100, 1))).pad(5); + bt.add(Core.bundle.format("bullet.reload", Strings.autoFixed(result * 100, 2))).pad(5); }).right().grow().pad(10f).padRight(15f); }).growX().pad(5).row(); } @@ -302,7 +302,7 @@ public class StatValues{ b.image(liquid.uiIcon).size(40).pad(10f).left().scaling(Scaling.fit); b.table(info -> { info.add(liquid.localizedName).left().row(); - info.add(Strings.autoFixed(amount * 60f, 1) + StatUnit.perSecond.localized()).left().color(Color.lightGray); + info.add(Strings.autoFixed(amount * 60f, 2) + StatUnit.perSecond.localized()).left().color(Color.lightGray); }); b.table(bt -> { diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index e773530c8c..e946ec1946 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -467,7 +467,7 @@ public class ServerControl implements ApplicationListener{ if(!mods.list().isEmpty()){ info("Mods:"); for(LoadedMod mod : mods.list()){ - info(" @ &fi@ " + (mod.enabled() ? "" : " &lr(" + mod.state + ")"), mod.meta.displayName(), mod.meta.version); + info(" @ &fi@ " + (mod.enabled() ? "" : " &lr(" + mod.state + ")"), mod.meta.displayName, mod.meta.version); } }else{ info("No mods found."); @@ -478,7 +478,7 @@ public class ServerControl implements ApplicationListener{ handler.register("mod", "", "Display information about a loaded plugin.", arg -> { LoadedMod mod = mods.list().find(p -> p.meta.name.equalsIgnoreCase(arg[0])); if(mod != null){ - info("Name: @", mod.meta.displayName()); + info("Name: @", mod.meta.displayName); info("Internal Name: @", mod.name); info("Version: @", mod.meta.version); info("Author: @", mod.meta.author);