Skip to content

Commit 53e5a96

Browse files
authored
GH-97 Remove litecommands and improve output plugin.yml (#102)
* Remove litecommands and improve output plugin.yml. * Change permision, improve tab-completa. * Follow rollczi's suggestions. * Follow rollczi's suggestions.
1 parent 829a218 commit 53e5a96

File tree

7 files changed

+136
-47
lines changed

7 files changed

+136
-47
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
- `chatformatter.selector` - `<selector>`
5353
- `chatformatter.keybind` - `<key>`
5454
- `chatformatter.newline` - `<newline>`
55-
- `chatformatter.chat.reload` - reloads the plugin with `/chatformatter reload`
55+
- `chatformatter.reload` - reloads the plugin with `/chatformatter reload`
5656
- `chatformatter.receiveupdates` - receive update announcements for this plugin
5757

5858
### Additional color permissions:
@@ -75,6 +75,7 @@
7575
- `chatformatter.color.light_purple` - `<light_purple>`
7676
- `chatformatter.color.yellow` - `<yellow>`
7777
- `chatformatter.color.white` - `<white>`
78+
7879
### config.yml
7980

8081
```yaml

chatformatter-core/build.gradle.kts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ dependencies {
1717
testImplementation("net.kyori:adventure-platform-bukkit:$adventureVersion")
1818
testImplementation("net.kyori:adventure-text-minimessage:$miniMessageVersion")
1919

20-
// LiteCommands
21-
implementation("dev.rollczi.litecommands:bukkit:2.8.9")
22-
2320
// CDN Configs
2421
val cdnVersion = "1.14.4"
2522
implementation("net.dzikoysk:cdn:$cdnVersion")
@@ -61,7 +58,6 @@ tasks {
6158
listOf(
6259
"com.eternalcode.gitcheck",
6360
"net.dzikoysk",
64-
"dev.rollczi",
6561
"panda",
6662
"org.panda_lang",
6763
"net.kyori",

chatformatter-core/src/main/java/com/eternalcode/formatter/ChatFormatterCommand.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,26 @@
22

33
import com.eternalcode.formatter.config.ConfigManager;
44
import com.google.common.base.Stopwatch;
5-
import dev.rollczi.litecommands.command.execute.Execute;
6-
import dev.rollczi.litecommands.command.permission.Permission;
7-
import dev.rollczi.litecommands.command.route.Route;
85
import net.kyori.adventure.audience.Audience;
96
import net.kyori.adventure.platform.AudienceProvider;
107
import net.kyori.adventure.text.Component;
118
import net.kyori.adventure.text.minimessage.MiniMessage;
9+
import org.bukkit.command.Command;
10+
import org.bukkit.command.CommandExecutor;
1211
import org.bukkit.command.CommandSender;
12+
import org.bukkit.command.TabCompleter;
1313
import org.bukkit.entity.Player;
14+
import org.jetbrains.annotations.NotNull;
15+
import org.jetbrains.annotations.Nullable;
1416

17+
import java.util.Collections;
18+
import java.util.List;
1519
import java.util.concurrent.TimeUnit;
1620

17-
@Route(name = "chatformatter")
18-
@Permission("chatformatter.chat.reload")
19-
class ChatFormatterCommand {
21+
class ChatFormatterCommand implements CommandExecutor, TabCompleter {
22+
23+
private static final String RELOAD_MESSAGE = "<b><gradient:#29fbff:#38b3ff>ChatFormatter:</gradient></b> <green>Successfully reloaded configs in %sms!";
24+
public static final String RELOAD_PERMISSION = "chatformatter.reload";
2025

2126
private final ConfigManager configManager;
2227
private final AudienceProvider provider;
@@ -28,19 +33,40 @@ class ChatFormatterCommand {
2833
this.miniMessage = miniMessage;
2934
}
3035

31-
@Execute(route = "reload")
32-
void reload(CommandSender commandSender) {
33-
Stopwatch stopwatch = Stopwatch.createStarted();
36+
@Override
37+
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
38+
if (args.length == 0 || !args[0].equalsIgnoreCase("reload")) {
39+
sender.sendMessage(command.getUsage());
40+
return true;
41+
}
42+
43+
if (sender.hasPermission(RELOAD_PERMISSION)) {
44+
Stopwatch stopwatch = Stopwatch.createStarted();
45+
46+
this.configManager.loadAndRenderConfigs();
47+
long millis = stopwatch.elapsed(TimeUnit.MILLISECONDS);
48+
49+
Component deserialized = this.miniMessage.deserialize(String.format(RELOAD_MESSAGE, millis));
50+
Audience audience = sender instanceof Player player
51+
? this.provider.player(player.getUniqueId())
52+
: this.provider.console();
3453

35-
this.configManager.loadAndRenderConfigs();
36-
long millis = stopwatch.elapsed(TimeUnit.MILLISECONDS);
54+
audience.sendMessage(deserialized);
3755

38-
Component deserialized = this.miniMessage.deserialize("<b><gradient:#29fbff:#38b3ff>ChatFormatter:</gradient></b> <green>Successfully reloaded configs in " + millis + "ms!");
39-
Audience audience = commandSender instanceof Player player
40-
? this.provider.player(player.getUniqueId())
41-
: this.provider.console();
56+
return true;
57+
}
4258

43-
audience.sendMessage(deserialized);
59+
return false;
4460
}
4561

46-
}
62+
63+
@Nullable
64+
@Override
65+
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
66+
if (args.length == 1 && sender.hasPermission(RELOAD_PERMISSION)) {
67+
return List.of("reload");
68+
}
69+
70+
return Collections.emptyList();
71+
}
72+
}

chatformatter-core/src/main/java/com/eternalcode/formatter/ChatFormatterPlugin.java

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,21 @@
55
import com.eternalcode.formatter.legacy.LegacyPostProcessor;
66
import com.eternalcode.formatter.legacy.LegacyPreProcessor;
77
import com.eternalcode.formatter.placeholder.PlaceholderAPIStack;
8-
import com.eternalcode.formatter.rank.VaultRankProvider;
8+
import com.eternalcode.formatter.placeholder.PlaceholderRegistry;
99
import com.eternalcode.formatter.rank.ChatRankProvider;
10+
import com.eternalcode.formatter.rank.VaultRankProvider;
1011
import com.eternalcode.formatter.template.TemplateService;
11-
import com.eternalcode.formatter.placeholder.PlaceholderRegistry;
1212
import com.eternalcode.formatter.updater.UpdaterController;
1313
import com.eternalcode.formatter.updater.UpdaterService;
1414
import com.google.common.base.Stopwatch;
15-
import dev.rollczi.litecommands.LiteCommands;
16-
import dev.rollczi.litecommands.bukkit.LiteBukkitFactory;
1715
import net.kyori.adventure.platform.AudienceProvider;
1816
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
1917
import net.kyori.adventure.text.minimessage.MiniMessage;
2018
import org.bstats.bukkit.Metrics;
2119
import org.bukkit.Server;
22-
import org.bukkit.command.CommandSender;
2320
import org.bukkit.plugin.Plugin;
2421
import org.bukkit.plugin.java.JavaPlugin;
2522

26-
import java.util.List;
2723
import java.util.concurrent.TimeUnit;
2824

2925
public class ChatFormatterPlugin implements ChatFormatterApi {
@@ -33,8 +29,6 @@ public class ChatFormatterPlugin implements ChatFormatterApi {
3329
private final ChatRankProvider rankProvider;
3430
private final ChatHandler chatHandler;
3531

36-
private final LiteCommands<CommandSender> liteCommands;
37-
3832
public ChatFormatterPlugin(Plugin plugin) {
3933
Server server = plugin.getServer();
4034
Stopwatch stopwatch = Stopwatch.createStarted();
@@ -53,22 +47,17 @@ public ChatFormatterPlugin(Plugin plugin) {
5347

5448
AudienceProvider audienceProvider = BukkitAudiences.create(plugin);
5549
MiniMessage miniMessage = MiniMessage.builder()
56-
.preProcessor(new LegacyPreProcessor())
57-
.postProcessor(new LegacyPostProcessor())
58-
.build();
59-
60-
this.liteCommands = LiteBukkitFactory.builder(server, "chat-formatter")
61-
.commandInstance(new ChatFormatterCommand(configManager, audienceProvider, miniMessage))
62-
.register();
50+
.preProcessor(new LegacyPreProcessor())
51+
.postProcessor(new LegacyPostProcessor())
52+
.build();
6353

6454
// bStats metrics
6555
new Metrics((JavaPlugin) plugin, 15199);
6656

6757
this.chatHandler = new ChatHandlerImpl(miniMessage, pluginConfig, this.rankProvider, this.placeholderRegistry, this.templateService);
6858

69-
List.of(
70-
new UpdaterController(updaterService, pluginConfig, audienceProvider, miniMessage)
71-
).forEach(listener -> server.getPluginManager().registerEvents(listener, plugin));
59+
server.getPluginCommand("chatformatter").setExecutor(new ChatFormatterCommand(configManager, audienceProvider, miniMessage));
60+
server.getPluginManager().registerEvents(new UpdaterController(updaterService, pluginConfig, audienceProvider, miniMessage), plugin);
7261

7362
ChatFormatterApiProvider.enable(this);
7463

@@ -77,10 +66,6 @@ public ChatFormatterPlugin(Plugin plugin) {
7766

7867
public void close() {
7968
ChatFormatterApiProvider.disable();
80-
81-
if (this.liteCommands != null) {
82-
this.liteCommands.getPlatform().unregisterAll();
83-
}
8469
}
8570

8671
@Override

chatformatter-core/src/main/java/com/eternalcode/formatter/placeholder/PlayerPlaceholderStack.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@
55
public interface PlayerPlaceholderStack {
66

77
String apply(String text, Player target);
8-
98
}

chatformatter-core/src/main/java/com/eternalcode/formatter/rank/VaultRankProvider.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.eternalcode.formatter.rank;
22

3-
import com.eternalcode.formatter.rank.ChatRankProvider;
43
import net.milkbowl.vault.permission.Permission;
54
import org.bukkit.Server;
65
import org.bukkit.entity.Player;

chatformatter-paper-plugin/build.gradle.kts

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
plugins{
1+
import net.minecrell.pluginyml.bukkit.BukkitPluginDescription.Permission.Default
2+
3+
plugins {
24
id("eternalcode.java")
35
id("net.minecrell.plugin-yml.bukkit")
46
id("com.github.johnrengelman.shadow")
@@ -12,6 +14,87 @@ bukkit {
1214
name = "ChatFormatter"
1315
depend = listOf("PlaceholderAPI", "Vault")
1416
version = "${project.version}"
17+
18+
commands {
19+
register("chatformatter") {
20+
description = "Reloads the configs for ChatFormatter"
21+
permission = "chatformatter.reload"
22+
usage = "/chatformatter reload"
23+
}
24+
}
25+
26+
permissions {
27+
register("chatformatter.*") {
28+
children = listOf(
29+
"chatformatter.decorations.*",
30+
"chatformatter.color.*",
31+
"chatformatter.receiveupdates",
32+
"chatformatter.reset",
33+
"chatformatter.gradient",
34+
"chatformatter.hover",
35+
"chatformatter.click",
36+
"chatformatter.insertion",
37+
"chatformatter.font",
38+
"chatformatter.transition",
39+
"chatformatter.translatable",
40+
"chatformatter.selector",
41+
"chatformatter.keybind",
42+
"chatformatter.newline"
43+
)
44+
default = Default.OP
45+
}
46+
47+
48+
register("chatformatter.decorations.*") {
49+
children = listOf(
50+
"chatformatter.decorations.bold",
51+
"chatformatter.decorations.italic",
52+
"chatformatter.decorations.underlined",
53+
"chatformatter.decorations.strikethrough",
54+
"chatformatter.decorations.obfuscated"
55+
)
56+
default = Default.OP
57+
}
58+
59+
register("chatformatter.reset") { default = Default.OP }
60+
register("chatformatter.gradient") { default = Default.OP }
61+
register("chatformatter.hover") { default = Default.OP }
62+
register("chatformatter.click") { default = Default.OP }
63+
register("chatformatter.insertion") { default = Default.OP }
64+
register("chatformatter.font") { default = Default.OP }
65+
register("chatformatter.transition") { default = Default.OP }
66+
register("chatformatter.translatable") { default = Default.OP }
67+
register("chatformatter.selector") { default = Default.OP }
68+
register("chatformatter.keybind") { default = Default.OP }
69+
register("chatformatter.newline") { default = Default.OP }
70+
71+
register("chatformatter.color.*") {
72+
children = listOf(
73+
"chatformatter.legacycolor",
74+
"chatformatter.color.black",
75+
"chatformatter.color.dark_blue",
76+
"chatformatter.color.dark_green",
77+
"chatformatter.color.dark_aqua",
78+
"chatformatter.color.dark_red",
79+
"chatformatter.color.dark_purple",
80+
"chatformatter.color.gold",
81+
"chatformatter.color.gray",
82+
"chatformatter.color.dark_gray",
83+
"chatformatter.color.blue",
84+
"chatformatter.color.green",
85+
"chatformatter.color.aqua",
86+
"chatformatter.color.red",
87+
"chatformatter.color.light_purple",
88+
"chatformatter.color.yellow",
89+
"chatformatter.color.white"
90+
)
91+
default = Default.OP
92+
}
93+
94+
register("chatformatter.receiveupdates") {
95+
default = Default.OP
96+
}
97+
}
1598
}
1699

17100
dependencies {

0 commit comments

Comments
 (0)