Skip to content

Commit bbb8d01

Browse files
committed
Add /whitelister list and /whitelister reload
1 parent 1d2d668 commit bbb8d01

6 files changed

Lines changed: 138 additions & 6 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package pro.kdray.scottybotwhitelist.Command;
2+
3+
import org.spongepowered.api.command.CommandResult;
4+
import org.spongepowered.api.command.CommandSource;
5+
import org.spongepowered.api.command.args.CommandContext;
6+
import org.spongepowered.api.command.spec.CommandExecutor;
7+
import pro.kdray.scottybotwhitelist.Utils;
8+
9+
public class ListCommand implements CommandExecutor {
10+
@Override
11+
public CommandResult execute(CommandSource src, CommandContext args) {
12+
src.sendMessage(Utils.getUserList());
13+
return CommandResult.success();
14+
}
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package pro.kdray.scottybotwhitelist.Command;
2+
3+
import org.spongepowered.api.command.CommandResult;
4+
import org.spongepowered.api.command.CommandSource;
5+
import org.spongepowered.api.command.args.CommandContext;
6+
import org.spongepowered.api.command.spec.CommandExecutor;
7+
import org.spongepowered.api.text.Text;
8+
import pro.kdray.scottybotwhitelist.Scottybotwhitelist;
9+
10+
public class ReloadCommand implements CommandExecutor {
11+
@Override
12+
public CommandResult execute(CommandSource src, CommandContext args) {
13+
Scottybotwhitelist.reload();
14+
src.sendMessage(Text.of("Reloaded plugin!"));
15+
return CommandResult.success();
16+
}
17+
}

src/main/java/pro/kdray/scottybotwhitelist/Config.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ public static void reload() {
3838
}
3939
}
4040

41-
if (Files.notExists(defaultConfig)) {
42-
logger.info("Config doesn't exist after loading default Config");
43-
} else {
44-
logger.info("Path is: " + defaultConfig.toFile().getAbsolutePath());
45-
}
46-
4741
loader = HoconConfigurationLoader.builder().setPath(defaultConfig).build();
4842

4943
ConfigurationNode localConfig;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package pro.kdray.scottybotwhitelist;
2+
3+
import org.spongepowered.api.command.CommandException;
4+
import org.spongepowered.api.command.CommandResult;
5+
import org.spongepowered.api.command.CommandSource;
6+
import org.spongepowered.api.command.args.CommandContext;
7+
import org.spongepowered.api.command.spec.CommandExecutor;
8+
import org.spongepowered.api.text.Text;
9+
import org.spongepowered.api.world.Location;
10+
import org.spongepowered.api.world.World;
11+
12+
import javax.annotation.Nullable;
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
import java.util.Optional;
16+
17+
public class MainCommand implements CommandExecutor {
18+
19+
@Override
20+
public CommandResult execute(CommandSource source, CommandContext arguments) throws CommandException {
21+
source.sendMessage(this.getUsage(source));
22+
return CommandResult.success();
23+
}
24+
25+
public List<String> getSuggestions(CommandSource source, String arguments, @Nullable Location<World> targetPosition) throws CommandException {
26+
return new ArrayList<>();
27+
}
28+
29+
public boolean testPermission(CommandSource source) {
30+
return source.hasPermission("whitelister.whitelist");
31+
}
32+
33+
public Optional<Text> getShortDescription(CommandSource source) {
34+
return Optional.of(Text.of("Main command for ScottybotWhitelist"));
35+
}
36+
37+
public Optional<Text> getHelp(CommandSource source) {
38+
return Optional.of(Text.of("There's not much needed here..."));
39+
}
40+
41+
public Text getUsage(CommandSource source) {
42+
return Text.of("/whitelister <reload | list>");
43+
}
44+
}

