From fb807d61638382fadd101cc37e3efb218e7d6a51 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Wed, 3 Sep 2025 17:43:08 +0200 Subject: [PATCH] Adds some helper code mainly related to signs --- .../knarlib/formatting/FormatBuilder.java | 16 ++--- .../knarcraft/knarlib/util/BlockHelper.java | 28 +++++++++ .../knarcraft/knarlib/util/SignHelper.java | 61 +++++++++++++++++++ 3 files changed, 95 insertions(+), 10 deletions(-) create mode 100644 src/main/java/net/knarcraft/knarlib/util/BlockHelper.java create mode 100644 src/main/java/net/knarcraft/knarlib/util/SignHelper.java diff --git a/src/main/java/net/knarcraft/knarlib/formatting/FormatBuilder.java b/src/main/java/net/knarcraft/knarlib/formatting/FormatBuilder.java index 362cc66..4fbec2e 100644 --- a/src/main/java/net/knarcraft/knarlib/formatting/FormatBuilder.java +++ b/src/main/java/net/knarcraft/knarlib/formatting/FormatBuilder.java @@ -240,16 +240,6 @@ public final class FormatBuilder { return this; } - /** - * Builds the output of the performed replacements and formatting - * - * @return

The result

- */ - @NotNull - public String toString() { - return this.toFormat; - } - /** * Displays the result to the specified command sender as a success message * @@ -289,4 +279,10 @@ public final class FormatBuilder { FormatBuilder.stringFormatter.displayNeutralMessage(commandSender, this.toFormat); } + @NotNull + @Override + public String toString() { + return this.toFormat; + } + } diff --git a/src/main/java/net/knarcraft/knarlib/util/BlockHelper.java b/src/main/java/net/knarcraft/knarlib/util/BlockHelper.java new file mode 100644 index 0000000..9badba1 --- /dev/null +++ b/src/main/java/net/knarcraft/knarlib/util/BlockHelper.java @@ -0,0 +1,28 @@ +package net.knarcraft.knarlib.util; + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * A helper class for dealing with blocks + */ +public final class BlockHelper { + + private BlockHelper() { + + } + + /** + * Gets the block the player is currently looking at + * + * @param player

The player looking at a block

+ * @return

The block the player is looking at

+ */ + @Nullable + public static Block getLookedAtBlock(@NotNull Player player) { + return player.getTargetBlockExact(7); + } + +} diff --git a/src/main/java/net/knarcraft/knarlib/util/SignHelper.java b/src/main/java/net/knarcraft/knarlib/util/SignHelper.java new file mode 100644 index 0000000..c3737b0 --- /dev/null +++ b/src/main/java/net/knarcraft/knarlib/util/SignHelper.java @@ -0,0 +1,61 @@ +package net.knarcraft.knarlib.util; + +import org.bukkit.block.Block; +import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; +import org.bukkit.block.sign.SignSide; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * A helper class for dealing with sign sides + */ +@SuppressWarnings("unused") +public final class SignHelper { + + private SignHelper() { + + } + + /** + * Gets the side of the given sign the given player is standing on (which side the player clicked) + * + * @param sign

The sign to check

+ * @param player

The player to check

+ * @return

The side of the sign the player is standing on

+ */ + @NotNull + public static Side getSide(@NotNull Sign sign, @NotNull Player player) { + SignSide standingOn = sign.getTargetSide(player); + return sign.getSide(Side.FRONT).equals(standingOn) ? Side.FRONT : Side.BACK; + } + + /** + * Gets the opposite sign side from the given sign side + * + * @param side

The side to get the opposite of

+ * @return

The opposite side

+ */ + @NotNull + public static Side getOpposite(@NotNull Side side) { + return side == Side.FRONT ? Side.BACK : Side.FRONT; + } + + /** + * Gets the sign the player is currently looking at + * + * @param player

The player to check

+ * @return

The sign the player is looking at, or null if not looking at a sign

+ */ + @Nullable + public static Sign getLookedAtSign(@NotNull Player player) { + Block targetBlock = BlockHelper.getLookedAtBlock(player); + if (targetBlock == null || !(targetBlock.getState() instanceof Sign sign)) { + return null; + } else { + return sign; + } + } + +}