Skip to content

Commit ffd29c5

Browse files
committed
In progress: add messages, setup methods and commands
1 parent b5e54ad commit ffd29c5

File tree

8 files changed

+105
-14
lines changed

8 files changed

+105
-14
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
package com.eternalcode.core.feature.msgtoggle;
22

3+
import java.util.UUID;
4+
35
public interface MsgToggleService {
6+
7+
boolean hasMsgToggledOff(UUID uuid);
8+
9+
void toggleMsg(UUID uuid, boolean toggle);
10+
411
}
Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,73 @@
11
package com.eternalcode.core.feature.msgtoggle;
22

3+
import com.eternalcode.core.notice.NoticeService;
34
import dev.rollczi.litecommands.annotations.argument.Arg;
45
import dev.rollczi.litecommands.annotations.command.Command;
56
import dev.rollczi.litecommands.annotations.context.Context;
67
import dev.rollczi.litecommands.annotations.execute.Execute;
78
import dev.rollczi.litecommands.annotations.permission.Permission;
8-
import org.bukkit.command.CommandSender;
99
import org.bukkit.entity.Player;
1010

1111
@Command(name = "msgtoggle")
1212
@Permission("eternalcore.msgtoggle")
1313
public class MsgToggleCommand {
1414

15+
private final MsgToggleService msgToggleService;
16+
private final NoticeService noticeService;
17+
18+
public MsgToggleCommand(MsgToggleService msgToggleService, NoticeService noticeService) {
19+
this.msgToggleService = msgToggleService;
20+
this.noticeService = noticeService;
21+
}
22+
1523
@Execute
1624
public void execute(@Context Player context) {
25+
boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(context.getUniqueId());
1726

27+
if (hasMsgToggledOff) {
28+
this.on(context);
29+
} else {
30+
this.off(context);
31+
}
1832
}
1933

2034
@Execute(name = "on")
2135
public void on(@Context Player context) {
36+
this.msgToggleService.toggleMsg(context.getUniqueId(), true);
2237

38+
this.noticeService.create()
39+
.notice(translation -> translation.privateChat().msgToggleSelfOn())
40+
.player(context.getUniqueId())
41+
.send();
2342
}
2443

2544
@Execute(name = "off")
2645
public void off(@Context Player context) {
46+
this.msgToggleService.toggleMsg(context.getUniqueId(), false);
47+
48+
this.noticeService.create()
49+
.notice(translation -> translation.privateChat().msgToggleSelfOff())
50+
.player(context.getUniqueId())
51+
.send();
52+
}
2753

54+
@Execute
55+
@Permission("eternalcore.msgtoggle.other")
56+
public void other(@Context Player context, @Arg("player") Player player) {
57+
boolean hasMsgToggledOff = this.msgToggleService.hasMsgToggledOff(player.getUniqueId());
58+
59+
this.other(context, player, !hasMsgToggledOff);
2860
}
2961

3062
@Execute
3163
@Permission("eternalcore.msgtoggle.other")
32-
public void other(@Context Player context, @Arg("player") String player) {
33-
context.getSender().sendMessage("You have enabled messages for someone else!");
64+
public void other(@Context Player context, @Arg("player") Player player, @Arg boolean toggle) {
65+
this.msgToggleService.toggleMsg(player.getUniqueId(), toggle);
66+
67+
this.noticeService.create()
68+
.notice(translation -> translation.privateChat().msgToggleOther(toggle))
69+
.player(player.getUniqueId())
70+
.send();
71+
3472
}
3573
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleRepositoryOrmLite.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@ class MsgToggleRepositoryOrmLite extends AbstractRepositoryOrmLite implements Ms
1515
@Inject
1616
private MsgToggleRepositoryOrmLite(DatabaseManager databaseManager, Scheduler scheduler) throws SQLException {
1717
super(databaseManager, scheduler);
18-
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggle.class);
18+
TableUtils.createTableIfNotExists(databaseManager.connectionSource(), MsgToggleWrapper.class);
1919
}
2020

2121
@Override
2222
public boolean isToggledOff(UUID uuid) {
23-
this.selectSafe(MsgToggle.class, uuid).thenApply(optional -> optional.isEmpty())
23+
// this.selectSafe(MsgToggle.class, uuid).thenApply(msgToggle -> {
24+
// msgToggle.isEmpty();
25+
// });
26+
return false;
2427
}
2528

2629
@Override
2730
public void setToggledOff(UUID uuid, boolean toggledOff) {
28-
31+
this.save(MsgToggle.class, new MsgToggle(uuid, false));
2932
}
3033

3134
@Override

eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggle.java renamed to eternalcore-core/src/main/java/com/eternalcode/core/feature/msgtoggle/MsgToggleWrapper.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,24 @@
55
import java.util.UUID;
66

77
@DatabaseTable(tableName = "msgtoggle")
8-
class MsgToggle {
8+
class MsgToggleWrapper {
99

1010
@DatabaseField(columnName = "id", id = true)
1111
private UUID id;
1212

1313
@DatabaseField(columnName = "enabled")
1414
private boolean enabled;
1515

16-
MsgToggle() {
16+
MsgToggleWrapper() {
1717
}
1818

19-
MsgToggle(UUID id, boolean enabled) {
19+
MsgToggleWrapper(UUID id, boolean enabled) {
2020
this.id = id;
2121
this.enabled = enabled;
2222
}
2323

24+
static MsgToggleWrapper from(MsgToggleWrapper msgToggle) {
25+
return new MsgToggleWrapper(msgToggle.id, msgToggle.enabled);
26+
}
27+
2428
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/privatechat/PrivateChatServiceImpl.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.eternalcode.core.event.EventCaller;
44
import com.eternalcode.core.feature.ignore.IgnoreService;
5+
import com.eternalcode.core.feature.msgtoggle.MsgToggleService;
56
import com.eternalcode.core.injector.annotations.Inject;
67
import com.eternalcode.core.injector.annotations.component.Service;
78
import com.eternalcode.core.notice.NoticeService;
@@ -24,6 +25,7 @@ class PrivateChatServiceImpl implements PrivateChatService {
2425
private final UserManager userManager;
2526
private final PrivateChatPresenter presenter;
2627
private final EventCaller eventCaller;
28+
private final MsgToggleService msgToggleService;
2729

2830
private final Cache<UUID, UUID> replies = CacheBuilder.newBuilder()
2931
.expireAfterWrite(Duration.ofHours(1))
@@ -36,12 +38,14 @@ class PrivateChatServiceImpl implements PrivateChatService {
3638
NoticeService noticeService,
3739
IgnoreService ignoreService,
3840
UserManager userManager,
39-
EventCaller eventCaller
41+
EventCaller eventCaller,
42+
MsgToggleService msgToggleService
4043
) {
4144
this.noticeService = noticeService;
4245
this.ignoreService = ignoreService;
4346
this.userManager = userManager;
4447
this.eventCaller = eventCaller;
48+
this.msgToggleService = msgToggleService;
4549

4650
this.presenter = new PrivateChatPresenter(noticeService);
4751
}
@@ -53,13 +57,21 @@ void privateMessage(User sender, User target, String message) {
5357
return;
5458
}
5559

56-
this.ignoreService.isIgnored(target.getUniqueId(), sender.getUniqueId()).thenAccept(isIgnored -> {
60+
UUID uniqueId = target.getUniqueId();
61+
62+
if (this.msgToggleService.hasMsgToggledOff(uniqueId)) {
63+
this.noticeService.player(sender.getUniqueId(), translation -> translation.privateChat().msgToggledOff());
64+
65+
return;
66+
}
67+
68+
this.ignoreService.isIgnored(uniqueId, sender.getUniqueId()).thenAccept(isIgnored -> {
5769
if (!isIgnored) {
58-
this.replies.put(target.getUniqueId(), sender.getUniqueId());
59-
this.replies.put(sender.getUniqueId(), target.getUniqueId());
70+
this.replies.put(uniqueId, sender.getUniqueId());
71+
this.replies.put(sender.getUniqueId(), uniqueId);
6072
}
6173

62-
PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), target.getUniqueId(), message);
74+
PrivateChatEvent event = new PrivateChatEvent(sender.getUniqueId(), uniqueId, message);
6375
this.eventCaller.callEvent(event);
6476
this.presenter.onPrivate(new PrivateMessage(sender, target, event.getContent(), this.socialSpy, isIgnored));
6577
});

eternalcore-core/src/main/java/com/eternalcode/core/translation/Translation.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ interface PrivateChatSection {
252252
Notice socialSpyEnable();
253253
Notice socialSpyDisable();
254254

255+
Notice msgToggledOff();
256+
Notice msgToggleSelfOff();
257+
Notice msgToggleSelfOn();
258+
Notice msgTogglePlayerOff();
259+
Notice msgTogglePlayerOn();
260+
255261
Notice ignorePlayer();
256262
Notice ignoreAll();
257263
Notice unIgnorePlayer();

eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/ENTranslation.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,18 @@ public static class ENPrivateSection implements PrivateChatSection {
487487
public Notice socialSpyEnable = Notice.chat("<green>► <white>SocialSpy has been {STATE}<white>!");
488488
public Notice socialSpyDisable = Notice.chat("<red>► <white>SocialSpy has been {STATE}<white>!");
489489

490+
491+
public Notice msgToggledOff = Notice.chat("<red>► <dark_red> This player has disabled private messages!");
492+
493+
public Notice msgToggleSelfOff = Notice.chat("<green>► <white>Private messages have been disabled!");
494+
public Notice msgToggleSelfOn = Notice.chat("<green>► <white>Private messages have been enabled!");
495+
496+
@Description("# {PLAYER} - Player")
497+
public Notice msgTogglePlayerOff = Notice.chat("<green>► <white>Private messages have been disabled for <green>{PLAYER}<white>!");
498+
public Notice msgTogglePlayerOn = Notice.chat("<green>► <white>Private messages have been enabled for <green>{PLAYER}<white>!");
499+
500+
501+
490502
@Description({" ", "# {PLAYER} - Ignored player"})
491503
public Notice ignorePlayer = Notice.chat("<green>► {PLAYER} <white>player has been ignored!");
492504

eternalcore-core/src/main/java/com/eternalcode/core/translation/implementation/PLTranslation.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,15 @@ public static class PLPrivateChatSection implements PrivateChatSection {
494494
public Notice socialSpyEnable = Notice.chat("<green>► <white>SocialSpy został {STATE}<white>!");
495495
public Notice socialSpyDisable = Notice.chat("<red>► <white>SocialSpy został {STATE}<white>!");
496496

497+
public Notice msgToggledOff = Notice.chat("<red>► <dark_red>Wiadomości prywatne zostały wyłączone!");
498+
499+
public Notice msgToggleSelfOff = Notice.chat("<green>► <white>Wiadomości prywatne zostały wyłączone!");
500+
public Notice msgToggleSelfOn = Notice.chat("<green>► <white>Wiadomości prywatne zostały włączone!");
501+
502+
@Description({" ", "# {PLAYER} - Gracz któremu wyłączono wiadomości prywatne"})
503+
public Notice msgTogglePlayerOff = Notice.chat("<green>► <white>Wiadomości prywatne zostały wyłączone dla gracza <green>{PLAYER}<white>!");
504+
public Notice msgTogglePlayerOn = Notice.chat("<green>► <white>Wiadomości prywatne zostały włączone dla gracza <green>{PLAYER}<white>!");
505+
497506
@Description({" ", "# {PLAYER} - Gracz który jest zignorowany"})
498507
public Notice ignorePlayer = Notice.chat("<green>► <white>Zignorowano gracza <red>{PLAYER}<white>!");
499508

0 commit comments

Comments
 (0)