diff --git a/src/main/java/com/intellectualcrafters/plot/commands/BO3.java b/src/main/java/com/intellectualcrafters/plot/commands/BO3.java index 3ecb36398..a6524def7 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/BO3.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/BO3.java @@ -41,7 +41,7 @@ import com.plotsquared.general.commands.CommandDeclaration; command = "bo3", aliases = {"bo2"}, description = "Mark a plot as done", - permission = "plots.done", + permission = "plots.bo3", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE ) diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java index b68b7155d..94775d2f2 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java @@ -99,7 +99,6 @@ public class DebugExec extends SubCommand { engine.eval(script, scope); } } catch (Exception e) { - e.printStackTrace(); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java b/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java new file mode 100644 index 000000000..04e6c0860 --- /dev/null +++ b/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java @@ -0,0 +1,143 @@ +package com.intellectualcrafters.plot.commands; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.intellectualcrafters.plot.PS; +import com.intellectualcrafters.plot.object.ConsolePlayer; +import com.intellectualcrafters.plot.object.PlotPlayer; +import com.intellectualcrafters.plot.util.Permissions; +import com.intellectualcrafters.plot.util.StringMan; +import com.plotsquared.general.commands.Command; + +public class GenerateDocs { + public static void main(String[] args) { + MainCommand.getInstance().addCommand(new WE_Anywhere()); + MainCommand.getInstance().addCommand(new Cluster()); + ArrayList> commands = MainCommand.getInstance().getCommands(); + log("### Want to document some commands?"); + log(" - This page is automatically generated"); + log(" - Fork the project and add a javadoc comment to one of the command classes"); + log(" - Then do a pull request and it will be added to this page"); + log(""); + log("# Contents"); + for (CommandCategory category : CommandCategory.values()) { + log("###### " + category.name()); + for (Command command : MainCommand.getCommands(category, null)) { + log(" - [/plot " + command.getCommand() + "](https://github.com/IntellectualSites/PlotSquared/wiki/Commands#" + command.getCommand() +") "); + } + log(""); + } + log("# Commands"); + for (Command command : commands) { + printCommand(command); + } + } + + public static void printCommand(Command command) { + try { + String clazz = command.getClass().getSimpleName(); + String name = command.getCommand(); + + // Header + String source = "https://github.com/IntellectualSites/PlotSquared/tree/master/src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java"; + log("## [" + name.toUpperCase() + "](" + source + ") "); + + File file = new File("src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java"); + List lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); + List perms = getPerms(name, lines); + String comment = getComments(lines); + + log("#### Description"); + log("`" + command.getDescription() + "`"); + if (comment.length() > 0) { + log("##### Comments"); + log("``` java"); + log(comment); + log("```"); + } + + log("#### Usage"); + log("`" + command.getUsage().replaceAll("\\{label\\}", "plot") + "`"); + + + if (command.getRequiredType() != RequiredType.NONE) { + log("#### Required callers"); + log("`" + command.getRequiredType().name() + "`"); + } + + Set aliases = command.getAliases(); + if (aliases.size() > 0) { + log("#### Aliases"); + log("`" + StringMan.getString(command.getAliases()) + "`"); + } + + log("#### Permissions"); + log("##### Primary"); + log(" - `" + command.getPermission() + "` "); + if (perms.size() > 0) { + log(""); + log("##### Other"); + log(" - `" + StringMan.join(perms, "`\n - `") + "`"); + } + log(""); + log("***"); + log(""); + } + catch (Exception e) { + e.printStackTrace(); + } + } + + public static List getPerms(String cmd, List lines) { + ArrayList perms = new ArrayList(); + Pattern p = Pattern.compile("\"([^\"]*)\""); + for (String line : lines) { + if (line.contains("Permissions.hasPermission(")) { + Matcher m = p.matcher(line); + while (m.find()) { + String perm = m.group(1); + if (perm.endsWith(".")) { + perm += ""; + } + if (perm.startsWith(".")) { + perms.set(perms.size() - 1, perms.get(perms.size() - 1) + perm); + } + else if (perm.contains(".")) { + perms.add(perm); + } + } + } + } + switch (cmd.toLowerCase()) { + case "auto": + case "claim": { + perms.add("plots.plot.#"); + break; + } + } + return perms; + } + + public static String getComments(List lines) { + StringBuilder result = new StringBuilder(); + for (String line : lines) { + line = line.trim(); + if (line.startsWith("/** ") || line.startsWith("*/ ") || line.startsWith("* ")) { + line = (line.replaceAll("/[*][*] ", "").replaceAll("[*]/ ", "").replaceAll("[*] ", "")).trim(); + result.append(line + "\n"); + } + } + return result.toString().trim(); + } + + public static void log(String s) { + System.out.println(s); + } +} diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Help.java b/src/main/java/com/intellectualcrafters/plot/commands/Help.java index e29b2cf60..4ce7611b7 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Help.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Help.java @@ -1,10 +1,3 @@ -/* - * Copyright (c) IntellectualCrafters - 2014. You are not allowed to distribute - * and/or monetize any of our intellectual property. IntellectualCrafters is not - * affiliated with Mojang AB. Minecraft is a trademark of Mojang AB. - * - * >> File = Help.java >> Generated by: Citymonstret at 2014-08-11 17:32 - */ package com.intellectualcrafters.plot.commands; import com.intellectualcrafters.plot.object.PlotPlayer; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Set.java b/src/main/java/com/intellectualcrafters/plot/commands/Set.java index 23751e27f..f53bce8cd 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Set.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Set.java @@ -238,14 +238,6 @@ public class Set extends SubCommand { return true; } final int biome = BlockManager.manager.getBiomeFromString(args[1]); - /* - * for (Biome b : Biome.values()) { - * if (b.toString().equalsIgnoreCase(args[1])) { - * biome = b; - * break; - * } - * } - */ if (biome == -1) { MainUtil.sendMessage(plr, getBiomeList(BlockManager.manager.getBiomeList())); return true; diff --git a/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java b/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java index 913e17e11..fab154a9d 100644 --- a/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java +++ b/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java @@ -178,7 +178,7 @@ public class BukkitPlayer extends PlotPlayer { @Override public void removeAttribute(String key) { key = "plotsquared_user_attributes." + key; - if (EconHandler.manager == null) { + if (EconHandler.manager == null || player.hasPermission("plotsquared_user_attributes.*")) { deleteMeta(key); return; } diff --git a/target/PlotSquared-Bukkit.jar b/target/PlotSquared-Bukkit.jar index efefce606..6f22bac26 100644 Binary files a/target/PlotSquared-Bukkit.jar and b/target/PlotSquared-Bukkit.jar differ diff --git a/target/PlotSquared-Sponge.jar b/target/PlotSquared-Sponge.jar index b0c31bc4f..9e5f9d0bb 100644 Binary files a/target/PlotSquared-Sponge.jar and b/target/PlotSquared-Sponge.jar differ