Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ repositories {

loom {
accessWidenerPath = file("src/main/resources/wathe.accesswidener")
runConfigs.configureEach {
it.ideConfigGenerated(true)
}
}

fabricApi {
Expand Down
Empty file modified gradlew
100644 → 100755
Empty file.
27 changes: 14 additions & 13 deletions src/main/java/dev/doctor4t/wathe/Wathe.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import dev.doctor4t.wathe.command.argument.TimeOfDayArgumentType;
import dev.doctor4t.wathe.game.GameConstants;
import dev.doctor4t.wathe.index.*;
import dev.doctor4t.wathe.networking.*;
import dev.doctor4t.wathe.util.*;
import dev.upcraft.datasync.api.DataSyncAPI;
import dev.upcraft.datasync.api.util.Entitlements;
Expand Down Expand Up @@ -86,19 +87,19 @@ public void onInitialize() {
});

PayloadTypeRegistry.playS2C().register(ShootMuzzleS2CPayload.ID, ShootMuzzleS2CPayload.CODEC);
PayloadTypeRegistry.playS2C().register(PoisonUtils.PoisonOverlayPayload.ID, PoisonUtils.PoisonOverlayPayload.CODEC);
PayloadTypeRegistry.playS2C().register(GunDropPayload.ID, GunDropPayload.CODEC);
PayloadTypeRegistry.playS2C().register(TaskCompletePayload.ID, TaskCompletePayload.CODEC);
PayloadTypeRegistry.playS2C().register(AnnounceWelcomePayload.ID, AnnounceWelcomePayload.CODEC);
PayloadTypeRegistry.playS2C().register(AnnounceEndingPayload.ID, AnnounceEndingPayload.CODEC);
PayloadTypeRegistry.playC2S().register(KnifeStabPayload.ID, KnifeStabPayload.CODEC);
PayloadTypeRegistry.playC2S().register(GunShootPayload.ID, GunShootPayload.CODEC);
PayloadTypeRegistry.playC2S().register(StoreBuyPayload.ID, StoreBuyPayload.CODEC);
PayloadTypeRegistry.playC2S().register(NoteEditPayload.ID, NoteEditPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(KnifeStabPayload.ID, new KnifeStabPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(GunShootPayload.ID, new GunShootPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(StoreBuyPayload.ID, new StoreBuyPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(NoteEditPayload.ID, new NoteEditPayload.Receiver());
PayloadTypeRegistry.playS2C().register(PoisonOverlayS2CPayload.ID, PoisonOverlayS2CPayload.CODEC);
PayloadTypeRegistry.playS2C().register(GunDropS2CPayload.ID, GunDropS2CPayload.CODEC);
PayloadTypeRegistry.playS2C().register(TaskCompleteS2CPayload.ID, TaskCompleteS2CPayload.CODEC);
PayloadTypeRegistry.playS2C().register(AnnounceWelcomeS2CPayload.ID, AnnounceWelcomeS2CPayload.CODEC);
PayloadTypeRegistry.playS2C().register(AnnounceEndingS2CPayload.ID, AnnounceEndingS2CPayload.CODEC);
PayloadTypeRegistry.playC2S().register(KnifeStabC2SPayload.ID, KnifeStabC2SPayload.CODEC);
PayloadTypeRegistry.playC2S().register(GunShootC2SPayload.ID, GunShootC2SPayload.CODEC);
PayloadTypeRegistry.playC2S().register(StoreBuyC2SPayload.ID, StoreBuyC2SPayload.CODEC);
PayloadTypeRegistry.playC2S().register(NoteEditC2SPayload.ID, NoteEditC2SPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(KnifeStabC2SPayload.ID, new KnifeStabC2SPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(GunShootC2SPayload.ID, new GunShootC2SPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(StoreBuyC2SPayload.ID, new StoreBuyC2SPayload.Receiver());
ServerPlayNetworking.registerGlobalReceiver(NoteEditC2SPayload.ID, new NoteEditC2SPayload.Receiver());

Scheduler.init();
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/dev/doctor4t/wathe/cca/PlayerMoodComponent.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import dev.doctor4t.wathe.index.WatheDataComponentTypes;
import dev.doctor4t.wathe.index.tag.WatheItemTags;
import dev.doctor4t.wathe.item.ItemWithSkin;
import dev.doctor4t.wathe.util.TaskCompletePayload;
import dev.doctor4t.wathe.networking.TaskCompleteS2CPayload;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
Expand Down Expand Up @@ -135,7 +135,7 @@ public void serverTick() {
removals.add(task.getType());
this.setMood(this.mood + GameConstants.MOOD_GAIN);
if (this.player instanceof ServerPlayerEntity tempPlayer)
ServerPlayNetworking.send(tempPlayer, new TaskCompletePayload());
ServerPlayNetworking.send(tempPlayer, TaskCompleteS2CPayload.INSTANCE);
shouldSync = true;
}
}
Expand Down
50 changes: 43 additions & 7 deletions src/main/java/dev/doctor4t/wathe/client/WatheClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import dev.doctor4t.wathe.cca.GameWorldComponent;
import dev.doctor4t.wathe.cca.PlayerMoodComponent;
import dev.doctor4t.wathe.cca.TrainWorldComponent;
import dev.doctor4t.wathe.client.gui.MoodRenderer;
import dev.doctor4t.wathe.client.gui.RoleAnnouncementTexts;
import dev.doctor4t.wathe.client.gui.RoundTextRenderer;
import dev.doctor4t.wathe.client.gui.StoreRenderer;
import dev.doctor4t.wathe.client.gui.TimeRenderer;
Expand All @@ -26,6 +28,8 @@
import dev.doctor4t.wathe.game.GameConstants;
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.index.*;
import dev.doctor4t.wathe.index.tag.WatheItemTags;
import dev.doctor4t.wathe.networking.*;
import dev.doctor4t.wathe.util.*;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.fabricmc.api.ClientModInitializer;
Expand All @@ -43,6 +47,7 @@
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.option.CloudRenderMode;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.option.Perspective;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
import net.minecraft.client.render.entity.EmptyEntityRenderer;
Expand All @@ -53,8 +58,10 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.registry.Registries;
import net.minecraft.sound.SoundCategory;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
Expand Down Expand Up @@ -277,12 +284,7 @@ public void onInitializeClient() {
RoundTextRenderer.tick();
});

ClientPlayNetworking.registerGlobalReceiver(ShootMuzzleS2CPayload.ID, new ShootMuzzleS2CPayload.Receiver());
ClientPlayNetworking.registerGlobalReceiver(PoisonUtils.PoisonOverlayPayload.ID, new PoisonUtils.PoisonOverlayPayload.Receiver());
ClientPlayNetworking.registerGlobalReceiver(GunDropPayload.ID, new GunDropPayload.Receiver());
ClientPlayNetworking.registerGlobalReceiver(AnnounceWelcomePayload.ID, new AnnounceWelcomePayload.Receiver());
ClientPlayNetworking.registerGlobalReceiver(AnnounceEndingPayload.ID, new AnnounceEndingPayload.Receiver());
ClientPlayNetworking.registerGlobalReceiver(TaskCompletePayload.ID, new TaskCompletePayload.Receiver());
registerClientPayloadHandlers();

// Instinct keybind
instinctKeybind = KeyBindingHelper.registerKeyBinding(new KeyBinding(
Expand All @@ -293,6 +295,40 @@ public void onInitializeClient() {
));
}

private static void registerClientPayloadHandlers() {
ClientPlayNetworking.registerGlobalReceiver(ShootMuzzleS2CPayload.ID, (payload, context) -> {
MinecraftClient client = context.client();
client.execute(() -> {
if (client.world == null || client.player == null) return;
PlayerEntity shooter = client.world.getPlayerByUuid(payload.shooterUuid());
if (shooter == null || shooter.getUuid() == client.player.getUuid() && client.options.getPerspective() == Perspective.FIRST_PERSON)
return;
Vec3d muzzlePos = MatrixParticleManager.getMuzzlePosForPlayer(shooter);
if (muzzlePos != null)
client.world.addParticle(WatheParticles.GUNSHOT, muzzlePos.x, muzzlePos.y, muzzlePos.z, 0, 0, 0);
});
});

ClientPlayNetworking.registerGlobalReceiver(PoisonOverlayS2CPayload.ID, (payload, context) -> {
MinecraftClient client = MinecraftClient.getInstance();
client.execute(() -> client.inGameHud.setOverlayMessage(Text.translatable(payload.translationKey()), false));
});

ClientPlayNetworking.registerGlobalReceiver(GunDropS2CPayload.ID, (payload, context) -> {
PlayerInventory inventory = context.player().getInventory();
inventory.remove((s) -> s.isIn(WatheItemTags.GUNS), 1, inventory);
});

ClientPlayNetworking.registerGlobalReceiver(AnnounceWelcomeS2CPayload.ID, (payload, context) -> {
if (payload.role() < 0 || payload.role() >= RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.size()) return;
RoundTextRenderer.startWelcome(RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.get(payload.role()), payload.killers(), payload.targets());
});

ClientPlayNetworking.registerGlobalReceiver(AnnounceEndingS2CPayload.ID, (payload, context) -> RoundTextRenderer.startEnd());

ClientPlayNetworking.registerGlobalReceiver(TaskCompleteS2CPayload.ID, (payload, context) -> MoodRenderer.arrowProgress = 1f);
}

public static TrainWorldComponent getTrainComponent() {
return trainComponent;
}
Expand Down Expand Up @@ -387,4 +423,4 @@ public static boolean isInstinctEnabled() {
public static int getLockedRenderDistance(boolean ultraPerfMode) {
return ultraPerfMode ? 2 : 32;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import dev.doctor4t.wathe.client.gui.StoreRenderer;
import dev.doctor4t.wathe.game.GameConstants;
import dev.doctor4t.wathe.util.ShopEntry;
import dev.doctor4t.wathe.util.StoreBuyPayload;
import dev.doctor4t.wathe.networking.StoreBuyC2SPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
Expand Down Expand Up @@ -71,7 +71,7 @@ public static class StoreItemWidget extends ButtonWidget {
public final ShopEntry entry;

public StoreItemWidget(LimitedInventoryScreen screen, int x, int y, @NotNull ShopEntry entry, int index) {
super(x, y, 16, 16, entry.stack().getName(), (a) -> ClientPlayNetworking.send(new StoreBuyPayload(index)), DEFAULT_NARRATION_SUPPLIER);
super(x, y, 16, 16, entry.stack().getName(), (a) -> ClientPlayNetworking.send(new StoreBuyC2SPayload(index)), DEFAULT_NARRATION_SUPPLIER);
this.screen = screen;
this.entry = entry;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import dev.doctor4t.wathe.Wathe;
import dev.doctor4t.wathe.cca.PlayerNoteComponent;
import dev.doctor4t.wathe.util.NoteEditPayload;
import dev.doctor4t.wathe.networking.NoteEditC2SPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
Expand Down Expand Up @@ -91,7 +91,7 @@ public void close() {

@Override
public void removed() {
ClientPlayNetworking.send(new NoteEditPayload(this.text[0], this.text[1], this.text[2], this.text[3]));
ClientPlayNetworking.send(new NoteEditC2SPayload(this.text[0], this.text[1], this.text[2], this.text[3]));
}

@Override
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/dev/doctor4t/wathe/game/GameFunctions.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import dev.doctor4t.wathe.index.WatheEntities;
import dev.doctor4t.wathe.index.WatheItems;
import dev.doctor4t.wathe.index.WatheSounds;
import dev.doctor4t.wathe.util.AnnounceEndingPayload;
import dev.doctor4t.wathe.networking.AnnounceEndingS2CPayload;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
Expand Down Expand Up @@ -221,7 +221,7 @@ public static void finalizeGame(ServerWorld world) {
}

public static void resetPlayer(ServerPlayerEntity player) {
ServerPlayNetworking.send(player, new AnnounceEndingPayload());
ServerPlayNetworking.send(player, AnnounceEndingS2CPayload.INSTANCE);
player.dismountVehicle();
player.getInventory().clear();
PlayerMoodComponent.KEY.get(player).reset();
Expand Down Expand Up @@ -472,4 +472,4 @@ public static int getReadyPlayerCount(World world) {
public enum WinStatus {
NONE, KILLERS, PASSENGERS, TIME, LOOSE_END
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
import dev.doctor4t.wathe.cca.GameRoundEndComponent;
import dev.doctor4t.wathe.cca.GameTimeComponent;
import dev.doctor4t.wathe.cca.GameWorldComponent;
import dev.doctor4t.wathe.cca.TrainWorldComponent;
import dev.doctor4t.wathe.client.gui.RoleAnnouncementTexts;
import dev.doctor4t.wathe.game.GameConstants;
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.index.WatheItems;
import dev.doctor4t.wathe.util.AnnounceWelcomePayload;
import dev.doctor4t.wathe.networking.AnnounceWelcomeS2CPayload;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.entity.player.ItemCooldownManager;
import net.minecraft.entity.player.PlayerEntity;
Expand Down Expand Up @@ -45,7 +44,7 @@ public void initializeGame(ServerWorld serverWorld, GameWorldComponent gameWorld

gameWorldComponent.addRole(player, WatheRoles.LOOSE_END);

ServerPlayNetworking.send(player, new AnnounceWelcomePayload(RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.indexOf(RoleAnnouncementTexts.LOOSE_END), -1, -1));
ServerPlayNetworking.send(player, new AnnounceWelcomeS2CPayload(RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.indexOf(RoleAnnouncementTexts.LOOSE_END), -1, -1));
}
}

Expand Down Expand Up @@ -83,4 +82,4 @@ public void tickServerGameLoop(ServerWorld serverWorld, GameWorldComponent gameW
GameFunctions.stopGame(serverWorld);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import dev.doctor4t.wathe.client.gui.RoleAnnouncementTexts;
import dev.doctor4t.wathe.game.GameConstants;
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.util.AnnounceWelcomePayload;
import dev.doctor4t.wathe.networking.AnnounceWelcomeS2CPayload;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
Expand Down Expand Up @@ -39,7 +39,7 @@ public void initializeGame(ServerWorld serverWorld, GameWorldComponent gameWorld
int killerCount = assignRolesAndGetKillerCount(serverWorld, players, gameWorldComponent);

for (ServerPlayerEntity player : players) {
ServerPlayNetworking.send(player, new AnnounceWelcomePayload(RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.indexOf(gameWorldComponent.isRole(player, WatheRoles.KILLER) ? RoleAnnouncementTexts.KILLER : gameWorldComponent.isRole(player, WatheRoles.VIGILANTE) ? RoleAnnouncementTexts.VIGILANTE : RoleAnnouncementTexts.CIVILIAN), killerCount, players.size() - killerCount));
ServerPlayNetworking.send(player, new AnnounceWelcomeS2CPayload(RoleAnnouncementTexts.ROLE_ANNOUNCEMENT_TEXTS.indexOf(gameWorldComponent.isRole(player, WatheRoles.KILLER) ? RoleAnnouncementTexts.KILLER : gameWorldComponent.isRole(player, WatheRoles.VIGILANTE) ? RoleAnnouncementTexts.VIGILANTE : RoleAnnouncementTexts.CIVILIAN), killerCount, players.size() - killerCount));
}
}

Expand Down Expand Up @@ -87,4 +87,4 @@ public void tickServerGameLoop(ServerWorld serverWorld, GameWorldComponent gameW
GameFunctions.stopGame(serverWorld);
}
}
}
}
8 changes: 4 additions & 4 deletions src/main/java/dev/doctor4t/wathe/item/DerringerItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import dev.doctor4t.wathe.client.util.WatheItemTooltips;
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.index.WatheDataComponentTypes;
import dev.doctor4t.wathe.util.GunShootPayload;
import dev.doctor4t.wathe.networking.GunShootC2SPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
Expand Down Expand Up @@ -38,9 +38,9 @@ public TypedActionResult<ItemStack> use(@NotNull World world, @NotNull PlayerEnt
HitResult collision = getGunTarget(user);
if (collision instanceof EntityHitResult entityHitResult) {
Entity target = entityHitResult.getEntity();
ClientPlayNetworking.send(new GunShootPayload(target.getId()));
ClientPlayNetworking.send(new GunShootC2SPayload(target.getId()));
} else {
ClientPlayNetworking.send(new GunShootPayload(-1));
ClientPlayNetworking.send(new GunShootC2SPayload(-1));
}
if (!used) {
user.setPitch(user.getPitch() - 4);
Expand Down Expand Up @@ -76,4 +76,4 @@ public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> to
public static HitResult getGunTarget(PlayerEntity user) {
return ProjectileUtil.getCollision(user, entity -> entity instanceof PlayerEntity player && GameFunctions.isPlayerAliveAndSurvival(player), 7f);
}
}
}
7 changes: 3 additions & 4 deletions src/main/java/dev/doctor4t/wathe/item/KnifeItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.index.WatheCosmetics;
import dev.doctor4t.wathe.index.WatheSounds;
import dev.doctor4t.wathe.util.KnifeStabPayload;
import dev.doctor4t.wathe.networking.KnifeStabC2SPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
Expand All @@ -16,7 +16,6 @@
import net.minecraft.item.ItemStack;
import net.minecraft.item.tooltip.TooltipType;
import net.minecraft.screen.slot.Slot;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text;
import net.minecraft.util.*;
import net.minecraft.util.hit.EntityHitResult;
Expand Down Expand Up @@ -85,7 +84,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int
HitResult collision = getKnifeTarget(attacker);
if (collision instanceof EntityHitResult entityHitResult) {
Entity target = entityHitResult.getEntity();
ClientPlayNetworking.send(new KnifeStabPayload(target.getId()));
ClientPlayNetworking.send(new KnifeStabC2SPayload(target.getId()));
}
}

Expand Down Expand Up @@ -136,4 +135,4 @@ public static Skin getNext(Skin skin) {
return values[(skin.ordinal() + 1) % values.length];
}
}
}
}
6 changes: 3 additions & 3 deletions src/main/java/dev/doctor4t/wathe/item/RevolverItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import dev.doctor4t.wathe.client.particle.HandParticle;
import dev.doctor4t.wathe.client.render.WatheRenderLayers;
import dev.doctor4t.wathe.game.GameFunctions;
import dev.doctor4t.wathe.util.GunShootPayload;
import dev.doctor4t.wathe.networking.GunShootC2SPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -30,9 +30,9 @@ public TypedActionResult<ItemStack> use(@NotNull World world, @NotNull PlayerEnt
HitResult collision = getGunTarget(user);
if (collision instanceof EntityHitResult entityHitResult) {
Entity target = entityHitResult.getEntity();
ClientPlayNetworking.send(new GunShootPayload(target.getId()));
ClientPlayNetworking.send(new GunShootC2SPayload(target.getId()));
} else {
ClientPlayNetworking.send(new GunShootPayload(-1));
ClientPlayNetworking.send(new GunShootC2SPayload(-1));
}
user.setPitch(user.getPitch() - 4);
spawnHandParticle();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package dev.doctor4t.wathe.networking;

import dev.doctor4t.wathe.Wathe;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.network.codec.PacketCodec;
import net.minecraft.network.packet.CustomPayload;

public final class AnnounceEndingS2CPayload implements CustomPayload {
public static final AnnounceEndingS2CPayload INSTANCE = new AnnounceEndingS2CPayload();

public static final Id<AnnounceEndingS2CPayload> ID = new Id<>(Wathe.id("announceending"));
public static final PacketCodec<PacketByteBuf, AnnounceEndingS2CPayload> CODEC = PacketCodec.unit(AnnounceEndingS2CPayload.INSTANCE);

private AnnounceEndingS2CPayload() {
}

@Override
public Id<? extends CustomPayload> getId() {
return ID;
}
}
Loading