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); }