Skip to content

Commit b6567f6

Browse files
Jakubk15P1otrulla
andauthored
GH-996 Add /burn command (#1085)
* Add /burn command * Move away from troll package * Adjust to others' suggestions * Update eternalcore-core/src/main/java/com/eternalcode/core/feature/burn/BurnCommand.java Co-authored-by: Piotr Zych <[email protected]> * Update eternalcore-core/src/main/java/com/eternalcode/core/feature/burn/BurnCommand.java Co-authored-by: Piotr Zych <[email protected]> * Adjust to Martin's suggestions --------- Co-authored-by: Piotr Zych <[email protected]>
1 parent 7edbce9 commit b6567f6

File tree

10 files changed

+143
-7
lines changed

10 files changed

+143
-7
lines changed

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/messages/ArgumentMessages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public interface ArgumentMessages {
1010
Notice usageMessageEntry();
1111
Notice offlinePlayer();
1212
Notice onlyPlayer();
13+
Notice numberBiggerThanZero();
1314
Notice numberBiggerThanOrEqualZero();
1415
Notice noItem();
1516
Notice noArgument();

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/messages/ENArgumentMessages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class ENArgumentMessages extends OkaeriConfig implements ArgumentMessages
2121
public Notice missingPlayerName = Notice.chat("<red>✘ <dark_red>You must provide a player name!");
2222
public Notice offlinePlayer = Notice.chat("<red>✘ <dark_red>This player is currently offline!");
2323
public Notice onlyPlayer = Notice.chat("<red>✘ <dark_red>Command is only for players!");
24+
public Notice numberBiggerThanZero = Notice.chat("<red>✘ <dark_red>The number must be greater than 0!");
2425
public Notice numberBiggerThanOrEqualZero = Notice.chat("<red>✘ <dark_red>The number must be greater than or equal to 0!");
2526
public Notice noItem = Notice.chat("<red>✘ <dark_red>You need item to use this command!");
2627
public Notice noMaterial = Notice.chat("<red>✘ <dark_red>This item doesn't exist");

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/messages/PLArgumentMessages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class PLArgumentMessages extends OkaeriConfig implements ArgumentMessages
2222
public Notice missingPlayerName = Notice.chat("<red>✘ <dark_red>Musisz podać nazwę gracza!");
2323
public Notice offlinePlayer = Notice.chat("<red>✘ <dark_red>Ten gracz jest obecnie offline!");
2424
public Notice onlyPlayer = Notice.chat("<red>✘ <dark_red>Ta komenda jest dostępna tylko dla graczy!");
25+
public Notice numberBiggerThanZero = Notice.chat("<red>✘ <dark_red>Liczba musi być większa od 0!");
2526
public Notice numberBiggerThanOrEqualZero = Notice.chat("<red>✘ <dark_red>Liczba musi być równa lub większa od 0!");
2627
public Notice noItem = Notice.chat("<red>✘ <dark_red>Musisz trzymać przedmiot w dłoni!");
2728
public Notice noMaterial = Notice.chat("<red>✘ <dark_red>Taki materiał nie istnieje!");
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package com.eternalcode.core.feature.burn;
2+
3+
import com.eternalcode.annotations.scan.command.DescriptionDocs;
4+
import com.eternalcode.core.injector.annotations.Inject;
5+
import com.eternalcode.core.notice.NoticeService;
6+
import dev.rollczi.litecommands.annotations.argument.Arg;
7+
import dev.rollczi.litecommands.annotations.command.Command;
8+
import dev.rollczi.litecommands.annotations.context.Context;
9+
import dev.rollczi.litecommands.annotations.execute.Execute;
10+
import dev.rollczi.litecommands.annotations.permission.Permission;
11+
import org.bukkit.entity.Player;
12+
13+
import java.util.Optional;
14+
15+
@Command(name = "burn", aliases = {"ignite"})
16+
@Permission("eternalcore.burn")
17+
public class BurnCommand {
18+
19+
private static final int DEFAULT_BURN_TICK_DURATION = 5 * 20;
20+
private final NoticeService noticeService;
21+
22+
@Inject
23+
public BurnCommand(NoticeService noticeService) {
24+
this.noticeService = noticeService;
25+
}
26+
27+
@Execute
28+
@DescriptionDocs(description = "Burns yourself for a specified amount of ticks.", arguments = "[ticks]")
29+
void self(@Context Player sender, @Arg Optional<Integer> ticks) {
30+
this.burn(sender, sender, ticks);
31+
}
32+
33+
@Execute
34+
@Permission("eternalcore.burn.other")
35+
@DescriptionDocs(description = "Burns target for a specified amount of ticks.", arguments = "<target> [ticks]")
36+
void other(@Context Player sender, @Arg Player target, @Arg Optional<Integer> ticks) {
37+
this.burn(sender, target, ticks);
38+
}
39+
40+
private void burn(Player sender, Player target, Optional<Integer> ticks) {
41+
int actualTicks = ticks.orElse(DEFAULT_BURN_TICK_DURATION);
42+
43+
if (actualTicks <= 0) {
44+
this.noticeService.create()
45+
.player(sender.getUniqueId())
46+
.notice(translation -> translation.argument().numberBiggerThanZero())
47+
.send();
48+
return;
49+
}
50+
51+
target.setFireTicks(actualTicks);
52+
53+
String ticksString = String.valueOf(actualTicks);
54+
55+
if (sender.equals(target)) {
56+
this.noticeService.create()
57+
.player(sender.getUniqueId())
58+
.placeholder("{TICKS}", ticksString)
59+
.notice(translation -> translation.burn().burnedSelf())
60+
.send();
61+
return;
62+
}
63+
64+
this.noticeService.create()
65+
.player(sender.getUniqueId())
66+
.placeholder("{PLAYER}", target.getName())
67+
.placeholder("{TICKS}", ticksString)
68+
.notice(translation -> translation.burn().burnedOther())
69+
.send();
70+
71+
this.noticeService.create()
72+
.player(target.getUniqueId())
73+
.placeholder("{TICKS}", ticksString)
74+
.notice(translation -> translation.burn().burnedSelf())
75+
.send();
76+
}
77+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.eternalcode.core.feature.burn.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
5+
public interface BurnMessages {
6+
7+
Notice burnedSelf();
8+
Notice burnedOther();
9+
10+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.eternalcode.core.feature.burn.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
import eu.okaeri.configs.OkaeriConfig;
5+
import eu.okaeri.configs.annotation.Comment;
6+
import lombok.Getter;
7+
import lombok.experimental.Accessors;
8+
9+
@Getter
10+
@Accessors(fluent = true)
11+
public class ENBurnMessages extends OkaeriConfig implements BurnMessages {
12+
13+
@Comment("# Available placeholders: {PLAYER} - burned player, {TICKS} - number of ticks the player is on fire")
14+
public Notice burnedSelf = Notice.chat("<green>► <white>You have been set on fire for <green>{TICKS}<white> ticks!");
15+
16+
@Comment(" ")
17+
public Notice burnedOther = Notice.chat("<green>► {PLAYER} <white>has been set on fire for <green>{TICKS} <white>ticks!");
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.eternalcode.core.feature.burn.messages;
2+
3+
import com.eternalcode.multification.notice.Notice;
4+
import eu.okaeri.configs.OkaeriConfig;
5+
import eu.okaeri.configs.annotation.Comment;
6+
import lombok.Getter;
7+
import lombok.experimental.Accessors;
8+
9+
@Getter
10+
@Accessors(fluent = true)
11+
public class PLBurnMessages extends OkaeriConfig implements BurnMessages {
12+
13+
@Comment("# Dostępne placeholdery: {PLAYER} - podpalony gracz, {TICKS} - liczba ticków podpalenia")
14+
public Notice burnedSelf = Notice.chat("<green>► <white>Zostałeś podpalony na <green>{TICKS}<white> ticków!");
15+
16+
@Comment(" ")
17+
public Notice burnedOther = Notice.chat("<green>► {PLAYER} <white>został podpalony na <green>{TICKS}<white> ticków!");
18+
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.eternalcode.core.feature.adminchat.messages.AdminChatMessages;
66
import com.eternalcode.core.feature.afk.messages.AfkMessages;
77
import com.eternalcode.core.feature.automessage.messages.AutoMessageMessages;
8+
import com.eternalcode.core.feature.burn.messages.BurnMessages;
89
import com.eternalcode.core.feature.fun.demoscreen.messages.DemoScreenMessages;
910
import com.eternalcode.core.feature.fun.elderguardian.messages.ElderGuardianMessages;
1011
import com.eternalcode.core.feature.helpop.messages.HelpOpSection;
@@ -24,9 +25,10 @@
2425
import com.eternalcode.core.feature.vanish.messages.VanishMessages;
2526
import com.eternalcode.core.feature.warp.messages.WarpMessages;
2627
import com.eternalcode.multification.notice.Notice;
28+
import org.bukkit.event.entity.EntityDamageEvent;
29+
2730
import java.util.List;
2831
import java.util.Map;
29-
import org.bukkit.event.entity.EntityDamageEvent;
3032

3133
public interface Translation {
3234

@@ -252,6 +254,8 @@ interface ContainerSection {
252254
AutoMessageMessages autoMessage();
253255
// jail section
254256
JailMessages jailSection();
257+
// burn section
258+
BurnMessages burn();
255259
// vanish section
256260
VanishMessages vanish();
257261
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import com.eternalcode.core.feature.adminchat.messages.ENAdminChatMessages;
66
import com.eternalcode.core.feature.afk.messages.ENAfkMessages;
77
import com.eternalcode.core.feature.automessage.messages.ENAutoMessageMessages;
8+
import com.eternalcode.core.feature.burn.messages.ENBurnMessages;
9+
import com.eternalcode.core.feature.fun.demoscreen.messages.ENDemoScreenMessages;
10+
import com.eternalcode.core.feature.fun.elderguardian.messages.ENElderGuardianMessages;
811
import com.eternalcode.core.feature.helpop.messages.ENHelpOpMessages;
912
import com.eternalcode.core.feature.home.messages.ENHomeMessages;
1013
import com.eternalcode.core.feature.itemedit.messages.ENItemEditMessages;
@@ -19,8 +22,6 @@
1922
import com.eternalcode.core.feature.sudo.messages.ENSudoMessages;
2023
import com.eternalcode.core.feature.teleportrequest.messages.ENTeleportRequestMessages;
2124
import com.eternalcode.core.feature.time.messages.ENTimeAndWeatherMessages;
22-
import com.eternalcode.core.feature.fun.demoscreen.messages.ENDemoScreenMessages;
23-
import com.eternalcode.core.feature.fun.elderguardian.messages.ENElderGuardianMessages;
2425
import com.eternalcode.core.feature.vanish.messages.ENVanishMessages;
2526
import com.eternalcode.core.feature.warp.messages.ENWarpMessages;
2627
import com.eternalcode.core.translation.AbstractTranslation;
@@ -572,7 +573,9 @@ public static class ENLanguageSection extends OkaeriConfig implements LanguageSe
572573
@Comment({" ", "# This section is responsible for demo screen messages."})
573574
public ENDemoScreenMessages demoScreen = new ENDemoScreenMessages();
574575

576+
@Comment({" ", "# This section is responsible for '/burn' command messages."})
577+
public ENBurnMessages burn = new ENBurnMessages();
578+
575579
@Comment({" ", "# This section is responsible for vanish-related stuff."})
576580
public ENVanishMessages vanish = new ENVanishMessages();
577-
578581
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import com.eternalcode.core.feature.adminchat.messages.PLAdminChatMessages;
66
import com.eternalcode.core.feature.afk.messages.PLAfkMessages;
77
import com.eternalcode.core.feature.automessage.messages.PLAutoMessageMessages;
8+
import com.eternalcode.core.feature.burn.messages.PLBurnMessages;
9+
import com.eternalcode.core.feature.fun.demoscreen.messages.PLDemoScreenMessages;
10+
import com.eternalcode.core.feature.fun.elderguardian.messages.PLElderGuardianMessages;
811
import com.eternalcode.core.feature.helpop.messages.PLHelpOpMessages;
912
import com.eternalcode.core.feature.home.messages.PLHomeMessages;
1013
import com.eternalcode.core.feature.itemedit.messages.PLItemEditMessages;
@@ -19,8 +22,6 @@
1922
import com.eternalcode.core.feature.sudo.messages.PLSudoMessages;
2023
import com.eternalcode.core.feature.teleportrequest.messages.PLTeleportRequestMessages;
2124
import com.eternalcode.core.feature.time.messages.PLTimeAndWeatherMessages;
22-
import com.eternalcode.core.feature.fun.demoscreen.messages.PLDemoScreenMessages;
23-
import com.eternalcode.core.feature.fun.elderguardian.messages.PLElderGuardianMessages;
2425
import com.eternalcode.core.feature.vanish.messages.PLVanishMessages;
2526
import com.eternalcode.core.feature.warp.messages.PLWarpMessages;
2627
import com.eternalcode.core.translation.AbstractTranslation;
@@ -596,7 +597,9 @@ public static class PLLanguageSection extends OkaeriConfig implements LanguageSe
596597
@Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące demo screen'a"})
597598
public PLDemoScreenMessages demoScreen = new PLDemoScreenMessages();
598599

600+
@Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące komendy /burn"})
601+
public PLBurnMessages burn = new PLBurnMessages();
602+
599603
@Comment({" ", "# Ta sekcja odpowiada za wiadomości dotyczące trybu niewidoczności graczy"})
600604
public PLVanishMessages vanish = new PLVanishMessages();
601-
602605
}

0 commit comments

Comments
 (0)