use of net.minecraft.text.Text in project Client by MatHax.
the class ServerListPinger method add.
public void add(final MServerInfo entry, final Runnable runnable) throws UnknownHostException {
Timer timeoutTimer = new Timer();
ServerAddress serverAddress = ServerAddress.parse(entry.address);
timeoutTimer.schedule(new TimerTask() {
@Override
public void run() {
notifyDisconnectListeners();
}
}, 20000);
final ClientConnection clientConnection = ClientConnection.connect(new InetSocketAddress(InetAddress.getByName(serverAddress.getAddress()), serverAddress.getPort()), false);
failedToConnect = false;
this.clientConnections.add(clientConnection);
entry.label = "multiplayer.status.pinging";
entry.ping = -1L;
entry.playerListSummary = null;
clientConnection.setPacketListener(new ClientQueryPacketListener() {
private boolean sentQuery;
private boolean received;
private long startTime;
public void onResponse(QueryResponseS2CPacket packet) {
if (this.received)
clientConnection.disconnect(new TranslatableText("multiplayer.status.unrequested"));
else {
this.received = true;
ServerMetadata serverMetadata = packet.getServerMetadata();
if (serverMetadata.getDescription() != null)
entry.label = serverMetadata.getDescription().asString();
else
entry.label = "";
if (serverMetadata.getVersion() != null) {
entry.version = serverMetadata.getVersion().getGameVersion();
entry.protocolVersion = serverMetadata.getVersion().getProtocolVersion();
} else {
entry.version = "multiplayer.status.old";
entry.protocolVersion = 0;
}
if (serverMetadata.getPlayers() != null) {
entry.playerCountLabel = ServerListPinger.getPlayerCountLabel(serverMetadata.getPlayers().getOnlinePlayerCount(), serverMetadata.getPlayers().getPlayerLimit());
entry.playerCount = serverMetadata.getPlayers().getOnlinePlayerCount();
entry.playercountMax = serverMetadata.getPlayers().getPlayerLimit();
List<Text> list = Lists.newArrayList();
if (ArrayUtils.isNotEmpty(serverMetadata.getPlayers().getSample())) {
GameProfile[] gameProfiles = serverMetadata.getPlayers().getSample();
for (GameProfile gameProfile : gameProfiles) {
list.add(new LiteralText(gameProfile.getName()));
}
if (serverMetadata.getPlayers().getSample().length < serverMetadata.getPlayers().getOnlinePlayerCount())
list.add(new TranslatableText("multiplayer.status.and_more", serverMetadata.getPlayers().getOnlinePlayerCount() - serverMetadata.getPlayers().getSample().length));
entry.playerListSummary = list;
}
} else
entry.playerCountLabel = "multiplayer.status.unknown";
String string = null;
if (serverMetadata.getFavicon() != null) {
String string2 = serverMetadata.getFavicon();
if (string2.startsWith("data:image/png;base64,"))
string = string2.substring("data:image/png;base64,".length());
else
MatHax.LOG.error("Invalid server icon (unknown format)");
}
if (!Objects.equals(string, entry.getIcon())) {
entry.setIcon(string);
runnable.run();
}
this.startTime = Util.getMeasuringTimeMs();
clientConnection.send(new QueryPingC2SPacket(this.startTime));
this.sentQuery = true;
notifyDisconnectListeners();
}
}
public void onPong(QueryPongS2CPacket packet) {
long l = this.startTime;
long m = Util.getMeasuringTimeMs();
entry.ping = m - l;
clientConnection.disconnect(new TranslatableText("multiplayer.status.finished"));
}
public void onDisconnected(Text reason) {
if (!this.sentQuery) {
MatHax.LOG.error("Can't ping {}: {}", entry.address, reason.getString());
entry.label = "multiplayer.status.cannot_connect";
entry.playerCountLabel = "";
entry.playerCount = 0;
entry.playercountMax = 0;
ServerListPinger.this.ping(entry);
}
notifyDisconnectListeners();
}
public ClientConnection getConnection() {
return clientConnection;
}
});
try {
clientConnection.send(new HandshakeC2SPacket(serverAddress.getAddress(), serverAddress.getPort(), NetworkState.STATUS));
clientConnection.send(new QueryRequestC2SPacket());
} catch (Throwable throwable) {
MatHax.LOG.error("[MatHax] Couldn't send handshake", throwable);
}
}
use of net.minecraft.text.Text in project Client by MatHax.
the class Names method getSoundName.
public static String getSoundName(Identifier id) {
return soundNames.computeIfAbsent(id, identifier -> {
WeightedSoundSet soundSet = mc.getSoundManager().get(identifier);
if (soundSet == null)
return identifier.getPath();
Text text = soundSet.getSubtitle();
if (text == null)
return identifier.getPath();
return StringHelper.stripTextFormat(text.getString());
});
}
use of net.minecraft.text.Text in project Client by MatHax.
the class TextUtils method preOrderTraverse.
private static void preOrderTraverse(Text text, Stack<ColoredText> stack, List<ColoredText> coloredTexts) {
if (text == null)
return;
String textString = text.asString();
TextColor mcTextColor = text.getStyle().getColor();
Color textColor;
if (mcTextColor == null) {
if (stack.empty())
textColor = new Color(255, 255, 255);
else
textColor = stack.peek().getColor();
} else
textColor = new Color((text.getStyle().getColor().getRgb()) | 0xFF000000);
ColoredText coloredText = new ColoredText(textString, textColor);
coloredTexts.add(coloredText);
stack.push(coloredText);
for (Text child : text.getSiblings()) preOrderTraverse(child, stack, coloredTexts);
stack.pop();
}
use of net.minecraft.text.Text in project spark by lucko.
the class FabricCommandSender method sendMessage.
@Override
public void sendMessage(Component message) {
Text component = Text.Serializer.fromJson(GsonComponentSerializer.gson().serialize(message));
super.delegate.sendSystemMessage(component, NIL_UUID);
}
use of net.minecraft.text.Text in project AurorasDecorations by LambdAurora.
the class BlackboardCloneRecipe method craft.
@Override
public ItemStack craft(CraftingInventory inv) {
Blackboard blackboard = null;
ItemStack output = null;
Text customName = null;
for (int slot = 0; slot < inv.size(); ++slot) {
var craftStack = inv.getStack(slot);
if (!craftStack.isEmpty()) {
if (OUTPUT.test(craftStack) && !this.isInput(craftStack)) {
output = craftStack;
} else if (this.isInput(craftStack)) {
var nbt = BlockItem.getBlockEntityNbtFromStack(craftStack);
blackboard = Blackboard.fromNbt(nbt);
if (craftStack.hasCustomName())
customName = craftStack.getName();
}
}
}
var out = output.copy();
out.setCount(1);
var nbt = AuroraUtil.getOrCreateBlockEntityNbt(out, AurorasDecoRegistry.BLACKBOARD_BLOCK_ENTITY_TYPE);
blackboard.writeNbt(nbt);
if (customName != null)
out.setCustomName(customName);
return out;
}
Aggregations