From 114de62942c9c50bf2e4c7d038ea0c1b5d0448d7 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Mon, 14 Mar 2022 18:44:48 +0100 Subject: [PATCH] Fixed #3445 --- CHANGELOG.md | 1 + .../items/blocks/HologramProjector.java | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97a30dff4..cb9caf842 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ #### Changes #### Fixes +* Fixed #3445 ## Release Candidate 31 (14 Mar 2022) https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#31 diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/blocks/HologramProjector.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/blocks/HologramProjector.java index 5751f976f..26d117b85 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/blocks/HologramProjector.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/blocks/HologramProjector.java @@ -55,8 +55,7 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { addItemHandler(onPlace(), onRightClick(), onBreak()); } - @Nonnull - private BlockPlaceHandler onPlace() { + private @Nonnull BlockPlaceHandler onPlace() { return new BlockPlaceHandler(false) { @Override @@ -72,8 +71,7 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { }; } - @Nonnull - private BlockBreakHandler onBreak() { + private @Nonnull BlockBreakHandler onBreak() { return new SimpleBlockBreakHandler() { @Override @@ -83,8 +81,7 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { }; } - @Nonnull - public BlockUseHandler onRightClick() { + public @Nonnull BlockUseHandler onRightClick() { return e -> { e.cancel(); @@ -97,15 +94,22 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { }; } - private static void openEditor(@Nonnull Player p, @Nonnull Block projector) { + private void openEditor(@Nonnull Player p, @Nonnull Block projector) { ChestMenu menu = new ChestMenu(Slimefun.getLocalization().getMessage(p, "machines.HOLOGRAM_PROJECTOR.inventory-title")); - menu.addItem(0, new CustomItemStack(Material.NAME_TAG, "&7Text &e(Click to edit)", "", "&r" + ChatColors.color(BlockStorage.getLocationInfo(projector.getLocation(), "text")))); + menu.addItem(0, new CustomItemStack(Material.NAME_TAG, "&7Text &e(Click to edit)", "", "&f" + ChatColors.color(BlockStorage.getLocationInfo(projector.getLocation(), "text")))); menu.addMenuClickHandler(0, (pl, slot, item, action) -> { pl.closeInventory(); Slimefun.getLocalization().sendMessage(pl, "machines.HOLOGRAM_PROJECTOR.enter-text", true); ChatUtils.awaitInput(pl, message -> { + // Fixes #3445 - Make sure the projector is not broken + if (!BlockStorage.check(projector, getId())) { + // Hologram projector no longer exists. + // TODO: Add a chat message informing the player that their message was ignored. + return; + } + ArmorStand hologram = getArmorStand(projector, true); hologram.setCustomName(ChatColors.color(message)); BlockStorage.addBlockInfo(projector, "text", hologram.getCustomName()); @@ -115,7 +119,7 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { return false; }); - menu.addItem(1, new CustomItemStack(Material.CLOCK, "&7Offset: &e" + NumberUtils.roundDecimalNumber(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), OFFSET_PARAMETER)) + 1.0D), "", "&rLeft Click: &7+0.1", "&rRight Click: &7-0.1")); + menu.addItem(1, new CustomItemStack(Material.CLOCK, "&7Offset: &e" + NumberUtils.roundDecimalNumber(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), OFFSET_PARAMETER)) + 1.0D), "", "&fLeft Click: &7+0.1", "&fRight Click: &7-0.1")); menu.addMenuClickHandler(1, (pl, slot, item, action) -> { double offset = NumberUtils.reparseDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), OFFSET_PARAMETER)) + (action.isRightClicked() ? -0.1F : 0.1F)); ArmorStand hologram = getArmorStand(projector, true); @@ -154,8 +158,7 @@ public class HologramProjector extends SlimefunItem implements HologramOwner { return hologram; } - @Nonnull - private static ArmorStand spawnArmorStand(@Nonnull Location l) { + private static @Nonnull ArmorStand spawnArmorStand(@Nonnull Location l) { ArmorStand armorStand = (ArmorStand) l.getWorld().spawnEntity(l, EntityType.ARMOR_STAND); armorStand.setVisible(false); armorStand.setSilent(true);