Property Visibility. Add some editor annotations to config.

This commit is contained in:
Olof Larsson 2016-04-29 08:17:25 +02:00
parent 792c379542
commit 033aebea05
No known key found for this signature in database
GPG Key ID: BBEF14F97DA52474
4 changed files with 23 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import java.util.Map;
import org.bukkit.permissions.Permissible;
import com.massivecraft.massivecore.command.editor.annotation.EditorNullable;
import com.massivecraft.massivecore.command.editor.annotation.EditorType;
import com.massivecraft.massivecore.store.Entity;
import com.massivecraft.massivecore.util.MUtil;
@ -27,10 +28,15 @@ public class MassiveCoreMConf extends Entity<MassiveCoreMConf>
// -------------------------------------------- //
// Base command aliases.
@EditorNullable(false)
public List<String> aliasesMcore = MUtil.list("massivecore", "mcore");
@EditorNullable(false)
public List<String> aliasesUsys = MUtil.list("usys");
@EditorNullable(false)
public List<String> aliasesMstore = MUtil.list("massivestore", "mstore");
@EditorNullable(false)
public List<String> aliasesBuffer = MUtil.list("buffer");
@EditorNullable(false)
public List<String> aliasesCmdurl = MUtil.list("cmdurl");
// -------------------------------------------- //
@ -48,6 +54,7 @@ public class MassiveCoreMConf extends Entity<MassiveCoreMConf>
// -------------------------------------------- //
// Permission denied formatting.
@EditorNullable(false)
public Map<String, String> permissionDeniedFormats = MUtil.map(
"some.awesome.permission.node", "<b>You must be awesome to %s<b>.",
"some.derp.permission.node.1", "derp",
@ -70,6 +77,7 @@ public class MassiveCoreMConf extends Entity<MassiveCoreMConf>
// -------------------------------------------- //
// Teleportation delay permissions.
@EditorNullable(false)
public Map<String, Integer> permissionToTpdelay = MUtil.map(
"massivecore.notpdelay", 0,
"default", 10

View File

@ -9,6 +9,7 @@ import org.bukkit.command.CommandSender;
import com.massivecraft.massivecore.MassiveException;
import com.massivecraft.massivecore.collections.MassiveList;
import com.massivecraft.massivecore.command.MassiveCommand;
import com.massivecraft.massivecore.command.Visibility;
import com.massivecraft.massivecore.command.requirement.RequirementEditorUse;
import com.massivecraft.massivecore.command.type.Type;
import com.massivecraft.massivecore.event.EventMassiveCoreEditorEdit;
@ -58,6 +59,13 @@ public class CommandEditAbstract<O, V> extends MassiveCommand
// OVERRIDE
// -------------------------------------------- //
@Override
public Visibility getVisibility()
{
if ( ! this.getProperty().isVisible()) return Visibility.INVISIBLE;
return super.getVisibility();
}
@Override
public void perform() throws MassiveException
{

View File

@ -37,6 +37,10 @@ public abstract class Property<O, V> implements Named
// SETTINGS
// -------------------------------------------- //
protected boolean visible = true;
public boolean isVisible() { return this.visible; }
public void setVisible(boolean visible) { this.visible = visible; }
protected boolean inheritable = true;
public boolean isInheritable() { return this.inheritable; }
public void setInheritable(boolean inheritable) { this.inheritable = inheritable; }
@ -233,6 +237,7 @@ public abstract class Property<O, V> implements Named
// Fill
for (Property<O, ?> property : properties)
{
if ( ! property.isVisible()) continue;
ret.addAll(property.getShowLines(object, sender));
}

View File

@ -43,6 +43,7 @@ public class PropertyReflection<O, V> extends Property<O, V>
ReflectionUtil.makeAccessible(field);
this.field = field;
this.setVisible(isVisible(field));
this.setInheritable(isInheritable(field));
this.setEditable(isEditable(field));
this.setNullable(isNullable(field));
@ -106,7 +107,7 @@ public class PropertyReflection<O, V> extends Property<O, V>
// Fill > Standard
int modifiers = field.getModifiers();
if (Modifier.isFinal(modifiers)) ret = false;
if (Modifier.isStatic(modifiers) || Modifier.isTransient(modifiers) || Modifier.isFinal(modifiers)) ret = false;
// Fill > Annotation
EditorEditable annotation = field.getAnnotation(EditorEditable.class);