diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index a3fcd86e8f..d75098db20 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -545,8 +545,10 @@ public class Damage{ tileDamage(team, x, y, baseRadius, damage, null); } - public static void tileDamage(Team team, int x, int y, float baseRadius, float damage, @Nullable Bullet source){ + public static void tileDamage(Team team, int tx, int ty, float baseRadius, float damage, @Nullable Bullet source){ Time.run(0f, () -> { + int x = Mathf.clamp(tx, -100, world.width() + 100), y = Mathf.clamp(ty, -100, world.height() + 100); + var in = world.build(x, y); //spawned inside a multiblock. this means that damage needs to be dealt directly. //why? because otherwise the building would absorb everything in one cell, which means much less damage than a nearby explosion. diff --git a/core/src/mindustry/net/CrashHandler.java b/core/src/mindustry/net/CrashHandler.java index 7ed5ade848..1b52810d28 100644 --- a/core/src/mindustry/net/CrashHandler.java +++ b/core/src/mindustry/net/CrashHandler.java @@ -28,6 +28,8 @@ public class CrashHandler{ report += "Report this at " + Vars.reportIssueURL + "\n\n"; } + var enabledMods = mods == null ? null : mods.list().select(m -> m.shouldBeEnabled() && m.isSupported()); + return report + "Version: " + Version.combined() + (Version.buildDate.equals("unknown") ? "" : " (Built " + Version.buildDate + ")") + (Vars.headless ? " (Server)" : "") + "\n" + "Date: " + new SimpleDateFormat("MMMM d, yyyy HH:mm:ss a", Locale.getDefault()).format(new Date()) + "\n" @@ -37,7 +39,7 @@ public class CrashHandler{ + "Runtime Available Memory: " + (Runtime.getRuntime().maxMemory() / 1024 / 1024) + "mb\n" + "Cores: " + OS.cores + "\n" + (cause == null ? "" : "Likely Cause: " + cause.meta.displayName + " (" + cause.name + " v" + cause.meta.version + ")\n") - + (mods == null ? "" : "Mods: " + (!mods.list().contains(LoadedMod::shouldBeEnabled) ? "none (vanilla)" : mods.list().select(LoadedMod::shouldBeEnabled).toString(", ", mod -> mod.name + ":" + mod.meta.version))) + + (enabledMods == null ? "" : "Mods: " + (enabledMods.isEmpty() ? "none (vanilla)" : enabledMods.toString(", ", mod -> mod.name + ":" + mod.meta.version))) + "\n\n" + error; }