From 0b6ef1c57c18e2bdbffe56fee65afad0309ed50b Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 26 Aug 2020 12:25:27 -0400 Subject: [PATCH] Fixed ghost units appearing in certain situations --- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/core/NetClient.java | 3 +++ core/src/mindustry/entities/Units.java | 13 +++++++++++-- core/src/mindustry/entities/comp/UnitComp.java | 3 ++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index ffc8ea7edc..2b4da903c4 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1341,7 +1341,7 @@ public class Blocks implements ContentList{ unloader = new Unloader("unloader"){{ requirements(Category.effect, with(Items.titanium, 25, Items.silicon, 30)); - speed = 7f; + speed = 6f; }}; //endregion diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index cdb42c9864..ecdf57fc91 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -366,6 +366,9 @@ public class NetClient implements ApplicationListener{ @Remote public static void playerDisconnect(int playerid){ + if(netClient != null){ + netClient.addRemovedEntity(playerid); + } Groups.player.removeByID(playerid); } diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 35143817c7..23e3c56db4 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -19,8 +19,17 @@ public class Units{ private static boolean boolResult; @Remote(called = Loc.server) - public static void unitDeath(Unit unit){ - unit.killed(); + public static void unitDeath(int uid){ + Unit unit = Groups.unit.getByID(uid); + + //if there's no unit don't add it later and get it stuck as a ghost + if(netClient != null){ + netClient.addRemovedEntity(uid); + } + + if(unit != null){ + unit.killed(); + } } @Remote(called = Loc.server) diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 8ab082b8f0..0b04063970 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -31,6 +31,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health; @Import boolean dead; @Import Team team; + @Import int id; private UnitController controller; private UnitType type; @@ -389,6 +390,6 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I if(dead || net.client()) return; //deaths are synced; this calls killed() - Call.unitDeath(base()); + Call.unitDeath(id); } }