removes retained player references, Fixes #953
This commit is contained in:
1 parent
448fde1f36
commit
096e62b865
3 files changed
+15
-10
No files matched your search
@@ -43,9 +43,10 @@ public class HUDController
|
|||||||
|
|
||||||
public static Map<ServerPlayerEntity, List<BaseText>> player_huds = new HashMap<>();
|
public static Map<ServerPlayerEntity, List<BaseText>> player_huds = new HashMap<>();
|
||||||
|
|
||||||
public static final Map<ServerPlayerEntity, BaseText> scarpet_headers = new HashMap<>();
|
//keyed with player names so unlogged players don't hold the reference
|
||||||
|
public static final Map<String, BaseText> scarpet_headers = new HashMap<>();
|
||||||
|
|
||||||
public static final Map<ServerPlayerEntity, BaseText> scarpet_footers = new HashMap<>();
|
public static final Map<String, BaseText> scarpet_footers = new HashMap<>();
|
||||||
|
|
||||||
public static void resetScarpetHUDs() {
|
public static void resetScarpetHUDs() {
|
||||||
scarpet_headers.clear();
|
scarpet_headers.clear();
|
||||||
@@ -54,6 +55,7 @@ public class HUDController
|
|||||||
|
|
||||||
public static void addMessage(ServerPlayerEntity player, BaseText hudMessage)
|
public static void addMessage(ServerPlayerEntity player, BaseText hudMessage)
|
||||||
{
|
{
|
||||||
|
if (player == null) return;
|
||||||
if (!player_huds.containsKey(player))
|
if (!player_huds.containsKey(player))
|
||||||
{
|
{
|
||||||
player_huds.put(player, new ArrayList<>());
|
player_huds.put(player, new ArrayList<>());
|
||||||
@@ -80,7 +82,10 @@ public class HUDController
|
|||||||
|
|
||||||
player_huds.clear();
|
player_huds.clear();
|
||||||
|
|
||||||
scarpet_footers.forEach(HUDController::addMessage);
|
server.getPlayerManager().getPlayerList().forEach(p -> {
|
||||||
|
BaseText scarpetFOoter = scarpet_footers.get(p.getEntityName());
|
||||||
|
if (scarpetFOoter != null) HUDController.addMessage(p, scarpetFOoter);
|
||||||
|
});
|
||||||
|
|
||||||
if (LoggerRegistry.__tps)
|
if (LoggerRegistry.__tps)
|
||||||
LoggerRegistry.getLogger("tps").log(()-> send_tps_display(server));
|
LoggerRegistry.getLogger("tps").log(()-> send_tps_display(server));
|
||||||
@@ -117,7 +122,7 @@ public class HUDController
|
|||||||
for (ServerPlayerEntity player: targets)
|
for (ServerPlayerEntity player: targets)
|
||||||
{
|
{
|
||||||
PlayerListHeaderS2CPacket packet = new PlayerListHeaderS2CPacket();
|
PlayerListHeaderS2CPacket packet = new PlayerListHeaderS2CPacket();
|
||||||
((PlayerListHeaderS2CPacketMixin)packet).setHeader(scarpet_headers.getOrDefault(player, new LiteralText("")));
|
((PlayerListHeaderS2CPacketMixin)packet).setHeader(scarpet_headers.getOrDefault(player.getEntityName(), new LiteralText("")));
|
||||||
((PlayerListHeaderS2CPacketMixin)packet).setFooter(Messenger.c(player_huds.getOrDefault(player, Collections.emptyList()).toArray(new Object[0])));
|
((PlayerListHeaderS2CPacketMixin)packet).setFooter(Messenger.c(player_huds.getOrDefault(player, Collections.emptyList()).toArray(new Object[0])));
|
||||||
player.networkHandler.sendPacket(packet);
|
player.networkHandler.sendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ public class FunctionsTestClass {
|
|||||||
}
|
}
|
||||||
if (action == null) // Player list
|
if (action == null) // Player list
|
||||||
{
|
{
|
||||||
Map<ServerPlayerEntity, BaseText> map = actionString.equals("player_list_header") ? HUDController.scarpet_headers : HUDController.scarpet_footers;
|
Map<String, BaseText> map = actionString.equals("player_list_header") ? HUDController.scarpet_headers : HUDController.scarpet_footers;
|
||||||
if (!content.isPresent()) // null
|
if (!content.isPresent()) // null
|
||||||
for (ServerPlayerEntity p : targets)
|
for (ServerPlayerEntity p : targets)
|
||||||
map.remove(p);
|
map.remove(p.getEntityName());
|
||||||
else
|
else
|
||||||
for (ServerPlayerEntity p : targets)
|
for (ServerPlayerEntity p : targets)
|
||||||
map.put(p, (BaseText) content.get());
|
map.put(p.getEntityName(), (BaseText) content.get());
|
||||||
return targets.size();
|
return targets.size();
|
||||||
}
|
}
|
||||||
targets.forEach(p -> {
|
targets.forEach(p -> {
|
||||||
|
|||||||
@@ -551,7 +551,7 @@ public class Auxiliary {
|
|||||||
else title = null; // Will never happen, just to make lambda happy
|
else title = null; // Will never happen, just to make lambda happy
|
||||||
if (action == null)
|
if (action == null)
|
||||||
{
|
{
|
||||||
Map<ServerPlayerEntity, BaseText> map;
|
Map<String, BaseText> map;
|
||||||
if (actionString.equals("player_list_header"))
|
if (actionString.equals("player_list_header"))
|
||||||
map = HUDController.scarpet_headers;
|
map = HUDController.scarpet_headers;
|
||||||
else
|
else
|
||||||
@@ -561,12 +561,12 @@ public class Auxiliary {
|
|||||||
List<ServerPlayerEntity> targetList = targets.collect(Collectors.toList());
|
List<ServerPlayerEntity> targetList = targets.collect(Collectors.toList());
|
||||||
if (!soundsTrue) // null or empty string
|
if (!soundsTrue) // null or empty string
|
||||||
targetList.forEach(target -> {
|
targetList.forEach(target -> {
|
||||||
map.remove(target);
|
map.remove(target.getEntityName());
|
||||||
total.getAndIncrement();
|
total.getAndIncrement();
|
||||||
});
|
});
|
||||||
else
|
else
|
||||||
targetList.forEach(target -> {
|
targetList.forEach(target -> {
|
||||||
map.put(target, (BaseText) title);
|
map.put(target.getEntityName(), (BaseText) title);
|
||||||
total.getAndIncrement();
|
total.getAndIncrement();
|
||||||
});
|
});
|
||||||
HUDController.update_hud(((CarpetContext)c).s.getMinecraftServer(), targetList);
|
HUDController.update_hud(((CarpetContext)c).s.getMinecraftServer(), targetList);
|
||||||
|
|||||||
Reference in new issue
Block a user