From bb017c83c103f3c5c12156c0e61055204379225c Mon Sep 17 00:00:00 2001 From: Igor Michalski <65646893+igoyek@users.noreply.github.com> Date: Sat, 11 Jan 2025 22:12:02 +0100 Subject: [PATCH 1/9] primary implementation (to be fixed) Took 1 hour 0 minutes --- .../implementation/PluginConfiguration.java | 2 + .../feature/signeditor/SignEditCommand.java | 60 +++++++++++++++++++ .../core/translation/Translation.java | 8 +++ .../implementation/ENTranslation.java | 11 ++++ .../implementation/PLTranslation.java | 11 ++++ 5 files changed, 92 insertions(+) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java index 11cf299f2..81f8f40d8 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java @@ -14,6 +14,8 @@ import com.eternalcode.core.feature.teleportrequest.TeleportRequestSettings; import java.util.LinkedHashMap; import java.util.Set; + +import com.eternalcode.multification.notice.Notice; import net.dzikoysk.cdn.entity.Contextual; import net.dzikoysk.cdn.entity.Description; import net.dzikoysk.cdn.entity.Exclude; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java new file mode 100644 index 000000000..24947ddbe --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java @@ -0,0 +1,60 @@ +package com.eternalcode.core.feature.signeditor; + +import com.eternalcode.core.notice.NoticeService; +import dev.rollczi.litecommands.annotations.argument.Arg; +import dev.rollczi.litecommands.annotations.command.Command; +import dev.rollczi.litecommands.annotations.context.Context; +import dev.rollczi.litecommands.annotations.execute.Execute; +import dev.rollczi.litecommands.annotations.join.Join; +import dev.rollczi.litecommands.annotations.permission.Permission; +import net.kyori.adventure.text.minimessage.MiniMessage; +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; + +@Command(name = "signedit setline") +@Permission("eternalcode.signedit") +public class SignEditCommand { + + private final NoticeService noticeService; + private final MiniMessage miniMessage; + + public SignEditCommand(NoticeService noticeService, MiniMessage miniMessage) { + this.noticeService = noticeService; + this.miniMessage = miniMessage; + } + + @Execute + void execute(@Context Player player, @Arg Integer index, @Join String text) { + Block targetBlock = player.getTargetBlock(null, 5); + + if (!(targetBlock.getState() instanceof Sign sign)) { + this.noticeService.create() + .player(player.getUniqueId()) + .notice(translation -> translation.signEdit().noSignFound()) + .send(); + return; + } + + SignSide frontSide = sign.getSide(Side.FRONT); + if (index < 0 || index >= frontSide.getLines().length) { + this.noticeService.create() + .player(player.getUniqueId()) + .notice(translation -> translation.signEdit().invalidIndex()) + .send(); + return; + } + + frontSide.setLine(index, this.miniMessage.deserialize(text).toString()); + sign.update(); + + this.noticeService.create() + .player(player.getUniqueId()) + .placeholder("{INDEX}", index.toString()) + .placeholder("{TEXT}", text) + .notice(translation -> translation.signEdit().lineSet()) + .send(); + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java index 8b1ed970b..c78037681 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java @@ -473,4 +473,12 @@ interface JailSection { Notice jailCannotUseCommand(); } + + SignEditSection signEdit(); + + interface SignEditSection { + Notice noSignFound(); + Notice invalidIndex(); + Notice lineSet(); + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java index 0abcc395c..52ff7de6c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java @@ -922,4 +922,15 @@ public static class ENJailSection implements JailSection { @Description({" ", "# {PLAYER} - Player who has been detained", "# {REMAINING_TIME} - Time of detention", "# {DETAINED_BY} - Player who detained the player"}) public Notice jailListPlayerEntry = Notice.chat("{PLAYER} ({REMAINING_TIME}) detained by {DETAINED_BY} !"); } + + @Description({ " ", "# Ta sekcja odpowiada za wiadomości dotyczące edycji tabliczek"}) + public PLTranslation.SignEditor signEditor = new PLTranslation.SignEditor(); + + @Getter + @Contextual + public static class SignEditor { + public Notice noSignFound = Notice.chat("Sign not found!"); + public Notice invalidIndex = Notice.chat("Invalid index!"); + public Notice lineSet = Notice.chat("Line {LINE} set to {TEXT}"); + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java index d8fa66581..f50dd1f67 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java @@ -941,4 +941,15 @@ public static class PLJailSection implements JailSection { @Description({" ", "# {PLAYER} - Gracz który jest uwięziony, {DETAINED_BY} - Gracz który uwięził gracza, {REMAINING_TIME} - Czas pozostały do uwolnienia"}) public Notice jailListPlayerEntry = Notice.chat("Gracz {PLAYER} został uwięziony przez {DETAINED_BY} na czas {REMAINING_TIME} !"); } + + @Description({ " ", "# Ta sekcja odpowiada za wiadomości dotyczące edycji tabliczek"}) + public SignEditor signEditor = new SignEditor(); + + @Getter + @Contextual + public static class SignEditor { + public Notice noSignFound = Notice.chat("Nie odnaleziono tabliczki!"); + public Notice invalidIndex = Notice.chat("Nieprawidłowy indeks!"); + public Notice lineSet = Notice.chat("Ustawiono linię {LINE} na {TEXT}"); + } } From aa76ccb403a6fecbc7bb4f1942b4f37134ce3d54 Mon Sep 17 00:00:00 2001 From: Igor Michalski <65646893+igoyek@users.noreply.github.com> Date: Wed, 22 Jan 2025 20:31:27 +0100 Subject: [PATCH 2/9] Update command name Took 11 minutes --- .../eternalcode/core/feature/signeditor/SignEditCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java index 24947ddbe..69a4fbf1e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java @@ -14,7 +14,7 @@ import org.bukkit.block.sign.SignSide; import org.bukkit.entity.Player; -@Command(name = "signedit setline") +@Command(name = "signedit") @Permission("eternalcode.signedit") public class SignEditCommand { From e3fe988e97da2dd24a97f406f7e8e37e73ccab89 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Thu, 23 Jan 2025 19:16:44 +0100 Subject: [PATCH 3/9] Refactor messages, add compatibility for non-side-based sing's --- ...ditCommand.java => SignEditorCommand.java} | 30 ++++----- .../signeditor/SignSideEditorCommand.java | 63 +++++++++++++++++++ .../messages/ENSignEditorMessages.java | 15 +++++ .../messages/PLSignEditorMessages.java | 15 +++++ .../messages/SignEditorMessages.java | 9 +++ .../core/translation/Translation.java | 9 +-- .../implementation/ENTranslation.java | 12 +--- .../implementation/PLTranslation.java | 11 +--- 8 files changed, 124 insertions(+), 40 deletions(-) rename eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/{SignEditCommand.java => SignEditorCommand.java} (60%) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/SignEditorMessages.java diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java similarity index 60% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java index 69a4fbf1e..5a69f6607 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java @@ -1,5 +1,7 @@ package com.eternalcode.core.feature.signeditor; +import com.eternalcode.core.compatibility.Compatibility; +import com.eternalcode.core.compatibility.Version; import com.eternalcode.core.notice.NoticeService; import dev.rollczi.litecommands.annotations.argument.Arg; import dev.rollczi.litecommands.annotations.command.Command; @@ -10,51 +12,49 @@ import net.kyori.adventure.text.minimessage.MiniMessage; 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; -@Command(name = "signedit") -@Permission("eternalcode.signedit") -public class SignEditCommand { +@Command(name = "signeditor") +@Permission("eternalcode.signeditor") +@Compatibility(to = @Version(minor = 19, patch = 4)) +public class SignEditorCommand { private final NoticeService noticeService; private final MiniMessage miniMessage; - public SignEditCommand(NoticeService noticeService, MiniMessage miniMessage) { + public SignEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { this.noticeService = noticeService; this.miniMessage = miniMessage; } - @Execute - void execute(@Context Player player, @Arg Integer index, @Join String text) { + @Execute(name = "setline") + void execute(@Context Player player, @Arg int index, @Join String text) { Block targetBlock = player.getTargetBlock(null, 5); if (!(targetBlock.getState() instanceof Sign sign)) { this.noticeService.create() .player(player.getUniqueId()) - .notice(translation -> translation.signEdit().noSignFound()) + .notice(translation -> translation.signEditor().noSignFound()) .send(); return; } - SignSide frontSide = sign.getSide(Side.FRONT); - if (index < 0 || index >= frontSide.getLines().length) { + if (index < 0 || index >= sign.getLines().length) { this.noticeService.create() .player(player.getUniqueId()) - .notice(translation -> translation.signEdit().invalidIndex()) + .notice(translation -> translation.signEditor().invalidIndex()) .send(); return; } - frontSide.setLine(index, this.miniMessage.deserialize(text).toString()); + sign.setLine(index, this.miniMessage.deserialize(text).toString()); sign.update(); this.noticeService.create() .player(player.getUniqueId()) - .placeholder("{INDEX}", index.toString()) + .placeholder("{INDEX}", String.valueOf(index)) .placeholder("{TEXT}", text) - .notice(translation -> translation.signEdit().lineSet()) + .notice(translation -> translation.signEditor().lineSet()) .send(); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java new file mode 100644 index 000000000..81dfa2daa --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java @@ -0,0 +1,63 @@ +package com.eternalcode.core.feature.signeditor; + +import com.eternalcode.core.compatibility.Compatibility; +import com.eternalcode.core.compatibility.Version; +import com.eternalcode.core.notice.NoticeService; +import dev.rollczi.litecommands.annotations.argument.Arg; +import dev.rollczi.litecommands.annotations.command.Command; +import dev.rollczi.litecommands.annotations.context.Context; +import dev.rollczi.litecommands.annotations.execute.Execute; +import dev.rollczi.litecommands.annotations.join.Join; +import dev.rollczi.litecommands.annotations.permission.Permission; +import net.kyori.adventure.text.minimessage.MiniMessage; +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; + +@Command(name = "signeditor") +@Permission("eternalcode.signeditor") +@Compatibility(from = @Version(minor = 20, patch = 0)) +public class SignSideEditorCommand { + + private final NoticeService noticeService; + private final MiniMessage miniMessage; + + public SignSideEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { + this.noticeService = noticeService; + this.miniMessage = miniMessage; + } + + @Execute(name = "setline") + void execute(@Context Player player, @Arg Side side, @Arg int index, @Join String text) { + Block targetBlock = player.getTargetBlock(null, 5); + + if (!(targetBlock.getState() instanceof Sign sign)) { + this.noticeService.create() + .player(player.getUniqueId()) + .notice(translation -> translation.signEditor().noSignFound()) + .send(); + return; + } + + SignSide signSide = sign.getSide(side); + if (index < 0 || index >= signSide.getLines().length) { + this.noticeService.create() + .player(player.getUniqueId()) + .notice(translation -> translation.signEditor().invalidIndex()) + .send(); + return; + } + + signSide.setLine(index, this.miniMessage.deserialize(text).toString()); + sign.update(); + + this.noticeService.create() + .player(player.getUniqueId()) + .placeholder("{INDEX}", String.valueOf(index)) + .placeholder("{TEXT}", text) + .notice(translation -> translation.signEditor().lineSet()) + .send(); + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java new file mode 100644 index 000000000..348896e4b --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java @@ -0,0 +1,15 @@ +package com.eternalcode.core.feature.signeditor.messages; + +import com.eternalcode.multification.notice.Notice; +import lombok.Getter; +import lombok.experimental.Accessors; +import net.dzikoysk.cdn.entity.Contextual; + +@Getter +@Accessors(fluent = true) +@Contextual +public class ENSignEditorMessages implements SignEditorMessages { + public Notice noSignFound = Notice.chat("Sign not found, please look at the sign!"); + public Notice invalidIndex = Notice.chat("Invalid index!"); + public Notice lineSet = Notice.chat("Line {LINE} set to {TEXT}"); +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java new file mode 100644 index 000000000..bc1e54882 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java @@ -0,0 +1,15 @@ +package com.eternalcode.core.feature.signeditor.messages; + +import com.eternalcode.multification.notice.Notice; +import lombok.Getter; +import lombok.experimental.Accessors; +import net.dzikoysk.cdn.entity.Contextual; + +@Getter +@Accessors(fluent = true) +@Contextual +public class PLSignEditorMessages implements SignEditorMessages{ + public Notice noSignFound = Notice.chat("Nie odnaleziono tabliczki, proszę spojrzeć na tabliczkę!"); + public Notice invalidIndex = Notice.chat("Nieprawidłowy indeks!"); + public Notice lineSet = Notice.chat("Ustawiono linię {LINE} na {TEXT}"); +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/SignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/SignEditorMessages.java new file mode 100644 index 000000000..b0e28dd92 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/SignEditorMessages.java @@ -0,0 +1,9 @@ +package com.eternalcode.core.feature.signeditor.messages; + +import com.eternalcode.multification.notice.Notice; + +public interface SignEditorMessages { + Notice noSignFound(); + Notice invalidIndex(); + Notice lineSet(); +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java index 7767b0b7b..0e19edc32 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java @@ -2,6 +2,7 @@ import com.eternalcode.core.configuration.contextual.ConfigItem; import com.eternalcode.core.feature.language.Language; +import com.eternalcode.core.feature.signeditor.messages.SignEditorMessages; import com.eternalcode.core.feature.warp.WarpInventoryItem; import com.eternalcode.multification.notice.Notice; import org.bukkit.Material; @@ -482,11 +483,5 @@ interface JailSection { } - SignEditSection signEdit(); - - interface SignEditSection { - Notice noSignFound(); - Notice invalidIndex(); - Notice lineSet(); - } + SignEditorMessages signEditor(); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java index d90af4d69..445984757 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java @@ -2,6 +2,8 @@ import com.eternalcode.core.configuration.contextual.ConfigItem; import com.eternalcode.core.feature.language.Language; +import com.eternalcode.core.feature.signeditor.messages.PLSignEditorMessages; +import com.eternalcode.core.feature.signeditor.messages.SignEditorMessages; import com.eternalcode.core.feature.warp.WarpInventoryItem; import com.eternalcode.core.translation.AbstractTranslation; import com.eternalcode.multification.bukkit.notice.BukkitNotice; @@ -933,13 +935,5 @@ public static class ENJailSection implements JailSection { } @Description({ " ", "# Ta sekcja odpowiada za wiadomości dotyczące edycji tabliczek"}) - public PLTranslation.SignEditor signEditor = new PLTranslation.SignEditor(); - - @Getter - @Contextual - public static class SignEditor { - public Notice noSignFound = Notice.chat("Sign not found!"); - public Notice invalidIndex = Notice.chat("Invalid index!"); - public Notice lineSet = Notice.chat("Line {LINE} set to {TEXT}"); - } + public PLSignEditorMessages signEditor = new PLSignEditorMessages(); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java index 0d7e5c3d1..70ce57b5b 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java @@ -2,6 +2,7 @@ import com.eternalcode.core.configuration.contextual.ConfigItem; import com.eternalcode.core.feature.language.Language; +import com.eternalcode.core.feature.signeditor.messages.PLSignEditorMessages; import com.eternalcode.core.feature.warp.WarpInventoryItem; import com.eternalcode.core.translation.AbstractTranslation; import com.eternalcode.multification.bukkit.notice.BukkitNotice; @@ -955,13 +956,5 @@ public static class PLJailSection implements JailSection { } @Description({ " ", "# Ta sekcja odpowiada za wiadomości dotyczące edycji tabliczek"}) - public SignEditor signEditor = new SignEditor(); - - @Getter - @Contextual - public static class SignEditor { - public Notice noSignFound = Notice.chat("Nie odnaleziono tabliczki!"); - public Notice invalidIndex = Notice.chat("Nieprawidłowy indeks!"); - public Notice lineSet = Notice.chat("Ustawiono linię {LINE} na {TEXT}"); - } + public PLSignEditorMessages signEditor = new PLSignEditorMessages(); } From 45a19e7bb419b808a20b04f39c213838245ce845 Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Thu, 23 Jan 2025 19:23:29 +0100 Subject: [PATCH 4/9] Use Block#getTargetBlockExact --- .../eternalcode/core/feature/signeditor/SignEditorCommand.java | 2 +- .../core/feature/signeditor/SignSideEditorCommand.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java index 5a69f6607..23b1219f9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java @@ -29,7 +29,7 @@ public SignEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { @Execute(name = "setline") void execute(@Context Player player, @Arg int index, @Join String text) { - Block targetBlock = player.getTargetBlock(null, 5); + Block targetBlock = player.getTargetBlockExact(5); if (!(targetBlock.getState() instanceof Sign sign)) { this.noticeService.create() diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java index 81dfa2daa..473174f5e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java @@ -31,7 +31,7 @@ public SignSideEditorCommand(NoticeService noticeService, MiniMessage miniMessag @Execute(name = "setline") void execute(@Context Player player, @Arg Side side, @Arg int index, @Join String text) { - Block targetBlock = player.getTargetBlock(null, 5); + Block targetBlock = player.getTargetBlockExact(5); if (!(targetBlock.getState() instanceof Sign sign)) { this.noticeService.create() From c6fcdfdd6c751260e32534b5abebbc3863fd901b Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Thu, 23 Jan 2025 19:25:04 +0100 Subject: [PATCH 5/9] Fix index placeholder. --- .../core/feature/signeditor/messages/ENSignEditorMessages.java | 2 +- .../core/feature/signeditor/messages/PLSignEditorMessages.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java index 348896e4b..f8bf44461 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java @@ -11,5 +11,5 @@ public class ENSignEditorMessages implements SignEditorMessages { public Notice noSignFound = Notice.chat("Sign not found, please look at the sign!"); public Notice invalidIndex = Notice.chat("Invalid index!"); - public Notice lineSet = Notice.chat("Line {LINE} set to {TEXT}"); + public Notice lineSet = Notice.chat("Line {INDEX} set to {TEXT}"); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java index bc1e54882..4d2805b32 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java @@ -11,5 +11,5 @@ public class PLSignEditorMessages implements SignEditorMessages{ public Notice noSignFound = Notice.chat("Nie odnaleziono tabliczki, proszę spojrzeć na tabliczkę!"); public Notice invalidIndex = Notice.chat("Nieprawidłowy indeks!"); - public Notice lineSet = Notice.chat("Ustawiono linię {LINE} na {TEXT}"); + public Notice lineSet = Notice.chat("Ustawiono linię {INDEX} na {TEXT}"); } From 91ea5e383b87373af1b711b179d29c7f2f22e064 Mon Sep 17 00:00:00 2001 From: Igor Michalski <65646893+igoyek@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:07:57 +0100 Subject: [PATCH 6/9] followed all instructions followed all instructions fixed all (i think) issues and critical errors now its working :), tested Took 32 minutes --- .../feature/signeditor/SignEditorCommand.java | 23 +++++++++++++------ .../signeditor/SignSideEditorCommand.java | 23 +++++++++++++------ .../messages/ENSignEditorMessages.java | 6 ++--- .../messages/PLSignEditorMessages.java | 6 ++--- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java index 23b1219f9..cb1e91a13 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java @@ -1,7 +1,9 @@ package com.eternalcode.core.feature.signeditor; +import com.eternalcode.commons.adventure.AdventureUtil; import com.eternalcode.core.compatibility.Compatibility; import com.eternalcode.core.compatibility.Version; +import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.notice.NoticeService; import dev.rollczi.litecommands.annotations.argument.Arg; import dev.rollczi.litecommands.annotations.command.Command; @@ -14,23 +16,28 @@ import org.bukkit.block.Sign; import org.bukkit.entity.Player; -@Command(name = "signeditor") -@Permission("eternalcode.signeditor") +@Command(name = "signedit") +@Permission("eternalcode.signedit") @Compatibility(to = @Version(minor = 19, patch = 4)) public class SignEditorCommand { private final NoticeService noticeService; private final MiniMessage miniMessage; + @Inject public SignEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { this.noticeService = noticeService; this.miniMessage = miniMessage; } - @Execute(name = "setline") - void execute(@Context Player player, @Arg int index, @Join String text) { + @Execute(name = "set") + void execute(@Context Player player, @Arg int line, @Join String text) { Block targetBlock = player.getTargetBlockExact(5); + if (targetBlock == null) { + return; + } + if (!(targetBlock.getState() instanceof Sign sign)) { this.noticeService.create() .player(player.getUniqueId()) @@ -39,20 +46,22 @@ void execute(@Context Player player, @Arg int index, @Join String text) { return; } - if (index < 0 || index >= sign.getLines().length) { + if (line < 1 || line >= sign.getTargetSide(player).getLines().length) { this.noticeService.create() .player(player.getUniqueId()) + .placeholder("{LINE}", String.valueOf(line)) .notice(translation -> translation.signEditor().invalidIndex()) .send(); + return; } - sign.setLine(index, this.miniMessage.deserialize(text).toString()); + sign.getTargetSide(player).setLine(line, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); sign.update(); this.noticeService.create() .player(player.getUniqueId()) - .placeholder("{INDEX}", String.valueOf(index)) + .placeholder("{LINE}", String.valueOf(line)) .placeholder("{TEXT}", text) .notice(translation -> translation.signEditor().lineSet()) .send(); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java index 473174f5e..07be53679 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignSideEditorCommand.java @@ -1,7 +1,9 @@ package com.eternalcode.core.feature.signeditor; +import com.eternalcode.commons.adventure.AdventureUtil; import com.eternalcode.core.compatibility.Compatibility; import com.eternalcode.core.compatibility.Version; +import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.notice.NoticeService; import dev.rollczi.litecommands.annotations.argument.Arg; import dev.rollczi.litecommands.annotations.command.Command; @@ -16,46 +18,53 @@ import org.bukkit.block.sign.SignSide; import org.bukkit.entity.Player; -@Command(name = "signeditor") -@Permission("eternalcode.signeditor") +@Command(name = "signedit") +@Permission("eternalcode.signedit") @Compatibility(from = @Version(minor = 20, patch = 0)) public class SignSideEditorCommand { private final NoticeService noticeService; private final MiniMessage miniMessage; + @Inject public SignSideEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { this.noticeService = noticeService; this.miniMessage = miniMessage; } - @Execute(name = "setline") - void execute(@Context Player player, @Arg Side side, @Arg int index, @Join String text) { + @Execute(name = "set") + void execute(@Context Player player, @Arg Side side, @Arg int line, @Join String text) { Block targetBlock = player.getTargetBlockExact(5); + if (targetBlock == null) { + return; + } + if (!(targetBlock.getState() instanceof Sign sign)) { this.noticeService.create() .player(player.getUniqueId()) .notice(translation -> translation.signEditor().noSignFound()) .send(); + return; } SignSide signSide = sign.getSide(side); - if (index < 0 || index >= signSide.getLines().length) { + if (line < 1 || line > signSide.getLines().length) { this.noticeService.create() .player(player.getUniqueId()) + .placeholder("{LINE}", String.valueOf(line)) .notice(translation -> translation.signEditor().invalidIndex()) .send(); return; } - signSide.setLine(index, this.miniMessage.deserialize(text).toString()); + signSide.setLine(line - 1, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); sign.update(); this.noticeService.create() .player(player.getUniqueId()) - .placeholder("{INDEX}", String.valueOf(index)) + .placeholder("{LINE}", String.valueOf(line)) .placeholder("{TEXT}", text) .notice(translation -> translation.signEditor().lineSet()) .send(); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java index f8bf44461..c1dafd50f 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/ENSignEditorMessages.java @@ -9,7 +9,7 @@ @Accessors(fluent = true) @Contextual public class ENSignEditorMessages implements SignEditorMessages { - public Notice noSignFound = Notice.chat("Sign not found, please look at the sign!"); - public Notice invalidIndex = Notice.chat("Invalid index!"); - public Notice lineSet = Notice.chat("Line {INDEX} set to {TEXT}"); + public Notice noSignFound = Notice.chat("Look at the sign to edit it!"); + public Notice invalidIndex = Notice.chat("The value {LINE} is invalid! Please select a number between 1 and 4!"); + public Notice lineSet = Notice.chat("Line {LINE} set to {TEXT}"); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java index 4d2805b32..6f5cb902a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java @@ -9,7 +9,7 @@ @Accessors(fluent = true) @Contextual public class PLSignEditorMessages implements SignEditorMessages{ - public Notice noSignFound = Notice.chat("Nie odnaleziono tabliczki, proszę spojrzeć na tabliczkę!"); - public Notice invalidIndex = Notice.chat("Nieprawidłowy indeks!"); - public Notice lineSet = Notice.chat("Ustawiono linię {INDEX} na {TEXT}"); + public Notice noSignFound = Notice.chat("Spójrz na tabliczkę, aby ją edytować!"); + public Notice invalidIndex = Notice.chat("Wartość {LINE} jest nieprawidłowa! Wybierz numer od 1 do 4!"); + public Notice lineSet = Notice.chat("Wartość {LINE} została ustawiona na {TEXT}"); } From 9017146201a88eed15dbb74e32e61b228190b3e8 Mon Sep 17 00:00:00 2001 From: Norbert Dejlich Date: Thu, 13 Feb 2025 21:10:29 +0100 Subject: [PATCH 7/9] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java --- .../eternalcode/core/feature/signeditor/SignEditorCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java index cb1e91a13..359f507e1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java @@ -56,7 +56,7 @@ void execute(@Context Player player, @Arg int line, @Join String text) { return; } - sign.getTargetSide(player).setLine(line, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); + sign.getTargetSide(player).setLine(line - 1, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); sign.update(); this.noticeService.create() From 55363219c09053fb20dff2c18af2128d79b14a25 Mon Sep 17 00:00:00 2001 From: Igor Michalski <65646893+igoyek@users.noreply.github.com> Date: Fri, 28 Mar 2025 18:45:15 +0100 Subject: [PATCH 8/9] Fix for 1.19.4 compatibility Took 7 minutes --- .../sessions/kotlin-compiler-3058577653893974848.salive | 0 .../eternalcode/core/feature/signeditor/SignEditorCommand.java | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 buildSrc/.kotlin/sessions/kotlin-compiler-3058577653893974848.salive diff --git a/buildSrc/.kotlin/sessions/kotlin-compiler-3058577653893974848.salive b/buildSrc/.kotlin/sessions/kotlin-compiler-3058577653893974848.salive new file mode 100644 index 000000000..e69de29bb diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java index 359f507e1..3f4d30fed 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/SignEditorCommand.java @@ -31,6 +31,7 @@ public SignEditorCommand(NoticeService noticeService, MiniMessage miniMessage) { } @Execute(name = "set") + @Deprecated(since = "1.20") void execute(@Context Player player, @Arg int line, @Join String text) { Block targetBlock = player.getTargetBlockExact(5); @@ -56,7 +57,7 @@ void execute(@Context Player player, @Arg int line, @Join String text) { return; } - sign.getTargetSide(player).setLine(line - 1, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); + sign.setLine(line - 1, AdventureUtil.SECTION_SERIALIZER.serialize(this.miniMessage.deserialize(text))); sign.update(); this.noticeService.create() From a65bb24d92db924e04a29b5c943c0610682c03e8 Mon Sep 17 00:00:00 2001 From: Igor Michalski <65646893+igoyek@users.noreply.github.com> Date: Fri, 28 Mar 2025 23:07:28 +0100 Subject: [PATCH 9/9] Fix jar build Took 34 minutes --- .../signeditor/messages/PLSignEditorMessages.java | 2 +- .../translation/implementation/ENTranslation.java | 13 ++++++++++--- .../translation/implementation/PLTranslation.java | 8 ++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java index 6f5cb902a..17da5612d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/signeditor/messages/PLSignEditorMessages.java @@ -8,7 +8,7 @@ @Getter @Accessors(fluent = true) @Contextual -public class PLSignEditorMessages implements SignEditorMessages{ +public class PLSignEditorMessages implements SignEditorMessages { public Notice noSignFound = Notice.chat("Spójrz na tabliczkę, aby ją edytować!"); public Notice invalidIndex = Notice.chat("Wartość {LINE} jest nieprawidłowa! Wybierz numer od 1 do 4!"); public Notice lineSet = Notice.chat("Wartość {LINE} została ustawiona na {TEXT}"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java index a4f1bb9c2..825362fc1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java @@ -5,15 +5,16 @@ import com.eternalcode.core.feature.adminchat.messages.ENAdminChatMessages; import com.eternalcode.core.feature.afk.messages.ENAfkMessages; import com.eternalcode.core.feature.automessage.messages.ENAutoMessageMessages; -import com.eternalcode.core.feature.itemedit.messages.ENItemEditMessages; import com.eternalcode.core.feature.helpop.messages.ENHelpOpMessages; import com.eternalcode.core.feature.home.messages.ENHomeMessages; +import com.eternalcode.core.feature.itemedit.messages.ENItemEditMessages; import com.eternalcode.core.feature.jail.messages.ENJailMessages; import com.eternalcode.core.feature.language.Language; -import com.eternalcode.core.feature.seen.messages.ENSeenMessages; -import com.eternalcode.core.feature.setslot.messages.ENSetSlotMessages; import com.eternalcode.core.feature.privatechat.messages.ENPrivateMessages; import com.eternalcode.core.feature.randomteleport.messages.ENRandomTeleportMessages; +import com.eternalcode.core.feature.seen.messages.ENSeenMessages; +import com.eternalcode.core.feature.setslot.messages.ENSetSlotMessages; +import com.eternalcode.core.feature.signeditor.messages.ENSignEditorMessages; import com.eternalcode.core.feature.spawn.messages.ENSpawnMessages; import com.eternalcode.core.feature.sudo.messages.ENSudoMessages; import com.eternalcode.core.feature.teleportrequest.messages.ENTeleportRequestMessages; @@ -119,6 +120,12 @@ public class ENTranslation extends AbstractTranslation { @Description("# This section is responsible for all messages related to item editing.") public ENItemEditMessages itemEdit = new ENItemEditMessages(); + @Description({ + " ", + "# This section is responsible for the messages of the /signeditor command", + }) + public ENSignEditorMessages signEditor = new ENSignEditorMessages(); + @Getter @Contextual public static class ENFormatSection implements Format { diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java index 9452dadd1..8a9bf39f2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java @@ -14,6 +14,8 @@ import com.eternalcode.core.feature.setslot.messages.PLSetSlotMessages; import com.eternalcode.core.feature.privatechat.messages.PLPrivateChatMessages; import com.eternalcode.core.feature.randomteleport.messages.PLRandomTeleportMessages; +import com.eternalcode.core.feature.signeditor.messages.PLSignEditorMessages; +import com.eternalcode.core.feature.signeditor.messages.SignEditorMessages; import com.eternalcode.core.feature.spawn.messages.PLSpawnMessages; import com.eternalcode.core.feature.sudo.messages.PLSudoMessages; import com.eternalcode.core.feature.teleportrequest.messages.PLTeleportRequestMessages; @@ -116,6 +118,12 @@ public class PLTranslation extends AbstractTranslation { @Description("# Ta sekcja odpowiada za wiadomości dotyczące edytowanie itemow") public PLItemEditMessages itemEdit = new PLItemEditMessages(); + @Description({ + " ", + "# Ta sekcja odpowiada za wiadomości komendy /signeditor" + }) + public PLSignEditorMessages signEditor = new PLSignEditorMessages(); + @Getter @Contextual public static class PLFormatSection implements Format {