Skip to content

Commit 8c74f30

Browse files
GH-998 Implement demo screen feature (#1070)
* Implement demo screen feature * Add compatibility annotation * Update DemoScreenCommand.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Refactor names of the config values --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent f0fb476 commit 8c74f30

File tree

7 files changed

+98
-0
lines changed

7 files changed

+98
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.eternalcode.core.feature.troll.demoscreen;
2+
3+
import com.eternalcode.annotations.scan.command.DescriptionDocs;
4+
import com.eternalcode.core.compatibility.Compatibility;
5+
import com.eternalcode.core.compatibility.Version;
6+
import com.eternalcode.core.injector.annotations.Inject;
7+
import com.eternalcode.core.notice.NoticeService;
8+
import dev.rollczi.litecommands.annotations.argument.Arg;
9+
import dev.rollczi.litecommands.annotations.command.Command;
10+
import dev.rollczi.litecommands.annotations.context.Context;
11+
import dev.rollczi.litecommands.annotations.execute.Execute;
12+
import dev.rollczi.litecommands.annotations.permission.Permission;
13+
import org.bukkit.entity.Player;
14+
15+
@Command(name = "demoscreen", aliases = {"demo"})
16+
@Permission("eternalcore.troll.demoscreen")
17+
@Compatibility(from = @Version(minor = 18, patch = 2))
18+
public class DemoScreenCommand {
19+
20+
private final NoticeService noticeService;
21+
22+
@Inject
23+
public DemoScreenCommand(NoticeService noticeService) {
24+
this.noticeService = noticeService;
25+
}
26+
27+
@Execute
28+
@DescriptionDocs(description = {"Show a demo screen to yourself"})
29+
void self(@Context Player sender) {
30+
sender.showDemoScreen();
31+
32+
this.noticeService.create()
33+
.notice(translation -> translation.troll().demoScreen().shownToSelf())
34+
.player(sender.getUniqueId())
35+
.send();
36+
}
37+
38+
@Execute
39+
@DescriptionDocs(description = {"Show a demo screen to a player"}, arguments = {"<player>"})
40+
void other(@Context Player sender, @Arg Player target) {
41+
target.showDemoScreen();
42+
43+
this.noticeService.create()
44+
.notice(translation -> translation.troll().demoScreen().shownToOtherPlayer())
45+
.player(sender.getUniqueId())
46+
.placeholder("{PLAYER}", target.getName())
47+
.send();
48+
}
49+
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.eternalcode.core.feature.troll.demoscreen.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
5+
public interface DemoScreenMessages {
6+
7+
Notice shownToSelf();
8+
Notice shownToOtherPlayer();
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.eternalcode.core.feature.troll.demoscreen.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
import eu.okaeri.configs.OkaeriConfig;
5+
import lombok.Getter;
6+
import lombok.experimental.Accessors;
7+
8+
@Getter
9+
@Accessors(fluent = true)
10+
11+
public class ENDemoScreenMessages extends OkaeriConfig implements DemoScreenMessages {
12+
13+
public Notice shownToSelf = Notice.chat("<green>► <white>You have shown the demo screen to yourself!");
14+
public Notice shownToOtherPlayer = Notice.chat("<green>► <white>You have shown the demo screen to player <green>{PLAYER}!");
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.eternalcode.core.feature.troll.demoscreen.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
import eu.okaeri.configs.OkaeriConfig;
5+
import lombok.Getter;
6+
import lombok.experimental.Accessors;
7+
8+
@Getter
9+
@Accessors(fluent = true)
10+
public class PLDemoScreenMessages extends OkaeriConfig implements DemoScreenMessages {
11+
12+
public Notice shownToSelf = Notice.chat("<green>► <white>Pokazałeś ekran demo sobie!</white>");
13+
public Notice shownToOtherPlayer = Notice.chat("<green>► <white>Pokazałeś ekran demo graczowi <green>{PLAYER}!</green>");
14+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.eternalcode.core.feature.sudo.messages.SudoMessages;
2020
import com.eternalcode.core.feature.teleportrequest.messages.TeleportRequestMessages;
2121
import com.eternalcode.core.feature.time.messages.TimeAndWeatherMessages;
22+
import com.eternalcode.core.feature.troll.demoscreen.messages.DemoScreenMessages;
2223
import com.eternalcode.core.feature.troll.elderguardian.messages.ElderGuardianMessages;
2324
import com.eternalcode.core.feature.warp.messages.WarpMessages;
2425
import com.eternalcode.multification.notice.Notice;
@@ -194,6 +195,7 @@ interface ContainerSection {
194195

195196
interface TrollSection {
196197
ElderGuardianMessages elderGuardian();
198+
DemoScreenMessages demoScreen();
197199
}
198200

199201
Language getLanguage();

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.eternalcode.core.feature.sudo.messages.ENSudoMessages;
2020
import com.eternalcode.core.feature.teleportrequest.messages.ENTeleportRequestMessages;
2121
import com.eternalcode.core.feature.time.messages.ENTimeAndWeatherMessages;
22+
import com.eternalcode.core.feature.troll.demoscreen.messages.ENDemoScreenMessages;
2223
import com.eternalcode.core.feature.troll.elderguardian.messages.ENElderGuardianMessages;
2324
import com.eternalcode.core.feature.warp.messages.ENWarpMessages;
2425
import com.eternalcode.core.translation.AbstractTranslation;
@@ -569,5 +570,8 @@ public static class ENTrollSection extends OkaeriConfig implements TrollSection
569570

570571
@Comment({" ", "# This section is responsible for elder guardian messages."})
571572
public ENElderGuardianMessages elderGuardian = new ENElderGuardianMessages();
573+
574+
@Comment({" ", "# This section is responsible for demo screen messages."})
575+
public ENDemoScreenMessages demoScreen = new ENDemoScreenMessages();
572576
}
573577
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.eternalcode.core.feature.sudo.messages.PLSudoMessages;
2020
import com.eternalcode.core.feature.teleportrequest.messages.PLTeleportRequestMessages;
2121
import com.eternalcode.core.feature.time.messages.PLTimeAndWeatherMessages;
22+
import com.eternalcode.core.feature.troll.demoscreen.messages.PLDemoScreenMessages;
2223
import com.eternalcode.core.feature.troll.elderguardian.messages.PLElderGuardianMessages;
2324
import com.eternalcode.core.feature.warp.messages.PLWarpMessages;
2425
import com.eternalcode.core.translation.AbstractTranslation;
@@ -593,5 +594,8 @@ public static class PLTrollSection extends OkaeriConfig implements TrollSection
593594

594595
@Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące Elder Guardian'a"})
595596
public PLElderGuardianMessages elderGuardian = new PLElderGuardianMessages();
597+
598+
@Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące demo screen'a"})
599+
public PLDemoScreenMessages demoScreen = new PLDemoScreenMessages();
596600
}
597601
}

0 commit comments

Comments
 (0)