src/main/java/pro/kdray/scottybotwhitelist/Scottybotwhitelist.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
import org.slf4j.Logger;
55
import org.spongepowered.api.Game;
66
import org.spongepowered.api.Sponge;
7+
import org.spongepowered.api.command.spec.CommandSpec;
78
import org.spongepowered.api.config.DefaultConfig;
89
import org.spongepowered.api.event.Listener;
910
import org.spongepowered.api.event.game.state.GameStartedServerEvent;
1011
import org.spongepowered.api.plugin.Plugin;
12+
import org.spongepowered.api.service.permission.PermissionDescription;
13+
import org.spongepowered.api.service.permission.PermissionService;
14+
import org.spongepowered.api.text.Text;
15+
import pro.kdray.scottybotwhitelist.Command.ListCommand;
16+
import pro.kdray.scottybotwhitelist.Command.ReloadCommand;
1117

1218
import java.nio.file.Path;
1319

@@ -32,11 +38,53 @@ public class Scottybotwhitelist {
3238
@DefaultConfig(sharedRoot = true)
3339
private Path defaultConfig;
3440

41+
public static void reload() {
42+
Config.reload();
43+
Utils.reloadUsers();
44+
}
45+
3546
@Listener
3647
public void onServerStart(GameStartedServerEvent event) {
3748
new Config(this.defaultConfig, this.logger, Sponge.getAssetManager().getAsset(this, "defaultConfig.conf").get());
3849
Config.reload();
3950
Utils.reloadUsers();
4051
game.getEventManager().registerListeners(this, new EventListener());
52+
53+
PermissionDescription.Builder builder = game.getServiceManager().getRegistration(PermissionService.class).get()
54+
.getProvider().newDescriptionBuilder(this);
55+
builder.id("whitelister.whitelister")
56+
.description(Text.of("Needed to use /whitelist"))
57+
.assign(PermissionDescription.ROLE_STAFF, true)
58+
.assign(PermissionDescription.ROLE_USER, false)
59+
.register();
60+
builder.id("whitelister.whitelister.list")
61+
.description(Text.of("Needed to use /whitelist list"))
62+
.assign(PermissionDescription.ROLE_STAFF, true)
63+
.assign(PermissionDescription.ROLE_USER, false)
64+
.register();
65+
builder.id("whitelister.whitelister.reload")
66+
.description(Text.of("Needed to use /whitelist reload"))
67+
.assign(PermissionDescription.ROLE_STAFF, true)
68+
.assign(PermissionDescription.ROLE_USER, false)
69+
.register();
70+
71+
CommandSpec reloadSpec = CommandSpec.builder()
72+
.description(Text.of("Reloads plugin"))
73+
.permission("whitelister.whitelister.reload")
74+
.executor(new ReloadCommand())
75+
.build();
76+
CommandSpec listSpec = CommandSpec.builder()
77+
.description(Text.of("Lists all players"))
78+
.permission("whitelister.whitelister.list")
79+
.executor(new ListCommand())
80+
.build();
81+
game.getCommandManager().register(this, CommandSpec.builder()
82+
.description(Text.of("Main command for ScottybotWhitelist"))
83+
.permission("whitelister.whitelister")
84+
.child(reloadSpec, "reload")
85+
.child(listSpec, "list")
86+
.executor(new MainCommand())
87+
.build(),
88+
"whitelister");
4189
}
4290
}

src/main/java/pro/kdray/scottybotwhitelist/Utils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.google.gson.Gson;
44
import com.google.gson.reflect.TypeToken;
5+
import org.spongepowered.api.text.Text;
6+
import org.spongepowered.api.text.action.TextActions;
57

68
import java.io.BufferedReader;
79
import java.io.IOException;
@@ -83,4 +85,16 @@ public static void reloadUsers() {
8385

8486
Utils.users = new Gson().fromJson(users, listType);
8587
}
88+
89+
public static Text getUserList() {
90+
Text.Builder mainText = Text.builder();
91+
for (MixerUser user : users.values()) {
92+
mainText.append(Text.builder(user.mcname)
93+
.onHover(TextActions.showText(Text.of("Mixer Name: " + user.beamname + "\nExpires: " + user.UserFriendlyDate)))
94+
.append(Text.of(", "))
95+
.build());
96+
}
97+
mainText.append(Text.of("(" + users.size() + ")"));
98+
return mainText.build();
99+
}
86100
}

0 commit comments

Comments
 (0)