Skip to content

Commit 21e0a38

Browse files
committed
refac!: major cleanup + new handshake packet
1 parent 5701a94 commit 21e0a38

10 files changed

Lines changed: 42 additions & 60 deletions

File tree

src/client/java/net/playnimbus/nimbusutils/NimbusUtilsClient.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@
99
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
1010
import net.minecraft.client.MinecraftClient;
1111
import net.playnimbus.NimbusUtils;
12-
import net.playnimbus.nimbusutils.nimnite.NimniteClient;
13-
import net.playnimbus.nimbusutils.nimnite.NimniteKeybinds;
12+
import net.playnimbus.nimbusutils.modules.nimnite.NimniteClient;
13+
import net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds;
1414
import net.playnimbus.nimbusutils.networking.HandshakePacket;
1515
import net.playnimbus.nimbusutils.networking.HandshakeState;
16+
import net.playnimbus.nimbusutils.networking.Keybind;
1617
import net.playnimbus.nimbusutils.networking.KeybindPacket;
1718
import org.slf4j.Logger;
1819
import org.slf4j.LoggerFactory;
1920

2021
public class NimbusUtilsClient implements ClientModInitializer {
2122
private static final Logger LOGGER = LoggerFactory.getLogger(NimbusUtils.MOD_ID);
2223
public static HandshakeState STATE = HandshakeState.NONE;
24+
public static byte SERVERTYPE = -1;
2325

2426
public static NimniteClient NIMNITE = new NimniteClient();
2527

@@ -42,25 +44,28 @@ public void onInitializeClient() {
4244

4345
client.execute(() -> {
4446
HandshakeState state = HandshakeState.getFromState(packet.state());
47+
SERVERTYPE = packet.serverType();
4548
STATE = state;
4649

47-
switch (state) {
48-
case NIMNITE -> NIMNITE.setEnabled(true);
50+
// enable the server type's submodule
51+
switch (SERVERTYPE) {
52+
case 1 -> NIMNITE.setEnabled(true);
4953
}
5054

51-
LOGGER.info("handshake received: {}", state);
55+
LOGGER.info("handshake received: {}, serverType: {}", state, SERVERTYPE);
5256
});
5357
});
5458

5559
// send handshake packet on server join
5660
ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> {
57-
HandshakePacket handshake = new HandshakePacket(HandshakeState.CONNECTING.getState());
61+
HandshakePacket handshake = new HandshakePacket(HandshakeState.CONNECTING.getState(), SERVERTYPE);
5862
ClientPlayNetworking.send(handshake);
5963
});
6064

6165
// disable NimbusUtils on disconnect
6266
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> {
6367
STATE = HandshakeState.NONE;
68+
SERVERTYPE = -1;
6469

6570
NIMNITE.setEnabled(false);
6671
});

src/client/java/net/playnimbus/nimbusutils/mixin/client/ClientPlayerEntityMixin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package net.playnimbus.nimbusutils.mixin.client;
22

33
import net.minecraft.client.network.ClientPlayerEntity;
4-
import net.playnimbus.nimbusutils.nimnite.NimniteKeybinds;
4+
import net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds;
55
import org.spongepowered.asm.mixin.Mixin;
6-
import org.spongepowered.asm.mixin.Shadow;
76
import org.spongepowered.asm.mixin.injection.At;
87
import org.spongepowered.asm.mixin.injection.Inject;
98
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

src/client/java/net/playnimbus/nimbusutils/mixin/client/MinecraftClientMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import net.minecraft.item.ItemStack;
77
import net.playnimbus.NimbusUtils;
88
import net.playnimbus.nimbusutils.events.SwapHandsEvent;
9-
import net.playnimbus.nimbusutils.nimnite.NimniteKeybinds;
9+
import net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds;
1010
import org.jspecify.annotations.Nullable;
1111
import org.slf4j.Logger;
1212
import org.slf4j.LoggerFactory;

src/client/java/net/playnimbus/nimbusutils/mixin/client/NimniteAimingMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import net.minecraft.client.network.ClientPlayerEntity;
66
import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket;
77
import net.minecraft.util.PlayerInput;
8-
import net.playnimbus.nimbusutils.nimnite.NimniteKeybinds;
8+
import net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds;
99
import org.spongepowered.asm.mixin.Final;
1010
import org.spongepowered.asm.mixin.Mixin;
1111
import org.spongepowered.asm.mixin.Shadow;
@@ -17,7 +17,7 @@
1717

