Initial commit
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package net.knarcraft.paidsigns.command;
|
||||
|
||||
import net.knarcraft.paidsigns.PaidSigns;
|
||||
import net.knarcraft.paidsigns.container.PaidSign;
|
||||
import net.knarcraft.paidsigns.manager.PaidSignManager;
|
||||
import net.knarcraft.paidsigns.property.OptionState;
|
||||
import net.knarcraft.paidsigns.utility.Tokenizer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* A representation of the command for adding a new paid sign
|
||||
*/
|
||||
public class AddCommand implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] args) {
|
||||
if (args.length < 3) {
|
||||
return false;
|
||||
}
|
||||
PaidSignManager manager = PaidSigns.getInstance().getSignManager();
|
||||
List<String> arguments = Tokenizer.tokenize(String.join(" ", args));
|
||||
|
||||
String id = arguments.get(0);
|
||||
short line;
|
||||
double cost;
|
||||
try {
|
||||
line = (short) (Short.parseShort(arguments.get(1)) - 1);
|
||||
cost = Double.parseDouble(arguments.get(2));
|
||||
} catch (NumberFormatException exception) {
|
||||
sender.sendMessage("You provided an invalid number");
|
||||
return false;
|
||||
}
|
||||
OptionState ignoreCase = OptionState.DEFAULT;
|
||||
OptionState ignoreColor = OptionState.DEFAULT;
|
||||
if (arguments.size() > 3) {
|
||||
ignoreCase = OptionState.fromString(arguments.get(3));
|
||||
}
|
||||
if (arguments.size() > 4) {
|
||||
ignoreColor = OptionState.fromString(arguments.get(4));
|
||||
}
|
||||
|
||||
try {
|
||||
PaidSign sign = new PaidSign(id, line, cost, ignoreCase, ignoreColor);
|
||||
for (PaidSign similarSign : manager.getPaidSigns(sign.getCleanId(), sign.getLineIndex())) {
|
||||
if (sign.matches(similarSign)) {
|
||||
sender.sendMessage("A paid sign with the same id and line already exists");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
manager.addPaidSign(sign);
|
||||
sender.sendMessage("Successfully added new paid sign");
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
Logger logger = PaidSigns.getInstance().getLogger();
|
||||
logger.log(Level.SEVERE, "Exception encountered while trying to write " +
|
||||
"to the data file");
|
||||
logger.log(Level.SEVERE, Arrays.toString(e.getStackTrace()));
|
||||
sender.sendMessage("An exception occurred. Please notify the server administrator or check the server log.");
|
||||
return false;
|
||||
} catch (IllegalArgumentException e) {
|
||||
sender.sendMessage("Invalid input: " + e.getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,71 @@
|
||||
package net.knarcraft.paidsigns.command;
|
||||
|
||||
import net.knarcraft.paidsigns.utility.Tokenizer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The tab completer for the add paid sign command
|
||||
*/
|
||||
public class AddTabCompleter implements TabCompleter {
|
||||
|
||||
private static List<String> ids;
|
||||
private static List<String> lines;
|
||||
private static List<String> costs;
|
||||
private static List<String> options;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias,
|
||||
@NotNull String[] args) {
|
||||
if (ids == null) {
|
||||
initializeValues();
|
||||
}
|
||||
List<String> arguments = Tokenizer.tokenize(String.join(" ", args));
|
||||
|
||||
if (arguments.size() < 1) {
|
||||
return ids;
|
||||
} else if (arguments.size() < 2) {
|
||||
return lines;
|
||||
} else if (arguments.size() < 3) {
|
||||
return costs;
|
||||
} else if (arguments.size() < 5) {
|
||||
return options;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the values available for tab completion
|
||||
*/
|
||||
private static void initializeValues() {
|
||||
ids = new ArrayList<>();
|
||||
ids.add("[Gate]");
|
||||
ids.add("\"[Lift Up]\"");
|
||||
ids.add("\"[Lift Down]\"");
|
||||
|
||||
lines = new ArrayList<>();
|
||||
lines.add("1");
|
||||
lines.add("2");
|
||||
lines.add("3");
|
||||
lines.add("4");
|
||||
|
||||
costs = new ArrayList<>();
|
||||
costs.add("1");
|
||||
costs.add("5");
|
||||
costs.add("10");
|
||||
costs.add("15");
|
||||
|
||||
options = new ArrayList<>();
|
||||
options.add("default");
|
||||
options.add("true");
|
||||
options.add("false");
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
package net.knarcraft.paidsigns.command;
|
||||
|
||||
import net.knarcraft.paidsigns.PaidSigns;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A representation of the command for reloading the plugin
|
||||
*/
|
||||
public class ReloadTabCommand implements TabExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] args) {
|
||||
PaidSigns.getInstance().reload();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias,
|
||||
@NotNull String[] args) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,55 @@
|
||||
package net.knarcraft.paidsigns.command;
|
||||
|
||||
import net.knarcraft.paidsigns.PaidSigns;
|
||||
import net.knarcraft.paidsigns.utility.Tokenizer;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* A representation of the command for removing a paid sign
|
||||
*/
|
||||
public class RemoveCommand implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] args) {
|
||||
if (args.length < 1) {
|
||||
return false;
|
||||
}
|
||||
List<String> arguments = Tokenizer.tokenize(String.join(" ", args));
|
||||
String[] input = arguments.get(0).split("\\|");
|
||||
short line;
|
||||
try {
|
||||
line = (short) (Short.parseShort(input[0]) - 1);
|
||||
} catch (NumberFormatException exception) {
|
||||
sender.sendMessage("Invalid line number given");
|
||||
return false;
|
||||
}
|
||||
String id = String.join("|", (String[]) ArrayUtils.remove(input, 0));
|
||||
try {
|
||||
if (PaidSigns.getInstance().getSignManager().removePaidSign(id, line)) {
|
||||
sender.sendMessage("Successfully removed paid sign");
|
||||
} else {
|
||||
sender.sendMessage("No matching paid sign was found");
|
||||
}
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
Logger logger = PaidSigns.getInstance().getLogger();
|
||||
logger.log(Level.SEVERE, "Exception encountered while trying to write " +
|
||||
"to the data file");
|
||||
logger.log(Level.SEVERE, Arrays.toString(e.getStackTrace()));
|
||||
sender.sendMessage("An exception occurred. Please notify the server administrator or check the server log.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package net.knarcraft.paidsigns.command;
|
||||
|
||||
import net.knarcraft.paidsigns.PaidSigns;
|
||||
import net.knarcraft.paidsigns.container.PaidSign;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The tab completer for the remove command
|
||||
*/
|
||||
public class RemoveTabCompleter implements TabCompleter {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias,
|
||||
@NotNull String[] args) {
|
||||
List<PaidSign> allPaidSigns = PaidSigns.getInstance().getSignManager().getAllPaidSigns();
|
||||
List<String> signIds = new ArrayList<>();
|
||||
for (PaidSign sign : allPaidSigns) {
|
||||
signIds.add("\"" + (sign.getLineIndex() + 1) + "|" + sign.getId() + "\"");
|
||||
}
|
||||
return signIds;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user