fix
This commit is contained in:
1 parent
1819694d19
commit
fa3505763e
3 files changed
+28
-15
No files matched your search
@@ -112,7 +112,7 @@ public class CarpetServer implements ClientModInitializer,DedicatedServerModInit
|
|||||||
public static void tick(MinecraftServer server)
|
public static void tick(MinecraftServer server)
|
||||||
{
|
{
|
||||||
TickSpeed.tick();
|
TickSpeed.tick();
|
||||||
HUDController.update_hud(server, false);
|
HUDController.update_hud(server, null);
|
||||||
scriptServer.tick();
|
scriptServer.tick();
|
||||||
|
|
||||||
//in case something happens
|
//in case something happens
|
||||||
|
|||||||
@@ -19,10 +19,13 @@ import net.minecraft.world.World;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class HUDController
|
public class HUDController
|
||||||
@@ -38,18 +41,18 @@ public class HUDController
|
|||||||
HUDListeners.add(listener);
|
HUDListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<PlayerEntity, List<BaseText>> player_huds = new HashMap<>();
|
public static Map<ServerPlayerEntity, List<BaseText>> player_huds = new HashMap<>();
|
||||||
|
|
||||||
public static final Map<PlayerEntity, BaseText> scarpet_headers = new HashMap<>();
|
public static final Map<ServerPlayerEntity, BaseText> scarpet_headers = new HashMap<>();
|
||||||
|
|
||||||
public static final Map<PlayerEntity, BaseText> scarpet_footers = new HashMap<>();
|
public static final Map<ServerPlayerEntity, BaseText> scarpet_footers = new HashMap<>();
|
||||||
|
|
||||||
public static void resetScarpetHUDs() {
|
public static void resetScarpetHUDs() {
|
||||||
scarpet_headers.clear();
|
scarpet_headers.clear();
|
||||||
scarpet_footers.clear();
|
scarpet_footers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addMessage(PlayerEntity player, BaseText hudMessage)
|
public static void addMessage(ServerPlayerEntity player, BaseText hudMessage)
|
||||||
{
|
{
|
||||||
if (!player_huds.containsKey(player))
|
if (!player_huds.containsKey(player))
|
||||||
{
|
{
|
||||||
@@ -70,9 +73,9 @@ public class HUDController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void update_hud(MinecraftServer server, boolean force)
|
public static void update_hud(MinecraftServer server, List<ServerPlayerEntity> force)
|
||||||
{
|
{
|
||||||
if ((server.getTicks() % 20 != 0 && !force) || CarpetServer.minecraft_server == null)
|
if (((server.getTicks() % 20 != 0) && force == null) || CarpetServer.minecraft_server == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player_huds.clear();
|
player_huds.clear();
|
||||||
@@ -109,12 +112,14 @@ public class HUDController
|
|||||||
// extensions have time to pitch in.
|
// extensions have time to pitch in.
|
||||||
HUDListeners.forEach(l -> l.accept(server));
|
HUDListeners.forEach(l -> l.accept(server));
|
||||||
|
|
||||||
for (PlayerEntity player: player_huds.keySet())
|
Set<ServerPlayerEntity> targets = new HashSet<>(player_huds.keySet());
|
||||||
|
if (force!= null) targets.addAll(force);
|
||||||
|
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, new LiteralText("")));
|
||||||
((PlayerListHeaderS2CPacketMixin)packet).setFooter(Messenger.c(player_huds.get(player).toArray(new Object[0])));
|
((PlayerListHeaderS2CPacketMixin)packet).setFooter(Messenger.c(player_huds.getOrDefault(player, Collections.emptyList()).toArray(new Object[0])));
|
||||||
((ServerPlayerEntity)player).networkHandler.sendPacket(packet);
|
player.networkHandler.sendPacket(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static BaseText [] send_tps_display(MinecraftServer server)
|
private static BaseText [] send_tps_display(MinecraftServer server)
|
||||||
|
|||||||
@@ -571,35 +571,43 @@ public class Auxiliary {
|
|||||||
if (action != Action.CLEAR && lv.size() < 3)
|
if (action != Action.CLEAR && lv.size() < 3)
|
||||||
throw new InternalExpressionException("Third argument of 'display_title' must be present except for 'clear' type");
|
throw new InternalExpressionException("Third argument of 'display_title' must be present except for 'clear' type");
|
||||||
Text title;
|
Text title;
|
||||||
|
boolean soundsTrue = false;
|
||||||
if (lv.size() > 2)
|
if (lv.size() > 2)
|
||||||
{
|
{
|
||||||
pVal = lv.get(2).evalValue(c);
|
pVal = lv.get(2).evalValue(c);
|
||||||
if (pVal instanceof FormattedTextValue)
|
if (pVal instanceof FormattedTextValue)
|
||||||
|
{
|
||||||
title = ((FormattedTextValue) pVal).getText();
|
title = ((FormattedTextValue) pVal).getText();
|
||||||
|
soundsTrue = !title.asString().isEmpty();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
title = new LiteralText(pVal.getString());
|
title = new LiteralText(pVal.getString());
|
||||||
|
soundsTrue = pVal.getBoolean();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
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<PlayerEntity, BaseText> map;
|
Map<ServerPlayerEntity, BaseText> map;
|
||||||
if (actionString.equals("player_list_header"))
|
if (actionString.equals("player_list_header"))
|
||||||
map = HUDController.scarpet_headers;
|
map = HUDController.scarpet_headers;
|
||||||
else
|
else
|
||||||
map = HUDController.scarpet_footers;
|
map = HUDController.scarpet_footers;
|
||||||
|
|
||||||
AtomicInteger total = new AtomicInteger(0);
|
AtomicInteger total = new AtomicInteger(0);
|
||||||
if (!lv.get(2).evalValue(c).getBoolean()) // null or empty string
|
List<ServerPlayerEntity> targetList = targets.collect(Collectors.toList());
|
||||||
targets.forEach(target -> {
|
if (!soundsTrue) // null or empty string
|
||||||
|
targetList.forEach(target -> {
|
||||||
map.remove(target);
|
map.remove(target);
|
||||||
total.getAndIncrement();
|
total.getAndIncrement();
|
||||||
});
|
});
|
||||||
else
|
else
|
||||||
targets.forEach(target -> {
|
targetList.forEach(target -> {
|
||||||
map.put(target, (BaseText) title);
|
map.put(target, (BaseText) title);
|
||||||
total.getAndIncrement();
|
total.getAndIncrement();
|
||||||
});
|
});
|
||||||
HUDController.update_hud(((CarpetContext)c).s.getMinecraftServer(), true);
|
HUDController.update_hud(((CarpetContext)c).s.getMinecraftServer(), targetList);
|
||||||
Value ret = NumericValue.of(total.get());
|
Value ret = NumericValue.of(total.get());
|
||||||
return (cc, tt) -> ret;
|
return (cc, tt) -> ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user