1818
import static net.playnimbus.nimbusutils.NimbusUtilsClient.CONFIG;
1919
import static net.playnimbus.nimbusutils.NimbusUtilsClient.NIMNITE;
20-
import static net.playnimbus.nimbusutils.nimnite.NimniteKeybinds.adsActive;
20+
import static net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds.adsActive;
2121

2222
@Mixin(ClientPlayerEntity.class)
2323
public abstract class NimniteAimingMixin {

src/client/java/net/playnimbus/nimbusutils/nimnite/NimniteClient.java renamed to src/client/java/net/playnimbus/nimbusutils/modules/nimnite/NimniteClient.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
1-
package net.playnimbus.nimbusutils.nimnite;
1+
package net.playnimbus.nimbusutils.modules.nimnite;
22

33
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
4-
import net.fabricmc.fabric.api.event.player.ItemEvents;
5-
import net.fabricmc.fabric.api.event.player.UseItemCallback;
64
import net.minecraft.client.MinecraftClient;
75
import net.minecraft.client.network.ClientPlayerEntity;
86
import net.minecraft.component.DataComponentTypes;
97
import net.minecraft.entity.player.PlayerEntity;
108
import net.minecraft.item.ItemStack;
119
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket;
1210
import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket;
13-
import net.minecraft.util.ActionResult;
1411
import net.minecraft.util.Hand;
15-
import net.minecraft.util.math.BlockPos;
16-
import net.minecraft.world.World;
1712
import net.playnimbus.NimbusUtils;
18-
import net.playnimbus.nimbusutils.ModConfig;
1913
import net.playnimbus.nimbusutils.NimbusUtilsClient;
2014
import net.playnimbus.nimbusutils.events.HotbarChangeEvent;
2115
import net.playnimbus.nimbusutils.events.SwapHandsEvent;
22-
import net.playnimbus.nimbusutils.mixin.client.MinecraftClientAccessor;
2316
import net.playnimbus.nimbusutils.mixin.client.SendSequencedPacketAccessor;
2417
import org.slf4j.Logger;
2518
import org.slf4j.LoggerFactory;
2619

2720
import java.util.Objects;
28-
import java.util.concurrent.atomic.AtomicBoolean;
2921

30-
import static net.playnimbus.nimbusutils.nimnite.NimniteKeybinds.*;
22+
import static net.playnimbus.nimbusutils.modules.nimnite.NimniteKeybinds.*;
3123

3224
public class NimniteClient {
3325
private final static Logger LOGGER = LoggerFactory.getLogger(NimbusUtils.MOD_ID);

src/client/java/net/playnimbus/nimbusutils/nimnite/NimniteKeybinds.java renamed to src/client/java/net/playnimbus/nimbusutils/modules/nimnite/NimniteKeybinds.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.playnimbus.nimbusutils.nimnite;
1+
package net.playnimbus.nimbusutils.modules.nimnite;
22

33
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
44
import net.minecraft.client.MinecraftClient;
@@ -7,7 +7,7 @@
77
import net.minecraft.util.Identifier;
88
import net.playnimbus.NimbusUtils;
99
import net.playnimbus.nimbusutils.NimbusUtilsClient;
10-
import net.playnimbus.nimbusutils.Keybind;
10+
import net.playnimbus.nimbusutils.networking.Keybind;
1111
import net.playnimbus.nimbusutils.networking.KeybindPacket;
1212
import org.lwjgl.glfw.GLFW;
1313

@@ -28,7 +28,7 @@ public class NimniteKeybinds {
2828
public static final Keybind TILE_TRAP = new Keybind(new KeyBinding(TileType.TRAP.getKey(), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_B, CATEGORY), NimniteKeybinds::onKeybindPressed);
2929

3030
private static boolean onKeybindPressed(Keybind k, MinecraftClient client) {
31-
if (!NimbusUtilsClient.STATE.isInAGame()) return false;
31+
if (!NimbusUtilsClient.STATE.isConnected()) return false;
3232

3333
var payload = new KeybindPacket(k.keybind().getId());
3434
ClientPlayNetworking.send(payload);

src/client/java/net/playnimbus/nimbusutils/nimnite/TileType.java renamed to src/client/java/net/playnimbus/nimbusutils/modules/nimnite/TileType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.playnimbus.nimbusutils.nimnite;
1+
package net.playnimbus.nimbusutils.modules.nimnite;
22

33
public enum TileType {
44
WALL("key.nimnite.tile_wall"),

src/client/java/net/playnimbus/nimbusutils/networking/HandshakePacket.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,20 @@
77
import net.minecraft.util.Identifier;
88
import net.playnimbus.NimbusUtils;
99

10-
// this packet informs the server that you are using the NimbusUtils mod
11-
public record HandshakePacket(byte state) implements CustomPayload {
10+
/**
11+
* The Handshake packet works in both C2S and S2C.
12+
* C2S: we do not care about serverType
13+
* S2C: we use serverType to enable and disable modules.
14+
*
15+
* @param state byte representation of {@link HandshakeState}
16+
* @param serverType byte representation of server's ServerType
17+
*/
18+
public record HandshakePacket(byte state, byte serverType) implements CustomPayload {
1219
public static final Identifier HANDSHAKE_PAYLOAD_ID = Identifier.of(NimbusUtils.MOD_ID, "handshake");
1320
public static final CustomPayload.Id<HandshakePacket> ID = new CustomPayload.Id<>(HANDSHAKE_PAYLOAD_ID);
1421
public static final PacketCodec<PacketByteBuf, HandshakePacket> CODEC = PacketCodec.tuple(
1522
PacketCodecs.BYTE, HandshakePacket::state,
23+
PacketCodecs.BYTE, HandshakePacket::serverType,
1624
HandshakePacket::new
1725
);
1826

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11
package net.playnimbus.nimbusutils.networking;
22

33
public enum HandshakeState {
4-
NONE((byte) 0, "none"),
5-
CONNECTING((byte) 1, "connecting"),
6-
HUB((byte) 2, "hub"),
7-
NIMNITE((byte) 3, "nimnite"),
4+
NONE((byte) 0),
5+
CONNECTING((byte) 1),
6+
CONNECTED((byte) 2)
87
;
98

109
private final byte state;
11-
private final String name;
1210

13-
HandshakeState(byte state, String name) {
11+
HandshakeState(byte state) {
1412
this.state = state;
15-
this.name = name;
1613
}
1714

15+
public static final HandshakeState[] VALUES = values();
16+
1817
public byte getState() {
1918
return state;
2019
}
2120

22-
public String getName() {
23-
return name;
24-
}
25-
2621
public static HandshakeState getFromState(byte state) throws IllegalArgumentException {
27-
for (HandshakeState s : HandshakeState.values()) {
22+
for (HandshakeState s : VALUES) {
2823
if (s.getState() == state) {
2924
return s;
3025
}
@@ -33,24 +28,7 @@ public static HandshakeState getFromState(byte state) throws IllegalArgumentExce
3328
throw new IllegalArgumentException("Invalid handshake state");
3429
}
3530

36-
public static HandshakeState getFromName(String name) throws IllegalArgumentException {
37-
for (HandshakeState s : HandshakeState.values()) {
38-
if (s.getName().equals(name)) {
39-
return s;
40-
}
41-
}
42-
43-
throw new IllegalArgumentException("Invalid handshake name");
44-
}
45-
46-
public boolean isInAGame() {
47-
switch (this) {
48-
case NIMNITE -> {
49-
return true;
50-
}
51-
default -> {
52-
return false;
53-
}
54-
}
31+
public boolean isConnected() {
32+
return this == CONNECTED;
5533
}
56-
}
34+
}

src/client/java/net/playnimbus/nimbusutils/Keybind.java renamed to src/client/java/net/playnimbus/nimbusutils/networking/Keybind.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.playnimbus.nimbusutils;
1+
package net.playnimbus.nimbusutils.networking;
22

33
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
44
import net.minecraft.client.MinecraftClient;

0 commit comments

Comments
 (0)