mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 07:06:44 +01:00
Register flags
This commit is contained in:
parent
b125ef6668
commit
1768943360
@ -380,7 +380,7 @@ public class PlotAPI {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void addFlag(Flag<?> flag) {
|
public void addFlag(Flag<?> flag) {
|
||||||
Flags.getFlags().add(flag);
|
Flags.registerFlag(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
package com.intellectualcrafters.plot.flag;
|
package com.intellectualcrafters.plot.flag;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import com.intellectualcrafters.plot.PS;
|
||||||
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotArea;
|
||||||
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.MathMan;
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class Flags {
|
public class Flags {
|
||||||
|
|
||||||
@ -73,6 +80,10 @@ public class Flags {
|
|||||||
public static final IntegerFlag HOSTILE_CAP = new IntegerFlag("hostile-cap");
|
public static final IntegerFlag HOSTILE_CAP = new IntegerFlag("hostile-cap");
|
||||||
public static final IntegerFlag VEHICLE_CAP = new IntegerFlag("vehicle-cap");
|
public static final IntegerFlag VEHICLE_CAP = new IntegerFlag("vehicle-cap");
|
||||||
public static final Flag<?> KEEP = new Flag("keep") {
|
public static final Flag<?> KEEP = new Flag("keep") {
|
||||||
|
@Override public String valueToString(Object value) {
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@Override public Object parseValue(String value) {
|
@Override public Object parseValue(String value) {
|
||||||
if (MathMan.isInteger(value)) {
|
if (MathMan.isInteger(value)) {
|
||||||
return Long.parseLong(value);
|
return Long.parseLong(value);
|
||||||
@ -86,6 +97,10 @@ public class Flags {
|
|||||||
return MainUtil.timeToSec(value) * 1000 + System.currentTimeMillis();
|
return MainUtil.timeToSec(value) * 1000 + System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public String getValueDescription() {
|
||||||
|
return "Flag value must a timestamp or a boolean";
|
||||||
|
}
|
||||||
};
|
};
|
||||||
private static final HashSet<Flag<?>> flags = Sets.newHashSet(MUSIC, DESCRIPTION, ANALYSIS, GREETING, FAREWELL, FEED, HEAL,
|
private static final HashSet<Flag<?>> flags = Sets.newHashSet(MUSIC, DESCRIPTION, ANALYSIS, GREETING, FAREWELL, FEED, HEAL,
|
||||||
GAMEMODE,
|
GAMEMODE,
|
||||||
@ -101,11 +116,55 @@ public class Flags {
|
|||||||
PVE, NO_WORLDEDIT, MISC_CAP, ENTITY_CAP, MOB_CAP, ANIMAL_CAP, HOSTILE_CAP, VEHICLE_CAP);
|
PVE, NO_WORLDEDIT, MISC_CAP, ENTITY_CAP, MOB_CAP, ANIMAL_CAP, HOSTILE_CAP, VEHICLE_CAP);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of registered AbstractFlag objects
|
* Get an immutable set of registered flags.
|
||||||
*
|
*
|
||||||
* @return List (AbstractFlag)
|
* @return a set of registered flags.
|
||||||
*/
|
*/
|
||||||
public static HashSet<Flag<?>> getFlags() {
|
public static Set<Flag<?>> getFlags() {
|
||||||
return flags;
|
return Collections.unmodifiableSet(flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerFlag(final Flag<?> flag) {
|
||||||
|
Iterator<Flag<?>> iterator = flags.iterator();
|
||||||
|
Flag<?> duplicate = null;
|
||||||
|
while (iterator.hasNext()){
|
||||||
|
duplicate = iterator.next();
|
||||||
|
if (flag.getName().equalsIgnoreCase(duplicate.getName())) {
|
||||||
|
iterator.remove();
|
||||||
|
flags.add(flag);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final Flag<?> dupFinal = duplicate;
|
||||||
|
PS.get().foreachPlotArea(new RunnableVal<PlotArea>() {
|
||||||
|
@Override public void run(PlotArea value) {
|
||||||
|
if (dupFinal != null) {
|
||||||
|
Object remove = null;
|
||||||
|
if (value.DEFAULT_FLAGS.containsKey(dupFinal)) {
|
||||||
|
remove = value.DEFAULT_FLAGS.remove(dupFinal);
|
||||||
|
}
|
||||||
|
if (!(remove instanceof String)) {
|
||||||
|
//error message? maybe?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
value.DEFAULT_FLAGS.put(flag,flag.parseValue((String) remove));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
PS.get().foreachPlotRaw(new RunnableVal<Plot>() {
|
||||||
|
@Override public void run(Plot value) {
|
||||||
|
if (dupFinal != null) {
|
||||||
|
Object remove = null;
|
||||||
|
if (value.getFlags().containsKey(dupFinal)) {
|
||||||
|
remove = value.getFlags().remove(dupFinal);
|
||||||
|
}
|
||||||
|
if (!(remove instanceof String)) {
|
||||||
|
//error message? maybe?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
value.getFlags().put(flag,flag.parseValue((String) remove));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user