Skip to content

Commit b2d33ce

Browse files
committed
Prepare Banner Packet
1 parent 8132581 commit b2d33ce

File tree

3 files changed

+80
-8
lines changed

3 files changed

+80
-8
lines changed

src/main/java/net/kyrptonaught/lemclienthelper/hud/HudMod.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@
88
import net.kyrptonaught.lemclienthelper.LEMClientHelperMod;
99
import net.kyrptonaught.lemclienthelper.hud.armorHud.ArmorHudPacket;
1010
import net.kyrptonaught.lemclienthelper.hud.armorHud.ArmorHudRenderer;
11+
import net.kyrptonaught.lemclienthelper.hud.genericHud.packets.BannerPacket;
1112
import net.kyrptonaught.lemclienthelper.hud.genericHud.packets.PlayerBarPacket;
1213
import net.kyrptonaught.lemclienthelper.hud.glideHud.packets.GlideHudPacket;
1314
import net.kyrptonaught.lemclienthelper.hud.glideHud.packets.GlideScorePacket;
1415
import net.kyrptonaught.lemclienthelper.hud.glideHud.GlideHudRenderer;
1516
import net.kyrptonaught.lemclienthelper.hud.glideHud.packets.GlideTimerPacket;
1617
import net.kyrptonaught.lemclienthelper.hud.glideHud.packets.GlideTimerTogglePacket;
18+
import net.minecraft.text.Text;
1719

1820
/*
1921
import net.minecraft.command.argument.EntityArgumentType;
22+
import net.minecraft.command.argument.TextArgumentType;
2023
import net.minecraft.server.command.CommandManager;
2124
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
2225
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
@@ -25,6 +28,7 @@
2528
*/
2629

2730
public class HudMod {
31+
// TODO: maybe some of these should be moved to a different class.
2832
public static String MOD_ID = "hud";
2933

3034
public static boolean SHOULD_RENDER_PLAYERBAR = false;
@@ -47,7 +51,13 @@ public class HudMod {
4751

4852
public static int GLIDE_SCORE = 0;
4953

50-
public static int GLIDE_LAST_RING = 0;
54+
public static GlideScorePacket.rings GLIDE_LAST_RING;
55+
56+
public static boolean BANNER_RECEIVED = false; // Will set to false after banner is finished rendering.
57+
58+
public static BannerPacket.icons BANNER_ICON = BannerPacket.icons.BATTLE;
59+
60+
public static Text BANNER_TEXT = null;
5161

5262

5363
public static void onInitialize() {
@@ -96,6 +106,13 @@ public static void onInitialize() {
96106
PLAYER_STATUS = payload.players();
97107
}));
98108

109+
PayloadTypeRegistry.playS2C().register(BannerPacket.PACKET_ID, BannerPacket.codec);
110+
ClientPlayNetworking.registerGlobalReceiver(BannerPacket.PACKET_ID, ((payload, context) -> {
111+
BANNER_ICON = payload.icon();
112+
BANNER_TEXT = payload.text();
113+
BANNER_RECEIVED = true;
114+
}));
115+
99116
/*
100117
// Debug commands
101118
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) ->
@@ -129,9 +146,12 @@ public static void onInitialize() {
129146
.then(CommandManager.literal("score")
130147
.then(CommandManager.literal("set")
131148
.then(CommandManager.argument("score", IntegerArgumentType.integer())
132-
.then(CommandManager.argument("lastRing", IntegerArgumentType.integer())
149+
.then(CommandManager.argument("lastRing", IntegerArgumentType.integer(0,3))
133150
.executes(context -> {
134-
ServerPlayNetworking.send(EntityArgumentType.getPlayer(context, "target"), new GlideScorePacket(IntegerArgumentType.getInteger(context, "score"), IntegerArgumentType.getInteger(context, "lastRing")));
151+
ServerPlayNetworking.send(EntityArgumentType.getPlayer(context, "target"),
152+
new GlideScorePacket(
153+
IntegerArgumentType.getInteger(context, "score"),
154+
GlideScorePacket.rings.values()[IntegerArgumentType.getInteger(context, "lastRing")]));
135155
return 0;
136156
})))))))));
137157
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) ->
@@ -147,7 +167,20 @@ public static void onInitialize() {
147167
new byte[]{1,1,0,0,1}));
148168
return 0;
149169
}))))));
150-
*/
170+
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) ->
171+
dispatcher.register(CommandManager.literal(LEMClientHelperMod.MOD_ID)
172+
.then(CommandManager.literal("sendTestBanner")
173+
.then(CommandManager.argument("target", EntityArgumentType.players())
174+
.then(CommandManager.argument("icon", IntegerArgumentType.integer(0,4))
175+
.then(CommandManager.argument("text", TextArgumentType.text(registryAccess))
176+
.executes(context -> {
177+
ServerPlayNetworking.send(EntityArgumentType.getPlayer(context, "target"),
178+
new BannerPacket(
179+
BannerPacket.icons.values()[IntegerArgumentType.getInteger(context,"icon")],
180+
TextArgumentType.getTextArgument(context,"text")));
181+
return 0;
182+
})))))));*/
183+
151184

