diff --git a/build.gradle b/build.gradle index f427cb65..6d92f2e1 100644 --- a/build.gradle +++ b/build.gradle @@ -52,6 +52,9 @@ repositories { loom { accessWidenerPath = file("src/main/resources/wathe.accesswidener") + runConfigs.configureEach { + it.ideConfigGenerated(true) + } } fabricApi { diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/dev/doctor4t/wathe/Wathe.java b/src/main/java/dev/doctor4t/wathe/Wathe.java index 93ac2103..fe64554f 100644 --- a/src/main/java/dev/doctor4t/wathe/Wathe.java +++ b/src/main/java/dev/doctor4t/wathe/Wathe.java @@ -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; @@ -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(); } diff --git a/src/main/java/dev/doctor4t/wathe/cca/PlayerMoodComponent.java b/src/main/java/dev/doctor4t/wathe/cca/PlayerMoodComponent.java index 31e106e0..91e9b544 100644 --- a/src/main/java/dev/doctor4t/wathe/cca/PlayerMoodComponent.java +++ b/src/main/java/dev/doctor4t/wathe/cca/PlayerMoodComponent.java @@ -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; @@ -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; } } diff --git a/src/main/java/dev/doctor4t/wathe/client/WatheClient.java b/src/main/java/dev/doctor4t/wathe/client/WatheClient.java index f93bdb77..70c055dc 100644 --- a/src/main/java/dev/doctor4t/wathe/client/WatheClient.java +++ b/src/main/java/dev/doctor4t/wathe/client/WatheClient.java @@ -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; @@ -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; @@ -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; @@ -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; @@ -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( @@ -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; } @@ -387,4 +423,4 @@ public static boolean isInstinctEnabled() { public static int getLockedRenderDistance(boolean ultraPerfMode) { return ultraPerfMode ? 2 : 32; } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/LimitedInventoryScreen.java b/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/LimitedInventoryScreen.java index a5aaf62d..92f4f6dc 100644 --- a/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/LimitedInventoryScreen.java +++ b/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/LimitedInventoryScreen.java @@ -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; @@ -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; } diff --git a/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/NoteScreen.java b/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/NoteScreen.java index e00d482b..3a4ec9fb 100644 --- a/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/NoteScreen.java +++ b/src/main/java/dev/doctor4t/wathe/client/gui/screen/ingame/NoteScreen.java @@ -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; @@ -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 diff --git a/src/main/java/dev/doctor4t/wathe/game/GameFunctions.java b/src/main/java/dev/doctor4t/wathe/game/GameFunctions.java index 56690cb4..3b69625c 100644 --- a/src/main/java/dev/doctor4t/wathe/game/GameFunctions.java +++ b/src/main/java/dev/doctor4t/wathe/game/GameFunctions.java @@ -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; @@ -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(); @@ -472,4 +472,4 @@ public static int getReadyPlayerCount(World world) { public enum WinStatus { NONE, KILLERS, PASSENGERS, TIME, LOOSE_END } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/game/gamemode/LooseEndsGameMode.java b/src/main/java/dev/doctor4t/wathe/game/gamemode/LooseEndsGameMode.java index 231496af..bada7035 100644 --- a/src/main/java/dev/doctor4t/wathe/game/gamemode/LooseEndsGameMode.java +++ b/src/main/java/dev/doctor4t/wathe/game/gamemode/LooseEndsGameMode.java @@ -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; @@ -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)); } } @@ -83,4 +82,4 @@ public void tickServerGameLoop(ServerWorld serverWorld, GameWorldComponent gameW GameFunctions.stopGame(serverWorld); } } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/game/gamemode/MurderGameMode.java b/src/main/java/dev/doctor4t/wathe/game/gamemode/MurderGameMode.java index 91edab9f..d700ca5b 100644 --- a/src/main/java/dev/doctor4t/wathe/game/gamemode/MurderGameMode.java +++ b/src/main/java/dev/doctor4t/wathe/game/gamemode/MurderGameMode.java @@ -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; @@ -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)); } } @@ -87,4 +87,4 @@ public void tickServerGameLoop(ServerWorld serverWorld, GameWorldComponent gameW GameFunctions.stopGame(serverWorld); } } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/item/DerringerItem.java b/src/main/java/dev/doctor4t/wathe/item/DerringerItem.java index 38b0478c..4aa1cb14 100644 --- a/src/main/java/dev/doctor4t/wathe/item/DerringerItem.java +++ b/src/main/java/dev/doctor4t/wathe/item/DerringerItem.java @@ -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; @@ -38,9 +38,9 @@ public TypedActionResult 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); @@ -76,4 +76,4 @@ public void appendTooltip(ItemStack stack, TooltipContext context, List to public static HitResult getGunTarget(PlayerEntity user) { return ProjectileUtil.getCollision(user, entity -> entity instanceof PlayerEntity player && GameFunctions.isPlayerAliveAndSurvival(player), 7f); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/item/KnifeItem.java b/src/main/java/dev/doctor4t/wathe/item/KnifeItem.java index b21f622d..dada191d 100644 --- a/src/main/java/dev/doctor4t/wathe/item/KnifeItem.java +++ b/src/main/java/dev/doctor4t/wathe/item/KnifeItem.java @@ -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; @@ -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; @@ -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())); } } @@ -136,4 +135,4 @@ public static Skin getNext(Skin skin) { return values[(skin.ordinal() + 1) % values.length]; } } -} +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/item/RevolverItem.java b/src/main/java/dev/doctor4t/wathe/item/RevolverItem.java index 02d884d6..3ac95a35 100644 --- a/src/main/java/dev/doctor4t/wathe/item/RevolverItem.java +++ b/src/main/java/dev/doctor4t/wathe/item/RevolverItem.java @@ -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; @@ -30,9 +30,9 @@ public TypedActionResult 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(); diff --git a/src/main/java/dev/doctor4t/wathe/networking/AnnounceEndingS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/AnnounceEndingS2CPayload.java new file mode 100644 index 00000000..63e4f0be --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/AnnounceEndingS2CPayload.java @@ -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 ID = new Id<>(Wathe.id("announceending")); + public static final PacketCodec CODEC = PacketCodec.unit(AnnounceEndingS2CPayload.INSTANCE); + + private AnnounceEndingS2CPayload() { + } + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/networking/AnnounceWelcomeS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/AnnounceWelcomeS2CPayload.java new file mode 100644 index 00000000..b65f18fb --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/AnnounceWelcomeS2CPayload.java @@ -0,0 +1,17 @@ +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.codec.PacketCodecs; +import net.minecraft.network.packet.CustomPayload; + +public record AnnounceWelcomeS2CPayload(int role, int killers, int targets) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("announcewelcome")); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, AnnounceWelcomeS2CPayload::role, PacketCodecs.INTEGER, AnnounceWelcomeS2CPayload::killers, PacketCodecs.INTEGER, AnnounceWelcomeS2CPayload::targets, AnnounceWelcomeS2CPayload::new); + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/networking/GunDropS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/GunDropS2CPayload.java new file mode 100644 index 00000000..08b8736c --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/GunDropS2CPayload.java @@ -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 GunDropS2CPayload implements CustomPayload { + public static final GunDropS2CPayload INSTANCE = new GunDropS2CPayload(); + + public static final Id ID = new Id<>(Wathe.id("gundrop")); + public static final PacketCodec CODEC = PacketCodec.unit(INSTANCE); + + private GunDropS2CPayload() { + } + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/GunShootPayload.java b/src/main/java/dev/doctor4t/wathe/networking/GunShootC2SPayload.java similarity index 86% rename from src/main/java/dev/doctor4t/wathe/util/GunShootPayload.java rename to src/main/java/dev/doctor4t/wathe/networking/GunShootC2SPayload.java index 4bec89ed..5241180b 100644 --- a/src/main/java/dev/doctor4t/wathe/util/GunShootPayload.java +++ b/src/main/java/dev/doctor4t/wathe/networking/GunShootC2SPayload.java @@ -1,4 +1,4 @@ -package dev.doctor4t.wathe.util; +package dev.doctor4t.wathe.networking; import dev.doctor4t.wathe.Wathe; import dev.doctor4t.wathe.cca.GameWorldComponent; @@ -9,6 +9,7 @@ import dev.doctor4t.wathe.index.WatheItems; import dev.doctor4t.wathe.index.WatheSounds; import dev.doctor4t.wathe.index.tag.WatheItemTags; +import dev.doctor4t.wathe.util.Scheduler; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.entity.ItemEntity; @@ -23,18 +24,18 @@ import net.minecraft.sound.SoundCategory; import org.jetbrains.annotations.NotNull; -public record GunShootPayload(int target) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("gunshoot")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, GunShootPayload::target, GunShootPayload::new); +public record GunShootC2SPayload(int target) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("gunshoot")); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, GunShootC2SPayload::target, GunShootC2SPayload::new); @Override public Id getId() { return ID; } - public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { + public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { @Override - public void receive(@NotNull GunShootPayload payload, ServerPlayNetworking.@NotNull Context context) { + public void receive(@NotNull GunShootC2SPayload payload, ServerPlayNetworking.@NotNull Context context) { ServerPlayerEntity player = context.player(); ItemStack mainHandStack = player.getMainHandStack(); if (!mainHandStack.isIn(WatheItemTags.GUNS)) return; @@ -76,7 +77,7 @@ public void receive(@NotNull GunShootPayload payload, ServerPlayNetworking.@NotN item.setPickupDelay(10); item.setThrower(player); } - ServerPlayNetworking.send(player, new GunDropPayload()); + ServerPlayNetworking.send(player, GunDropS2CPayload.INSTANCE); PlayerMoodComponent.KEY.get(player).setMood(0); }, 4); } @@ -90,8 +91,8 @@ public void receive(@NotNull GunShootPayload payload, ServerPlayNetworking.@NotN player.getWorld().playSound(null, player.getX(), player.getEyeY(), player.getZ(), WatheSounds.ITEM_REVOLVER_SHOOT, SoundCategory.PLAYERS, 5f, 1f + player.getRandom().nextFloat() * .1f - .05f); for (ServerPlayerEntity tracking : PlayerLookup.tracking(player)) - ServerPlayNetworking.send(tracking, new ShootMuzzleS2CPayload(player.getUuidAsString())); - ServerPlayNetworking.send(player, new ShootMuzzleS2CPayload(player.getUuidAsString())); + ServerPlayNetworking.send(tracking, new ShootMuzzleS2CPayload(player.getUuid())); + ServerPlayNetworking.send(player, new ShootMuzzleS2CPayload(player.getUuid())); if (!player.isCreative()) player.getItemCooldownManager().set(mainHandStack.getItem(), GameConstants.ITEM_COOLDOWNS.getOrDefault(mainHandStack.getItem(), 0)); } diff --git a/src/main/java/dev/doctor4t/wathe/util/KnifeStabPayload.java b/src/main/java/dev/doctor4t/wathe/networking/KnifeStabC2SPayload.java similarity index 75% rename from src/main/java/dev/doctor4t/wathe/util/KnifeStabPayload.java rename to src/main/java/dev/doctor4t/wathe/networking/KnifeStabC2SPayload.java index 8dbabe03..b3843740 100644 --- a/src/main/java/dev/doctor4t/wathe/util/KnifeStabPayload.java +++ b/src/main/java/dev/doctor4t/wathe/networking/KnifeStabC2SPayload.java @@ -1,4 +1,4 @@ -package dev.doctor4t.wathe.util; +package dev.doctor4t.wathe.networking; import dev.doctor4t.wathe.Wathe; import dev.doctor4t.wathe.api.WatheGameModes; @@ -17,18 +17,18 @@ import net.minecraft.util.Hand; import org.jetbrains.annotations.NotNull; -public record KnifeStabPayload(int target) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("knifestab")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, KnifeStabPayload::target, KnifeStabPayload::new); +public record KnifeStabC2SPayload(int target) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("knifestab")); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, KnifeStabC2SPayload::target, KnifeStabC2SPayload::new); @Override public Id getId() { return ID; } - public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { + public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { @Override - public void receive(@NotNull KnifeStabPayload payload, ServerPlayNetworking.@NotNull Context context) { + public void receive(@NotNull KnifeStabC2SPayload payload, ServerPlayNetworking.@NotNull Context context) { ServerPlayerEntity player = context.player(); if (!(player.getServerWorld().getEntityById(payload.target()) instanceof PlayerEntity target)) return; if (target.distanceTo(player) > 3.0) return; diff --git a/src/main/java/dev/doctor4t/wathe/util/NoteEditPayload.java b/src/main/java/dev/doctor4t/wathe/networking/NoteEditC2SPayload.java similarity index 50% rename from src/main/java/dev/doctor4t/wathe/util/NoteEditPayload.java rename to src/main/java/dev/doctor4t/wathe/networking/NoteEditC2SPayload.java index fc96f1f8..593ebdd0 100644 --- a/src/main/java/dev/doctor4t/wathe/util/NoteEditPayload.java +++ b/src/main/java/dev/doctor4t/wathe/networking/NoteEditC2SPayload.java @@ -1,4 +1,4 @@ -package dev.doctor4t.wathe.util; +package dev.doctor4t.wathe.networking; import dev.doctor4t.wathe.Wathe; import dev.doctor4t.wathe.cca.PlayerNoteComponent; @@ -9,18 +9,18 @@ import net.minecraft.network.packet.CustomPayload; import org.jetbrains.annotations.NotNull; -public record NoteEditPayload(String line1, String line2, String line3, String line4) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("note")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.STRING, NoteEditPayload::line1, PacketCodecs.STRING, NoteEditPayload::line2, PacketCodecs.STRING, NoteEditPayload::line3, PacketCodecs.STRING, NoteEditPayload::line4, NoteEditPayload::new); +public record NoteEditC2SPayload(String line1, String line2, String line3, String line4) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("note")); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.STRING, NoteEditC2SPayload::line1, PacketCodecs.STRING, NoteEditC2SPayload::line2, PacketCodecs.STRING, NoteEditC2SPayload::line3, PacketCodecs.STRING, NoteEditC2SPayload::line4, NoteEditC2SPayload::new); @Override public Id getId() { return ID; } - public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { + public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { @Override - public void receive(@NotNull NoteEditPayload payload, ServerPlayNetworking.@NotNull Context context) { + public void receive(@NotNull NoteEditC2SPayload payload, ServerPlayNetworking.@NotNull Context context) { PlayerNoteComponent.KEY.get(context.player()).setNote(payload.line1(), payload.line2(), payload.line3(), payload.line4()); } } diff --git a/src/main/java/dev/doctor4t/wathe/networking/PoisonOverlayS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/PoisonOverlayS2CPayload.java new file mode 100644 index 00000000..868f5f8e --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/PoisonOverlayS2CPayload.java @@ -0,0 +1,25 @@ +package dev.doctor4t.wathe.networking; + +import dev.doctor4t.wathe.Wathe; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; + +public record PoisonOverlayS2CPayload(String translationKey) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("poisoned_text")); + + public static final PacketCodec CODEC = PacketCodec.of(PoisonOverlayS2CPayload::write, PoisonOverlayS2CPayload::read); + + private void write(RegistryByteBuf buf) { + buf.writeString(translationKey); + } + + private static PoisonOverlayS2CPayload read(RegistryByteBuf buf) { + return new PoisonOverlayS2CPayload(buf.readString()); + } + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/networking/ShootMuzzleS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/ShootMuzzleS2CPayload.java new file mode 100644 index 00000000..aa25198e --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/ShootMuzzleS2CPayload.java @@ -0,0 +1,19 @@ +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; +import net.minecraft.util.Uuids; + +import java.util.UUID; + +public record ShootMuzzleS2CPayload(UUID shooterUuid) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("shoot_muzzle_s2c")); + public static final PacketCodec CODEC = PacketCodec.tuple(Uuids.PACKET_CODEC, ShootMuzzleS2CPayload::shooterUuid, ShootMuzzleS2CPayload::new); + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/StoreBuyPayload.java b/src/main/java/dev/doctor4t/wathe/networking/StoreBuyC2SPayload.java similarity index 55% rename from src/main/java/dev/doctor4t/wathe/util/StoreBuyPayload.java rename to src/main/java/dev/doctor4t/wathe/networking/StoreBuyC2SPayload.java index 1a1d28a7..7a94fb14 100644 --- a/src/main/java/dev/doctor4t/wathe/util/StoreBuyPayload.java +++ b/src/main/java/dev/doctor4t/wathe/networking/StoreBuyC2SPayload.java @@ -1,4 +1,4 @@ -package dev.doctor4t.wathe.util; +package dev.doctor4t.wathe.networking; import dev.doctor4t.wathe.Wathe; import dev.doctor4t.wathe.cca.PlayerShopComponent; @@ -9,18 +9,18 @@ import net.minecraft.network.packet.CustomPayload; import org.jetbrains.annotations.NotNull; -public record StoreBuyPayload(int index) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("storebuy")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, StoreBuyPayload::index, StoreBuyPayload::new); +public record StoreBuyC2SPayload(int index) implements CustomPayload { + public static final Id ID = new Id<>(Wathe.id("storebuy")); + public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, StoreBuyC2SPayload::index, StoreBuyC2SPayload::new); @Override public Id getId() { return ID; } - public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { + public static class Receiver implements ServerPlayNetworking.PlayPayloadHandler { @Override - public void receive(@NotNull StoreBuyPayload payload, ServerPlayNetworking.@NotNull Context context) { + public void receive(@NotNull StoreBuyC2SPayload payload, ServerPlayNetworking.@NotNull Context context) { PlayerShopComponent.KEY.get(context.player()).tryBuy(payload.index()); } } diff --git a/src/main/java/dev/doctor4t/wathe/networking/TaskCompleteS2CPayload.java b/src/main/java/dev/doctor4t/wathe/networking/TaskCompleteS2CPayload.java new file mode 100644 index 00000000..23aa5daa --- /dev/null +++ b/src/main/java/dev/doctor4t/wathe/networking/TaskCompleteS2CPayload.java @@ -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 TaskCompleteS2CPayload implements CustomPayload { + public static final TaskCompleteS2CPayload INSTANCE = new TaskCompleteS2CPayload(); + + public static final Id ID = new Id<>(Wathe.id("taskcomplete")); + public static final PacketCodec CODEC = PacketCodec.unit(INSTANCE); + + private TaskCompleteS2CPayload() { + } + + @Override + public Id getId() { + return ID; + } +} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/AnnounceEndingPayload.java b/src/main/java/dev/doctor4t/wathe/util/AnnounceEndingPayload.java deleted file mode 100644 index 05e1b614..00000000 --- a/src/main/java/dev/doctor4t/wathe/util/AnnounceEndingPayload.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.doctor4t.wathe.util; - -import dev.doctor4t.wathe.Wathe; -import dev.doctor4t.wathe.client.gui.RoundTextRenderer; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import org.jetbrains.annotations.NotNull; - -public record AnnounceEndingPayload() implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("announceending")); - public static final PacketCodec CODEC = PacketCodec.unit(new AnnounceEndingPayload()); - - @Override - public Id getId() { - return ID; - } - - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull AnnounceEndingPayload payload, ClientPlayNetworking.@NotNull Context context) { - RoundTextRenderer.startEnd(); - } - } -} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/AnnounceWelcomePayload.java b/src/main/java/dev/doctor4t/wathe/util/AnnounceWelcomePayload.java deleted file mode 100644 index 93aaae0e..00000000 --- a/src/main/java/dev/doctor4t/wathe/util/AnnounceWelcomePayload.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.doctor4t.wathe.util; - -import dev.doctor4t.wathe.Wathe; -import dev.doctor4t.wathe.client.gui.RoleAnnouncementTexts; -import dev.doctor4t.wathe.client.gui.RoundTextRenderer; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import org.jetbrains.annotations.NotNull; - -public record AnnounceWelcomePayload(int role, int killers, int targets) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("announcewelcome")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.INTEGER, AnnounceWelcomePayload::role, PacketCodecs.INTEGER, AnnounceWelcomePayload::killers, PacketCodecs.INTEGER, AnnounceWelcomePayload::targets, AnnounceWelcomePayload::new); - - @Override - public Id getId() { - return ID; - } - - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull AnnounceWelcomePayload payload, ClientPlayNetworking.@NotNull Context 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()); - } - } -} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/GunDropPayload.java b/src/main/java/dev/doctor4t/wathe/util/GunDropPayload.java deleted file mode 100644 index da84d818..00000000 --- a/src/main/java/dev/doctor4t/wathe/util/GunDropPayload.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.doctor4t.wathe.util; - -import dev.doctor4t.wathe.Wathe; -import dev.doctor4t.wathe.index.tag.WatheItemTags; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import org.jetbrains.annotations.NotNull; - -public record GunDropPayload() implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("gundrop")); - public static final PacketCodec CODEC = PacketCodec.unit(new GunDropPayload()); - - @Override - public Id getId() { - return ID; - } - - @Environment(EnvType.CLIENT) - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull GunDropPayload payload, ClientPlayNetworking.@NotNull Context context) { - context.player().getInventory().remove((s) -> s.isIn(WatheItemTags.GUNS), 1, context.player().getInventory()); - } - } -} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/PoisonUtils.java b/src/main/java/dev/doctor4t/wathe/util/PoisonUtils.java index 20bb71bb..421331b7 100644 --- a/src/main/java/dev/doctor4t/wathe/util/PoisonUtils.java +++ b/src/main/java/dev/doctor4t/wathe/util/PoisonUtils.java @@ -1,25 +1,18 @@ package dev.doctor4t.wathe.util; -import dev.doctor4t.wathe.Wathe; import dev.doctor4t.wathe.block_entity.TrimmedBedBlockEntity; import dev.doctor4t.wathe.cca.PlayerPoisonComponent; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import dev.doctor4t.wathe.networking.PoisonOverlayS2CPayload; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.BedBlock; import net.minecraft.block.BlockState; import net.minecraft.block.HorizontalFacingBlock; import net.minecraft.block.enums.BedPart; -import net.minecraft.client.MinecraftClient; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -84,7 +77,7 @@ public static void bedPoison(ServerPlayerEntity player) { } ServerPlayNetworking.send( - player, new PoisonOverlayPayload("game.player.stung") + player, new PoisonOverlayS2CPayload("game.player.stung") ); } } @@ -202,34 +195,4 @@ private static TrimmedBedBlockEntity resolveHead(World world, BlockPos pos) { return null; } - - - public record PoisonOverlayPayload(String translationKey) implements CustomPayload { - public static final Id ID = - new Id<>(Wathe.id("poisoned_text")); - - public static final PacketCodec CODEC = - PacketCodec.of(PoisonOverlayPayload::write, PoisonOverlayPayload::read); - - private void write(RegistryByteBuf buf) { - buf.writeString(translationKey); - } - - private static PoisonOverlayPayload read(RegistryByteBuf buf) { - return new PoisonOverlayPayload(buf.readString()); - } - - @Override - public Id getId() { - return ID; - } - - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull PoisonOverlayPayload payload, ClientPlayNetworking.@NotNull Context context) { - MinecraftClient client = MinecraftClient.getInstance(); - client.execute(() -> client.inGameHud.setOverlayMessage(Text.translatable(payload.translationKey()), false)); - } - } - } } \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/ShootMuzzleS2CPayload.java b/src/main/java/dev/doctor4t/wathe/util/ShootMuzzleS2CPayload.java deleted file mode 100644 index 87532d3d..00000000 --- a/src/main/java/dev/doctor4t/wathe/util/ShootMuzzleS2CPayload.java +++ /dev/null @@ -1,42 +0,0 @@ -package dev.doctor4t.wathe.util; - -import dev.doctor4t.wathe.Wathe; -import dev.doctor4t.wathe.index.WatheParticles; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.option.Perspective; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.codec.PacketCodecs; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.math.Vec3d; -import org.jetbrains.annotations.NotNull; - -import java.util.UUID; - -public record ShootMuzzleS2CPayload(String shooterId) implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("shoot_muzzle_s2c")); - public static final PacketCodec CODEC = PacketCodec.tuple(PacketCodecs.STRING, ShootMuzzleS2CPayload::shooterId, ShootMuzzleS2CPayload::new); - - @Override - public Id getId() { - return ID; - } - - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull ShootMuzzleS2CPayload payload, ClientPlayNetworking.@NotNull Context context) { - MinecraftClient client = MinecraftClient.getInstance(); - client.execute(() -> { - if (client.world == null || client.player == null) return; - PlayerEntity shooter = client.world.getPlayerByUuid(UUID.fromString(payload.shooterId())); - 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); - }); - } - } -} \ No newline at end of file diff --git a/src/main/java/dev/doctor4t/wathe/util/TaskCompletePayload.java b/src/main/java/dev/doctor4t/wathe/util/TaskCompletePayload.java deleted file mode 100644 index ece81438..00000000 --- a/src/main/java/dev/doctor4t/wathe/util/TaskCompletePayload.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.doctor4t.wathe.util; - -import dev.doctor4t.wathe.Wathe; -import dev.doctor4t.wathe.client.gui.MoodRenderer; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import org.jetbrains.annotations.NotNull; - -public record TaskCompletePayload() implements CustomPayload { - public static final Id ID = new Id<>(Wathe.id("taskcomplete")); - public static final PacketCodec CODEC = PacketCodec.unit(new TaskCompletePayload()); - - @Override - public Id getId() { - return ID; - } - - @Environment(EnvType.CLIENT) - public static class Receiver implements ClientPlayNetworking.PlayPayloadHandler { - @Override - public void receive(@NotNull TaskCompletePayload payload, ClientPlayNetworking.@NotNull Context context) { - MoodRenderer.arrowProgress = 1f; - } - } -} \ No newline at end of file