diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/EndScreenCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/EndScreenCommand.java new file mode 100644 index 000000000..d0d9a5b60 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/EndScreenCommand.java @@ -0,0 +1,51 @@ +package com.eternalcode.core.feature.fun.endscreen; + +import com.eternalcode.annotations.scan.command.DescriptionDocs; +import com.eternalcode.core.compatibility.Compatibility; +import com.eternalcode.core.compatibility.Version; +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.notice.NoticeService; +import com.eternalcode.paper.PaperOverlay; +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.entity.Player; + +@Command(name = "endscreen", aliases = {"end-screen", "win-screen"}) +@Permission("eternalcore.endscreen") +@Compatibility(from = @Version(minor = 19, patch = 4)) // Requires Minecraft 1.19.4 or higher +public class EndScreenCommand { + + private final NoticeService noticeService; + + @Inject + public EndScreenCommand(NoticeService noticeService) { + this.noticeService = noticeService; + } + + @Execute + @DescriptionDocs(description = "Show a end screen to yourself") + void self(@Context Player sender) { + PaperOverlay.END_SCREEN.show(sender); + + this.noticeService.create() + .notice(translation -> translation.endScreen().shownToSelf()) + .player(sender.getUniqueId()) + .send(); + } + + @Execute + @DescriptionDocs(description = "Show a end screen to a player", arguments = "") + void other(@Context Player sender, @Arg Player target) { + PaperOverlay.END_SCREEN.show(target); + + this.noticeService.create() + .notice(translation -> translation.endScreen().shownToOtherPlayer()) + .player(sender.getUniqueId()) + .placeholder("{PLAYER}", target.getName()) + .send(); + } + +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/ENEndScreenMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/ENEndScreenMessages.java new file mode 100644 index 000000000..bb5a3796f --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/ENEndScreenMessages.java @@ -0,0 +1,18 @@ +package com.eternalcode.core.feature.fun.endscreen.messages; + +import com.eternalcode.multification.notice.Notice; +import eu.okaeri.configs.OkaeriConfig; +import eu.okaeri.configs.annotation.Comment; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) + +public class ENEndScreenMessages extends OkaeriConfig implements EndScreenMessages { + + public Notice shownToSelf = Notice.chat("You have shown the end screen to yourself!"); + + @Comment("# {PLAYER} - returns player's name") + public Notice shownToOtherPlayer = Notice.chat("You have shown the end screen to player {PLAYER}!"); +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/EndScreenMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/EndScreenMessages.java new file mode 100644 index 000000000..df549eaf8 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/EndScreenMessages.java @@ -0,0 +1,9 @@ +package com.eternalcode.core.feature.fun.endscreen.messages; + +import com.eternalcode.multification.notice.Notice; + +public interface EndScreenMessages { + + Notice shownToSelf(); + Notice shownToOtherPlayer(); +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/PLEndScreenMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/PLEndScreenMessages.java new file mode 100644 index 000000000..a03c9b530 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/fun/endscreen/messages/PLEndScreenMessages.java @@ -0,0 +1,17 @@ +package com.eternalcode.core.feature.fun.endscreen.messages; + +import com.eternalcode.multification.notice.Notice; +import eu.okaeri.configs.OkaeriConfig; +import eu.okaeri.configs.annotation.Comment; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +public class PLEndScreenMessages extends OkaeriConfig implements EndScreenMessages { + + public Notice shownToSelf = Notice.chat("Pokazałeś ekran końca gry sobie!"); + + @Comment("# {PLAYER} - ten placeholder zostanie zastąpiony przez nazwę gracza, któremu pokazujesz ekran końca gry.") + public Notice shownToOtherPlayer = Notice.chat("Pokazałeś ekran końca gry graczowi {PLAYER}!"); +} 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 9144f3e30..e2e2e0766 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 @@ -8,6 +8,7 @@ import com.eternalcode.core.feature.burn.messages.BurnMessages; import com.eternalcode.core.feature.fun.demoscreen.messages.DemoScreenMessages; import com.eternalcode.core.feature.fun.elderguardian.messages.ElderGuardianMessages; +import com.eternalcode.core.feature.fun.endscreen.messages.EndScreenMessages; import com.eternalcode.core.feature.helpop.messages.HelpOpSection; import com.eternalcode.core.feature.home.messages.HomeMessages; import com.eternalcode.core.feature.itemedit.messages.ItemEditMessages; @@ -198,6 +199,7 @@ interface ContainerSection { ElderGuardianMessages elderGuardian(); DemoScreenMessages demoScreen(); + EndScreenMessages endScreen(); Language getLanguage(); // argument section 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 e212638a7..d89db3834 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 @@ -8,6 +8,7 @@ import com.eternalcode.core.feature.burn.messages.ENBurnMessages; import com.eternalcode.core.feature.fun.demoscreen.messages.ENDemoScreenMessages; import com.eternalcode.core.feature.fun.elderguardian.messages.ENElderGuardianMessages; +import com.eternalcode.core.feature.fun.endscreen.messages.ENEndScreenMessages; import com.eternalcode.core.feature.helpop.messages.ENHelpOpMessages; import com.eternalcode.core.feature.home.messages.ENHomeMessages; import com.eternalcode.core.feature.itemedit.messages.ENItemEditMessages; @@ -573,6 +574,9 @@ public static class ENLanguageSection extends OkaeriConfig implements LanguageSe @Comment({" ", "# This section is responsible for demo screen messages."}) public ENDemoScreenMessages demoScreen = new ENDemoScreenMessages(); + @Comment({" ", "# This section is responsible for end screen messages."}) + public ENEndScreenMessages endScreen = new ENEndScreenMessages(); + @Comment({" ", "# This section is responsible for '/burn' command messages."}) public ENBurnMessages burn = new ENBurnMessages(); 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 e280d773c..3446a0952 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 @@ -8,6 +8,7 @@ import com.eternalcode.core.feature.burn.messages.PLBurnMessages; import com.eternalcode.core.feature.fun.demoscreen.messages.PLDemoScreenMessages; import com.eternalcode.core.feature.fun.elderguardian.messages.PLElderGuardianMessages; +import com.eternalcode.core.feature.fun.endscreen.messages.PLEndScreenMessages; import com.eternalcode.core.feature.helpop.messages.PLHelpOpMessages; import com.eternalcode.core.feature.home.messages.PLHomeMessages; import com.eternalcode.core.feature.itemedit.messages.PLItemEditMessages; @@ -597,6 +598,9 @@ public static class PLLanguageSection extends OkaeriConfig implements LanguageSe @Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące demo screen'a"}) public PLDemoScreenMessages demoScreen = new PLDemoScreenMessages(); + @Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące końca gry"}) + public PLEndScreenMessages endScreen = new PLEndScreenMessages(); + @Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące komendy /burn"}) public PLBurnMessages burn = new PLBurnMessages(); diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperContainer.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperContainer.java index 4bcae43f2..c5d99ff66 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperContainer.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperContainer.java @@ -13,10 +13,10 @@ public enum PaperContainer { LOOM("Loom", player -> player.openLoom(null, true)), SMITHING_TABLE("Smithing Table", player -> player.openSmithingTable(null, true)); - private final PaperFeature feature; + private final PaperFeature feature; PaperContainer(String name, Consumer action) { - this.feature = new PaperFeature<>(action, name) { + this.feature = new PaperFeature(action, name) { }; } diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperFeature.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperFeature.java index 257c558ee..c14bd611c 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperFeature.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperFeature.java @@ -8,7 +8,7 @@ import java.util.function.Consumer; import java.util.logging.Logger; -public abstract class PaperFeature { +public abstract class PaperFeature { private static final Environment ENVIRONMENT = PaperLib.getEnvironment(); private static final Logger LOGGER = Logger.getLogger("EternalCore-Paper"); diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperOverlay.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperOverlay.java index 26871ab83..83b5ea2ee 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperOverlay.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/PaperOverlay.java @@ -7,16 +7,17 @@ public enum PaperOverlay { ELDER_GUARDIAN("Elder Guardian", player -> player.showElderGuardian(false)), - ELDER_GUARDIAN_SILENT("Elder Guardian Silent", player -> player.showElderGuardian(true)); + ELDER_GUARDIAN_SILENT("Elder Guardian Silent", player -> player.showElderGuardian(true)), + END_SCREEN("End Screen", player -> player.showWinScreen()); - private final PaperFeature feature; + private final PaperFeature feature; PaperOverlay(String name, Consumer action) { - this.feature = new PaperFeature<>(action, name) { + this.feature = new PaperFeature(action, name) { }; } public void show(Player player) { - feature.execute(player); + this.feature.execute(player); } }