152185
}
153186

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package net.kyrptonaught.lemclienthelper.hud.genericHud.packets;
2+
3+
import net.minecraft.network.RegistryByteBuf;
4+
import net.minecraft.network.codec.PacketCodec;
5+
import net.minecraft.network.codec.PacketCodecs;
6+
import net.minecraft.network.packet.CustomPayload;
7+
import net.minecraft.text.Text;
8+
import net.minecraft.text.TextCodecs;
9+
import net.minecraft.util.Identifier;
10+
11+
/**
12+
* BannerPacket sends banner to client
13+
*
14+
* @param icon BannerPacket.icons, BATTLE, TUMBLE, GLIDE, GLIDE_TIME, GLIDE_SCORE.
15+
* @param text Text, banner contents, such as "PLAYER won","Showdown!","0:00,000", etc.
16+
*/
17+
public record BannerPacket(icons icon, Text text) implements CustomPayload{
18+
public enum icons {
19+
BATTLE, TUMBLE, GLIDE, GLIDE_TIME, GLIDE_SCORE
20+
}
21+
public static final Id<BannerPacket> PACKET_ID = new Id<>(Identifier.of("hud", "banner"));
22+
public static final PacketCodec<RegistryByteBuf, BannerPacket> codec = PacketCodec.tuple(
23+
PacketCodecs.indexed(i -> icons.values()[i], icons::ordinal), BannerPacket::icon,
24+
TextCodecs.UNLIMITED_REGISTRY_PACKET_CODEC, BannerPacket::text,
25+
BannerPacket::new
26+
);
27+
28+
@Override
29+
public Id<? extends CustomPayload> getId() {
30+
return PACKET_ID;
31+
}
32+
33+
}

src/main/java/net/kyrptonaught/lemclienthelper/hud/glideHud/packets/GlideScorePacket.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,20 @@
1010
* GlideScorePacket sets the clients current score.
1111
*
1212
* @param score int, the total score the client has
13-
* @param lastRing int, the point value of the last ring collected, 0, 3, 5, 7
14-
* grey, green, yellow, blue.
13+
* @param lastRing GlideScorePacket.rings, GREY, GREEN, YELLOW, BLUE, the last ring collected
14+
*
1515
*/
16-
public record GlideScorePacket(int score, int lastRing) implements CustomPayload {
16+
public record GlideScorePacket(int score, rings lastRing) implements CustomPayload {
17+
public enum rings {
18+
GREY,
19+
GREEN,
20+
YELLOW,
21+
BLUE
22+
}
1723
public static final Id<GlideScorePacket> PACKET_ID = new Id<>(Identifier.of("glidehud", "glide_score_set"));
1824
public static final PacketCodec<RegistryByteBuf, GlideScorePacket> codec = PacketCodec.tuple(
1925
PacketCodecs.INTEGER, GlideScorePacket::score,
20-
PacketCodecs.INTEGER, GlideScorePacket::lastRing,
26+
PacketCodecs.indexed(i -> rings.values()[i], rings::ordinal), GlideScorePacket::lastRing,
2127
GlideScorePacket::new
2228
);
2329

0 commit comments

Comments
 (0)