diff --git a/build.gradle.kts b/build.gradle.kts index 5f002dd7..dedb89df 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,6 +25,10 @@ allprojects { tasks.withType().configureEach { options.encoding = "UTF-8" } + + configurations.all { + resolutionStrategy.force("net.kyori:adventure-text-serializer-ansi:4.26.1") + } } dependencies { diff --git a/mcv/v1_19_4/src/main/java/dev/geco/gsit/mcv/v1_19_4/model/Pose.java b/mcv/v1_19_4/src/main/java/dev/geco/gsit/mcv/v1_19_4/model/Pose.java index 69ecacc7..982f972c 100644 --- a/mcv/v1_19_4/src/main/java/dev/geco/gsit/mcv/v1_19_4/model/Pose.java +++ b/mcv/v1_19_4/src/main/java/dev/geco/gsit/mcv/v1_19_4/model/Pose.java @@ -85,6 +85,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -126,6 +127,7 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); + height = seatLocation.getY(); playerNpc.moveTo(seatLocation.getX(), seatLocation.getY() + (poseType == PoseType.LAY || poseType == PoseType.LAY_BACK ? 0.3125d : poseType == PoseType.SPIN ? 0.2d : 0d), seatLocation.getZ(), 0f, 0f); direction = getDirection(); @@ -214,7 +216,16 @@ public void spawn() { startUpdate(); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() { diff --git a/mcv/v1_20/src/main/java/dev/geco/gsit/mcv/v1_20/model/Pose.java b/mcv/v1_20/src/main/java/dev/geco/gsit/mcv/v1_20/model/Pose.java index f27f723f..4f37bb1e 100644 --- a/mcv/v1_20/src/main/java/dev/geco/gsit/mcv/v1_20/model/Pose.java +++ b/mcv/v1_20/src/main/java/dev/geco/gsit/mcv/v1_20/model/Pose.java @@ -85,6 +85,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -126,6 +127,7 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); + height = seatLocation.getY(); playerNpc.moveTo(seatLocation.getX(), seatLocation.getY() + (poseType == PoseType.LAY || poseType == PoseType.LAY_BACK ? 0.3125d : poseType == PoseType.SPIN ? 0.2d : 0d), seatLocation.getZ(), 0f, 0f); direction = getDirection(); @@ -214,7 +216,16 @@ public void spawn() { startUpdate(); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() { diff --git a/mcv/v1_20_2/src/main/java/dev/geco/gsit/mcv/v1_20_2/model/Pose.java b/mcv/v1_20_2/src/main/java/dev/geco/gsit/mcv/v1_20_2/model/Pose.java index a0ce8afb..667208c7 100644 --- a/mcv/v1_20_2/src/main/java/dev/geco/gsit/mcv/v1_20_2/model/Pose.java +++ b/mcv/v1_20_2/src/main/java/dev/geco/gsit/mcv/v1_20_2/model/Pose.java @@ -86,6 +86,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -127,6 +128,7 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); + height = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); playerNpc.moveTo(seatLocation.getX(), seatLocation.getY() + gSitMain.getSitService().getBaseOffset() + (poseType == PoseType.LAY || poseType == PoseType.LAY_BACK ? 0.1125d : 0d), seatLocation.getZ(), 0f, 0f); direction = getDirection(); @@ -215,7 +217,16 @@ public void spawn() { startUpdate(); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() { diff --git a/mcv/v1_20_3/src/main/java/dev/geco/gsit/mcv/v1_20_3/model/Pose.java b/mcv/v1_20_3/src/main/java/dev/geco/gsit/mcv/v1_20_3/model/Pose.java index 0a8199a0..3b323113 100644 --- a/mcv/v1_20_3/src/main/java/dev/geco/gsit/mcv/v1_20_3/model/Pose.java +++ b/mcv/v1_20_3/src/main/java/dev/geco/gsit/mcv/v1_20_3/model/Pose.java @@ -88,6 +88,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -128,6 +129,7 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); + height = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); playerNpc.moveTo(seatLocation.getX(), seatLocation.getY() + gSitMain.getSitService().getBaseOffset() + (poseType == PoseType.LAY || poseType == PoseType.LAY_BACK ? 0.1125d : 0d), seatLocation.getZ(), 0f, 0f); direction = getDirection(); @@ -248,7 +250,16 @@ public void spawn() { }); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() { diff --git a/mcv/v1_20_5/src/main/java/dev/geco/gsit/mcv/v1_20_5/model/Pose.java b/mcv/v1_20_5/src/main/java/dev/geco/gsit/mcv/v1_20_5/model/Pose.java index d201ff13..ae2cef58 100644 --- a/mcv/v1_20_5/src/main/java/dev/geco/gsit/mcv/v1_20_5/model/Pose.java +++ b/mcv/v1_20_5/src/main/java/dev/geco/gsit/mcv/v1_20_5/model/Pose.java @@ -89,6 +89,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -130,8 +131,9 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); - double offset = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); + height = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); double scale = serverPlayer.getScale(); + double offset = height; if(poseType == PoseType.LAY || poseType == PoseType.LAY_BACK) offset += 0.1125d * scale; playerNpc.moveTo(seatLocation.getX(), offset, seatLocation.getZ(), 0f, 0f); @@ -255,7 +257,16 @@ public void spawn() { }); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() { diff --git a/mcv/v1_21/src/main/java/dev/geco/gsit/mcv/v1_21/model/Pose.java b/mcv/v1_21/src/main/java/dev/geco/gsit/mcv/v1_21/model/Pose.java index 85164a06..95c99c9e 100644 --- a/mcv/v1_21/src/main/java/dev/geco/gsit/mcv/v1_21/model/Pose.java +++ b/mcv/v1_21/src/main/java/dev/geco/gsit/mcv/v1_21/model/Pose.java @@ -89,6 +89,7 @@ public class Pose implements dev.geco.gsit.model.Pose { private final Location blockLocation; private final Block bedBlock; private final BlockPos bedPos; + private final double height; private final Direction direction; protected ClientboundBlockUpdatePacket setBedPacket; protected ClientboundPlayerInfoUpdatePacket addNpcInfoPacket; @@ -130,8 +131,9 @@ public Pose(Seat seat, PoseType poseType) { bedPos = new BlockPos(blockLocation.getBlockX(), blockLocation.getBlockY(), blockLocation.getBlockZ()); playerNpc = createNPC(); - double offset = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); + height = seatLocation.getY() + gSitMain.getSitService().getBaseOffset(); double scale = serverPlayer.getScale(); + double offset = height; if(poseType == PoseType.LAY || poseType == PoseType.LAY_BACK) offset += 0.1125d * scale; if(poseType == PoseType.BELLYFLOP) offset += -0.19 * scale; playerNpc.moveTo(seatLocation.getX(), offset, seatLocation.getZ(), 0f, 0f); @@ -256,7 +258,16 @@ public void spawn() { }); } - private void addViewerPlayer(Player player) { sendPacket(player, bundle); } + private void addViewerPlayer(Player player) { + sendPacket(player, bundle); + if((poseType != PoseType.LAY && poseType != PoseType.LAY_BACK) || height < 1) return; + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + gSitMain.getTaskService().runDelayed(() -> { + sendPacket(player, teleportNpcPacket); + }, player, 1); + }, player, 1); + } @Override public void remove() {