diff --git a/src/main/java/top/r3944realms/eroticdungeongame/content/capability/DungeonDataSyncManager.java b/src/main/java/top/r3944realms/eroticdungeongame/content/capability/DungeonDataSyncManager.java index a2cbcc36..49aa4b82 100644 --- a/src/main/java/top/r3944realms/eroticdungeongame/content/capability/DungeonDataSyncManager.java +++ b/src/main/java/top/r3944realms/eroticdungeongame/content/capability/DungeonDataSyncManager.java @@ -26,7 +26,9 @@ import org.jetbrains.annotations.Nullable; import top.r3944realms.eroticdungeongame.api.EroticDungeonGameApi; import top.r3944realms.eroticdungeongame.content.animation.EDGAnimation; import top.r3944realms.eroticdungeongame.content.block.ISeatBlock; +import top.r3944realms.eroticdungeongame.content.block.blockentity.BaseSeatBlockEntity; import top.r3944realms.eroticdungeongame.content.util.FurnitureHelper; +import top.r3944realms.eroticdungeongame.util.IEDGEntity; import top.r3944realms.lib39.core.sync.CachedSyncManager; import java.util.HashMap; @@ -85,8 +87,8 @@ public class DungeonDataSyncManager extends CachedSyncManager { - if (cap.getDeviceMainBlockPos() != null) { - player.stopRiding(); + if (cap.getDeviceMainBlockPos() != null && player.level().getBlockEntity(cap.getDeviceMainBlockPos()) instanceof BaseSeatBlockEntity seat) { + ((IEDGEntity)player).releaseEntityFromEDGDevice(seat.getLockCode()); FurnitureHelper.setSeatOccupied(player.level(), cap.getDeviceMainBlockPos(), false); } } diff --git a/src/main/java/top/r3944realms/eroticdungeongame/core/service/SeatService.java b/src/main/java/top/r3944realms/eroticdungeongame/core/service/SeatService.java index 1b0bebaa..e11f1636 100644 --- a/src/main/java/top/r3944realms/eroticdungeongame/core/service/SeatService.java +++ b/src/main/java/top/r3944realms/eroticdungeongame/core/service/SeatService.java @@ -152,8 +152,8 @@ public class SeatService { return seat; } } - } else if (deviceMainBlockPos != null) { - player.stopRiding(); + } else if (deviceMainBlockPos != null && player.level().getBlockEntity(cap.getDeviceMainBlockPos()) instanceof BaseSeatBlockEntity seat) { + ((IEDGEntity)player).releaseEntityFromEDGDevice(seat.getLockCode()); try { if (bindPlayerToSeat(player, deviceMainBlockPos)) { return player.getVehicle();