• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 16552051255

27 Jul 2025 01:58PM UTC coverage: 53.206% (+8.0%) from 45.161%
16552051255

push

github

rubensworks
Resolve minor TODOs

2888 of 8740 branches covered (33.04%)

Branch coverage included in aggregate %.

17341 of 29280 relevant lines covered (59.22%)

3.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

3.85
/src/main/java/org/cyclops/integrateddynamics/network/packet/NetworkDiagnosticsTriggerClient.java
1
package org.cyclops.integrateddynamics.network.packet;
2

3
import net.minecraft.Util;
4
import net.minecraft.network.RegistryFriendlyByteBuf;
5
import net.minecraft.network.chat.ClickEvent;
6
import net.minecraft.network.chat.Component;
7
import net.minecraft.network.chat.Style;
8
import net.minecraft.network.codec.StreamCodec;
9
import net.minecraft.resources.ResourceLocation;
10
import net.minecraft.server.level.ServerPlayer;
11
import net.minecraft.world.entity.player.Player;
12
import net.minecraft.world.level.Level;
13
import org.cyclops.cyclopscore.network.CodecField;
14
import org.cyclops.cyclopscore.network.PacketCodec;
15
import org.cyclops.integrateddynamics.IntegratedDynamics;
16
import org.cyclops.integrateddynamics.Reference;
17
import org.cyclops.integrateddynamics.core.network.diagnostics.NetworkDataClient;
18
import org.cyclops.integrateddynamics.core.network.diagnostics.NetworkDiagnosticsPartOverlayRenderer;
19
import org.cyclops.integrateddynamics.core.network.diagnostics.http.DiagnosticsWebServer;
20
import org.cyclops.integrateddynamics.proxy.ClientProxy;
21

22
import java.net.URISyntaxException;
23

24
/**
25
 * Packet for opening or closing network diagnostics at a client.
26
 * @author rubensworks
27
 *
28
 */
29
public class NetworkDiagnosticsTriggerClient extends PacketCodec {
30

31
    public static final Type<NetworkDiagnosticsTriggerClient> ID = new Type<>(ResourceLocation.fromNamespaceAndPath(Reference.MOD_ID, "network_diagnostics_trigger"));
7✔
32
    public static final StreamCodec<RegistryFriendlyByteBuf, NetworkDiagnosticsTriggerClient> CODEC = getCodec(NetworkDiagnosticsTriggerClient::new);
4✔
33

34
    @CodecField
35
    private boolean start;
36
    @CodecField
37
    private int port;
38

39
    public NetworkDiagnosticsTriggerClient(boolean start, int port) {
40
        super(ID);
×
41
        this.start = start;
×
42
        this.port = port;
×
43
    }
×
44

45
    public NetworkDiagnosticsTriggerClient() {
46
        this(true, 0);
×
47
    }
×
48

49
    @Override
50
    public boolean isAsync() {
51
        return false;
×
52
    }
53

54
    @Override
55
    public void actionClient(Level world, Player player) {
56
        if (start) {
×
57
            if (ClientProxy.DIAGNOSTICS_SERVER == null) {
×
58
                IntegratedDynamics._instance.getPacketHandler().sendToServer(NetworkDiagnosticsSubscribePacket.subscribe());
×
59
                new Thread(() -> {
×
60
                    ClientProxy.DIAGNOSTICS_SERVER = new DiagnosticsWebServer(port);
×
61
                    ClientProxy.DIAGNOSTICS_SERVER.initialize();
×
62
                    try {
63
                        player.displayClientMessage(
×
64
                                Component.literal("Diagnostics server has been started on ")
×
65
                                        .append(Component.literal(ClientProxy.DIAGNOSTICS_SERVER.getUrl())
×
66
                                                .setStyle(Style.EMPTY
×
67
                                                        .withUnderlined(true)
×
68
                                                        .withClickEvent(new ClickEvent.OpenUrl(Util.parseAndValidateUntrustedUri(ClientProxy.DIAGNOSTICS_SERVER.getUrl()))))),
×
69
                                false
70
                        );
71
                    } catch (URISyntaxException e) {
×
72
                        throw new RuntimeException(e);
×
73
                    }
×
74
                }).start();
×
75
            } else {
76
                try {
77
                    player.displayClientMessage(
×
78
                            Component.literal("Diagnostics server is already running on ")
×
79
                                    .append(Component.literal(ClientProxy.DIAGNOSTICS_SERVER.getUrl())
×
80
                                            .setStyle(Style.EMPTY
×
81
                                                    .withUnderlined(true)
×
82
                                                    .withClickEvent(new ClickEvent.OpenUrl(Util.parseAndValidateUntrustedUri(ClientProxy.DIAGNOSTICS_SERVER.getUrl()))))),
×
83
                            false
84
                    );
85
                } catch (URISyntaxException e) {
×
86
                    throw new RuntimeException(e);
×
87
                }
×
88
            }
89
        } else {
90
            if (ClientProxy.DIAGNOSTICS_SERVER != null) {
×
91
                IntegratedDynamics._instance.getPacketHandler().sendToServer(NetworkDiagnosticsSubscribePacket.unsubscribe());
×
92
                new Thread(() -> {
×
93
                    NetworkDiagnosticsPartOverlayRenderer.getInstance().clearPositions();
×
94
                    NetworkDataClient.clearNetworkData();
×
95
                    ClientProxy.DIAGNOSTICS_SERVER.deinitialize();
×
96
                    ClientProxy.DIAGNOSTICS_SERVER = null;
×
97
                    player.displayClientMessage(Component.literal("Stopped diagnostics server"), false);
×
98
                }).start();
×
99
            } else {
100
                player.displayClientMessage(Component.literal("No diagnostics server is running"), false);
×
101
            }
102
        }
103
    }
×
104

105
    @Override
106
    public void actionServer(Level world, ServerPlayer player) {
107

108
    }
×
109

110
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc