Skip to content

Commit

Permalink
Add /whitelister list and /whitelister reload
Browse files Browse the repository at this point in the history
  • Loading branch information
funniray committed May 18, 2018
1 parent 1d2d668 commit bbb8d01
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package pro.kdray.scottybotwhitelist.Command;

import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.command.spec.CommandExecutor;
import pro.kdray.scottybotwhitelist.Utils;

public class ListCommand implements CommandExecutor {
@Override
public CommandResult execute(CommandSource src, CommandContext args) {
src.sendMessage(Utils.getUserList());
return CommandResult.success();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package pro.kdray.scottybotwhitelist.Command;

import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.text.Text;
import pro.kdray.scottybotwhitelist.Scottybotwhitelist;

public class ReloadCommand implements CommandExecutor {
@Override
public CommandResult execute(CommandSource src, CommandContext args) {
Scottybotwhitelist.reload();
src.sendMessage(Text.of("Reloaded plugin!"));
return CommandResult.success();
}
}
6 changes: 0 additions & 6 deletions src/main/java/pro/kdray/scottybotwhitelist/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,6 @@ public static void reload() {
}
}

if (Files.notExists(defaultConfig)) {
logger.info("Config doesn't exist after loading default Config");
} else {
logger.info("Path is: " + defaultConfig.toFile().getAbsolutePath());
}

loader = HoconConfigurationLoader.builder().setPath(defaultConfig).build();

ConfigurationNode localConfig;
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/pro/kdray/scottybotwhitelist/MainCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package pro.kdray.scottybotwhitelist;

import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.world.Location;
import org.spongepowered.api.world.World;

import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class MainCommand implements CommandExecutor {

@Override
public CommandResult execute(CommandSource source, CommandContext arguments) throws CommandException {
source.sendMessage(this.getUsage(source));
return CommandResult.success();
}

public List<String> getSuggestions(CommandSource source, String arguments, @Nullable Location<World> targetPosition) throws CommandException {
return new ArrayList<>();
}

public boolean testPermission(CommandSource source) {
return source.hasPermission("whitelister.whitelist");
}

public Optional<Text> getShortDescription(CommandSource source) {
return Optional.of(Text.of("Main command for ScottybotWhitelist"));
}

public Optional<Text> getHelp(CommandSource source) {
return Optional.of(Text.of("There's not much needed here..."));
}

public Text getUsage(CommandSource source) {
return Text.of("/whitelister <reload | list>");
}
}
48 changes: 48 additions & 0 deletions src/main/java/pro/kdray/scottybotwhitelist/Scottybotwhitelist.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,16 @@
import org.slf4j.Logger;
import org.spongepowered.api.Game;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.spec.CommandSpec;
import org.spongepowered.api.config.DefaultConfig;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.PermissionService;
import org.spongepowered.api.text.Text;
import pro.kdray.scottybotwhitelist.Command.ListCommand;
import pro.kdray.scottybotwhitelist.Command.ReloadCommand;

import java.nio.file.Path;

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

public static void reload() {
Config.reload();
Utils.reloadUsers();
}

@Listener
public void onServerStart(GameStartedServerEvent event) {
new Config(this.defaultConfig, this.logger, Sponge.getAssetManager().getAsset(this, "defaultConfig.conf").get());
Config.reload();
Utils.reloadUsers();
game.getEventManager().registerListeners(this, new EventListener());

PermissionDescription.Builder builder = game.getServiceManager().getRegistration(PermissionService.class).get()
.getProvider().newDescriptionBuilder(this);
builder.id("whitelister.whitelister")
.description(Text.of("Needed to use /whitelist"))
.assign(PermissionDescription.ROLE_STAFF, true)
.assign(PermissionDescription.ROLE_USER, false)
.register();
builder.id("whitelister.whitelister.list")
.description(Text.of("Needed to use /whitelist list"))
.assign(PermissionDescription.ROLE_STAFF, true)
.assign(PermissionDescription.ROLE_USER, false)
.register();
builder.id("whitelister.whitelister.reload")
.description(Text.of("Needed to use /whitelist reload"))
.assign(PermissionDescription.ROLE_STAFF, true)
.assign(PermissionDescription.ROLE_USER, false)
.register();

CommandSpec reloadSpec = CommandSpec.builder()
.description(Text.of("Reloads plugin"))
.permission("whitelister.whitelister.reload")
.executor(new ReloadCommand())
.build();
CommandSpec listSpec = CommandSpec.builder()
.description(Text.of("Lists all players"))
.permission("whitelister.whitelister.list")
.executor(new ListCommand())
.build();
game.getCommandManager().register(this, CommandSpec.builder()
.description(Text.of("Main command for ScottybotWhitelist"))
.permission("whitelister.whitelister")
.child(reloadSpec, "reload")
.child(listSpec, "list")
.executor(new MainCommand())
.build(),
"whitelister");
}
}
14 changes: 14 additions & 0 deletions src/main/java/pro/kdray/scottybotwhitelist/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.action.TextActions;

import java.io.BufferedReader;
import java.io.IOException;
Expand Down Expand Up @@ -83,4 +85,16 @@ public static void reloadUsers() {

Utils.users = new Gson().fromJson(users, listType);
}

public static Text getUserList() {
Text.Builder mainText = Text.builder();
for (MixerUser user : users.values()) {
mainText.append(Text.builder(user.mcname)
.onHover(TextActions.showText(Text.of("Mixer Name: " + user.beamname + "\nExpires: " + user.UserFriendlyDate)))
.append(Text.of(", "))
.build());
}
mainText.append(Text.of("(" + users.size() + ")"));
return mainText.build();
}
}

0 comments on commit bbb8d01

Please sign in to comment.