From b66040bf033c397e70b28b26f27abcc6c07c1ad6 Mon Sep 17 00:00:00 2001 From: Tschipp <11649893+Tschipp@users.noreply.github.com> Date: Mon, 29 Dec 2025 23:27:04 +0100 Subject: [PATCH] Fixed wrong Packet ID for Carry Data Sync on Forge, Proper handling of carried player dying --- .../java/tschipp/carryon/events/CommonEvents.java | 15 ++++++++++++++- .../java/tschipp/carryon/events/CommonEvents.java | 8 ++++++++ .../carryon/platform/ForgePlatformHelper.java | 2 +- .../java/tschipp/carryon/events/CommonEvents.java | 8 ++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java index b0991d9..52a2da1 100644 --- a/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Fabric/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -21,6 +21,7 @@ package tschipp.carryon.events; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; @@ -158,7 +159,19 @@ public class CommonEvents { CarryOnCommon.onRiderDisconnected(handler.getPlayer()); }); - //TODO: drop carried when attacked + ServerLivingEntityEvents.ALLOW_DEATH.register((entity, damageSource, damageAmount) -> { + if(entity instanceof ServerPlayer sp) { + CarryOnCommon.onRiderDisconnected(sp); + } + return true; + }); + + ServerLivingEntityEvents.ALLOW_DAMAGE.register((entity, source, amount) -> { + if(entity instanceof ServerPlayer sp) { + CarryOnCommon.onPlayerAttacked(sp); + } + return true; + }); } } diff --git a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java index 8e3e927..93c350d 100644 --- a/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/Forge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -36,6 +36,7 @@ import net.minecraftforge.event.*; import net.minecraftforge.event.TickEvent.ServerTickEvent; import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.MobSpawnEvent.FinalizeSpawn; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerEvent; @@ -242,4 +243,11 @@ public class CommonEvents } } + @SubscribeEvent + public static void onPlayerDie(LivingDeathEvent event) { + if(event.getEntity() instanceof ServerPlayer sp) { + CarryOnCommon.onRiderDisconnected(sp); + } + } + } diff --git a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java index 6bee910..4546035 100644 --- a/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java +++ b/Forge/src/main/java/tschipp/carryon/platform/ForgePlatformHelper.java @@ -128,7 +128,7 @@ public class ForgePlatformHelper implements IPlatformHelper { var cap = player.getCapability(CarryOnDataCapabilityProvider.CARRY_ON_DATA_CAPABILITY).orElse(new CarryOnDataCapability()); cap.setCarryData(data); if(!player.level().isClientSide()) { - sendPacketToAllPlayers(Constants.PACKET_ID_SYNC_SCRIPTS, new ClientboundSyncCarryDataPacket(player.getId(), data), (ServerLevel) player.level()); + sendPacketToAllPlayers(Constants.PACKET_ID_SYNC_CARRY_ON_DATA, new ClientboundSyncCarryDataPacket(player.getId(), data), (ServerLevel) player.level()); } } } diff --git a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java index 5fa9e2a..437d1b4 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -40,6 +40,7 @@ import net.neoforged.neoforge.event.AddServerReloadListenersEvent; import net.neoforged.neoforge.event.OnDatapackSyncEvent; import net.neoforged.neoforge.event.RegisterCommandsEvent; import net.neoforged.neoforge.event.TagsUpdatedEvent; +import net.neoforged.neoforge.event.entity.living.LivingDeathEvent; import net.neoforged.neoforge.event.entity.living.MobSpawnEvent; import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; import net.neoforged.neoforge.event.entity.player.PlayerEvent; @@ -220,4 +221,11 @@ public class CommonEvents CarryOnCommon.onRiderDisconnected(player); } + @SubscribeEvent + public static void onPlayerDie(LivingDeathEvent event) { + if(event.getEntity() instanceof ServerPlayer sp) { + CarryOnCommon.onRiderDisconnected(sp); + } + } + }