From 9f85d3c610b27ffb543e0ec37f04fa7a1826ba9f Mon Sep 17 00:00:00 2001 From: LiuEnder Date: Sat, 25 Apr 2026 20:02:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=93=84=E5=8A=9B=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E9=80=BB=E8=BE=91=EF=BC=9B=E4=BF=AE=E6=AD=A3=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=95=8C=E9=9D=A2=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/le/teleportmirror/MirrorItem.java | 34 +++++++++++-------- .../screen/PlayerSelectionScreen.java | 3 +- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/le/teleportmirror/MirrorItem.java b/src/main/java/com/le/teleportmirror/MirrorItem.java index 869fece..3fc8e39 100644 --- a/src/main/java/com/le/teleportmirror/MirrorItem.java +++ b/src/main/java/com/le/teleportmirror/MirrorItem.java @@ -57,29 +57,33 @@ public class MirrorItem extends Item { } @Override - public void releaseUsing(ItemStack stack, Level level, LivingEntity entity, int timeCharged) { - if (!(entity instanceof Player player)) { - return; - } - - int chargeTicks = Config.CHARGE_TICKS.get(); - if (timeCharged < chargeTicks) { - return; - } - + public void onUseTick(Level level, LivingEntity livingEntity, ItemStack stack, int remainingUseDuration) { if (level.isClientSide) { return; } - ServerPlayer serverPlayer = (ServerPlayer) player; + int chargeTicks = Config.CHARGE_TICKS.get(); + int usedTicks = getUseDuration(stack, livingEntity) - remainingUseDuration; - if (type == MirrorType.RETURN) { - performReturnTeleport(serverPlayer, stack); - } else { - MirrorNetwork.sendOpenSelectionToClient(serverPlayer, tier); + if (usedTicks >= chargeTicks) { + if (!(livingEntity instanceof ServerPlayer serverPlayer)) { + return; + } + + livingEntity.stopUsingItem(); + + if (type == MirrorType.RETURN) { + performReturnTeleport(serverPlayer, stack); + } else { + MirrorNetwork.sendOpenSelectionToClient(serverPlayer, tier); + } } } + @Override + public void releaseUsing(ItemStack stack, Level level, LivingEntity entity, int timeCharged) { + } + private void performReturnTeleport(ServerPlayer player, ItemStack stack) { ServerLevel serverLevel = player.serverLevel(); BlockPos targetPos; diff --git a/src/main/java/com/le/teleportmirror/screen/PlayerSelectionScreen.java b/src/main/java/com/le/teleportmirror/screen/PlayerSelectionScreen.java index b3ad732..7beb8db 100644 --- a/src/main/java/com/le/teleportmirror/screen/PlayerSelectionScreen.java +++ b/src/main/java/com/le/teleportmirror/screen/PlayerSelectionScreen.java @@ -89,7 +89,8 @@ public class PlayerSelectionScreen extends Screen { @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { this.renderBackground(guiGraphics, mouseX, mouseY, partialTick); - guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 15, 0xFFFFFF); + guiGraphics.fill(0, 0, this.width, 32, 0x88000000); + guiGraphics.drawCenteredString(this.font, this.title, this.width / 2, 10, 0xFFFFFF); super.render(guiGraphics, mouseX, mouseY, partialTick); }