Add plot descriptions & hide reserved flags from /plot info

This commit is contained in:
Sauilitired 2015-07-18 16:49:13 +02:00
parent 240470fdd1
commit 1723d8266b
5 changed files with 59 additions and 16 deletions

View File

@ -1120,6 +1120,7 @@ public class PS {
FlagManager.addFlag(new AbstractFlag("break", new FlagValue.PlotBlockListValue()));
FlagManager.addFlag(new AbstractFlag("use", new FlagValue.PlotBlockListValue()));
FlagManager.addFlag(new AbstractFlag("blocked-cmds", new FlagValue.StringListValue()));
FlagManager.addFlag(new AbstractFlag("ice-met", new FlagValue.BooleanValue()));
FlagManager.addFlag(new AbstractFlag("gamemode") {
public String parseValueRaw(final String value) {
@ -1173,6 +1174,7 @@ public class PS {
return "Flag value must be weather type: 'clear' or 'rain'";
}
});
FlagManager.addFlag(new AbstractFlag("description", new FlagValue.StringValue()), true);
}

View File

@ -25,6 +25,7 @@ import java.util.Collection;
import java.util.UUID;
import java.util.regex.Matcher;
import com.intellectualcrafters.plot.flag.Flag;
import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.config.C;
@ -205,7 +206,10 @@ public class Info extends SubCommand {
final String members = getPlayerList(plot.members);
final String denied = getPlayerList(plot.denied);
final String flags = StringMan.replaceFromMap("$2" + (StringUtils.join(FlagManager.getPlotFlags(plot).values(), "").length() > 0 ? StringUtils.join(FlagManager.getPlotFlags(plot).values(), "$1, $2") : C.NONE.s()), C.replacements);
Flag descriptionFlag = FlagManager.getPlotFlag(plot, "description");
final String description = descriptionFlag == null ? C.NONE.s() : descriptionFlag.getValueString();
final String flags = StringMan.replaceFromMap("$2" + (StringUtils.join(FlagManager.getPlotFlags(plot.world, plot.settings, true).values(), "").length() > 0 ? StringUtils.join(FlagManager.getPlotFlags(plot.world, plot.settings, true).values(), "$1, $2") : C.NONE.s()), C.replacements);
final boolean build = (player == null) || plot.isAdded(player.getUUID());
String owner = plot.owner == null ? "unowned" : getPlayerList(plot.getOwners());
@ -214,6 +218,7 @@ public class Info extends SubCommand {
info = info.replaceAll("%id%", id.toString());
info = info.replaceAll("%id2%", id2.toString());
info = info.replaceAll("%num%", num + "");
info = info.replaceAll("%desc%", description);
info = info.replaceAll("%biome%", biome);
info = info.replaceAll("%owner%", owner);
info = info.replaceAll("%members%", members);

View File

@ -168,6 +168,30 @@ public class Set extends SubCommand {
plot.setHome(blockloc);
return MainUtil.sendMessage(plr, C.POSITION_SET);
}
if (args[0].equalsIgnoreCase("desc")) {
if (!Permissions.hasPermission(plr, "plots.set.desc")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.desc");
return false;
}
if (args.length < 2) {
MainUtil.sendMessage(plr, C.MISSING_DESC);
return false;
}
final StringBuilder desc = new StringBuilder();
for (int i = 1; i < args.length; i++) {
desc.append(args[i]).append(" ");
}
String descValue = desc.substring(0, desc.length() - 1);
Flag flag = new Flag(FlagManager.getFlag("description"), descValue);
final boolean result = FlagManager.addPlotFlag(plot, flag);
if (!result) {
MainUtil.sendMessage(plr, C.FLAG_NOT_ADDED);
return false;
}
MainUtil.sendMessage(plr, C.DESC_SET);
return true;
}
if (args[0].equalsIgnoreCase("alias")) {
if (!Permissions.hasPermission(plr, "plots.set.alias")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.alias");

View File

@ -227,6 +227,10 @@ public enum C {
* BarAPI
*/
BOSSBAR_CLEARING("$2Clearing plot: $1%id%", "Bar API"),
DESC_SET("$2Plot description set", "Desc"),
MISSING_DESC("$2You need to specify a description", "Desc"),
/*
* Alias
*/

View File

@ -20,11 +20,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
package com.intellectualcrafters.plot.flag;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C;
@ -237,16 +233,28 @@ public class FlagManager {
return getSettingFlags(plot.world, plot.settings);
}
public static HashMap<String, Flag> getPlotFlags(final String world, final PlotSettings settings, final boolean ignorePluginflags) {
HashMap<String, Flag> flags = new HashMap<>();
PlotWorld plotWorld = PS.get().getPlotWorld(world);
if (plotWorld != null && plotWorld.DEFAULT_FLAGS.size() != 0) {
flags.putAll(plotWorld.DEFAULT_FLAGS);
}
if (ignorePluginflags) {
for (final Map.Entry<String, Flag> flag : settings.flags.entrySet()) {
if (isReserved(flag.getValue().getAbstractFlag().getKey())) continue;
flags.put(flag.getKey(), flag.getValue());
}
} else {
flags.putAll(settings.flags);
}
return flags;
}
public static HashMap<String, Flag> getSettingFlags(final String world, final PlotSettings settings) {
PlotWorld plotworld = PS.get().getPlotWorld(world);
if (plotworld == null || plotworld.DEFAULT_FLAGS.size() == 0) {
return settings.flags;
}
else {
HashMap<String, Flag> map = (HashMap<String, Flag>) plotworld.DEFAULT_FLAGS.clone();
map.putAll(settings.flags);
return map;
}
return getPlotFlags(world, settings, false);
}
public static boolean removePlotFlag(final Plot plot, final String id) {