From b5e54ade1f3bcf08cacbc31fef69b3c911c6c46b Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Sun, 12 Jan 2025 06:08:05 +0100 Subject: [PATCH 01/26] Innit commit --- README.md | 1 + .../core/feature/msgtoggle/MsgToggle.java | 22 ++++++++++ .../feature/msgtoggle/MsgToggleService.java | 4 ++ .../core/feature/msgtoggle/MsgToggle.java | 24 +++++++++++ .../feature/msgtoggle/MsgToggleCommand.java | 35 ++++++++++++++++ .../msgtoggle/MsgToggleRepository.java | 15 +++++++ .../msgtoggle/MsgToggleRepositoryOrmLite.java | 40 +++++++++++++++++++ 7 files changed, 141 insertions(+) create mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java create mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java diff --git a/README.md b/README.md index 79244f4a2..1044aac67 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Get the latest development builds from our [GitHub Actions](https://github.com/E - Chat On/Off Switch - Chat Slow Mode - /ignore and /unignore (with -all option) + - /msgtoggle - /msg, /socialspy, and /reply commands - /helpop command - Advanced Notification System allowing you to customize every message to your liking (Title, Subtitle, Actionbar, Chat, etc.) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java new file mode 100644 index 000000000..8f3a08ecf --- /dev/null +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java @@ -0,0 +1,22 @@ +package com.eternalcode.core.feature.msgtoggle; + +import java.util.UUID; + +public class MsgToggle { + + private final UUID uuid; + private final boolean toggle; + + public MsgToggle(UUID uuid, boolean toggle) { + this.uuid = uuid; + this.toggle = toggle; + } + + public UUID getUuid() { + return uuid; + } + + public boolean getToggle() { + return toggle; + } +} diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java new file mode 100644 index 000000000..3b071cc37 --- /dev/null +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java @@ -0,0 +1,4 @@ +package com.eternalcode.core.feature.msgtoggle; + +public interface MsgToggleService { +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java new file mode 100644 index 000000000..be82c292d --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java @@ -0,0 +1,24 @@ +package com.eternalcode.core.feature.msgtoggle; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; +import java.util.UUID; + +@DatabaseTable(tableName = "msgtoggle") +class MsgToggle { + + @DatabaseField(columnName = "id", id = true) + private UUID id; + + @DatabaseField(columnName = "enabled") + private boolean enabled; + + MsgToggle() { + } + + MsgToggle(UUID id, boolean enabled) { + this.id = id; + this.enabled = enabled; + } + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java new file mode 100644 index 000000000..142b60a4e --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -0,0 +1,35 @@ +package com.eternalcode.core.feature.msgtoggle; + +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.permission.Permission; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@Command(name = "msgtoggle") +@Permission("eternalcore.msgtoggle") +public class MsgToggleCommand { + + @Execute + public void execute(@Context Player context) { + + } + + @Execute(name = "on") + public void on(@Context Player context) { + + } + + @Execute(name = "off") + public void off(@Context Player context) { + + } + + @Execute + @Permission("eternalcore.msgtoggle.other") + public void other(@Context Player context, @Arg("player") String player) { + context.getSender().sendMessage("You have enabled messages for someone else!"); + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java new file mode 100644 index 000000000..36ee5a40e --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java @@ -0,0 +1,15 @@ +package com.eternalcode.core.feature.msgtoggle; + +import java.util.UUID; + +interface MsgToggleRepository { + + boolean isToggledOff(UUID uuid); + + void setToggledOff(UUID uuid, boolean toggledOff); + + void remove(UUID uuid); + + void removeAll(); + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java new file mode 100644 index 000000000..ede412c43 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java @@ -0,0 +1,40 @@ +package com.eternalcode.core.feature.msgtoggle; + +import com.eternalcode.commons.scheduler.Scheduler; +import com.eternalcode.core.database.DatabaseManager; +import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite; +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Repository; +import com.j256.ormlite.table.TableUtils; +import java.sql.SQLException; +import java.util.UUID; + +@Repository +class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements MsgToggleRepository { + + @Inject + private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { + super(databaseManager, scheduler); + TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggle.class); + } + + @Override + public boolean isToggledOff(UUID uuid) { + this.selectSafe(MsgToggle.class, uuid).thenApply(optional -> optional.isEmpty()) + } + + @Override + public void setToggledOff(UUID uuid, boolean toggledOff) { + + } + + @Override + public void remove(UUID uuid) { + + } + + @Override + public void removeAll() { + + } +} From ffd29c58d112adf8fe39965f2d655e2607b70d5f Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Tue, 14 Jan 2025 23:57:01 +0100 Subject: [PATCH 02/26] In progress: add messages, setup methods and commands --- .../feature/msgtoggle/MsgToggleService.java | 7 +++ .../feature/msgtoggle/MsgToggleCommand.java | 44 +++++++++++++++++-- .../msgtoggle/MsgToggleRepositoryOrmLite.java | 9 ++-- .../{MsgToggle.java => MsgToggleWrapper.java} | 10 +++-- .../privatechat/PrivateChatServiceImpl.java | 22 +++++++--- .../core/translation/Translation.java | 6 +++ .../implementation/ENTranslation.java | 12 +++++ .../implementation/PLTranslation.java | 9 ++++ 8 files changed, 105 insertions(+), 14 deletions(-) rename eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/{MsgToggle.java => MsgToggleWrapper.java} (63%) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java index 3b071cc37..4921c07ac 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java @@ -1,4 +1,11 @@ package com.eternalcode.core.feature.msgtoggle; +import java.util.UUID; + public interface MsgToggleService { + + boolean hasMsgToggledOff(UUID uuid); + + void toggleMsg(UUID uuid, boolean toggle); + } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index 142b60a4e..c67b7c24d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -1,35 +1,73 @@ package com.eternalcode.core.feature.msgtoggle; +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.permission.Permission; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") public class MsgToggleCommand { + private final MsgToggleService msgToggleService; + private final NoticeService noticeService; + + public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeService) { + this.msgToggleService = msgToggleService; + this.noticeService = noticeService; + } + @Execute public void execute(@Context Player context) { + boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId()); + if (hasMsgToggledOff) { + this.on(context); + } else { + this.off(context); + } } @Execute(name = "on") public void on(@Context Player context) { + this.msgToggleService.toggleMsg(context.getUniqueId(), true); + this.noticeService.create() + .notice(translation -> translation.privateChat().msgToggleSelfOn()) + .player(context.getUniqueId()) + .send(); } @Execute(name = "off") public void off(@Context Player context) { + this.msgToggleService.toggleMsg(context.getUniqueId(), false); + + this.noticeService.create() + .notice(translation -> translation.privateChat().msgToggleSelfOff()) + .player(context.getUniqueId()) + .send(); + } + @Execute + @Permission("eternalcore.msgtoggle.other") + public void other(@Context Player context, @Arg("player") Player player) { + boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId()); + + this.other(context, player, !hasMsgToggledOff); } @Execute @Permission("eternalcore.msgtoggle.other") - public void other(@Context Player context, @Arg("player") String player) { - context.getSender().sendMessage("You have enabled messages for someone else!"); + public void other(@Context Player context, @Arg("player") Player player, @Arg boolean toggle) { + this.msgToggleService.toggleMsg(player.getUniqueId(), toggle); + + this.noticeService.create() + .notice(translation -> translation.privateChat().msgToggleOther(toggle)) + .player(player.getUniqueId()) + .send(); + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java index ede412c43..35ca9bf95 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java @@ -15,17 +15,20 @@ class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements Ms @Inject private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { super(databaseManager, scheduler); - TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggle.class); + TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggleWrapper.class); } @Override public boolean isToggledOff(UUID uuid) { - this.selectSafe(MsgToggle.class, uuid).thenApply(optional -> optional.isEmpty()) +// this.selectSafe(MsgToggle.class, uuid).thenApply(msgToggle -> { +// msgToggle.isEmpty(); +// }); + return false; } @Override public void setToggledOff(UUID uuid, boolean toggledOff) { - + this.save(MsgToggle.class, new MsgToggle(uuid, false)); } @Override diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java similarity index 63% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java index be82c292d..727ee2c4f 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java @@ -5,7 +5,7 @@ import java.util.UUID; @DatabaseTable(tableName = "msgtoggle") -class MsgToggle { +class MsgToggleWrapper { @DatabaseField(columnName = "id", id = true) private UUID id; @@ -13,12 +13,16 @@ class MsgToggle { @DatabaseField(columnName = "enabled") private boolean enabled; - MsgToggle() { + MsgToggleWrapper() { } - MsgToggle(UUID id, boolean enabled) { + MsgToggleWrapper(UUID id, boolean enabled) { this.id = id; this.enabled = enabled; } + static MsgToggleWrapper from(MsgToggleWrapper msgToggle) { + return new MsgToggleWrapper(msgToggle.id, msgToggle.enabled); + } + } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index 46e11a569..bf84cba0e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -2,6 +2,7 @@ import com.eternalcode.core.event.EventCaller; import com.eternalcode.core.feature.ignore.IgnoreService; +import com.eternalcode.core.feature.msgtoggle.MsgToggleService; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; import com.eternalcode.core.notice.NoticeService; @@ -24,6 +25,7 @@ class PrivateChatServiceImpl implements PrivateChatService { private final UserManager userManager; private final PrivateChatPresenter presenter; private final EventCaller eventCaller; + private final MsgToggleService msgToggleService; private final Cache replies = CacheBuilder.newBuilder() .expireAfterWrite(Duration.ofHours(1)) @@ -36,12 +38,14 @@ class PrivateChatServiceImpl implements PrivateChatService { NoticeService noticeService, IgnoreService ignoreService, UserManager userManager, - EventCaller eventCaller + EventCaller eventCaller, + MsgToggleService msgToggleService ) { this.noticeService = noticeService; this.ignoreService = ignoreService; this.userManager = userManager; this.eventCaller = eventCaller; + this.msgToggleService = msgToggleService; this.presenter = new PrivateChatPresenter(noticeService); } @@ -53,13 +57,21 @@ void privateMessage(User sender, User target, String message) { return; } - this.ignoreService.isIgnored(target.getUniqueId(), sender.getUniqueId()).thenAccept(isIgnored -> { + UUID uniqueId = target.getUniqueId(); + + if (this.msgToggleService.hasMsgToggledOff(uniqueId)) { + this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff()); + + return; + } + + this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> { if (!isIgnored) { - this.replies.put(target.getUniqueId(), sender.getUniqueId()); - this.replies.put(sender.getUniqueId(), target.getUniqueId()); + this.replies.put(uniqueId, sender.getUniqueId()); + this.replies.put(sender.getUniqueId(), uniqueId); } - PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), target.getUniqueId(), message); + PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message); this.eventCaller.callEvent(event); this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored)); }); 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..1cd29696e 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 @@ -252,6 +252,12 @@ interface PrivateChatSection { Notice socialSpyEnable(); Notice socialSpyDisable(); + Notice msgToggledOff(); + Notice msgToggleSelfOff(); + Notice msgToggleSelfOn(); + Notice msgTogglePlayerOff(); + Notice msgTogglePlayerOn(); + Notice ignorePlayer(); Notice ignoreAll(); Notice unIgnorePlayer(); 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..c9f2ef999 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 @@ -487,6 +487,18 @@ public static class ENPrivateSection implements PrivateChatSection { public Notice socialSpyEnable = Notice.chat("SocialSpy has been {STATE}!"); public Notice socialSpyDisable = Notice.chat("SocialSpy has been {STATE}!"); + + public Notice msgToggledOff = Notice.chat(" This player has disabled private messages!"); + + public Notice msgToggleSelfOff = Notice.chat("Private messages have been disabled!"); + public Notice msgToggleSelfOn = Notice.chat("Private messages have been enabled!"); + + @Description("# {PLAYER} - Player") + public Notice msgTogglePlayerOff = Notice.chat("Private messages have been disabled for {PLAYER}!"); + public Notice msgTogglePlayerOn = Notice.chat("Private messages have been enabled for {PLAYER}!"); + + + @Description({" ", "# {PLAYER} - Ignored player"}) public Notice ignorePlayer = Notice.chat("► {PLAYER} player has been ignored!"); 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..0f0836177 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 @@ -494,6 +494,15 @@ public static class PLPrivateChatSection implements PrivateChatSection { public Notice socialSpyEnable = Notice.chat("SocialSpy został {STATE}!"); public Notice socialSpyDisable = Notice.chat("SocialSpy został {STATE}!"); + public Notice msgToggledOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + + public Notice msgToggleSelfOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice msgToggleSelfOn = Notice.chat("Wiadomości prywatne zostały włączone!"); + + @Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"}) + public Notice msgTogglePlayerOff = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); + public Notice msgTogglePlayerOn = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); + @Description({" ", "# {PLAYER} - Gracz który jest zignorowany"}) public Notice ignorePlayer = Notice.chat("Zignorowano gracza {PLAYER}!"); From 43ea1b09d0452cf136dcaa85ad0c6742d73d954c Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Fri, 17 Jan 2025 19:43:20 +0100 Subject: [PATCH 03/26] Add msgToggle repo, service, API and commands --- .../feature/msgtoggle/MsgToggleService.java | 3 +- .../feature/msgtoggle/MsgToggleCommand.java | 43 ++++++++++++++----- .../msgtoggle/MsgToggleRepository.java | 9 ++-- .../msgtoggle/MsgToggleRepositoryOrmLite.java | 23 +++------- .../msgtoggle/MsgToggleServiceImpl.java | 30 +++++++++++++ .../feature/msgtoggle/MsgToggleWrapper.java | 8 ++++ .../privatechat/PrivateChatServiceImpl.java | 26 +++++------ 7 files changed, 96 insertions(+), 46 deletions(-) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java index 4921c07ac..df9c2ac1e 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java @@ -1,10 +1,11 @@ package com.eternalcode.core.feature.msgtoggle; import java.util.UUID; +import java.util.concurrent.CompletableFuture; public interface MsgToggleService { - boolean hasMsgToggledOff(UUID uuid); + CompletableFuture hasMsgToggledOff(UUID uuid); void toggleMsg(UUID uuid, boolean toggle); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index c67b7c24d..c8c08e8d3 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -1,11 +1,14 @@ package com.eternalcode.core.feature.msgtoggle; +import com.eternalcode.annotations.scan.command.DescriptionDocs; +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; import dev.rollczi.litecommands.annotations.context.Context; import dev.rollczi.litecommands.annotations.execute.Execute; import dev.rollczi.litecommands.annotations.permission.Permission; +import java.util.concurrent.CompletableFuture; import org.bukkit.entity.Player; @Command(name = "msgtoggle") @@ -15,23 +18,29 @@ public class MsgToggleCommand { private final MsgToggleService msgToggleService; private final NoticeService noticeService; + @Inject public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeService) { this.msgToggleService = msgToggleService; this.noticeService = noticeService; } @Execute + @DescriptionDocs(description = "Toggle private messages") public void execute(@Context Player context) { - boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId()); - if (hasMsgToggledOff) { - this.on(context); - } else { - this.off(context); - } + CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId()); + + hasMsgToggledOff.thenAccept(toggledOff -> { + if (toggledOff) { + this.on(context); + } else { + this.off(context); + } + }); } @Execute(name = "on") + @DescriptionDocs(description = "Enable private messages") public void on(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), true); @@ -42,6 +51,7 @@ public void on(@Context Player context) { } @Execute(name = "off") + @DescriptionDocs(description = "Disable private messages") public void off(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), false); @@ -53,21 +63,32 @@ public void off(@Context Player context) { @Execute @Permission("eternalcore.msgtoggle.other") + @DescriptionDocs(description = "Toggle private messages for other player", arguments = "") public void other(@Context Player context, @Arg("player") Player player) { - boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId()); + CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId()); - this.other(context, player, !hasMsgToggledOff); + hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, toggledOff ? STATE.ON : STATE.OFF)); } @Execute @Permission("eternalcore.msgtoggle.other") - public void other(@Context Player context, @Arg("player") Player player, @Arg boolean toggle) { - this.msgToggleService.toggleMsg(player.getUniqueId(), toggle); + @DescriptionDocs(description = "Toggle private messages for other player", arguments = " ") + public void other(@Context Player context, @Arg("player") Player player, @Arg("") STATE toggle) { + this.msgToggleService.toggleMsg(player.getUniqueId(), toggle == STATE.ON); this.noticeService.create() - .notice(translation -> translation.privateChat().msgToggleOther(toggle)) + .notice( + translation -> toggle == STATE.ON ? + translation.privateChat().msgTogglePlayerOn() : + translation.privateChat().msgTogglePlayerOff() + ) .player(player.getUniqueId()) .send(); } + + public enum STATE { + ON, + OFF + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java index 36ee5a40e..c8e72d1fe 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java @@ -1,15 +1,12 @@ package com.eternalcode.core.feature.msgtoggle; import java.util.UUID; +import java.util.concurrent.CompletableFuture; -interface MsgToggleRepository { +public interface MsgToggleRepository { - boolean isToggledOff(UUID uuid); + CompletableFuture isToggledOff(UUID uuid); void setToggledOff(UUID uuid, boolean toggledOff); - void remove(UUID uuid); - - void removeAll(); - } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java index 35ca9bf95..892965c5a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java @@ -8,6 +8,7 @@ import com.j256.ormlite.table.TableUtils; import java.sql.SQLException; import java.util.UUID; +import java.util.concurrent.CompletableFuture; @Repository class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements MsgToggleRepository { @@ -19,25 +20,15 @@ private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler sc } @Override - public boolean isToggledOff(UUID uuid) { -// this.selectSafe(MsgToggle.class, uuid).thenApply(msgToggle -> { -// msgToggle.isEmpty(); -// }); - return false; + public CompletableFuture isToggledOff(UUID uuid) { + return this.selectSafe(MsgToggleWrapper.class, uuid) + .thenApply( + optional -> optional.map(MsgToggleWrapper::isEnabled).orElse(true) + ); } @Override public void setToggledOff(UUID uuid, boolean toggledOff) { - this.save(MsgToggle.class, new MsgToggle(uuid, false)); - } - - @Override - public void remove(UUID uuid) { - - } - - @Override - public void removeAll() { - + this.save(MsgToggle.class, new MsgToggle(uuid, toggledOff)); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java new file mode 100644 index 000000000..e19194c83 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java @@ -0,0 +1,30 @@ +package com.eternalcode.core.feature.msgtoggle; + +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Service; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import org.jetbrains.annotations.Blocking; + +@Service +public class MsgToggleServiceImpl implements MsgToggleService{ + + private final MsgToggleRepository msgToggleRepository; + + @Inject + public MsgToggleServiceImpl(MsgToggleRepository msgToggleRepository) { + this.msgToggleRepository = msgToggleRepository; + } + + + @Override + public CompletableFuture hasMsgToggledOff(UUID uuid) { + return this.msgToggleRepository.isToggledOff(uuid); + } + + @Override + @Blocking + public void toggleMsg(UUID uuid, boolean toggle) { + this.msgToggleRepository.setToggledOff(uuid, toggle); + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java index 727ee2c4f..d5e92d2a0 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java @@ -25,4 +25,12 @@ static MsgToggleWrapper from(MsgToggleWrapper msgToggle) { return new MsgToggleWrapper(msgToggle.id, msgToggle.enabled); } + boolean isEnabled() { + return this.enabled; + } + + void setEnabled(boolean enabled) { + this.enabled = enabled; + } + } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index bf84cba0e..b9d50e7d0 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -59,21 +59,23 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); - if (this.msgToggleService.hasMsgToggledOff(uniqueId)) { - this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff()); + this.msgToggleService.hasMsgToggledOff(uniqueId).thenAccept(hasToggledOff -> { + if (hasToggledOff) { + this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff()); - return; - } - - this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> { - if (!isIgnored) { - this.replies.put(uniqueId, sender.getUniqueId()); - this.replies.put(sender.getUniqueId(), uniqueId); + return; } - PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message); - this.eventCaller.callEvent(event); - this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored)); + this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> { + if (!isIgnored) { + this.replies.put(uniqueId, sender.getUniqueId()); + this.replies.put(sender.getUniqueId(), uniqueId); + } + + PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message); + this.eventCaller.callEvent(event); + this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored)); + }); }); } From f054dbd19fa55762b1d677116cdd0055aa795185 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Fri, 17 Jan 2025 23:11:32 +0100 Subject: [PATCH 04/26] Fix logic --- .../core/feature/msgtoggle/MsgToggle.java | 8 ++++++-- .../core/feature/msgtoggle/MsgToggleCommand.java | 14 +++++++++----- .../feature/msgtoggle/MsgToggleRepository.java | 2 +- .../msgtoggle/MsgToggleRepositoryOrmLite.java | 5 +++-- .../core/feature/msgtoggle/MsgToggleWrapper.java | 16 +++++++--------- .../implementation/ENTranslation.java | 6 +++--- .../implementation/PLTranslation.java | 8 ++++---- 7 files changed, 33 insertions(+), 26 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java index 8f3a08ecf..460bbe51c 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java @@ -4,8 +4,12 @@ public class MsgToggle { - private final UUID uuid; - private final boolean toggle; + UUID uuid; + boolean toggle; + + public MsgToggle() { + + } public MsgToggle(UUID uuid, boolean toggle) { this.uuid = uuid; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index c8c08e8d3..63a89080a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -11,6 +11,9 @@ import java.util.concurrent.CompletableFuture; import org.bukkit.entity.Player; +// To clarify: +// ON - true - means that the player has turned on msgToggle and has blocked getting private messages +// OFF - false - means that the player has turned off msgToggle and has allowed getting private messages @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") public class MsgToggleCommand { @@ -31,7 +34,7 @@ public void execute(@Context Player context) { CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId()); hasMsgToggledOff.thenAccept(toggledOff -> { - if (toggledOff) { + if (!toggledOff) { this.on(context); } else { this.off(context); @@ -39,7 +42,7 @@ public void execute(@Context Player context) { }); } - @Execute(name = "on") + @Execute(name = "off") @DescriptionDocs(description = "Enable private messages") public void on(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), true); @@ -50,7 +53,7 @@ public void on(@Context Player context) { .send(); } - @Execute(name = "off") + @Execute(name = "on") @DescriptionDocs(description = "Disable private messages") public void off(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), false); @@ -67,7 +70,7 @@ public void off(@Context Player context) { public void other(@Context Player context, @Arg("player") Player player) { CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId()); - hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, toggledOff ? STATE.ON : STATE.OFF)); + hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, !toggledOff ? STATE.ON : STATE.OFF)); } @Execute @@ -82,7 +85,8 @@ public void other(@Context Player context, @Arg("player") Player player, @Arg("< translation.privateChat().msgTogglePlayerOn() : translation.privateChat().msgTogglePlayerOff() ) - .player(player.getUniqueId()) + .player(context.getUniqueId()) + .placeholder("{PLAYER}", player.getName()) .send(); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java index c8e72d1fe..14e364e79 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java @@ -7,6 +7,6 @@ public interface MsgToggleRepository { CompletableFuture isToggledOff(UUID uuid); - void setToggledOff(UUID uuid, boolean toggledOff); + CompletableFuture setToggledOff(UUID uuid, boolean toggledOff); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java index 892965c5a..179d7690d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java @@ -28,7 +28,8 @@ public CompletableFuture isToggledOff(UUID uuid) { } @Override - public void setToggledOff(UUID uuid, boolean toggledOff) { - this.save(MsgToggle.class, new MsgToggle(uuid, toggledOff)); + public CompletableFuture setToggledOff(UUID uuid, boolean toggledOff) { + return this.save(MsgToggleWrapper.class, new MsgToggleWrapper(uuid, toggledOff)) + .thenApply(status -> null); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java index d5e92d2a0..ddb632550 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java @@ -4,25 +4,24 @@ import com.j256.ormlite.table.DatabaseTable; import java.util.UUID; -@DatabaseTable(tableName = "msgtoggle") +@DatabaseTable(tableName = "eternal_core_msg_toggles") class MsgToggleWrapper { @DatabaseField(columnName = "id", id = true) - private UUID id; + private UUID uniqueId; @DatabaseField(columnName = "enabled") private boolean enabled; - MsgToggleWrapper() { - } - MsgToggleWrapper(UUID id, boolean enabled) { - this.id = id; + this.uniqueId = id; this.enabled = enabled; } - static MsgToggleWrapper from(MsgToggleWrapper msgToggle) { - return new MsgToggleWrapper(msgToggle.id, msgToggle.enabled); + MsgToggleWrapper() {} + + static MsgToggleWrapper from(MsgToggle msgToggle) { + return new MsgToggleWrapper(msgToggle.uuid, msgToggle.toggle); } boolean isEnabled() { @@ -32,5 +31,4 @@ boolean isEnabled() { void setEnabled(boolean enabled) { this.enabled = enabled; } - } 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 a82f1e9c5..2781383ba 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 @@ -497,10 +497,10 @@ public static class ENPrivateSection implements PrivateChatSection { public Notice socialSpyDisable = Notice.chat("SocialSpy has been {STATE}!"); - public Notice msgToggledOff = Notice.chat(" This player has disabled private messages!"); + public Notice msgToggledOff = Notice.chat("This player has disabled private messages!"); - public Notice msgToggleSelfOff = Notice.chat("Private messages have been disabled!"); - public Notice msgToggleSelfOn = Notice.chat("Private messages have been enabled!"); + public Notice msgToggleSelfOff = Notice.chat("Private messages have been disabled!"); + public Notice msgToggleSelfOn = Notice.chat("Private messages have been enabled!"); @Description("# {PLAYER} - Player") public Notice msgTogglePlayerOff = Notice.chat("Private messages have been disabled for {PLAYER}!"); 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 c5cd70ae2..f70120c28 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 @@ -507,12 +507,12 @@ public static class PLPrivateChatSection implements PrivateChatSection { public Notice msgToggledOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgToggleSelfOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgToggleSelfOn = Notice.chat("Wiadomości prywatne zostały włączone!"); + public Notice msgToggleSelfOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice msgToggleSelfOn = Notice.chat("Wiadomości prywatne zostały włączone!"); @Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"}) - public Notice msgTogglePlayerOff = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); - public Notice msgTogglePlayerOn = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); + public Notice msgTogglePlayerOff = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); + public Notice msgTogglePlayerOn = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); @Description({" ", "# {PLAYER} - Gracz który jest zignorowany"}) public Notice ignorePlayer = Notice.chat("Zignorowano gracza {PLAYER}!"); From 2437624c46b450c3cad00d94839624fe98be7467 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 22 Jan 2025 22:22:16 +0100 Subject: [PATCH 05/26] Fix logic, rename messages --- .../feature/msgtoggle/MsgToggleService.java | 2 +- .../feature/msgtoggle/MsgToggleCommand.java | 40 +++++++++---------- .../msgtoggle/MsgToggleRepository.java | 2 +- .../msgtoggle/MsgToggleRepositoryOrmLite.java | 2 +- .../msgtoggle/MsgToggleServiceImpl.java | 4 +- .../privatechat/PrivateChatServiceImpl.java | 4 +- .../core/translation/Translation.java | 8 ++-- .../implementation/ENTranslation.java | 8 ++-- .../implementation/PLTranslation.java | 8 ++-- 9 files changed, 39 insertions(+), 39 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java index df9c2ac1e..c9c04a13b 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java @@ -5,7 +5,7 @@ public interface MsgToggleService { - CompletableFuture hasMsgToggledOff(UUID uuid); + CompletableFuture hasMsgToggled(UUID uuid); void toggleMsg(UUID uuid, boolean toggle); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index 63a89080a..0e60abd0a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -27,39 +27,43 @@ public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeS this.noticeService = noticeService; } + public enum STATE { + ON, + OFF + } + @Execute - @DescriptionDocs(description = "Toggle private messages") + @DescriptionDocs(description = "Toggle receiving private messages on and off") public void execute(@Context Player context) { - - CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId()); + CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggled(context.getUniqueId()); hasMsgToggledOff.thenAccept(toggledOff -> { if (!toggledOff) { - this.on(context); + this.toggleOff(context); } else { - this.off(context); + this.toggleOn(context); } }); } - @Execute(name = "off") - @DescriptionDocs(description = "Enable private messages") - public void on(@Context Player context) { + @Execute(name = "on") + @DescriptionDocs(description = "Block incoming private messages") + public void toggleOn(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), true); this.noticeService.create() - .notice(translation -> translation.privateChat().msgToggleSelfOn()) + .notice(translation -> translation.privateChat().msgToggledSelf()) .player(context.getUniqueId()) .send(); } - @Execute(name = "on") - @DescriptionDocs(description = "Disable private messages") - public void off(@Context Player context) { + @Execute(name = "off") + @DescriptionDocs(description = "Unblock incoming private messages") + public void toggleOff(@Context Player context) { this.msgToggleService.toggleMsg(context.getUniqueId(), false); this.noticeService.create() - .notice(translation -> translation.privateChat().msgToggleSelfOff()) + .notice(translation -> translation.privateChat().msgUntoggleSelf()) .player(context.getUniqueId()) .send(); } @@ -68,7 +72,7 @@ public void off(@Context Player context) { @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Toggle private messages for other player", arguments = "") public void other(@Context Player context, @Arg("player") Player player) { - CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId()); + CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggled(player.getUniqueId()); hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, !toggledOff ? STATE.ON : STATE.OFF)); } @@ -82,8 +86,8 @@ public void other(@Context Player context, @Arg("player") Player player, @Arg("< this.noticeService.create() .notice( translation -> toggle == STATE.ON ? - translation.privateChat().msgTogglePlayerOn() : - translation.privateChat().msgTogglePlayerOff() + translation.privateChat().msgUntogglePlayer() : + translation.privateChat().msgToggledPlayer() ) .player(context.getUniqueId()) .placeholder("{PLAYER}", player.getName()) @@ -91,8 +95,4 @@ public void other(@Context Player context, @Arg("player") Player player, @Arg("< } - public enum STATE { - ON, - OFF - } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java index 14e364e79..967d116e2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java @@ -5,7 +5,7 @@ public interface MsgToggleRepository { - CompletableFuture isToggledOff(UUID uuid); + CompletableFuture isToggled(UUID uuid); CompletableFuture setToggledOff(UUID uuid, boolean toggledOff); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java index 179d7690d..bed4d9884 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java @@ -20,7 +20,7 @@ private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler sc } @Override - public CompletableFuture isToggledOff(UUID uuid) { + public CompletableFuture isToggled(UUID uuid) { return this.selectSafe(MsgToggleWrapper.class, uuid) .thenApply( optional -> optional.map(MsgToggleWrapper::isEnabled).orElse(true) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java index e19194c83..0990bfd01 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java @@ -18,8 +18,8 @@ public MsgToggleServiceImpl(MsgToggleRepository msgToggleRepository) { @Override - public CompletableFuture hasMsgToggledOff(UUID uuid) { - return this.msgToggleRepository.isToggledOff(uuid); + public CompletableFuture hasMsgToggled(UUID uuid) { + return this.msgToggleRepository.isToggled(uuid); } @Override diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index b9d50e7d0..d5bd4159b 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -59,8 +59,8 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); - this.msgToggleService.hasMsgToggledOff(uniqueId).thenAccept(hasToggledOff -> { - if (hasToggledOff) { + this.msgToggleService.hasMsgToggled(uniqueId).thenAccept(hasMsgToggled -> { + if (hasMsgToggled) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff()); return; 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 4fc3fc2b7..63b383ba8 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 @@ -261,10 +261,10 @@ interface PrivateChatSection { Notice socialSpyDisable(); Notice msgToggledOff(); - Notice msgToggleSelfOff(); - Notice msgToggleSelfOn(); - Notice msgTogglePlayerOff(); - Notice msgTogglePlayerOn(); + Notice msgToggledSelf(); + Notice msgUntoggleSelf(); + Notice msgToggledPlayer(); + Notice msgUntogglePlayer(); Notice ignorePlayer(); Notice ignoreAll(); 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 2781383ba..f898a92f6 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 @@ -499,12 +499,12 @@ public static class ENPrivateSection implements PrivateChatSection { public Notice msgToggledOff = Notice.chat("This player has disabled private messages!"); - public Notice msgToggleSelfOff = Notice.chat("Private messages have been disabled!"); - public Notice msgToggleSelfOn = Notice.chat("Private messages have been enabled!"); + public Notice msgToggledSelf = Notice.chat("Private messages have been disabled!"); + public Notice msgUntoggleSelf = Notice.chat("Private messages have been enabled!"); @Description("# {PLAYER} - Player") - public Notice msgTogglePlayerOff = Notice.chat("Private messages have been disabled for {PLAYER}!"); - public Notice msgTogglePlayerOn = Notice.chat("Private messages have been enabled for {PLAYER}!"); + public Notice msgToggledPlayer = Notice.chat("Private messages have been disabled for {PLAYER}!"); + public Notice msgUntogglePlayer = Notice.chat("Private messages have been enabled for {PLAYER}!"); 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 f70120c28..be3f34755 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 @@ -507,12 +507,12 @@ public static class PLPrivateChatSection implements PrivateChatSection { public Notice msgToggledOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgToggleSelfOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgToggleSelfOn = Notice.chat("Wiadomości prywatne zostały włączone!"); + public Notice msgToggledSelf = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice msgUntoggleSelf = Notice.chat("Wiadomości prywatne zostały włączone!"); @Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"}) - public Notice msgTogglePlayerOff = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); - public Notice msgTogglePlayerOn = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); + public Notice msgToggledPlayer = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); + public Notice msgUntogglePlayer = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); @Description({" ", "# {PLAYER} - Gracz który jest zignorowany"}) public Notice ignorePlayer = Notice.chat("Zignorowano gracza {PLAYER}!"); From aa1ff473e048e7e7e63ef28adebbbe579153cbe8 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 22 Jan 2025 23:04:27 +0100 Subject: [PATCH 06/26] Remove comments --- .../eternalcode/core/feature/msgtoggle/MsgToggleCommand.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index 0e60abd0a..6a5903e0d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -11,9 +11,6 @@ import java.util.concurrent.CompletableFuture; import org.bukkit.entity.Player; -// To clarify: -// ON - true - means that the player has turned on msgToggle and has blocked getting private messages -// OFF - false - means that the player has turned off msgToggle and has allowed getting private messages @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") public class MsgToggleCommand { @@ -38,7 +35,7 @@ public void execute(@Context Player context) { CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggled(context.getUniqueId()); hasMsgToggledOff.thenAccept(toggledOff -> { - if (!toggledOff) { + if (toggledOff) { this.toggleOff(context); } else { this.toggleOn(context); From 6da3ddfda4e072235dd2b1a0f3753c40333cafbe Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 22 Jan 2025 23:09:22 +0100 Subject: [PATCH 07/26] Delete duplicated message. --- .../core/feature/msgtoggle/MsgToggleCommand.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index 6a5903e0d..38b8e401a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -78,7 +78,15 @@ public void other(@Context Player context, @Arg("player") Player player) { @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Toggle private messages for other player", arguments = " ") public void other(@Context Player context, @Arg("player") Player player, @Arg("") STATE toggle) { - this.msgToggleService.toggleMsg(player.getUniqueId(), toggle == STATE.ON); + if (toggle == STATE.ON) { + this.toggleOn(player); + } else { + this.toggleOff(player); + } + + if (context.equals(player)) { + return; + } this.noticeService.create() .notice( From 4a77643fb67fbd835173581071eeb4ca401d2e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= <80779749+CitralFlo@users.noreply.github.com> Date: Wed, 22 Jan 2025 23:16:24 +0100 Subject: [PATCH 08/26] Update eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../com/eternalcode/core/feature/msgtoggle/MsgToggle.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java index 460bbe51c..2f0786537 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java @@ -4,8 +4,8 @@ public class MsgToggle { - UUID uuid; - boolean toggle; + private final UUID uuid; + private final boolean toggle; public MsgToggle() { From 00e97d0dd9530ebddfe7b9e5bb96b31da293e0e5 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 22 Jan 2025 23:23:01 +0100 Subject: [PATCH 09/26] Delete duplicated message. --- .../eternalcode/core/feature/msgtoggle/MsgToggleCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java index 38b8e401a..8d0c070c0 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java @@ -84,7 +84,7 @@ public void other(@Context Player context, @Arg("player") Player player, @Arg("< this.toggleOff(player); } - if (context.equals(player)) { + if (player.getUniqueId().equals(context.getUniqueId())) { return; } From a091a184e8f3d28b81e2f31123832051806c9510 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 22 Jan 2025 23:24:22 +0100 Subject: [PATCH 10/26] Fix coderabbit issue --- .../com/eternalcode/core/feature/msgtoggle/MsgToggle.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java index 2f0786537..460bbe51c 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java @@ -4,8 +4,8 @@ public class MsgToggle { - private final UUID uuid; - private final boolean toggle; + UUID uuid; + boolean toggle; public MsgToggle() { From b3dae93e24f3be1de69e676bf761c8bded87e18d Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Tue, 28 Jan 2025 22:20:15 +0100 Subject: [PATCH 11/26] Fix naming and logic. --- .../core/feature/msgtoggle/MsgToggle.java | 26 ---- .../feature/msgtoggle/MsgToggleService.java | 12 -- .../privatechat/toggle/PrivateChatToggle.java | 26 ++++ .../toggle/PrivateChatToggleService.java | 12 ++ .../toggle/PrivateChatToggleState.java | 8 + .../feature/msgtoggle/MsgToggleCommand.java | 103 ------------- .../msgtoggle/MsgToggleRepository.java | 12 -- .../msgtoggle/MsgToggleRepositoryOrmLite.java | 35 ----- .../msgtoggle/MsgToggleServiceImpl.java | 30 ---- .../feature/msgtoggle/MsgToggleWrapper.java | 34 ----- .../privatechat/PrivateChatServiceImpl.java | 15 +- .../toggle/PrivateChatToggleCommand.java | 140 ++++++++++++++++++ .../toggle/PrivateChatToggleRepository.java | 13 ++ .../PrivateChatToggleRepositoryOrmLite.java | 35 +++++ .../toggle/PrivateChatToggleServiceImpl.java | 30 ++++ .../toggle/PrivateChatToggleWrapper.java | 34 +++++ .../core/translation/Translation.java | 10 +- .../implementation/ENTranslation.java | 10 +- .../implementation/PLTranslation.java | 10 +- 19 files changed, 321 insertions(+), 274 deletions(-) delete mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java delete mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java create mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java create mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java create mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java deleted file mode 100644 index 460bbe51c..000000000 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import java.util.UUID; - -public class MsgToggle { - - UUID uuid; - boolean toggle; - - public MsgToggle() { - - } - - public MsgToggle(UUID uuid, boolean toggle) { - this.uuid = uuid; - this.toggle = toggle; - } - - public UUID getUuid() { - return uuid; - } - - public boolean getToggle() { - return toggle; - } -} diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java deleted file mode 100644 index c9c04a13b..000000000 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -public interface MsgToggleService { - - CompletableFuture hasMsgToggled(UUID uuid); - - void toggleMsg(UUID uuid, boolean toggle); - -} diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java new file mode 100644 index 000000000..4fe4a8802 --- /dev/null +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java @@ -0,0 +1,26 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import java.util.UUID; + +public class PrivateChatToggle { + + UUID uuid; + PrivateChatToggleState state; + + public PrivateChatToggle() { + + } + + public PrivateChatToggle(UUID uuid, PrivateChatToggleState toggle) { + this.uuid = uuid; + this.state = toggle; + } + + public UUID getUuid() { + return uuid; + } + + public PrivateChatToggleState getState() { + return state; + } +} diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java new file mode 100644 index 000000000..fe3ed0283 --- /dev/null +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java @@ -0,0 +1,12 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +public interface PrivateChatToggleService { + + CompletableFuture getPrivateChatToggleState(UUID uuid); + + void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle); + +} diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java new file mode 100644 index 000000000..c778bd1c0 --- /dev/null +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java @@ -0,0 +1,8 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +public enum PrivateChatToggleState { + + ON, + OFF + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java deleted file mode 100644 index 8d0c070c0..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleCommand.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import com.eternalcode.annotations.scan.command.DescriptionDocs; -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; -import dev.rollczi.litecommands.annotations.context.Context; -import dev.rollczi.litecommands.annotations.execute.Execute; -import dev.rollczi.litecommands.annotations.permission.Permission; -import java.util.concurrent.CompletableFuture; -import org.bukkit.entity.Player; - -@Command(name = "msgtoggle") -@Permission("eternalcore.msgtoggle") -public class MsgToggleCommand { - - private final MsgToggleService msgToggleService; - private final NoticeService noticeService; - - @Inject - public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeService) { - this.msgToggleService = msgToggleService; - this.noticeService = noticeService; - } - - public enum STATE { - ON, - OFF - } - - @Execute - @DescriptionDocs(description = "Toggle receiving private messages on and off") - public void execute(@Context Player context) { - CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggled(context.getUniqueId()); - - hasMsgToggledOff.thenAccept(toggledOff -> { - if (toggledOff) { - this.toggleOff(context); - } else { - this.toggleOn(context); - } - }); - } - - @Execute(name = "on") - @DescriptionDocs(description = "Block incoming private messages") - public void toggleOn(@Context Player context) { - this.msgToggleService.toggleMsg(context.getUniqueId(), true); - - this.noticeService.create() - .notice(translation -> translation.privateChat().msgToggledSelf()) - .player(context.getUniqueId()) - .send(); - } - - @Execute(name = "off") - @DescriptionDocs(description = "Unblock incoming private messages") - public void toggleOff(@Context Player context) { - this.msgToggleService.toggleMsg(context.getUniqueId(), false); - - this.noticeService.create() - .notice(translation -> translation.privateChat().msgUntoggleSelf()) - .player(context.getUniqueId()) - .send(); - } - - @Execute - @Permission("eternalcore.msgtoggle.other") - @DescriptionDocs(description = "Toggle private messages for other player", arguments = "") - public void other(@Context Player context, @Arg("player") Player player) { - CompletableFuture hasMsgToggledOff = this.msgToggleService.hasMsgToggled(player.getUniqueId()); - - hasMsgToggledOff.thenAccept(toggledOff -> this.other(context, player, !toggledOff ? STATE.ON : STATE.OFF)); - } - - @Execute - @Permission("eternalcore.msgtoggle.other") - @DescriptionDocs(description = "Toggle private messages for other player", arguments = " ") - public void other(@Context Player context, @Arg("player") Player player, @Arg("") STATE toggle) { - if (toggle == STATE.ON) { - this.toggleOn(player); - } else { - this.toggleOff(player); - } - - if (player.getUniqueId().equals(context.getUniqueId())) { - return; - } - - this.noticeService.create() - .notice( - translation -> toggle == STATE.ON ? - translation.privateChat().msgUntogglePlayer() : - translation.privateChat().msgToggledPlayer() - ) - .player(context.getUniqueId()) - .placeholder("{PLAYER}", player.getName()) - .send(); - - } - -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java deleted file mode 100644 index 967d116e2..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -public interface MsgToggleRepository { - - CompletableFuture isToggled(UUID uuid); - - CompletableFuture setToggledOff(UUID uuid, boolean toggledOff); - -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java deleted file mode 100644 index bed4d9884..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import com.eternalcode.commons.scheduler.Scheduler; -import com.eternalcode.core.database.DatabaseManager; -import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite; -import com.eternalcode.core.injector.annotations.Inject; -import com.eternalcode.core.injector.annotations.component.Repository; -import com.j256.ormlite.table.TableUtils; -import java.sql.SQLException; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -@Repository -class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements MsgToggleRepository { - - @Inject - private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { - super(databaseManager, scheduler); - TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggleWrapper.class); - } - - @Override - public CompletableFuture isToggled(UUID uuid) { - return this.selectSafe(MsgToggleWrapper.class, uuid) - .thenApply( - optional -> optional.map(MsgToggleWrapper::isEnabled).orElse(true) - ); - } - - @Override - public CompletableFuture setToggledOff(UUID uuid, boolean toggledOff) { - return this.save(MsgToggleWrapper.class, new MsgToggleWrapper(uuid, toggledOff)) - .thenApply(status -> null); - } -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java deleted file mode 100644 index 0990bfd01..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleServiceImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import com.eternalcode.core.injector.annotations.Inject; -import com.eternalcode.core.injector.annotations.component.Service; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Blocking; - -@Service -public class MsgToggleServiceImpl implements MsgToggleService{ - - private final MsgToggleRepository msgToggleRepository; - - @Inject - public MsgToggleServiceImpl(MsgToggleRepository msgToggleRepository) { - this.msgToggleRepository = msgToggleRepository; - } - - - @Override - public CompletableFuture hasMsgToggled(UUID uuid) { - return this.msgToggleRepository.isToggled(uuid); - } - - @Override - @Blocking - public void toggleMsg(UUID uuid, boolean toggle) { - this.msgToggleRepository.setToggledOff(uuid, toggle); - } -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java deleted file mode 100644 index ddb632550..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.eternalcode.core.feature.msgtoggle; - -import com.j256.ormlite.field.DatabaseField; -import com.j256.ormlite.table.DatabaseTable; -import java.util.UUID; - -@DatabaseTable(tableName = "eternal_core_msg_toggles") -class MsgToggleWrapper { - - @DatabaseField(columnName = "id", id = true) - private UUID uniqueId; - - @DatabaseField(columnName = "enabled") - private boolean enabled; - - MsgToggleWrapper(UUID id, boolean enabled) { - this.uniqueId = id; - this.enabled = enabled; - } - - MsgToggleWrapper() {} - - static MsgToggleWrapper from(MsgToggle msgToggle) { - return new MsgToggleWrapper(msgToggle.uuid, msgToggle.toggle); - } - - boolean isEnabled() { - return this.enabled; - } - - void setEnabled(boolean enabled) { - this.enabled = enabled; - } -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index d5bd4159b..4fd2712da 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -2,7 +2,8 @@ import com.eternalcode.core.event.EventCaller; import com.eternalcode.core.feature.ignore.IgnoreService; -import com.eternalcode.core.feature.msgtoggle.MsgToggleService; +import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleService; +import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleState; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; import com.eternalcode.core.notice.NoticeService; @@ -25,7 +26,7 @@ class PrivateChatServiceImpl implements PrivateChatService { private final UserManager userManager; private final PrivateChatPresenter presenter; private final EventCaller eventCaller; - private final MsgToggleService msgToggleService; + private final PrivateChatToggleService privateChatToggleService; private final Cache replies = CacheBuilder.newBuilder() .expireAfterWrite(Duration.ofHours(1)) @@ -39,13 +40,13 @@ class PrivateChatServiceImpl implements PrivateChatService { IgnoreService ignoreService, UserManager userManager, EventCaller eventCaller, - MsgToggleService msgToggleService + PrivateChatToggleService privateChatToggleService ) { this.noticeService = noticeService; this.ignoreService = ignoreService; this.userManager = userManager; this.eventCaller = eventCaller; - this.msgToggleService = msgToggleService; + this.privateChatToggleService = privateChatToggleService; this.presenter = new PrivateChatPresenter(noticeService); } @@ -59,9 +60,9 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); - this.msgToggleService.hasMsgToggled(uniqueId).thenAccept(hasMsgToggled -> { - if (hasMsgToggled) { - this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff()); + this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { + if (privateChatToggleState.equals(PrivateChatToggleState.ON)) { + this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java new file mode 100644 index 000000000..d51953b5c --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -0,0 +1,140 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import com.eternalcode.annotations.scan.command.DescriptionDocs; +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; +import dev.rollczi.litecommands.annotations.context.Context; +import dev.rollczi.litecommands.annotations.execute.Execute; +import dev.rollczi.litecommands.annotations.optional.OptionalArg; +import dev.rollczi.litecommands.annotations.permission.Permission; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@Command(name = "msgtoggle") +@Permission("eternalcore.msgtoggle") +public class PrivateChatToggleCommand { + + private final PrivateChatToggleService privateChatToggleService; + private final NoticeService noticeService; + + @Inject + public PrivateChatToggleCommand(PrivateChatToggleService privateChatToggleService, NoticeService noticeService) { + this.privateChatToggleService = privateChatToggleService; + this.noticeService = noticeService; + } + + @Execute + @DescriptionDocs(description = "Toggle receiving private messages on and off") + public void execute(@Context Player context, @OptionalArg PrivateChatToggleState state) { + UUID uniqueId = context.getUniqueId(); + + if (state == null) { + CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(context.getUniqueId()); + + privateChatToggleState.thenAccept(toggleState -> { + if (toggleState.equals(PrivateChatToggleState.OFF)) { + this.toggleOn(uniqueId); + } + else { + this.toggleOff(uniqueId); + } + }); + + return; + } + + if (state.equals(PrivateChatToggleState.OFF)) { + this.toggleOn(uniqueId); + } + else { + this.toggleOff(uniqueId); + } + } + + @Execute + @Permission("eternalcore.msgtoggle.other") + @DescriptionDocs(description = "Toggle private messages for other player", arguments = " ") + public void other(@Context CommandSender context, @Arg("player") Player player, @OptionalArg PrivateChatToggleState state) { + + UUID uniqueId = player.getUniqueId(); + + if (state == null) { + CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); + + privateChatToggleState.thenAccept(toggleState -> { + if (toggleState.equals(PrivateChatToggleState.OFF)) { + this.toggleOn(uniqueId); + + this.noticeService.create() + .notice( translation -> translation.privateChat().otherMessagesEnabled()) + .sender(context) + .placeholder("{PLAYER}", player.getName()) + .send(); + } + else { + this.toggleOff(uniqueId); + + this.noticeService.create() + .notice( translation -> translation.privateChat().otherMessagesDisabled()) + .sender(context) + .placeholder("{PLAYER}", player.getName()) + .send(); + } + }); + + return; + } + + if (state.equals(PrivateChatToggleState.OFF)) { + this.toggleOn(uniqueId); + + if (this.isCommandSenderSameAsTarget(context, player)) { + this.noticeService.create() + .notice(translation -> translation.privateChat().otherMessagesDisabled()) + .sender(context) + .placeholder("{PLAYER}", player.getName()) + .send(); + } + } + else { + this.toggleOff(uniqueId); + + if (this.isCommandSenderSameAsTarget(context, player)) { + this.noticeService.create() + .notice(translation -> translation.privateChat().otherMessagesEnabled()) + .sender(context) + .placeholder("{PLAYER}", player.getName()) + .send(); + } + } + } + + private void toggleOn(UUID uniqueId) { + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ON); + + this.noticeService.create() + .notice(translation -> translation.privateChat().selfMessagesDisabled()) + .player(uniqueId) + .send(); + } + + private void toggleOff(UUID uniqueId) { + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.OFF); + + this.noticeService.create() + .notice(translation -> translation.privateChat().selfMessagesEnabled()) + .player(uniqueId) + .send(); + } + + private boolean isCommandSenderSameAsTarget(CommandSender context, Player player) { + if (context instanceof Player commandSender) { + return commandSender.getUniqueId().equals(player.getUniqueId()); + } + return false; + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java new file mode 100644 index 000000000..b215a23f0 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java @@ -0,0 +1,13 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleState; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +public interface PrivateChatToggleRepository { + + CompletableFuture getPrivateChatToggleState(UUID uuid); + + CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatToggleState toggledOff); + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java new file mode 100644 index 000000000..060b865df --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java @@ -0,0 +1,35 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import com.eternalcode.commons.scheduler.Scheduler; +import com.eternalcode.core.database.DatabaseManager; +import com.eternalcode.core.database.wrapper.AbstractRepositoryOrmLite; +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Repository; +import com.j256.ormlite.table.TableUtils; +import java.sql.SQLException; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +@Repository +class PrivateChatToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements PrivateChatToggleRepository { + + @Inject + private PrivateChatToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { + super(databaseManager, scheduler); + TableUtils.createTableIfNotExists(databaseManager.connectionSource(), PrivateChatToggleWrapper.class); + } + + @Override + public CompletableFuture getPrivateChatToggleState(UUID uuid) { + return this.selectSafe(PrivateChatToggleWrapper.class, uuid) + .thenApply( + optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.OFF) + ); + } + + @Override + public CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatToggleState toggledOff) { + return this.save(PrivateChatToggleWrapper.class, new PrivateChatToggleWrapper(uuid, toggledOff)) + .thenApply(status -> null); + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java new file mode 100644 index 000000000..5ab8b2d43 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java @@ -0,0 +1,30 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Service; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +@Service +public class PrivateChatToggleServiceImpl implements PrivateChatToggleService { + + private final PrivateChatToggleRepository msgToggleRepository; + + @Inject + public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleRepository) { + this.msgToggleRepository = msgToggleRepository; + } + + + @Override + public CompletableFuture getPrivateChatToggleState(UUID uuid) { + return this.msgToggleRepository.getPrivateChatToggleState(uuid); + } + + @Override + public void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle) { + this.msgToggleRepository.setPrivateChatToggle(uuid, toggle); + } + + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java new file mode 100644 index 000000000..e02d2fc7b --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java @@ -0,0 +1,34 @@ +package com.eternalcode.core.feature.privatechat.toggle; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; +import java.util.UUID; + +@DatabaseTable(tableName = "eternal_core_private_chat_toggle") +class PrivateChatToggleWrapper { + + @DatabaseField(columnName = "id", id = true) + private UUID uniqueId; + + @DatabaseField(columnName = "enabled") + private PrivateChatToggleState state; + + PrivateChatToggleWrapper(UUID id, PrivateChatToggleState enabled) { + this.uniqueId = id; + this.state = enabled; + } + + PrivateChatToggleWrapper() {} + + static PrivateChatToggleWrapper from(PrivateChatToggle msgToggle) { + return new PrivateChatToggleWrapper(msgToggle.uuid, msgToggle.state); + } + + PrivateChatToggleState isEnabled() { + return this.state; + } + + void setState(PrivateChatToggleState state) { + this.state = state; + } +} 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 63b383ba8..386154506 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 @@ -260,11 +260,11 @@ interface PrivateChatSection { Notice socialSpyEnable(); Notice socialSpyDisable(); - Notice msgToggledOff(); - Notice msgToggledSelf(); - Notice msgUntoggleSelf(); - Notice msgToggledPlayer(); - Notice msgUntogglePlayer(); + Notice receiverDisabledMessages(); + Notice selfMessagesDisabled(); + Notice selfMessagesEnabled(); + Notice otherMessagesDisabled(); + Notice otherMessagesEnabled(); Notice ignorePlayer(); Notice ignoreAll(); 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 f898a92f6..f5a66d285 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 @@ -497,14 +497,14 @@ public static class ENPrivateSection implements PrivateChatSection { public Notice socialSpyDisable = Notice.chat("SocialSpy has been {STATE}!"); - public Notice msgToggledOff = Notice.chat("This player has disabled private messages!"); + public Notice receiverDisabledMessages = Notice.chat("This player has disabled private messages!"); - public Notice msgToggledSelf = Notice.chat("Private messages have been disabled!"); - public Notice msgUntoggleSelf = Notice.chat("Private messages have been enabled!"); + public Notice selfMessagesDisabled = Notice.chat("Private messages have been disabled!"); + public Notice selfMessagesEnabled = Notice.chat("Private messages have been enabled!"); @Description("# {PLAYER} - Player") - public Notice msgToggledPlayer = Notice.chat("Private messages have been disabled for {PLAYER}!"); - public Notice msgUntogglePlayer = Notice.chat("Private messages have been enabled for {PLAYER}!"); + public Notice otherMessagesDisabled = Notice.chat("Private messages have been disabled for {PLAYER}!"); + public Notice otherMessagesEnabled = Notice.chat("Private messages have been enabled for {PLAYER}!"); 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 be3f34755..4bf276d2c 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 @@ -505,14 +505,14 @@ public static class PLPrivateChatSection implements PrivateChatSection { public Notice socialSpyEnable = Notice.chat("SocialSpy został {STATE}!"); public Notice socialSpyDisable = Notice.chat("SocialSpy został {STATE}!"); - public Notice msgToggledOff = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice receiverDisabledMessages = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgToggledSelf = Notice.chat("Wiadomości prywatne zostały wyłączone!"); - public Notice msgUntoggleSelf = Notice.chat("Wiadomości prywatne zostały włączone!"); + public Notice selfMessagesDisabled = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice selfMessagesEnabled = Notice.chat("Wiadomości prywatne zostały włączone!"); @Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"}) - public Notice msgToggledPlayer = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); - public Notice msgUntogglePlayer = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); + public Notice otherMessagesDisabled = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); + public Notice otherMessagesEnabled = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); @Description({" ", "# {PLAYER} - Gracz który jest zignorowany"}) public Notice ignorePlayer = Notice.chat("Zignorowano gracza {PLAYER}!"); From 76d85d931db9cd8d68f276962a10aa6c26cd07cc Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Tue, 28 Jan 2025 22:25:05 +0100 Subject: [PATCH 12/26] Resolve @imDMK review --- .../feature/privatechat/toggle/PrivateChatToggleWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java index e02d2fc7b..482791ce5 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java @@ -21,7 +21,7 @@ class PrivateChatToggleWrapper { PrivateChatToggleWrapper() {} static PrivateChatToggleWrapper from(PrivateChatToggle msgToggle) { - return new PrivateChatToggleWrapper(msgToggle.uuid, msgToggle.state); + return new PrivateChatToggleWrapper(msgToggle.getUuid(), msgToggle.getState()); } PrivateChatToggleState isEnabled() { From df9b84f317a744ab08f5aa2d3650b1a6590611cf Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Tue, 28 Jan 2025 22:32:53 +0100 Subject: [PATCH 13/26] Add comments to api --- .../privatechat/toggle/PrivateChatToggle.java | 7 +++---- .../toggle/PrivateChatToggleService.java | 15 +++++++++++++++ .../toggle/PrivateChatToggleState.java | 11 ++++++++++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java index 4fe4a8802..9699f0b2d 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java @@ -2,15 +2,14 @@ import java.util.UUID; +/** + * Represents a player's private chat toggle state. + */ public class PrivateChatToggle { UUID uuid; PrivateChatToggleState state; - public PrivateChatToggle() { - - } - public PrivateChatToggle(UUID uuid, PrivateChatToggleState toggle) { this.uuid = uuid; this.state = toggle; diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java index fe3ed0283..97641ead8 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java @@ -3,10 +3,25 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; +/** + * This Service manages the state of player's private chat messages blocking + */ public interface PrivateChatToggleService { + /** + * Checks status of player's private chat messages blocking. + * + * @param uuid player's UUID. + * @return state of player's private chat messages blocking. + */ CompletableFuture getPrivateChatToggleState(UUID uuid); + /** + * Sets blocking of incoming private messages. + * + * @param uuid player's UUID. + * @param toggle desired state of player's private chat messages blocking. + */ void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle); } diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java index c778bd1c0..215e48b83 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java @@ -1,8 +1,17 @@ package com.eternalcode.core.feature.privatechat.toggle; +/** + * Enum representing state of blocking incoming private messages by the player. + */ public enum PrivateChatToggleState { + /** + * State that represents that the player has blocked incoming private messages. + */ ON, - OFF + /** + * State that represents that the player has not blocked incoming private messages. + */ + OFF } From 4709133e9145ad042520ce9d5ce653a34a33e1eb Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 29 Jan 2025 00:06:57 +0100 Subject: [PATCH 14/26] Resolve Rollcz's review --- .../toggle/PrivateChatToggleCommand.java | 27 +++++-------------- .../toggle/PrivateChatToggleRepository.java | 4 +-- .../toggle/PrivateChatToggleServiceImpl.java | 8 ++++++ 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java index d51953b5c..f5b0b3c71 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -13,6 +13,7 @@ import java.util.concurrent.CompletableFuture; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") @@ -64,31 +65,15 @@ public void other(@Context CommandSender context, @Arg("player") Player player, if (state == null) { CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); - - privateChatToggleState.thenAccept(toggleState -> { - if (toggleState.equals(PrivateChatToggleState.OFF)) { - this.toggleOn(uniqueId); - - this.noticeService.create() - .notice( translation -> translation.privateChat().otherMessagesEnabled()) - .sender(context) - .placeholder("{PLAYER}", player.getName()) - .send(); - } - else { - this.toggleOff(uniqueId); - - this.noticeService.create() - .notice( translation -> translation.privateChat().otherMessagesDisabled()) - .sender(context) - .placeholder("{PLAYER}", player.getName()) - .send(); - } - }); + privateChatToggleState.thenAccept(toggleState -> handleToggle(context, player, toggleState, uniqueId)); return; } + handleToggle(context, player, state, uniqueId); + } + + private void handleToggle(CommandSender context, Player player, @NotNull PrivateChatToggleState state, UUID uniqueId) { if (state.equals(PrivateChatToggleState.OFF)) { this.toggleOn(uniqueId); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java index b215a23f0..66cd5fcfe 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java @@ -1,10 +1,10 @@ package com.eternalcode.core.feature.privatechat.toggle; -import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleState; + import java.util.UUID; import java.util.concurrent.CompletableFuture; -public interface PrivateChatToggleRepository { +interface PrivateChatToggleRepository { CompletableFuture getPrivateChatToggleState(UUID uuid); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java index 5ab8b2d43..a29ce5f9c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java @@ -2,6 +2,7 @@ import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; +import java.util.HashMap; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -9,20 +10,27 @@ public class PrivateChatToggleServiceImpl implements PrivateChatToggleService { private final PrivateChatToggleRepository msgToggleRepository; + private final HashMap cachedToggleStates; @Inject public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleRepository) { + this.cachedToggleStates = new HashMap<>(); this.msgToggleRepository = msgToggleRepository; } @Override public CompletableFuture getPrivateChatToggleState(UUID uuid) { + if (this.cachedToggleStates.containsKey(uuid)) { + return CompletableFuture.completedFuture(this.cachedToggleStates.get(uuid)); + } + return this.msgToggleRepository.getPrivateChatToggleState(uuid); } @Override public void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle) { + this.cachedToggleStates.put(uuid, toggle); this.msgToggleRepository.setPrivateChatToggle(uuid, toggle); } From 450813cfa71143e05cf7586d3797d0ff34de51ed Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 29 Jan 2025 00:12:53 +0100 Subject: [PATCH 15/26] Resolve coderabbit review --- .../privatechat/toggle/PrivateChatToggleServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java index a29ce5f9c..430a460fa 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java @@ -5,16 +5,17 @@ import java.util.HashMap; import java.util.UUID; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; @Service public class PrivateChatToggleServiceImpl implements PrivateChatToggleService { private final PrivateChatToggleRepository msgToggleRepository; - private final HashMap cachedToggleStates; + private final ConcurrentHashMap cachedToggleStates; @Inject public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleRepository) { - this.cachedToggleStates = new HashMap<>(); + this.cachedToggleStates = new ConcurrentHashMap<>(); this.msgToggleRepository = msgToggleRepository; } From f22fe08ffc53bd0a657c4161a75e0d5a0679bf1f Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Thu, 30 Jan 2025 20:50:27 +0100 Subject: [PATCH 16/26] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 100b31742..854bebc38 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,7 @@ Get the latest development builds from our [GitHub Actions](https://github.com/E - Chat On/Off Switch - Chat Slow Mode - /ignore and /unignore (with -all option) - - /msgtoggle - - /msg, /socialspy, and /reply commands + - /msg, /msgtoggle, /socialspy, and /reply commands - /helpop command - Advanced Notification System allowing you to customize every message to your liking (Title, Subtitle, Actionbar, Chat, etc.) - :hammer: Open Utility Blocks with simple commands like `/workbench` From 98cb28624a882fd8435aa5fc5ab45a6fe889ad02 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 5 Feb 2025 18:10:21 +0100 Subject: [PATCH 17/26] Fix logic: enable -> enable priv messages. --- .../toggle/PrivateChatToggleState.java | 8 ++--- .../privatechat/PrivateChatServiceImpl.java | 2 +- .../toggle/PrivateChatToggleCommand.java | 34 +++++++++---------- .../PrivateChatToggleRepositoryOrmLite.java | 2 +- .../implementation/ENTranslation.java | 4 +-- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java index 215e48b83..d43a03b17 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java @@ -6,12 +6,12 @@ public enum PrivateChatToggleState { /** - * State that represents that the player has blocked incoming private messages. + * State that represents that the player can be messaged by other players. */ - ON, + ENABLED, /** - * State that represents that the player has not blocked incoming private messages. + * State that represents that the player has disabled incoming private messages. */ - OFF + DISABLED } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index 4fd2712da..95bb71bd9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -61,7 +61,7 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { - if (privateChatToggleState.equals(PrivateChatToggleState.ON)) { + if (privateChatToggleState.equals(PrivateChatToggleState.ENABLED)) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java index f5b0b3c71..8b0e4e8d1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -37,22 +37,22 @@ public void execute(@Context Player context, @OptionalArg PrivateChatToggleState CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(context.getUniqueId()); privateChatToggleState.thenAccept(toggleState -> { - if (toggleState.equals(PrivateChatToggleState.OFF)) { - this.toggleOn(uniqueId); + if (toggleState == PrivateChatToggleState.DISABLED) { + this.enable(uniqueId); } else { - this.toggleOff(uniqueId); + this.disable(uniqueId); } }); return; } - if (state.equals(PrivateChatToggleState.OFF)) { - this.toggleOn(uniqueId); + if (state == PrivateChatToggleState.DISABLED) { + this.enable(uniqueId); } else { - this.toggleOff(uniqueId); + this.disable(uniqueId); } } @@ -74,23 +74,23 @@ public void other(@Context CommandSender context, @Arg("player") Player player, } private void handleToggle(CommandSender context, Player player, @NotNull PrivateChatToggleState state, UUID uniqueId) { - if (state.equals(PrivateChatToggleState.OFF)) { - this.toggleOn(uniqueId); + if (state.equals(PrivateChatToggleState.DISABLED)) { + this.enable(uniqueId); if (this.isCommandSenderSameAsTarget(context, player)) { this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesDisabled()) + .notice(translation -> translation.privateChat().otherMessagesEnabled()) .sender(context) .placeholder("{PLAYER}", player.getName()) .send(); } } else { - this.toggleOff(uniqueId); + this.disable(uniqueId); if (this.isCommandSenderSameAsTarget(context, player)) { this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesEnabled()) + .notice(translation -> translation.privateChat().otherMessagesDisabled()) .sender(context) .placeholder("{PLAYER}", player.getName()) .send(); @@ -98,20 +98,20 @@ private void handleToggle(CommandSender context, Player player, @NotNull Private } } - private void toggleOn(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ON); + private void enable(UUID uniqueId) { + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ENABLED); this.noticeService.create() - .notice(translation -> translation.privateChat().selfMessagesDisabled()) + .notice(translation -> translation.privateChat().selfMessagesEnabled()) .player(uniqueId) .send(); } - private void toggleOff(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.OFF); + private void disable(UUID uniqueId) { + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.DISABLED); this.noticeService.create() - .notice(translation -> translation.privateChat().selfMessagesEnabled()) + .notice(translation -> translation.privateChat().selfMessagesDisabled()) .player(uniqueId) .send(); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java index 060b865df..fedb2fde9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java @@ -23,7 +23,7 @@ private PrivateChatToggleRepositoryOrmLite(DatabaseManager databaseManager, Sche public CompletableFuture getPrivateChatToggleState(UUID uuid) { return this.selectSafe(PrivateChatToggleWrapper.class, uuid) .thenApply( - optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.OFF) + optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.ENABLED) ); } 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 f5a66d285..e3413fdcd 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 @@ -503,8 +503,8 @@ public static class ENPrivateSection implements PrivateChatSection { public Notice selfMessagesEnabled = Notice.chat("Private messages have been enabled!"); @Description("# {PLAYER} - Player") - public Notice otherMessagesDisabled = Notice.chat("Private messages have been disabled for {PLAYER}!"); - public Notice otherMessagesEnabled = Notice.chat("Private messages have been enabled for {PLAYER}!"); + public Notice otherMessagesDisabled = Notice.chat("Private messages have been disabled for {PLAYER}!"); + public Notice otherMessagesEnabled = Notice.chat("Private messages have been enabled for {PLAYER}!"); From f9cd9b71d9d5e5a4329c01efc614525bf74e8ed7 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 5 Feb 2025 18:20:40 +0100 Subject: [PATCH 18/26] Resolve @coderabbitai nitpick comment, simplify command and api --- .../toggle/PrivateChatToggleState.java | 4 +-- .../privatechat/PrivateChatServiceImpl.java | 2 +- .../toggle/PrivateChatToggleCommand.java | 36 ++++++++++--------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java index d43a03b17..f9cb6c0a1 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java @@ -6,12 +6,12 @@ public enum PrivateChatToggleState { /** - * State that represents that the player can be messaged by other players. + * Player can receive private messages. */ ENABLED, /** - * State that represents that the player has disabled incoming private messages. + * Player cannot receive private messages. */ DISABLED } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index 95bb71bd9..b245a2e3a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -61,7 +61,7 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { - if (privateChatToggleState.equals(PrivateChatToggleState.ENABLED)) { + if (privateChatToggleState.equals(PrivateChatToggleState.DISABLED)) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java index 8b0e4e8d1..c6b9d7034 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -29,12 +29,12 @@ public PrivateChatToggleCommand(PrivateChatToggleService privateChatToggleServic } @Execute - @DescriptionDocs(description = "Toggle receiving private messages on and off") - public void execute(@Context Player context, @OptionalArg PrivateChatToggleState state) { - UUID uniqueId = context.getUniqueId(); + @DescriptionDocs(description = "Switch receiving private messages", arguments = "") + public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState state) { + UUID uniqueId = sender.getUniqueId(); if (state == null) { - CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(context.getUniqueId()); + CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); privateChatToggleState.thenAccept(toggleState -> { if (toggleState == PrivateChatToggleState.DISABLED) { @@ -58,41 +58,43 @@ public void execute(@Context Player context, @OptionalArg PrivateChatToggleState @Execute @Permission("eternalcore.msgtoggle.other") - @DescriptionDocs(description = "Toggle private messages for other player", arguments = " ") - public void other(@Context CommandSender context, @Arg("player") Player player, @OptionalArg PrivateChatToggleState state) { + @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") + public void other(@Context CommandSender sender, @Arg("player") Player target, @OptionalArg PrivateChatToggleState state) { - UUID uniqueId = player.getUniqueId(); + UUID uniqueId = target.getUniqueId(); if (state == null) { CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); - privateChatToggleState.thenAccept(toggleState -> handleToggle(context, player, toggleState, uniqueId)); + privateChatToggleState.thenAccept(toggleState -> handleToggle(sender, target, toggleState)); return; } - handleToggle(context, player, state, uniqueId); + handleToggle(sender, target, state); } - private void handleToggle(CommandSender context, Player player, @NotNull PrivateChatToggleState state, UUID uniqueId) { - if (state.equals(PrivateChatToggleState.DISABLED)) { + private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatToggleState state) { + UUID uniqueId = target.getUniqueId(); + + if (state == PrivateChatToggleState.DISABLED) { this.enable(uniqueId); - if (this.isCommandSenderSameAsTarget(context, player)) { + if (this.isCommandSenderSameAsTarget(sender, target)) { this.noticeService.create() .notice(translation -> translation.privateChat().otherMessagesEnabled()) - .sender(context) - .placeholder("{PLAYER}", player.getName()) + .sender(sender) + .placeholder("{PLAYER}", target.getName()) .send(); } } else { this.disable(uniqueId); - if (this.isCommandSenderSameAsTarget(context, player)) { + if (this.isCommandSenderSameAsTarget(sender, target)) { this.noticeService.create() .notice(translation -> translation.privateChat().otherMessagesDisabled()) - .sender(context) - .placeholder("{PLAYER}", player.getName()) + .sender(sender) + .placeholder("{PLAYER}", target.getName()) .send(); } } From 39b6dfca37aa4ba1aa418d294e0e3fcc86be8acd Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 5 Feb 2025 18:57:48 +0100 Subject: [PATCH 19/26] Refactor names of variables following vLuckyyy comment --- .../toggle/PrivateChatToggleState.java | 4 +- .../privatechat/PrivateChatServiceImpl.java | 2 +- .../toggle/PrivateChatToggleCommand.java | 43 +++++++++++-------- .../PrivateChatToggleRepositoryOrmLite.java | 2 +- .../toggle/PrivateChatToggleServiceImpl.java | 2 - 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java index f9cb6c0a1..fe8c83df2 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java @@ -8,10 +8,10 @@ public enum PrivateChatToggleState { /** * Player can receive private messages. */ - ENABLED, + ENABLE, /** * Player cannot receive private messages. */ - DISABLED + DISABLE } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index b245a2e3a..ba0c7a71e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -61,7 +61,7 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { - if (privateChatToggleState.equals(PrivateChatToggleState.DISABLED)) { + if (privateChatToggleState == PrivateChatToggleState.DISABLE) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java index c6b9d7034..df2de4b10 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -34,10 +34,10 @@ public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState UUID uniqueId = sender.getUniqueId(); if (state == null) { - CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); + CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); - privateChatToggleState.thenAccept(toggleState -> { - if (toggleState == PrivateChatToggleState.DISABLED) { + completablePresentState.thenAccept(presentState -> { + if (presentState == PrivateChatToggleState.DISABLE) { this.enable(uniqueId); } else { @@ -48,11 +48,11 @@ public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState return; } - if (state == PrivateChatToggleState.DISABLED) { - this.enable(uniqueId); + if (state == PrivateChatToggleState.DISABLE) { + this.disable(uniqueId); } else { - this.disable(uniqueId); + this.enable(uniqueId); } } @@ -64,8 +64,15 @@ public void other(@Context CommandSender sender, @Arg("player") Player target, @ UUID uniqueId = target.getUniqueId(); if (state == null) { - CompletableFuture privateChatToggleState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); - privateChatToggleState.thenAccept(toggleState -> handleToggle(sender, target, toggleState)); + CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); + completablePresentState.thenAccept(presentState -> { + if (presentState == PrivateChatToggleState.DISABLE) { + handleToggle(sender, target, PrivateChatToggleState.ENABLE); + } + else { + handleToggle(sender, target, PrivateChatToggleState.DISABLE); + } + }); return; } @@ -73,26 +80,26 @@ public void other(@Context CommandSender sender, @Arg("player") Player target, @ handleToggle(sender, target, state); } - private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatToggleState state) { + private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatToggleState desiredState) { UUID uniqueId = target.getUniqueId(); - if (state == PrivateChatToggleState.DISABLED) { - this.enable(uniqueId); + if (desiredState == PrivateChatToggleState.DISABLE) { + this.disable(uniqueId); - if (this.isCommandSenderSameAsTarget(sender, target)) { + if (!this.isCommandSenderSameAsTarget(sender, target)) { this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesEnabled()) + .notice(translation -> translation.privateChat().otherMessagesDisabled()) .sender(sender) .placeholder("{PLAYER}", target.getName()) .send(); } } else { - this.disable(uniqueId); + this.enable(uniqueId); - if (this.isCommandSenderSameAsTarget(sender, target)) { + if (!this.isCommandSenderSameAsTarget(sender, target)) { this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesDisabled()) + .notice(translation -> translation.privateChat().otherMessagesEnabled()) .sender(sender) .placeholder("{PLAYER}", target.getName()) .send(); @@ -101,7 +108,7 @@ private void handleToggle(CommandSender sender, Player target, @NotNull PrivateC } private void enable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ENABLED); + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ENABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesEnabled()) @@ -110,7 +117,7 @@ private void enable(UUID uniqueId) { } private void disable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.DISABLED); + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.DISABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesDisabled()) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java index fedb2fde9..ad6aca94c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java @@ -23,7 +23,7 @@ private PrivateChatToggleRepositoryOrmLite(DatabaseManager databaseManager, Sche public CompletableFuture getPrivateChatToggleState(UUID uuid) { return this.selectSafe(PrivateChatToggleWrapper.class, uuid) .thenApply( - optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.ENABLED) + optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.ENABLE) ); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java index 430a460fa..7ef01d0b9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java @@ -34,6 +34,4 @@ public void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle) { this.cachedToggleStates.put(uuid, toggle); this.msgToggleRepository.setPrivateChatToggle(uuid, toggle); } - - } From 1ed9c3460ec07a588901fa26defdd453a5ddd7bd Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 5 Feb 2025 19:02:55 +0100 Subject: [PATCH 20/26] Change name from toggleState to State --- ...ToggleState.java => PrivateChatState.java} | 2 +- .../privatechat/toggle/PrivateChatToggle.java | 6 ++--- .../toggle/PrivateChatToggleService.java | 4 +-- .../privatechat/PrivateChatServiceImpl.java | 4 +-- .../toggle/PrivateChatToggleCommand.java | 26 +++++++++---------- .../toggle/PrivateChatToggleRepository.java | 4 +-- .../PrivateChatToggleRepositoryOrmLite.java | 6 ++--- .../toggle/PrivateChatToggleServiceImpl.java | 7 +++-- .../toggle/PrivateChatToggleWrapper.java | 8 +++--- 9 files changed, 33 insertions(+), 34 deletions(-) rename eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleState.java => PrivateChatState.java} (88%) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java similarity index 88% rename from eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java rename to eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java index fe8c83df2..8c55b6203 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java @@ -3,7 +3,7 @@ /** * Enum representing state of blocking incoming private messages by the player. */ -public enum PrivateChatToggleState { +public enum PrivateChatState { /** * Player can receive private messages. diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java index 9699f0b2d..b783529f4 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java @@ -8,9 +8,9 @@ public class PrivateChatToggle { UUID uuid; - PrivateChatToggleState state; + PrivateChatState state; - public PrivateChatToggle(UUID uuid, PrivateChatToggleState toggle) { + public PrivateChatToggle(UUID uuid, PrivateChatState toggle) { this.uuid = uuid; this.state = toggle; } @@ -19,7 +19,7 @@ public UUID getUuid() { return uuid; } - public PrivateChatToggleState getState() { + public PrivateChatState getState() { return state; } } diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java index 97641ead8..3328a5865 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java @@ -14,7 +14,7 @@ public interface PrivateChatToggleService { * @param uuid player's UUID. * @return state of player's private chat messages blocking. */ - CompletableFuture getPrivateChatToggleState(UUID uuid); + CompletableFuture getPrivateChatToggleState(UUID uuid); /** * Sets blocking of incoming private messages. @@ -22,6 +22,6 @@ public interface PrivateChatToggleService { * @param uuid player's UUID. * @param toggle desired state of player's private chat messages blocking. */ - void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle); + void togglePrivateChat(UUID uuid, PrivateChatState toggle); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index ba0c7a71e..6fda06d0d 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -3,7 +3,7 @@ import com.eternalcode.core.event.EventCaller; import com.eternalcode.core.feature.ignore.IgnoreService; import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleService; -import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleState; +import com.eternalcode.core.feature.privatechat.toggle.PrivateChatState; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; import com.eternalcode.core.notice.NoticeService; @@ -61,7 +61,7 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { - if (privateChatToggleState == PrivateChatToggleState.DISABLE) { + if (privateChatToggleState == PrivateChatState.DISABLE) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java index df2de4b10..ed9ada389 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java @@ -30,14 +30,14 @@ public PrivateChatToggleCommand(PrivateChatToggleService privateChatToggleServic @Execute @DescriptionDocs(description = "Switch receiving private messages", arguments = "") - public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState state) { + public void execute(@Context Player sender, @OptionalArg PrivateChatState state) { UUID uniqueId = sender.getUniqueId(); if (state == null) { - CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); + CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); completablePresentState.thenAccept(presentState -> { - if (presentState == PrivateChatToggleState.DISABLE) { + if (presentState == PrivateChatState.DISABLE) { this.enable(uniqueId); } else { @@ -48,7 +48,7 @@ public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState return; } - if (state == PrivateChatToggleState.DISABLE) { + if (state == PrivateChatState.DISABLE) { this.disable(uniqueId); } else { @@ -59,18 +59,18 @@ public void execute(@Context Player sender, @OptionalArg PrivateChatToggleState @Execute @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") - public void other(@Context CommandSender sender, @Arg("player") Player target, @OptionalArg PrivateChatToggleState state) { + public void other(@Context CommandSender sender, @Arg("player") Player target, @OptionalArg PrivateChatState state) { UUID uniqueId = target.getUniqueId(); if (state == null) { - CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); + CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); completablePresentState.thenAccept(presentState -> { - if (presentState == PrivateChatToggleState.DISABLE) { - handleToggle(sender, target, PrivateChatToggleState.ENABLE); + if (presentState == PrivateChatState.DISABLE) { + handleToggle(sender, target, PrivateChatState.ENABLE); } else { - handleToggle(sender, target, PrivateChatToggleState.DISABLE); + handleToggle(sender, target, PrivateChatState.DISABLE); } }); @@ -80,10 +80,10 @@ public void other(@Context CommandSender sender, @Arg("player") Player target, @ handleToggle(sender, target, state); } - private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatToggleState desiredState) { + private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatState desiredState) { UUID uniqueId = target.getUniqueId(); - if (desiredState == PrivateChatToggleState.DISABLE) { + if (desiredState == PrivateChatState.DISABLE) { this.disable(uniqueId); if (!this.isCommandSenderSameAsTarget(sender, target)) { @@ -108,7 +108,7 @@ private void handleToggle(CommandSender sender, Player target, @NotNull PrivateC } private void enable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.ENABLE); + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatState.ENABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesEnabled()) @@ -117,7 +117,7 @@ private void enable(UUID uniqueId) { } private void disable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatToggleState.DISABLE); + this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatState.DISABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesDisabled()) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java index 66cd5fcfe..08950a700 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java @@ -6,8 +6,8 @@ interface PrivateChatToggleRepository { - CompletableFuture getPrivateChatToggleState(UUID uuid); + CompletableFuture getPrivateChatToggleState(UUID uuid); - CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatToggleState toggledOff); + CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatState toggledOff); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java index ad6aca94c..c2bf9c860 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java @@ -20,15 +20,15 @@ private PrivateChatToggleRepositoryOrmLite(DatabaseManager databaseManager, Sche } @Override - public CompletableFuture getPrivateChatToggleState(UUID uuid) { + public CompletableFuture getPrivateChatToggleState(UUID uuid) { return this.selectSafe(PrivateChatToggleWrapper.class, uuid) .thenApply( - optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatToggleState.ENABLE) + optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatState.ENABLE) ); } @Override - public CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatToggleState toggledOff) { + public CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatState toggledOff) { return this.save(PrivateChatToggleWrapper.class, new PrivateChatToggleWrapper(uuid, toggledOff)) .thenApply(status -> null); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java index 7ef01d0b9..81d55b9d9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java @@ -2,7 +2,6 @@ import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; -import java.util.HashMap; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; @@ -11,7 +10,7 @@ public class PrivateChatToggleServiceImpl implements PrivateChatToggleService { private final PrivateChatToggleRepository msgToggleRepository; - private final ConcurrentHashMap cachedToggleStates; + private final ConcurrentHashMap cachedToggleStates; @Inject public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleRepository) { @@ -21,7 +20,7 @@ public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleReposit @Override - public CompletableFuture getPrivateChatToggleState(UUID uuid) { + public CompletableFuture getPrivateChatToggleState(UUID uuid) { if (this.cachedToggleStates.containsKey(uuid)) { return CompletableFuture.completedFuture(this.cachedToggleStates.get(uuid)); } @@ -30,7 +29,7 @@ public CompletableFuture getPrivateChatToggleState(UUID } @Override - public void togglePrivateChat(UUID uuid, PrivateChatToggleState toggle) { + public void togglePrivateChat(UUID uuid, PrivateChatState toggle) { this.cachedToggleStates.put(uuid, toggle); this.msgToggleRepository.setPrivateChatToggle(uuid, toggle); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java index 482791ce5..0b028726c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java @@ -11,9 +11,9 @@ class PrivateChatToggleWrapper { private UUID uniqueId; @DatabaseField(columnName = "enabled") - private PrivateChatToggleState state; + private PrivateChatState state; - PrivateChatToggleWrapper(UUID id, PrivateChatToggleState enabled) { + PrivateChatToggleWrapper(UUID id, PrivateChatState enabled) { this.uniqueId = id; this.state = enabled; } @@ -24,11 +24,11 @@ static PrivateChatToggleWrapper from(PrivateChatToggle msgToggle) { return new PrivateChatToggleWrapper(msgToggle.getUuid(), msgToggle.getState()); } - PrivateChatToggleState isEnabled() { + PrivateChatState isEnabled() { return this.state; } - void setState(PrivateChatToggleState state) { + void setState(PrivateChatState state) { this.state = state; } } From d72ae5ce1e85ca80cf5c4ba3ccf42ed8634bafad Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Thu, 6 Feb 2025 23:51:02 +0100 Subject: [PATCH 21/26] Simplify logic (i hope @Rollczi will like it) refactor to PrivateChatState instead of toggle --- ...vice.java => PrivateChatStateService.java} | 6 +- .../privatechat/toggle/PrivateChatToggle.java | 6 +- .../privatechat/PrivateChatServiceImpl.java | 12 +-- ...mand.java => PrivateChatStateCommand.java} | 99 +++++++++---------- .../toggle/PrivateChatStateRepository.java | 13 +++ ...=> PrivateChatStateRepositoryOrmLite.java} | 16 +-- ....java => PrivateChatStateServiceImpl.java} | 12 +-- ...pper.java => PrivateChatStateWrapper.java} | 12 +-- .../toggle/PrivateChatToggleRepository.java | 13 --- 9 files changed, 92 insertions(+), 97 deletions(-) rename eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleService.java => PrivateChatStateService.java} (74%) rename eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleCommand.java => PrivateChatStateCommand.java} (55%) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepository.java rename eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleRepositoryOrmLite.java => PrivateChatStateRepositoryOrmLite.java} (50%) rename eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleServiceImpl.java => PrivateChatStateServiceImpl.java} (64%) rename eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/{PrivateChatToggleWrapper.java => PrivateChatStateWrapper.java} (60%) delete mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java similarity index 74% rename from eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java rename to eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java index 3328a5865..0f23082e3 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java @@ -4,9 +4,9 @@ import java.util.concurrent.CompletableFuture; /** - * This Service manages the state of player's private chat messages blocking + * This Service manages player's receiving of private messages */ -public interface PrivateChatToggleService { +public interface PrivateChatStateService { /** * Checks status of player's private chat messages blocking. @@ -14,7 +14,7 @@ public interface PrivateChatToggleService { * @param uuid player's UUID. * @return state of player's private chat messages blocking. */ - CompletableFuture getPrivateChatToggleState(UUID uuid); + CompletableFuture getPrivateChatState(UUID uuid); /** * Sets blocking of incoming private messages. diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java index b783529f4..b4e009ba3 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java @@ -3,12 +3,12 @@ import java.util.UUID; /** - * Represents a player's private chat toggle state. + * Represents a player's private chat state. */ public class PrivateChatToggle { - UUID uuid; - PrivateChatState state; + private final UUID uuid; + private final PrivateChatState state; public PrivateChatToggle(UUID uuid, PrivateChatState toggle) { this.uuid = uuid; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index 6fda06d0d..f04fcd1c5 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -2,7 +2,7 @@ import com.eternalcode.core.event.EventCaller; import com.eternalcode.core.feature.ignore.IgnoreService; -import com.eternalcode.core.feature.privatechat.toggle.PrivateChatToggleService; +import com.eternalcode.core.feature.privatechat.toggle.PrivateChatStateService; import com.eternalcode.core.feature.privatechat.toggle.PrivateChatState; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; @@ -26,7 +26,7 @@ class PrivateChatServiceImpl implements PrivateChatService { private final UserManager userManager; private final PrivateChatPresenter presenter; private final EventCaller eventCaller; - private final PrivateChatToggleService privateChatToggleService; + private final PrivateChatStateService privateChatStateService; private final Cache replies = CacheBuilder.newBuilder() .expireAfterWrite(Duration.ofHours(1)) @@ -40,13 +40,13 @@ class PrivateChatServiceImpl implements PrivateChatService { IgnoreService ignoreService, UserManager userManager, EventCaller eventCaller, - PrivateChatToggleService privateChatToggleService + PrivateChatStateService privateChatStateService ) { this.noticeService = noticeService; this.ignoreService = ignoreService; this.userManager = userManager; this.eventCaller = eventCaller; - this.privateChatToggleService = privateChatToggleService; + this.privateChatStateService = privateChatStateService; this.presenter = new PrivateChatPresenter(noticeService); } @@ -60,8 +60,8 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); - this.privateChatToggleService.getPrivateChatToggleState(uniqueId).thenAccept(privateChatToggleState -> { - if (privateChatToggleState == PrivateChatState.DISABLE) { + this.privateChatStateService.getPrivateChatState(uniqueId).thenAccept(privateChatState -> { + if (privateChatState == PrivateChatState.DISABLE) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); return; diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java similarity index 55% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java index ed9ada389..c48aedcdc 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java @@ -7,46 +7,43 @@ 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.optional.OptionalArg; import dev.rollczi.litecommands.annotations.permission.Permission; import java.util.UUID; -import java.util.concurrent.CompletableFuture; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") -public class PrivateChatToggleCommand { +public class PrivateChatStateCommand { - private final PrivateChatToggleService privateChatToggleService; + private final PrivateChatStateService privateChatStateService; private final NoticeService noticeService; @Inject - public PrivateChatToggleCommand(PrivateChatToggleService privateChatToggleService, NoticeService noticeService) { - this.privateChatToggleService = privateChatToggleService; + public PrivateChatStateCommand(PrivateChatStateService privateChatStateService, NoticeService noticeService) { + this.privateChatStateService = privateChatStateService; this.noticeService = noticeService; } @Execute - @DescriptionDocs(description = "Switch receiving private messages", arguments = "") - public void execute(@Context Player sender, @OptionalArg PrivateChatState state) { - UUID uniqueId = sender.getUniqueId(); - - if (state == null) { - CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(sender.getUniqueId()); + @DescriptionDocs(description = "Toggle receiving private messages") + public void execute(@Context Player sender) { + this.privateChatStateService.getPrivateChatState(sender.getUniqueId()).thenAccept(presentState -> { + if (presentState == PrivateChatState.DISABLE) { + this.enable(sender.getUniqueId()); + } + else { + this.disable(sender.getUniqueId()); + } + }); + } - completablePresentState.thenAccept(presentState -> { - if (presentState == PrivateChatState.DISABLE) { - this.enable(uniqueId); - } - else { - this.disable(uniqueId); - } - }); - return; - } + @Execute + @DescriptionDocs(description = "Switch receiving private messages", arguments = "") + public void execute(@Context Player sender, @Arg PrivateChatState state) { + UUID uniqueId = sender.getUniqueId(); if (state == PrivateChatState.DISABLE) { this.disable(uniqueId); @@ -54,38 +51,35 @@ public void execute(@Context Player sender, @OptionalArg PrivateChatState state) else { this.enable(uniqueId); } + } @Execute @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") - public void other(@Context CommandSender sender, @Arg("player") Player target, @OptionalArg PrivateChatState state) { - - UUID uniqueId = target.getUniqueId(); - - if (state == null) { - CompletableFuture completablePresentState = this.privateChatToggleService.getPrivateChatToggleState(uniqueId); - completablePresentState.thenAccept(presentState -> { - if (presentState == PrivateChatState.DISABLE) { - handleToggle(sender, target, PrivateChatState.ENABLE); - } - else { - handleToggle(sender, target, PrivateChatState.DISABLE); - } - }); - - return; - } - + public void other(@Context CommandSender sender, @Arg Player target, @Arg PrivateChatState state) { handleToggle(sender, target, state); } + @Execute + @Permission("eternalcore.msgtoggle.other") + @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = "") + public void other(@Context CommandSender sender, @Arg Player target) { + this.privateChatStateService.getPrivateChatState(target.getUniqueId()).thenAccept(presentState -> { + if (presentState == PrivateChatState.DISABLE) { + this.handleToggle(sender, target, PrivateChatState.ENABLE); + } + else { + this.handleToggle(sender, target, PrivateChatState.DISABLE); + } + }); + } + private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatState desiredState) { UUID uniqueId = target.getUniqueId(); if (desiredState == PrivateChatState.DISABLE) { this.disable(uniqueId); - if (!this.isCommandSenderSameAsTarget(sender, target)) { this.noticeService.create() .notice(translation -> translation.privateChat().otherMessagesDisabled()) @@ -93,22 +87,23 @@ private void handleToggle(CommandSender sender, Player target, @NotNull PrivateC .placeholder("{PLAYER}", target.getName()) .send(); } + + return; } - else { - this.enable(uniqueId); - if (!this.isCommandSenderSameAsTarget(sender, target)) { - this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesEnabled()) - .sender(sender) - .placeholder("{PLAYER}", target.getName()) - .send(); - } + this.enable(uniqueId); + if (!this.isCommandSenderSameAsTarget(sender, target)) { + this.noticeService.create() + .notice(translation -> translation.privateChat().otherMessagesEnabled()) + .sender(sender) + .placeholder("{PLAYER}", target.getName()) + .send(); } + } private void enable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatState.ENABLE); + this.privateChatStateService.togglePrivateChat(uniqueId, PrivateChatState.ENABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesEnabled()) @@ -117,7 +112,7 @@ private void enable(UUID uniqueId) { } private void disable(UUID uniqueId) { - this.privateChatToggleService.togglePrivateChat(uniqueId, PrivateChatState.DISABLE); + this.privateChatStateService.togglePrivateChat(uniqueId, PrivateChatState.DISABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesDisabled()) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepository.java new file mode 100644 index 000000000..a153fd965 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepository.java @@ -0,0 +1,13 @@ +package com.eternalcode.core.feature.privatechat.toggle; + + +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +interface PrivateChatStateRepository { + + CompletableFuture getPrivateChatState(UUID uuid); + + CompletableFuture setPrivateChatState(UUID uuid, PrivateChatState toggledOff); + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java similarity index 50% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java index c2bf9c860..24decd5cf 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java @@ -11,25 +11,25 @@ import java.util.concurrent.CompletableFuture; @Repository -class PrivateChatToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements PrivateChatToggleRepository { +class PrivateChatStateRepositoryOrmLite extends AbstractRepositoryOrmLite implements PrivateChatStateRepository { @Inject - private PrivateChatToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { + private PrivateChatStateRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException { super(databaseManager, scheduler); - TableUtils.createTableIfNotExists(databaseManager.connectionSource(), PrivateChatToggleWrapper.class); + TableUtils.createTableIfNotExists(databaseManager.connectionSource(), PrivateChatStateWrapper.class); } @Override - public CompletableFuture getPrivateChatToggleState(UUID uuid) { - return this.selectSafe(PrivateChatToggleWrapper.class, uuid) + public CompletableFuture getPrivateChatState(UUID uuid) { + return this.selectSafe(PrivateChatStateWrapper.class, uuid) .thenApply( - optional -> optional.map(PrivateChatToggleWrapper::isEnabled).orElse(PrivateChatState.ENABLE) + optional -> optional.map(PrivateChatStateWrapper::isEnabled).orElse(PrivateChatState.ENABLE) ); } @Override - public CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatState toggledOff) { - return this.save(PrivateChatToggleWrapper.class, new PrivateChatToggleWrapper(uuid, toggledOff)) + public CompletableFuture setPrivateChatState(UUID uuid, PrivateChatState toggledOff) { + return this.save(PrivateChatStateWrapper.class, new PrivateChatStateWrapper(uuid, toggledOff)) .thenApply(status -> null); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java similarity index 64% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java index 81d55b9d9..aeeadd239 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java @@ -7,30 +7,30 @@ import java.util.concurrent.ConcurrentHashMap; @Service -public class PrivateChatToggleServiceImpl implements PrivateChatToggleService { +public class PrivateChatStateServiceImpl implements PrivateChatStateService { - private final PrivateChatToggleRepository msgToggleRepository; + private final PrivateChatStateRepository msgToggleRepository; private final ConcurrentHashMap cachedToggleStates; @Inject - public PrivateChatToggleServiceImpl(PrivateChatToggleRepository msgToggleRepository) { + public PrivateChatStateServiceImpl(PrivateChatStateRepository msgToggleRepository) { this.cachedToggleStates = new ConcurrentHashMap<>(); this.msgToggleRepository = msgToggleRepository; } @Override - public CompletableFuture getPrivateChatToggleState(UUID uuid) { + public CompletableFuture getPrivateChatState(UUID uuid) { if (this.cachedToggleStates.containsKey(uuid)) { return CompletableFuture.completedFuture(this.cachedToggleStates.get(uuid)); } - return this.msgToggleRepository.getPrivateChatToggleState(uuid); + return this.msgToggleRepository.getPrivateChatState(uuid); } @Override public void togglePrivateChat(UUID uuid, PrivateChatState toggle) { this.cachedToggleStates.put(uuid, toggle); - this.msgToggleRepository.setPrivateChatToggle(uuid, toggle); + this.msgToggleRepository.setPrivateChatState(uuid, toggle); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java similarity index 60% rename from eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java rename to eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java index 0b028726c..5cabb1a6f 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java @@ -4,8 +4,8 @@ import com.j256.ormlite.table.DatabaseTable; import java.util.UUID; -@DatabaseTable(tableName = "eternal_core_private_chat_toggle") -class PrivateChatToggleWrapper { +@DatabaseTable(tableName = "eternal_core_private_chat_state") +class PrivateChatStateWrapper { @DatabaseField(columnName = "id", id = true) private UUID uniqueId; @@ -13,15 +13,15 @@ class PrivateChatToggleWrapper { @DatabaseField(columnName = "enabled") private PrivateChatState state; - PrivateChatToggleWrapper(UUID id, PrivateChatState enabled) { + PrivateChatStateWrapper(UUID id, PrivateChatState enabled) { this.uniqueId = id; this.state = enabled; } - PrivateChatToggleWrapper() {} + PrivateChatStateWrapper() {} - static PrivateChatToggleWrapper from(PrivateChatToggle msgToggle) { - return new PrivateChatToggleWrapper(msgToggle.getUuid(), msgToggle.getState()); + static PrivateChatStateWrapper from(PrivateChatToggle msgToggle) { + return new PrivateChatStateWrapper(msgToggle.getUuid(), msgToggle.getState()); } PrivateChatState isEnabled() { diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java deleted file mode 100644 index 08950a700..000000000 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggleRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.eternalcode.core.feature.privatechat.toggle; - - -import java.util.UUID; -import java.util.concurrent.CompletableFuture; - -interface PrivateChatToggleRepository { - - CompletableFuture getPrivateChatToggleState(UUID uuid); - - CompletableFuture setPrivateChatToggle(UUID uuid, PrivateChatState toggledOff); - -} From dabdf7d6c7a5f61142f2a1ec4da65316af876abc Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 12 Feb 2025 19:40:05 +0100 Subject: [PATCH 22/26] Resolve master changes --- .../feature/privatechat/messages/ENPrivateMessages.java | 9 +++++++++ .../privatechat/messages/PLPrivateChatMessages.java | 9 +++++++++ .../privatechat/messages/PrivateChatMessages.java | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java index 7eef91591..e79653f1f 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java @@ -24,6 +24,15 @@ public class ENPrivateMessages implements PrivateChatMessages { public Notice socialSpyMessage = Notice.chat( "[ss] [{SENDER} -> {TARGET}]: {MESSAGE}"); + public Notice receiverDisabledMessages = Notice.chat("This player has disabled private messages!"); + + public Notice selfMessagesDisabled = Notice.chat("Private messages have been disabled!"); + public Notice selfMessagesEnabled = Notice.chat("Private messages have been enabled!"); + + @Description("# {PLAYER} - Player") + public Notice otherMessagesDisabled = Notice.chat("Private messages have been disabled for {PLAYER}!"); + public Notice otherMessagesEnabled = Notice.chat("Private messages have been enabled for {PLAYER}!"); + @Description(" ") public Notice socialSpyEnable = Notice.chat("SocialSpy has been {STATE}!"); public Notice socialSpyDisable = Notice.chat("SocialSpy has been {STATE}!"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PLPrivateChatMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PLPrivateChatMessages.java index c73883738..80f5b24b6 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PLPrivateChatMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PLPrivateChatMessages.java @@ -29,6 +29,15 @@ public class PLPrivateChatMessages implements PrivateChatMessages { public Notice socialSpyEnable = Notice.chat("SocialSpy został {STATE}!"); public Notice socialSpyDisable = Notice.chat("SocialSpy został {STATE}!"); + public Notice receiverDisabledMessages = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + + public Notice selfMessagesDisabled = Notice.chat("Wiadomości prywatne zostały wyłączone!"); + public Notice selfMessagesEnabled = Notice.chat("Wiadomości prywatne zostały włączone!"); + + @Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"}) + public Notice otherMessagesDisabled = Notice.chat("Wiadomości prywatne zostały wyłączone dla gracza {PLAYER}!"); + public Notice otherMessagesEnabled = Notice.chat("Wiadomości prywatne zostały włączone dla gracza {PLAYER}!"); + @Description({" ", "# {PLAYER} - Gracz który jest zignorowany"}) public Notice ignorePlayer = Notice.chat("Zignorowano gracza {PLAYER}!"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PrivateChatMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PrivateChatMessages.java index afe4d9f27..87af6faf8 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PrivateChatMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/PrivateChatMessages.java @@ -11,6 +11,12 @@ public interface PrivateChatMessages { Notice socialSpyEnable(); Notice socialSpyDisable(); + Notice receiverDisabledMessages(); + Notice selfMessagesDisabled(); + Notice selfMessagesEnabled(); + Notice otherMessagesDisabled(); + Notice otherMessagesEnabled(); + Notice ignorePlayer(); Notice ignoreAll(); Notice unIgnorePlayer(); From 297cff4c5cfcc2a7dc1c0ba22e1a954c2c91f678 Mon Sep 17 00:00:00 2001 From: CitralFlo Date: Wed, 12 Feb 2025 19:52:11 +0100 Subject: [PATCH 23/26] Resolve @coderabbitai 's review --- .../privatechat/toggle/PrivateChatStateService.java | 2 +- .../feature/privatechat/messages/ENPrivateMessages.java | 4 ++-- .../toggle/PrivateChatStateRepositoryOrmLite.java | 2 +- .../privatechat/toggle/PrivateChatStateServiceImpl.java | 9 +++++++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java index 0f23082e3..3530fbfca 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java @@ -22,6 +22,6 @@ public interface PrivateChatStateService { * @param uuid player's UUID. * @param toggle desired state of player's private chat messages blocking. */ - void togglePrivateChat(UUID uuid, PrivateChatState toggle); + CompletableFuture togglePrivateChat(UUID uuid, PrivateChatState toggle); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java index e79653f1f..af806b828 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/messages/ENPrivateMessages.java @@ -48,10 +48,10 @@ public class ENPrivateMessages implements PrivateChatMessages { public Notice alreadyIgnorePlayer = Notice.chat("You already ignore this player!"); @Description("# {PLAYER} - Unignored player") - public Notice unIgnorePlayer = Notice.chat("{PLAYER} player has been uningored!"); + public Notice unIgnorePlayer = Notice.chat("{PLAYER} player has been unignored!"); @Description(" ") - public Notice unIgnoreAll = Notice.chat("All players have been uningored!"); + public Notice unIgnoreAll = Notice.chat("All players have been unignored!"); public Notice cantUnIgnoreYourself = Notice.chat("You can't unignore yourself!"); @Description({" ", "# {PLAYER} - Ignored player"}) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java index 24decd5cf..01ce52dc2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java @@ -24,7 +24,7 @@ public CompletableFuture getPrivateChatState(UUID uuid) { return this.selectSafe(PrivateChatStateWrapper.class, uuid) .thenApply( optional -> optional.map(PrivateChatStateWrapper::isEnabled).orElse(PrivateChatState.ENABLE) - ); + ).exceptionally(throwable -> PrivateChatState.ENABLE); } @Override diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java index aeeadd239..5ef1b12ff 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java @@ -29,8 +29,13 @@ public CompletableFuture getPrivateChatState(UUID uuid) { } @Override - public void togglePrivateChat(UUID uuid, PrivateChatState toggle) { + public CompletableFuture togglePrivateChat(UUID uuid, PrivateChatState toggle) { this.cachedToggleStates.put(uuid, toggle); - this.msgToggleRepository.setPrivateChatState(uuid, toggle); + + return this.msgToggleRepository.setPrivateChatState(uuid, toggle) + .exceptionally(throwable -> { + this.cachedToggleStates.remove(uuid); + return null; + }); } } From 1b57a89c5d5c699c93044acd8b45928189e4b55d Mon Sep 17 00:00:00 2001 From: Rollczi Date: Thu, 13 Feb 2025 17:44:16 +0100 Subject: [PATCH 24/26] Cleanup method and parameters names. Remove unused classes. --- .../toggle/PrivateChatStateService.java | 10 ++++---- .../privatechat/toggle/PrivateChatToggle.java | 25 ------------------- .../privatechat/PrivateChatServiceImpl.java | 2 +- .../toggle/PrivateChatStateCommand.java | 8 +++--- .../PrivateChatStateRepositoryOrmLite.java | 4 +-- .../toggle/PrivateChatStateServiceImpl.java | 16 ++++++------ .../toggle/PrivateChatStateWrapper.java | 8 ------ 7 files changed, 20 insertions(+), 53 deletions(-) delete mode 100644 eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java index 3530fbfca..e0a6e754a 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java @@ -11,17 +11,17 @@ public interface PrivateChatStateService { /** * Checks status of player's private chat messages blocking. * - * @param uuid player's UUID. + * @param playerUniqueId player's UUID. * @return state of player's private chat messages blocking. */ - CompletableFuture getPrivateChatState(UUID uuid); + CompletableFuture getChatState(UUID playerUniqueId); /** * Sets blocking of incoming private messages. * - * @param uuid player's UUID. - * @param toggle desired state of player's private chat messages blocking. + * @param playerUniqueId player's UUID. + * @param state desired state of player's private chat messages blocking. */ - CompletableFuture togglePrivateChat(UUID uuid, PrivateChatState toggle); + CompletableFuture setChatState(UUID playerUniqueId, PrivateChatState state); } diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java deleted file mode 100644 index b4e009ba3..000000000 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatToggle.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.eternalcode.core.feature.privatechat.toggle; - -import java.util.UUID; - -/** - * Represents a player's private chat state. - */ -public class PrivateChatToggle { - - private final UUID uuid; - private final PrivateChatState state; - - public PrivateChatToggle(UUID uuid, PrivateChatState toggle) { - this.uuid = uuid; - this.state = toggle; - } - - public UUID getUuid() { - return uuid; - } - - public PrivateChatState getState() { - return state; - } -} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java index f04fcd1c5..0bda0b17e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java @@ -60,7 +60,7 @@ void privateMessage(User sender, User target, String message) { UUID uniqueId = target.getUniqueId(); - this.privateChatStateService.getPrivateChatState(uniqueId).thenAccept(privateChatState -> { + this.privateChatStateService.getChatState(uniqueId).thenAccept(privateChatState -> { if (privateChatState == PrivateChatState.DISABLE) { this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().receiverDisabledMessages()); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java index c48aedcdc..21338e789 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java @@ -29,7 +29,7 @@ public PrivateChatStateCommand(PrivateChatStateService privateChatStateService, @Execute @DescriptionDocs(description = "Toggle receiving private messages") public void execute(@Context Player sender) { - this.privateChatStateService.getPrivateChatState(sender.getUniqueId()).thenAccept(presentState -> { + this.privateChatStateService.getChatState(sender.getUniqueId()).thenAccept(presentState -> { if (presentState == PrivateChatState.DISABLE) { this.enable(sender.getUniqueId()); } @@ -65,7 +65,7 @@ public void other(@Context CommandSender sender, @Arg Player target, @Arg Privat @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = "") public void other(@Context CommandSender sender, @Arg Player target) { - this.privateChatStateService.getPrivateChatState(target.getUniqueId()).thenAccept(presentState -> { + this.privateChatStateService.getChatState(target.getUniqueId()).thenAccept(presentState -> { if (presentState == PrivateChatState.DISABLE) { this.handleToggle(sender, target, PrivateChatState.ENABLE); } @@ -103,7 +103,7 @@ private void handleToggle(CommandSender sender, Player target, @NotNull PrivateC } private void enable(UUID uniqueId) { - this.privateChatStateService.togglePrivateChat(uniqueId, PrivateChatState.ENABLE); + this.privateChatStateService.setChatState(uniqueId, PrivateChatState.ENABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesEnabled()) @@ -112,7 +112,7 @@ private void enable(UUID uniqueId) { } private void disable(UUID uniqueId) { - this.privateChatStateService.togglePrivateChat(uniqueId, PrivateChatState.DISABLE); + this.privateChatStateService.setChatState(uniqueId, PrivateChatState.DISABLE); this.noticeService.create() .notice(translation -> translation.privateChat().selfMessagesDisabled()) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java index 01ce52dc2..e0376e564 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateRepositoryOrmLite.java @@ -28,8 +28,8 @@ public CompletableFuture getPrivateChatState(UUID uuid) { } @Override - public CompletableFuture setPrivateChatState(UUID uuid, PrivateChatState toggledOff) { - return this.save(PrivateChatStateWrapper.class, new PrivateChatStateWrapper(uuid, toggledOff)) + public CompletableFuture setPrivateChatState(UUID uuid, PrivateChatState state) { + return this.save(PrivateChatStateWrapper.class, new PrivateChatStateWrapper(uuid, state)) .thenApply(status -> null); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java index 5ef1b12ff..f394a3093 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java @@ -20,21 +20,21 @@ public PrivateChatStateServiceImpl(PrivateChatStateRepository msgToggleRepositor @Override - public CompletableFuture getPrivateChatState(UUID uuid) { - if (this.cachedToggleStates.containsKey(uuid)) { - return CompletableFuture.completedFuture(this.cachedToggleStates.get(uuid)); + public CompletableFuture getChatState(UUID playerUniqueId) { + if (this.cachedToggleStates.containsKey(playerUniqueId)) { + return CompletableFuture.completedFuture(this.cachedToggleStates.get(playerUniqueId)); } - return this.msgToggleRepository.getPrivateChatState(uuid); + return this.msgToggleRepository.getPrivateChatState(playerUniqueId); } @Override - public CompletableFuture togglePrivateChat(UUID uuid, PrivateChatState toggle) { - this.cachedToggleStates.put(uuid, toggle); + public CompletableFuture setChatState(UUID playerUniqueId, PrivateChatState state) { + this.cachedToggleStates.put(playerUniqueId, state); - return this.msgToggleRepository.setPrivateChatState(uuid, toggle) + return this.msgToggleRepository.setPrivateChatState(playerUniqueId, state) .exceptionally(throwable -> { - this.cachedToggleStates.remove(uuid); + this.cachedToggleStates.remove(playerUniqueId); return null; }); } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java index 5cabb1a6f..c87dbccd1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateWrapper.java @@ -20,15 +20,7 @@ class PrivateChatStateWrapper { PrivateChatStateWrapper() {} - static PrivateChatStateWrapper from(PrivateChatToggle msgToggle) { - return new PrivateChatStateWrapper(msgToggle.getUuid(), msgToggle.getState()); - } - PrivateChatState isEnabled() { return this.state; } - - void setState(PrivateChatState state) { - this.state = state; - } } From 6227fa34a96e1edda1dcd84eaf42f7c28fda548c Mon Sep 17 00:00:00 2001 From: Rollczi Date: Thu, 13 Feb 2025 19:44:23 +0100 Subject: [PATCH 25/26] Simplify commands --- .../privatechat/toggle/PrivateChatState.java | 7 +- .../toggle/PrivateChatStateService.java | 9 ++ .../toggle/PrivateChatStateCommand.java | 103 ++++++------------ .../toggle/PrivateChatStateServiceImpl.java | 15 ++- 4 files changed, 59 insertions(+), 75 deletions(-) diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java index 8c55b6203..fbe4bfb7a 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatState.java @@ -13,5 +13,10 @@ public enum PrivateChatState { /** * Player cannot receive private messages. */ - DISABLE + DISABLE; + + PrivateChatState invert() { + return this == ENABLE ? DISABLE : ENABLE; + } + } diff --git a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java index e0a6e754a..6b99485f4 100644 --- a/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java +++ b/eternalcore-api/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateService.java @@ -24,4 +24,13 @@ public interface PrivateChatStateService { */ CompletableFuture setChatState(UUID playerUniqueId, PrivateChatState state); + + /** + * Toggle blocking of incoming private messages. + * + * @param playerUniqueId player's UUID. + * @return new state of player's private chat messages blocking. + */ + CompletableFuture toggleChatState(UUID playerUniqueId); + } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java index 21338e789..d009b6379 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java @@ -29,101 +29,60 @@ public PrivateChatStateCommand(PrivateChatStateService privateChatStateService, @Execute @DescriptionDocs(description = "Toggle receiving private messages") public void execute(@Context Player sender) { - this.privateChatStateService.getChatState(sender.getUniqueId()).thenAccept(presentState -> { - if (presentState == PrivateChatState.DISABLE) { - this.enable(sender.getUniqueId()); - } - else { - this.disable(sender.getUniqueId()); - } - }); + UUID player = sender.getUniqueId(); + this.privateChatStateService.toggleChatState(player) + .thenAccept(toggledState -> noticePlayer(toggledState, player)); } - @Execute - @DescriptionDocs(description = "Switch receiving private messages", arguments = "") + @DescriptionDocs(description = "Switch receiving private messages", arguments = "") public void execute(@Context Player sender, @Arg PrivateChatState state) { - UUID uniqueId = sender.getUniqueId(); - - if (state == PrivateChatState.DISABLE) { - this.disable(uniqueId); - } - else { - this.enable(uniqueId); - } - + UUID player = sender.getUniqueId(); + this.privateChatStateService.setChatState(player, state) + .thenAccept(ignored -> noticePlayer(state, player)); } @Execute @Permission("eternalcore.msgtoggle.other") - @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") - public void other(@Context CommandSender sender, @Arg Player target, @Arg PrivateChatState state) { - handleToggle(sender, target, state); + @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = "") + public void other(@Context CommandSender sender, @Arg Player target) { + UUID player = target.getUniqueId(); + this.privateChatStateService.toggleChatState(player) + .thenAccept(toggledState -> noticeOtherPlayer(sender, toggledState, target)); } @Execute @Permission("eternalcore.msgtoggle.other") - @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = "") - public void other(@Context CommandSender sender, @Arg Player target) { - this.privateChatStateService.getChatState(target.getUniqueId()).thenAccept(presentState -> { - if (presentState == PrivateChatState.DISABLE) { - this.handleToggle(sender, target, PrivateChatState.ENABLE); - } - else { - this.handleToggle(sender, target, PrivateChatState.DISABLE); - } - }); + @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") + public void other(@Context CommandSender sender, @Arg Player target, @Arg PrivateChatState state) { + UUID player = target.getUniqueId(); + this.privateChatStateService.setChatState(player, state) + .thenAccept(ignored -> noticeOtherPlayer(sender, state, target)); } - private void handleToggle(CommandSender sender, Player target, @NotNull PrivateChatState desiredState) { - UUID uniqueId = target.getUniqueId(); - - if (desiredState == PrivateChatState.DISABLE) { - this.disable(uniqueId); - if (!this.isCommandSenderSameAsTarget(sender, target)) { - this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesDisabled()) - .sender(sender) - .placeholder("{PLAYER}", target.getName()) - .send(); - } - + private void noticeOtherPlayer(CommandSender sender, PrivateChatState state, Player target) { + if (sender.equals(target)) { return; } - this.enable(uniqueId); - if (!this.isCommandSenderSameAsTarget(sender, target)) { - this.noticeService.create() - .notice(translation -> translation.privateChat().otherMessagesEnabled()) - .sender(sender) - .placeholder("{PLAYER}", target.getName()) - .send(); - } - - } - - private void enable(UUID uniqueId) { - this.privateChatStateService.setChatState(uniqueId, PrivateChatState.ENABLE); - this.noticeService.create() - .notice(translation -> translation.privateChat().selfMessagesEnabled()) - .player(uniqueId) + .sender(sender) + .notice(translation -> state == PrivateChatState.DISABLE + ? translation.privateChat().otherMessagesDisabled() + : translation.privateChat().otherMessagesEnabled() + ) + .placeholder("{PLAYER}", target.getName()) .send(); } - private void disable(UUID uniqueId) { - this.privateChatStateService.setChatState(uniqueId, PrivateChatState.DISABLE); - + private void noticePlayer(PrivateChatState state, UUID player) { this.noticeService.create() - .notice(translation -> translation.privateChat().selfMessagesDisabled()) - .player(uniqueId) + .player(player) + .notice(translation -> state == PrivateChatState.ENABLE + ? translation.privateChat().selfMessagesEnabled() + : translation.privateChat().selfMessagesDisabled() + ) .send(); } - private boolean isCommandSenderSameAsTarget(CommandSender context, Player player) { - if (context instanceof Player commandSender) { - return commandSender.getUniqueId().equals(player.getUniqueId()); - } - return false; - } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java index f394a3093..30257f30b 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateServiceImpl.java @@ -5,17 +5,19 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; @Service -public class PrivateChatStateServiceImpl implements PrivateChatStateService { +class PrivateChatStateServiceImpl implements PrivateChatStateService { private final PrivateChatStateRepository msgToggleRepository; private final ConcurrentHashMap cachedToggleStates; @Inject - public PrivateChatStateServiceImpl(PrivateChatStateRepository msgToggleRepository) { + PrivateChatStateServiceImpl(PrivateChatStateRepository msgToggleRepository) { this.cachedToggleStates = new ConcurrentHashMap<>(); this.msgToggleRepository = msgToggleRepository; + } @@ -38,4 +40,13 @@ public CompletableFuture setChatState(UUID playerUniqueId, PrivateChatStat return null; }); } + + @Override + public CompletableFuture toggleChatState(UUID playerUniqueId) { + return this.getChatState(playerUniqueId).thenCompose(state -> { + PrivateChatState newState = state.invert(); + return this.setChatState(playerUniqueId, newState) + .thenApply(aVoid -> newState); + }); + } } From 5a41247482df2c55db91a12aa1ce8b3fb28805d7 Mon Sep 17 00:00:00 2001 From: Rollczi Date: Thu, 13 Feb 2025 20:33:42 +0100 Subject: [PATCH 26/26] Fix command messages --- .../toggle/PrivateChatStateCommand.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java index d009b6379..9edef3de2 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/toggle/PrivateChatStateCommand.java @@ -11,24 +11,23 @@ import java.util.UUID; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; @Command(name = "msgtoggle") @Permission("eternalcore.msgtoggle") -public class PrivateChatStateCommand { +class PrivateChatStateCommand { private final PrivateChatStateService privateChatStateService; private final NoticeService noticeService; @Inject - public PrivateChatStateCommand(PrivateChatStateService privateChatStateService, NoticeService noticeService) { + PrivateChatStateCommand(PrivateChatStateService privateChatStateService, NoticeService noticeService) { this.privateChatStateService = privateChatStateService; this.noticeService = noticeService; } @Execute @DescriptionDocs(description = "Toggle receiving private messages") - public void execute(@Context Player sender) { + void execute(@Context Player sender) { UUID player = sender.getUniqueId(); this.privateChatStateService.toggleChatState(player) .thenAccept(toggledState -> noticePlayer(toggledState, player)); @@ -36,7 +35,7 @@ public void execute(@Context Player sender) { @Execute @DescriptionDocs(description = "Switch receiving private messages", arguments = "") - public void execute(@Context Player sender, @Arg PrivateChatState state) { + void execute(@Context Player sender, @Arg PrivateChatState state) { UUID player = sender.getUniqueId(); this.privateChatStateService.setChatState(player, state) .thenAccept(ignored -> noticePlayer(state, player)); @@ -45,7 +44,7 @@ public void execute(@Context Player sender, @Arg PrivateChatState state) { @Execute @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = "") - public void other(@Context CommandSender sender, @Arg Player target) { + void other(@Context CommandSender sender, @Arg Player target) { UUID player = target.getUniqueId(); this.privateChatStateService.toggleChatState(player) .thenAccept(toggledState -> noticeOtherPlayer(sender, toggledState, target)); @@ -54,13 +53,14 @@ public void other(@Context CommandSender sender, @Arg Player target) { @Execute @Permission("eternalcore.msgtoggle.other") @DescriptionDocs(description = "Switch receiving private messages for other player", arguments = " ") - public void other(@Context CommandSender sender, @Arg Player target, @Arg PrivateChatState state) { + void other(@Context CommandSender sender, @Arg Player target, @Arg PrivateChatState state) { UUID player = target.getUniqueId(); this.privateChatStateService.setChatState(player, state) .thenAccept(ignored -> noticeOtherPlayer(sender, state, target)); } private void noticeOtherPlayer(CommandSender sender, PrivateChatState state, Player target) { + this.noticePlayer(state, target.getUniqueId()); if (sender.equals(target)) { return; }