diff --git a/gradle.properties b/gradle.properties index 3de0651..555fc14 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true # Mod Properties -mod_version=1.1.10 +mod_version=1.1.11 maven_group=com.seacroak.plushables archives_base_name=plushables diff --git a/src/main/java/com/seacroak/plushables/PlushablesMod.java b/src/main/java/com/seacroak/plushables/PlushablesMod.java index b02ac94..92b4135 100644 --- a/src/main/java/com/seacroak/plushables/PlushablesMod.java +++ b/src/main/java/com/seacroak/plushables/PlushablesMod.java @@ -18,31 +18,30 @@ public class PlushablesMod implements ModInitializer { - public static final String MOD_ID = "plushables"; - public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - public static final ItemGroup PLUSHABLES_GROUP = ItemGroupRegistry.createItemGroup(); - - @Override - public void onInitialize() { - Registry.register(Registries.ITEM_GROUP, GenericUtils.ID("plushables"), PLUSHABLES_GROUP); - MidnightConfig.init(MOD_ID, PlushablesConfig.class); - PlushablesNetworking.registerServersideClientJoinListener(); - - MainRegistry.init(); - SoundRegistry.init(); - /* Keep this in */ - new TileRegistry(); - - - PayloadTypeRegistry.playS2C().register(ConfigSyncPayload.ID, ConfigSyncPayload.CODEC); - PayloadTypeRegistry.playC2S().register(ParticlePayload.ID, ParticlePayload.CODEC); - PayloadTypeRegistry.playC2S().register(SoundPayload.ID, SoundPayload.CODEC); - PayloadTypeRegistry.playC2S().register(SoundPayloadPlayerless.ID, SoundPayloadPlayerless.CODEC); - - PlushablesNetworking.registerGlobalSoundPacketReceiverWithPlayer(); - PlushablesNetworking.registerGlobalSoundPacketReceiverWithoutPlayer(); - PlushablesNetworking.registerGlobalParticlePacketReceiver(); - - LOGGER.info("[Plushables] Finished loading!"); - } + public static final String MOD_ID = "plushables"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + public static final ItemGroup PLUSHABLES_GROUP = ItemGroupRegistry.createItemGroup(); + + @Override + public void onInitialize() { + Registry.register(Registries.ITEM_GROUP, GenericUtils.ID("plushables"), PLUSHABLES_GROUP); + MidnightConfig.init(MOD_ID, PlushablesConfig.class); + + MainRegistry.init(); + SoundRegistry.init(); + /* Keep this in */ + new TileRegistry(); + + PlushablesNetworking.registerServersideClientJoinListener(); + PayloadTypeRegistry.playS2C().register(ConfigSyncPayload.ID, ConfigSyncPayload.CODEC); + PayloadTypeRegistry.playS2C().register(ParticlePayload.ID, ParticlePayload.CODEC); + PayloadTypeRegistry.playS2C().register(SoundPayload.ID, SoundPayload.CODEC); + PayloadTypeRegistry.playS2C().register(SoundPayloadPlayerless.ID, SoundPayloadPlayerless.CODEC); + +// PlushablesNetworking.registerGlobalSoundPacketReceiverWithPlayer(); +// PlushablesNetworking.registerGlobalSoundPacketReceiverWithoutPlayer(); +// PlushablesNetworking.registerGlobalParticlePacketReceiver(); + + LOGGER.info("[Plushables] Finished loading!"); + } } \ No newline at end of file diff --git a/src/main/java/com/seacroak/plushables/PlushablesModClient.java b/src/main/java/com/seacroak/plushables/PlushablesModClient.java index 3bc083c..4b63122 100644 --- a/src/main/java/com/seacroak/plushables/PlushablesModClient.java +++ b/src/main/java/com/seacroak/plushables/PlushablesModClient.java @@ -12,119 +12,113 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.minecraft.client.render.RenderLayer; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.sound.SoundEvent; import net.minecraft.text.ClickEvent; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Position; public final class PlushablesModClient implements ClientModInitializer { - public static boolean onServer = false; + public static boolean onServer = false; - @Override - @Environment(EnvType.CLIENT) - public void onInitializeClient() { - PayloadTypeRegistry.playC2S().register(ConfigSyncPayload.ID, ConfigSyncPayload.CODEC); - PayloadTypeRegistry.playS2C().register(ParticlePayload.ID, ParticlePayload.CODEC); - PayloadTypeRegistry.playS2C().register(SoundPayload.ID, SoundPayload.CODEC); - PayloadTypeRegistry.playS2C().register(SoundPayloadPlayerless.ID, SoundPayloadPlayerless.CODEC); - EntityRendererRegistry.initClient(); + @Override + @Environment(EnvType.CLIENT) + public void onInitializeClient() { + PayloadTypeRegistry.playC2S().register(ConfigSyncPayload.ID, ConfigSyncPayload.CODEC); + PayloadTypeRegistry.playC2S().register(ParticlePayload.ID, ParticlePayload.CODEC); + PayloadTypeRegistry.playC2S().register(SoundPayload.ID, SoundPayload.CODEC); + PayloadTypeRegistry.playC2S().register(SoundPayloadPlayerless.ID, SoundPayloadPlayerless.CODEC); + EntityRendererRegistry.initClient(); - /* Functional Transparency*/ - /* Blocks */ - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BASKET_BLOCK, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BUILDER_BLOCK, RenderLayer.getCutout()); + /* Functional Transparency*/ + /* Blocks */ + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BASKET_BLOCK, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BUILDER_BLOCK, RenderLayer.getCutout()); - /* Simple Plushables */ - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.PIG_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TRUFFLES_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.WHELPLING_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.RAPTOR_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BIG_TATER_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BIG_IRRITATER_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.OTTER_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.SHRUMP_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.WHALE_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.GOLDFISH_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TRATER_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.FROGE_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.MAMMOTH_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TIGER_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BLAHAJ_PLUSHABLE, RenderLayer.getCutout()); + /* Simple Plushables */ + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.PIG_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TRUFFLES_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.WHELPLING_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.RAPTOR_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BIG_TATER_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BIG_IRRITATER_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.OTTER_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.SHRUMP_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.WHALE_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.GOLDFISH_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TRATER_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.FROGE_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.MAMMOTH_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.TIGER_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.BLAHAJ_PLUSHABLE, RenderLayer.getCutout()); - /* Complex Plushables */ - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.RUPERT_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.OWL_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.STATUETTE_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.CLUCKY_PLUSHABLE, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.DRAGON_PLUSHABLE, RenderLayer.getCutout()); + /* Complex Plushables */ + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.RUPERT_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.OWL_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.STATUETTE_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.CLUCKY_PLUSHABLE, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(MainRegistry.DRAGON_PLUSHABLE, RenderLayer.getCutout()); - /* Clientside Commands */ - ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) - -> dispatcher.register(ClientCommandManager.literal("plushables") - .executes(context -> { - context.getSource().sendFeedback(Text.translatable("command.plushables.root")); - return 1; - } - ) - .then(ClientCommandManager.literal("wiki") - .executes(context -> { - context.getSource().sendFeedback(Text.translatable("command.plushables.wiki").setStyle(Style.EMPTY.withColor(Formatting.BLUE).withUnderline(true).withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://plushables.khazoda.com")))); - return 1; - }) - ) - ) - ); + /* Clientside Commands */ + ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) + -> dispatcher.register(ClientCommandManager.literal("plushables") + .executes(context -> { + context.getSource().sendFeedback(Text.translatable("command.plushables.root")); + return 1; + } + ) + .then(ClientCommandManager.literal("wiki") + .executes(context -> { + context.getSource().sendFeedback(Text.translatable("command.plushables.wiki").setStyle(Style.EMPTY.withColor(Formatting.BLUE).withUnderline(true).withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://plushables.khazoda.com")))); + return 1; + }) + ) + ) + ); - /* Config Sync Networking Packet Client Receipt */ - ClientPlayNetworking.registerGlobalReceiver(ConfigSyncPayload.ID, (payload, context) -> { - if (context.client().world == null) return; - context.client().execute(() -> { - PlushablesNetworking.priorityConfig(payload.enableBasket(), payload.allowAllBlockItems()); - }); - }); + /* Config Sync Networking Packet Client Receipt */ + ClientPlayNetworking.registerGlobalReceiver(ConfigSyncPayload.ID, (payload, context) -> { + if (context.client() == null) return; + context.client().execute(() -> { + PlushablesNetworking.priorityConfig(payload.enableBasket(), payload.allowAllBlockItems()); + }); + }); - /* Sound Event Networking Packet Client Receipt */ - ClientPlayNetworking.registerGlobalReceiver(SoundPayload.ID, (payload, context) -> { - SoundEvent decodedSoundEvent = PacketDecoder.decodeSoundEvent(payload.soundIdentifier()); - if (context.client() == null) return; - assert context.client().player != null; - if (payload.playerUUID() == context.client().player.getUuid()) - return; - context.client().execute(() -> { - if (context.client().world == null) - return; - PlushablesNetworking.playSoundOnClient(decodedSoundEvent, context.client().world, BlockPos.ofFloored(payload.pos()), 1f, payload.pitch()); - }); - }); + /* Sound Event Networking Packet Client Receipt */ + ClientPlayNetworking.registerGlobalReceiver(SoundPayload.ID, (payload, context) -> { + if (context.client() == null) return; - /* Sound Event Networking Packet Client Receipt */ - ClientPlayNetworking.registerGlobalReceiver(SoundPayloadPlayerless.ID, (payload, context) -> { - SoundEvent decodedSoundEvent = PacketDecoder.decodeSoundEvent(payload.soundIdentifier()); - if (context.client() == null) return; - context.client().execute(() -> { - if (context.client().world == null) - return; - PlushablesNetworking.playSoundOnClient(decodedSoundEvent, context.client().world, BlockPos.ofFloored((Position) payload.pos()), 1f, payload.pitch()); - }); - }); + assert context.client().player != null; + if (payload.playerUUID() == context.client().player.getUuid()) + return; + context.client().execute(() -> { + if (context.client().world == null) + return; + PlushablesNetworking.playSoundOnClient(payload.soundEvent(), context.client().world, payload.pos(), 1f, payload.pitch()); + }); + }); - /* Particle Networking Packet Client Receipt */ - ClientPlayNetworking.registerGlobalReceiver(ParticlePayload.ID, (payload, context) -> { - ParticleEffect decodedParticles = PacketDecoder.decodeParticle(payload.particleIdentifier()); - if (context.client() == null) return; - assert context.client().player != null; - if (payload.playerUUID() == context.client().player.getUuid()) - return; - context.client().execute(() -> { - if (context.client().world == null) - return; - PlushablesNetworking.spawnParticlesOnClient(decodedParticles, context.client().world, BlockPos.ofFloored(payload.pos()), payload.particleCount(), payload.offset(), payload.spread()); - }); - }); - } + /* Sound Event Networking Packet Client Receipt */ + ClientPlayNetworking.registerGlobalReceiver(SoundPayloadPlayerless.ID, (payload, context) -> { + if (context.client() == null) return; + context.client().execute(() -> { + if (context.client().world == null) + return; + PlushablesNetworking.playSoundOnClient(payload.soundEvent(), context.client().world, payload.pos(), 1f, payload.pitch()); + }); + }); + + /* Particle Networking Packet Client Receipt */ + ClientPlayNetworking.registerGlobalReceiver(ParticlePayload.ID, (payload, context) -> { + if (context.client() == null) return; + assert context.client().player != null; + if (payload.playerUUID() == context.client().player.getUuid()) + return; + context.client().execute(() -> { + if (context.client().world == null) + return; + PlushablesNetworking.spawnParticlesOnClient(payload.particle(), context.client().world, payload.pos(), payload.particleCount(), payload.offset(), payload.spread()); + }); + }); + } } diff --git a/src/main/java/com/seacroak/plushables/block/BaseInteractablePlushable.java b/src/main/java/com/seacroak/plushables/block/BaseInteractablePlushable.java index af46f02..d822648 100644 --- a/src/main/java/com/seacroak/plushables/block/BaseInteractablePlushable.java +++ b/src/main/java/com/seacroak/plushables/block/BaseInteractablePlushable.java @@ -52,10 +52,10 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt /* Serverside */ if (!player.canModifyBlocks()) return ActionResult.CONSUME; if (world instanceof ServerWorld serverWorld) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.PLUSHABLE_POP, 1f)); - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundEvents.BLOCK_WOOL_HIT, 1f)); - ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player, pos, "minecraft:poof", 5, new Vec3d(0, 0, 0), 0.05f)); - ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.PLUSHABLE_POP, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundEvents.BLOCK_WOOL_HIT, 1f)); + ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos, ParticleTypes.POOF, 5, new Vec3d(0, 0, 0), 0.05f)); + ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos, ParticleTypes.POOF, 5, new Vec3d(0, 0, 0), 0.05f)); ItemScatterer.spawn(world, pos, DefaultedList.ofSize(1, new ItemStack(this))); world.updateComparators(pos, this); @@ -96,7 +96,7 @@ private void updateNeighbors(BlockState state, World world, BlockPos pos) { /* Override these two methods to send specific sound and particle packets */ /* Every sound/particle used needs to be mirrored to each method */ protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { -// SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(playerUUID, pos, SoundRegistry.BUILDER_DING, 1f)); +// SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid()UUID, pos, SoundRegistry.BUILDER_DING, 1f)); // ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(playerUUID, pos, "minecraft:poof", 10, new Vec3d(0, 0.5, 0), 0f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/BasePlushable.java b/src/main/java/com/seacroak/plushables/block/BasePlushable.java index 5cb2980..c14ee04 100644 --- a/src/main/java/com/seacroak/plushables/block/BasePlushable.java +++ b/src/main/java/com/seacroak/plushables/block/BasePlushable.java @@ -62,10 +62,10 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt if (!player.canModifyBlocks()) return ActionResult.CONSUME; /* Serverside */ if (world instanceof ServerWorld serverWorld) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.PLUSHABLE_POP, 1f)); - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundEvents.BLOCK_WOOL_HIT, 1f)); - ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos.toCenterPos(), "minecraft:poof", 5, new Vec3d(0, 0, 0), 0.05f)); - ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos.toCenterPos(), "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.PLUSHABLE_POP, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundEvents.BLOCK_WOOL_HIT, 1f)); + ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos, ParticleTypes.POOF, 5, new Vec3d(0, 0, 0), 0.05f)); + ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload(player.getUuid(), pos, ParticleTypes.POOF, 5, new Vec3d(0, 0, 0), 0.05f)); ItemScatterer.spawn(world, pos, DefaultedList.ofSize(1, new ItemStack(this))); world.updateComparators(pos, this); diff --git a/src/main/java/com/seacroak/plushables/block/BasketBlock.java b/src/main/java/com/seacroak/plushables/block/BasketBlock.java index 276e785..c79d505 100644 --- a/src/main/java/com/seacroak/plushables/block/BasketBlock.java +++ b/src/main/java/com/seacroak/plushables/block/BasketBlock.java @@ -82,7 +82,7 @@ public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEnt /* Adding an item is only executed if both the server and client allow it */ if (be.pushPlush(player)) { if (world instanceof ServerWorld serverWorld) - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.BASKET_IN, randomPitch)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.BASKET_IN, randomPitch)); else if (world.isClient) PlushablesNetworking.playSoundOnClient(SoundRegistry.BASKET_IN, world, pos, 1f, randomPitch); return ActionResult.SUCCESS; @@ -96,7 +96,7 @@ else if (world.isClient) if ((heldStack.isOf(Items.AIR))) { if (be.popPlush(player)) { if (world instanceof ServerWorld serverWorld) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.BASKET_OUT, randomPitch)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.BASKET_OUT, randomPitch)); } else if (world.isClient) PlushablesNetworking.playSoundOnClient(SoundRegistry.BASKET_OUT, world, pos, 1f, randomPitch); return ActionResult.SUCCESS; @@ -118,7 +118,7 @@ public void onBlockBreakStart(BlockState state, World world, BlockPos pos, Playe /* Checks whether the lowest index in the basket's stack isn't empty */ if (poppedStack[0].isOf(Items.AIR)) return; if (world instanceof ServerWorld serverWorld) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.BASKET_ATTACK, randomPitch)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.BASKET_ATTACK, randomPitch)); for (ItemStack plush : poppedStack ) { ItemScatterer.spawn(world, pos.getX() + 0.5 + (0.5 * ((2 * random.nextFloat()) - 1)), pos.getY() + 0.5 + random.nextFloat(), pos.getZ() + 0.5 + (0.5 * ((2 * random.nextFloat()) - 1)), plush); diff --git a/src/main/java/com/seacroak/plushables/block/plushable/CluckyBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/CluckyBlock.java index b7bc8a3..b156bd2 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/CluckyBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/CluckyBlock.java @@ -29,11 +29,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.CLUCKY_CLUCK, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.CLUCKY_CLUCK, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/DragonBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/DragonBlock.java index fa87fd5..076233b 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/DragonBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/DragonBlock.java @@ -33,11 +33,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.LIGHTFURY, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.LIGHTFURY, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/FrogeBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/FrogeBlock.java index d29d1f4..264be45 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/FrogeBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/FrogeBlock.java @@ -5,7 +5,6 @@ import com.seacroak.plushables.networking.ParticlePayload; import com.seacroak.plushables.networking.PlushablesNetworking; import com.seacroak.plushables.networking.SoundPayload; -import net.minecraft.block.AbstractBlock; import net.minecraft.block.piston.PistonBehavior; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; @@ -45,9 +44,9 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundEvents.ENTITY_FROG_AMBIENT, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundEvents.ENTITY_FROG_AMBIENT, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:wax_on", 5, new Vec3d(0, 0, 0), 5f)); + (player.getUuid(), pos, ParticleTypes.WAX_ON, 5, new Vec3d(0, 0, 0), 5f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/GoldfishBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/GoldfishBlock.java index 2ff0d81..a199dee 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/GoldfishBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/GoldfishBlock.java @@ -31,11 +31,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.GOLDFISH, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.GOLDFISH, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:dolphin", 15, new Vec3d(0, 0.15, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.DOLPHIN, 15, new Vec3d(0, 0.15, 0), 0.05f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:fishing", 15, new Vec3d(0, 0.15, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.FISHING, 15, new Vec3d(0, 0.15, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/OrangutanBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/OrangutanBlock.java index 9fdd428..3879d69 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/OrangutanBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/OrangutanBlock.java @@ -35,11 +35,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.ORANGUTAN, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.ORANGUTAN, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/OwlBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/OwlBlock.java index 28c5009..b6218c1 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/OwlBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/OwlBlock.java @@ -32,11 +32,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.OWL, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.OWL, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/RupertBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/RupertBlock.java index 17efa88..b19ae82 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/RupertBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/RupertBlock.java @@ -38,11 +38,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.RUPERT_PURR, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.RUPERT_PURR, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/StatuetteBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/StatuetteBlock.java index 033fd2c..709bc50 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/StatuetteBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/StatuetteBlock.java @@ -33,11 +33,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.STATUETTE, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.STATUETTE, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/WispBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/WispBlock.java index aa6cf80..1a57880 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/WispBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/WispBlock.java @@ -5,7 +5,6 @@ import com.seacroak.plushables.networking.ParticlePayload; import com.seacroak.plushables.networking.PlushablesNetworking; import com.seacroak.plushables.networking.SoundPayload; -import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.piston.PistonBehavior; import net.minecraft.entity.player.PlayerEntity; @@ -54,9 +53,9 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundEvents.BLOCK_AMETHYST_BLOCK_RESONATE, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundEvents.BLOCK_AMETHYST_BLOCK_RESONATE, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:end_rod", 5, new Vec3d(0, -0.1, 0), 0.1f)); + (player.getUuid(), pos, ParticleTypes.END_ROD, 5, new Vec3d(0, -0.1, 0), 0.1f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/block/plushable/WizardBlock.java b/src/main/java/com/seacroak/plushables/block/plushable/WizardBlock.java index e80a93c..44d51fa 100644 --- a/src/main/java/com/seacroak/plushables/block/plushable/WizardBlock.java +++ b/src/main/java/com/seacroak/plushables/block/plushable/WizardBlock.java @@ -33,11 +33,11 @@ public VoxelShape getShape() { @Override protected ActionResult serverSendEffectPackets(ServerWorld serverWorld, PlayerEntity player, BlockPos pos) { - SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player, pos, SoundRegistry.SWMG, 1f)); + SoundPayload.sendPlayerPacketToClients(serverWorld, new SoundPayload(player.getUuid(), pos, SoundRegistry.SWMG, 1f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:note", 1, new Vec3d(0, 0.5, 0), 0f)); + (player.getUuid(), pos, ParticleTypes.NOTE, 1, new Vec3d(0, 0.5, 0), 0f)); ParticlePayload.sendParticlePacketToClients(serverWorld, new ParticlePayload - (player, pos, "minecraft:glow", 5, new Vec3d(0, 0, 0), 0.05f)); + (player.getUuid(), pos, ParticleTypes.GLOW, 5, new Vec3d(0, 0, 0), 0.05f)); return ActionResult.CONSUME; } diff --git a/src/main/java/com/seacroak/plushables/networking/ConfigSyncPayload.java b/src/main/java/com/seacroak/plushables/networking/ConfigSyncPayload.java index 5552d6e..9ec2d46 100644 --- a/src/main/java/com/seacroak/plushables/networking/ConfigSyncPayload.java +++ b/src/main/java/com/seacroak/plushables/networking/ConfigSyncPayload.java @@ -4,8 +4,10 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; import net.minecraft.network.packet.CustomPayload; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Uuids; import java.util.UUID; @@ -14,26 +16,23 @@ /* Packet is always sent from the server to clients */ /* Packet fields should mimic those found in PlushablesConfig.class */ -public record ConfigSyncPayload(UUID playerToSync, boolean enableBasket, boolean allowAllBlockItems) implements CustomPayload { - public static final Id ID = new Id<>(GenericUtils.ID("plushable_config_packet")); - public static final PacketCodec CODEC = PacketCodec.of(ConfigSyncPayload::write, ConfigSyncPayload::read); +public record ConfigSyncPayload(UUID playerToSync, boolean enableBasket, + boolean allowAllBlockItems) implements CustomPayload { + public static final CustomPayload.Id ID = new Id<>(GenericUtils.ID("plushable_config_packet")); - public static void sendConfigPacketToClient(ServerPlayerEntity player, UUID playerToSync,boolean enableBasket, boolean allowAllBlockItems) { - ServerPlayNetworking.send(player,new ConfigSyncPayload(playerToSync,enableBasket,allowAllBlockItems)); - } + public static final PacketCodec CODEC = PacketCodec.tuple( + Uuids.PACKET_CODEC, ConfigSyncPayload::playerToSync, + PacketCodecs.BOOL, ConfigSyncPayload::enableBasket, + PacketCodecs.BOOL, ConfigSyncPayload::allowAllBlockItems, + ConfigSyncPayload::new); - @Override - public Id getId() { - return ID; - } + public static void sendConfigPacketToClient(ServerPlayerEntity player, UUID playerToSync, boolean enableBasket, boolean allowAllBlockItems) { + ServerPlayNetworking.send(player, new ConfigSyncPayload(playerToSync, enableBasket, allowAllBlockItems)); + } - public static ConfigSyncPayload read(RegistryByteBuf buf) { - return new ConfigSyncPayload(buf.readUuid(), buf.readBoolean(),buf.readBoolean()); - } + @Override + public Id getId() { + return ID; + } - public void write(RegistryByteBuf buf) { - buf.writeUuid(playerToSync); - buf.writeBoolean(enableBasket); - buf.writeBoolean(allowAllBlockItems); - } } diff --git a/src/main/java/com/seacroak/plushables/networking/PacketDecoder.java b/src/main/java/com/seacroak/plushables/networking/PacketDecoder.java deleted file mode 100644 index cd1c3b5..0000000 --- a/src/main/java/com/seacroak/plushables/networking/PacketDecoder.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.seacroak.plushables.networking; - -import com.seacroak.plushables.registry.assets.SoundRegistry; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleTypes; -import net.minecraft.sound.SoundEvent; -import net.minecraft.sound.SoundEvents; - -public class PacketDecoder { - public static SoundEvent decodeSoundEvent(String stringIdentifier) { - SoundEvent returnValue; - switch(stringIdentifier) { - /* Custom Sounds */ - case "plushables:builder_ding": returnValue = SoundRegistry.BUILDER_DING; break; - case "plushables:clucky_cluck": returnValue = SoundRegistry.CLUCKY_CLUCK; break; - case "plushables:rupert_purr": returnValue = SoundRegistry.RUPERT_PURR; break; - case "plushables:swmg": returnValue = SoundRegistry.SWMG; break; - case "plushables:lightfury": returnValue = SoundRegistry.LIGHTFURY; break; - case "plushables:orangutan": returnValue = SoundRegistry.ORANGUTAN; break; - case "plushables:goldfish": returnValue = SoundRegistry.GOLDFISH; break; - case "minecraft:entity.frog.ambient": returnValue = SoundEvents.ENTITY_FROG_AMBIENT; break; - case "plushables:statuette": returnValue = SoundRegistry.STATUETTE; break; - case "plushables:owl": returnValue = SoundRegistry.OWL; break; - - case "plushables:basket_in": returnValue = SoundRegistry.BASKET_IN; break; - case "plushables:basket_out": returnValue = SoundRegistry.BASKET_OUT; break; - case "plushables:basket_attack": returnValue = SoundRegistry.BASKET_ATTACK; break; - - - /* MC Sounds */ - case "minecraft:block.moss.place": returnValue = SoundEvents.BLOCK_MOSS_PLACE; break; - case "minecraft:block.wool.hit": returnValue = SoundEvents.BLOCK_WOOL_HIT; break; - - /* Default */ - case "plushables:plushable_pop": - default: returnValue = SoundRegistry.PLUSHABLE_POP; - } - return returnValue; - } - - public static ParticleEffect decodeParticle(String stringIdentifier) { - ParticleEffect returnValue; - switch(stringIdentifier) { - case "minecraft:glow": returnValue = ParticleTypes.GLOW; break; - case "minecraft:note": returnValue = ParticleTypes.NOTE; break; - case "minecraft:poof": returnValue = ParticleTypes.POOF; break; - case "minecraft:dolphin": returnValue = ParticleTypes.DOLPHIN; break; - case "minecraft:fishing": returnValue = ParticleTypes.FISHING; break; - case "minecraft:mycelium": returnValue = ParticleTypes.MYCELIUM; break; - case "minecraft:wax_on": returnValue = ParticleTypes.WAX_ON; break; - case "minecraft:end_rod": returnValue = ParticleTypes.END_ROD; break; - - default: returnValue = ParticleTypes.SCULK_SOUL; - } - - return returnValue; - } -} diff --git a/src/main/java/com/seacroak/plushables/networking/ParticlePayload.java b/src/main/java/com/seacroak/plushables/networking/ParticlePayload.java index da46ef0..9a8411f 100644 --- a/src/main/java/com/seacroak/plushables/networking/ParticlePayload.java +++ b/src/main/java/com/seacroak/plushables/networking/ParticlePayload.java @@ -3,64 +3,46 @@ import com.seacroak.plushables.util.GenericUtils; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.PacketByteBuf; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; import net.minecraft.network.packet.CustomPayload; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.Uuids; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import java.util.UUID; -public record ParticlePayload(UUID playerUUID, Vec3d pos, String particleIdentifier, int particleCount, Vec3d offset, +public record ParticlePayload(UUID playerUUID, BlockPos pos, ParticleEffect particle, int particleCount, + Vec3d offset, float spread) implements CustomPayload { - public static final Id ID = new Id<>(GenericUtils.ID("plushable_particle_packet")); - public static final PacketCodec CODEC = PacketCodec.of(ParticlePayload::write, ParticlePayload::read); - - - public ParticlePayload(PlayerEntity player, BlockPos pos, String particleIdentifier, int particleCount, Vec3d offset, float spread) { - this(player.getUuid(), pos.toCenterPos(), particleIdentifier, particleCount, offset, spread); - } - - - @Override - public Id getId() { - return ID; - } - - public static void sendParticlePacketToClients(ServerWorld world, ParticlePayload payload) { - BlockPos builderPos = new BlockPos((int) payload.pos.x, (int) payload.pos.y, (int) payload.pos.z); - /* Iterate through players that can see particle event emitter */ - PlayerLookup.tracking(world, builderPos).forEach(player -> { - if (player.getUuid() == payload.playerUUID) - return; - ServerPlayNetworking.send(player, new ParticlePayload(payload.playerUUID, payload.pos, payload.particleIdentifier, payload.particleCount, payload.offset, payload.spread)); - }); - } - - public void write(PacketByteBuf buf) { - buf.writeUuid(playerUUID); - buf.writeDouble(pos.x); - buf.writeDouble(pos.y); - buf.writeDouble(pos.z); - buf.writeString(particleIdentifier); - buf.writeInt(particleCount); - buf.writeDouble(offset.x); - buf.writeDouble(offset.y); - buf.writeDouble(offset.z); - buf.writeFloat(spread); - } - - public static ParticlePayload read(RegistryByteBuf buf) { - UUID player = buf.readUuid(); - Vec3d pos = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); - String particleIdentifier = buf.readString(); - int particleCount = buf.readInt(); - Vec3d offset = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); - float spread = buf.readFloat(); - - return new ParticlePayload(player, pos, particleIdentifier, particleCount, offset, spread); - } + public static final CustomPayload.Id ID = new Id<>(GenericUtils.ID("plushable_particle_packet")); + + public static final PacketCodec CODEC = PacketCodec.tuple( + Uuids.PACKET_CODEC, ParticlePayload::playerUUID, + BlockPos.PACKET_CODEC, ParticlePayload::pos, + ParticleTypes.PACKET_CODEC, ParticlePayload::particle, + PacketCodecs.INTEGER, ParticlePayload::particleCount, + PacketCodecs.codec(Vec3d.CODEC), ParticlePayload::offset, + PacketCodecs.FLOAT, ParticlePayload::spread, + ParticlePayload::new); + + + @Override + public Id getId() { + return ID; + } + + public static void sendParticlePacketToClients(ServerWorld world, ParticlePayload payload) { + BlockPos builderPos = new BlockPos(payload.pos.getX(), payload.pos.getY(), payload.pos.getZ()); + /* Iterate through players that can see particle event emitter */ + PlayerLookup.tracking(world, builderPos).forEach(player -> { + if (player.getUuid() == payload.playerUUID) + return; + ServerPlayNetworking.send(player, new ParticlePayload(payload.playerUUID, payload.pos, payload.particle, payload.particleCount, payload.offset, payload.spread)); + }); + } } diff --git a/src/main/java/com/seacroak/plushables/networking/PlushablesNetworking.java b/src/main/java/com/seacroak/plushables/networking/PlushablesNetworking.java index 08c8708..cc48301 100644 --- a/src/main/java/com/seacroak/plushables/networking/PlushablesNetworking.java +++ b/src/main/java/com/seacroak/plushables/networking/PlushablesNetworking.java @@ -32,16 +32,6 @@ public static void registerServersideClientJoinListener() { }); } - /* Call this method after sending packet when wanting to play sound */ - public static void playSoundOnClient(SoundEvent sound, World world, BlockPos pos, float volume, float pitch) { - try { - Vec3d vec = pos.toCenterPos(); - world.playSoundAtBlockCenter(BlockPos.ofFloored(vec), sound, SoundCategory.BLOCKS, volume, pitch, true); - } catch (Exception e) { - System.out.println("Caught log-in animation exception"); - } - } - /* Call this method after sending packet when wanting to spawn particles */ public static void spawnParticlesOnClient(ParticleEffect particleType, World world, BlockPos pos, int particleCount, Vec3d offset, float spread) { try { @@ -58,6 +48,16 @@ public static void spawnParticlesOnClient(ParticleEffect particleType, World wor } } + /* Call this method clientside after sending packet when wanting to play sound */ + public static void playSoundOnClient(SoundEvent sound, World world, BlockPos pos, float volume, float pitch) { + try { + Vec3d vec = pos.toCenterPos(); + world.playSoundAtBlockCenter(BlockPos.ofFloored(vec), sound, SoundCategory.BLOCKS, volume, pitch, true); + } catch (Exception e) { + System.out.println("Caught sound exception"); + } + } + /* Receiver WITH Player Data*/ public static void registerGlobalSoundPacketReceiverWithPlayer() { /* Registers global packet receiver in MainRegistry.class */ @@ -65,7 +65,7 @@ public static void registerGlobalSoundPacketReceiverWithPlayer() { if (payload.playerUUID() == context.player().getUuid()) return; context.player().getServer().execute(() -> { - SoundPayload.sendPlayerPacketToClients(context.player().getServerWorld(), new SoundPayload(payload.playerUUID(), payload.pos(), payload.soundIdentifier(), payload.pitch())); + SoundPayload.sendPlayerPacketToClients(context.player().getServerWorld(), new SoundPayload(payload.playerUUID(), payload.pos(), payload.soundEvent(), payload.pitch())); }); }); } @@ -75,7 +75,7 @@ public static void registerGlobalSoundPacketReceiverWithoutPlayer() { /* Registers global packet receiver in MainRegistry.class */ ServerPlayNetworking.registerGlobalReceiver(SoundPayloadPlayerless.ID, (payload, context) -> { context.player().getServer().execute(() -> { - SoundPayloadPlayerless.sendNoPlayerPacketToClients(context.player().getServerWorld(), BlockPos.ofFloored(payload.pos()), payload.soundIdentifier(), payload.pitch()); + SoundPayloadPlayerless.sendNoPlayerPacketToClients(context.player().getServerWorld(), payload); }); }); } @@ -87,9 +87,8 @@ public static void registerGlobalParticlePacketReceiver() { return; Objects.requireNonNull(context.player().getServer()).execute(() -> { ParticlePayload.sendParticlePacketToClients - (context.player().getServerWorld(), new ParticlePayload(payload.playerUUID(), payload.pos(), payload.particleIdentifier(), payload.particleCount(), payload.offset(), payload.spread())); + (context.player().getServerWorld(), new ParticlePayload(payload.playerUUID(), payload.pos(), payload.particle(), payload.particleCount(), payload.offset(), payload.spread())); }); }); } - } \ No newline at end of file diff --git a/src/main/java/com/seacroak/plushables/networking/SoundPayload.java b/src/main/java/com/seacroak/plushables/networking/SoundPayload.java index 52f37c9..e702763 100644 --- a/src/main/java/com/seacroak/plushables/networking/SoundPayload.java +++ b/src/main/java/com/seacroak/plushables/networking/SoundPayload.java @@ -3,26 +3,26 @@ import com.seacroak.plushables.util.GenericUtils; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.PacketByteBuf; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; import net.minecraft.network.packet.CustomPayload; import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Uuids; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; import java.util.UUID; -public record SoundPayload(UUID playerUUID, Vec3d pos, String soundIdentifier, float pitch) implements CustomPayload { - public static final Id ID = new Id<>(GenericUtils.ID("plushable_sound_packet_with_player")); - public static final PacketCodec CODEC = PacketCodec.of(SoundPayload::write, SoundPayload::read); +public record SoundPayload(UUID playerUUID, BlockPos pos, SoundEvent soundEvent, float pitch) implements CustomPayload { + public static final CustomPayload.Id ID = new Id<>(GenericUtils.ID("plushable_sound_packet_with_player")); - - public SoundPayload(PlayerEntity player, BlockPos pos, SoundEvent soundEvent, float pitch) { - this(player.getUuid(), pos.toCenterPos(), soundEvent.getId().toString(), pitch); - } + public static final PacketCodec CODEC = PacketCodec.tuple( + Uuids.PACKET_CODEC, SoundPayload::playerUUID, + BlockPos.PACKET_CODEC, SoundPayload::pos, + SoundEvent.PACKET_CODEC, SoundPayload::soundEvent, + PacketCodecs.FLOAT, SoundPayload::pitch, + SoundPayload::new); @Override public Id getId() { @@ -30,30 +30,12 @@ public Id getId() { } public static void sendPlayerPacketToClients(ServerWorld world, SoundPayload payload) { - BlockPos builderPos = new BlockPos((int) payload.pos.x, (int) payload.pos.y, (int) payload.pos.z); + BlockPos builderPos = new BlockPos(payload.pos.getX(), payload.pos.getY(), payload.pos.getZ()); /* Iterate through players that can see sound event emitter */ PlayerLookup.tracking(world, builderPos).forEach(player -> { if (player.getUuid() == payload.playerUUID) return; - ServerPlayNetworking.send(player, new SoundPayload(payload.playerUUID, payload.pos, payload.soundIdentifier, payload.pitch)); + ServerPlayNetworking.send(player, new SoundPayload(payload.playerUUID, payload.pos, payload.soundEvent, payload.pitch)); }); } - - public void write(PacketByteBuf buf) { - buf.writeUuid(playerUUID); - buf.writeDouble(pos.x); - buf.writeDouble(pos.y); - buf.writeDouble(pos.z); - buf.writeString(soundIdentifier); - buf.writeFloat(pitch); - } - - - public static SoundPayload read(PacketByteBuf buf) { - UUID player = buf.readUuid(); - Vec3d pos = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); - String soundIdentifier = buf.readString(); - float pitch = buf.readFloat(); - return new SoundPayload(player, pos, soundIdentifier, pitch); - } } diff --git a/src/main/java/com/seacroak/plushables/networking/SoundPayloadPlayerless.java b/src/main/java/com/seacroak/plushables/networking/SoundPayloadPlayerless.java index 11daa09..b43d5c8 100644 --- a/src/main/java/com/seacroak/plushables/networking/SoundPayloadPlayerless.java +++ b/src/main/java/com/seacroak/plushables/networking/SoundPayloadPlayerless.java @@ -3,64 +3,34 @@ import com.seacroak.plushables.util.GenericUtils; import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.network.PacketByteBuf; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.codec.PacketCodecs; import net.minecraft.network.packet.CustomPayload; import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundEvent; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -public record SoundPayloadPlayerless(Vec3d pos, String soundIdentifier, +public record SoundPayloadPlayerless(BlockPos pos, SoundEvent soundEvent, float pitch) implements CustomPayload { public static final Id ID = new Id<>(GenericUtils.ID("plushable_sound_packet_without_player")); - public static final PacketCodec CODEC = PacketCodec.of(SoundPayloadPlayerless::write, SoundPayloadPlayerless::read); + public static final PacketCodec CODEC = PacketCodec.tuple( + BlockPos.PACKET_CODEC, SoundPayloadPlayerless::pos, + SoundEvent.PACKET_CODEC, SoundPayloadPlayerless::soundEvent, + PacketCodecs.FLOAT, SoundPayloadPlayerless::pitch, + SoundPayloadPlayerless::new); @Override public Id getId() { return ID; } - public static void sendNoPlayerPacketToClients(ServerWorld world, BlockPos pos, String soundIdentifier, float pitch) { - BlockPos builderPos = new BlockPos((int) pos.getX(), (int) pos.getY(), (int) pos.getZ()); + public static void sendNoPlayerPacketToClients(ServerWorld world, SoundPayloadPlayerless payload) { + BlockPos builderPos = new BlockPos(payload.pos.getX(), payload.pos.getY(), payload.pos.getZ()); /* Iterate through players that can see sound event emitter */ PlayerLookup.tracking(world, builderPos).forEach(player -> { - ServerPlayNetworking.send(player, new SoundPayloadPlayerless(pos.toCenterPos(),soundIdentifier, pitch)); + ServerPlayNetworking.send(player, new SoundPayloadPlayerless(payload.pos, payload.soundEvent, payload.pitch)); }); } - public void write(PacketByteBuf buf) { - buf.writeDouble(pos.getX()); - buf.writeDouble(pos.getY()); - buf.writeDouble(pos.getZ()); - buf.writeString(soundIdentifier); - buf.writeFloat(pitch); - } - - public static SoundPayloadPlayerless read(PacketByteBuf buf) { - Vec3d pos = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()); - String soundIdentifier = buf.readString(); - float pitch = buf.readFloat(); - return new SoundPayloadPlayerless(pos, soundIdentifier, pitch); - } - - -// /* Packet originating from playerUUID */ -// public NoPlayerSoundPacket(UUID playerUUID, Vec3d pos, String soundIdentifier, float pitch) { -// this.pos = pos; -// this.soundIdentifier = soundIdentifier; -// this.pitch = pitch; -// } -// -// /* Packet originating from server */ -// public NoPlayerSoundPacket(Vec3d pos, String soundIdentifier, float pitch) { -// this.pos = pos; -// this.soundIdentifier = soundIdentifier; -// this.pitch = pitch; -// } -// -// public NoPlayerSoundPacket(BlockPos pos, SoundEvent soundEvent, float pitch) { -// this(pos.toCenterPos(), soundEvent.getId().toString(), pitch); -// } - }