Update ArgReaders

This commit is contained in:
Magnus Ulf 2015-04-09 14:35:39 +02:00 committed by Olof Larsson
parent 6c61da2b8d
commit 43d2354f04
7 changed files with 96 additions and 25 deletions

View File

@ -1,16 +1,20 @@
package com.massivecraft.factions.cmd.arg; package com.massivecraft.factions.cmd.arg;
import java.util.Collection;
import java.util.List;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.massivecraft.factions.entity.MPlayer;
import com.massivecraft.factions.entity.Faction; import com.massivecraft.factions.entity.Faction;
import com.massivecraft.factions.entity.FactionColl; import com.massivecraft.factions.entity.FactionColl;
import com.massivecraft.factions.entity.MPlayer;
import com.massivecraft.massivecore.MassiveCore; import com.massivecraft.massivecore.MassiveCore;
import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.MassiveException;
import com.massivecraft.massivecore.cmd.arg.ArgReaderAbstract; import com.massivecraft.massivecore.cmd.arg.ARAbstract;
import com.massivecraft.massivecore.collections.MassiveList;
import com.massivecraft.massivecore.util.IdUtil; import com.massivecraft.massivecore.util.IdUtil;
public class ARFaction extends ArgReaderAbstract<Faction> public class ARFaction extends ARAbstract<Faction>
{ {
// -------------------------------------------- // // -------------------------------------------- //
// INSTANCE & CONSTRUCT // INSTANCE & CONSTRUCT
@ -55,5 +59,18 @@ public class ARFaction extends ArgReaderAbstract<Faction>
throw new MassiveException().addMsg("<b>No faction or player matching \"<p>%s<b>\".", str); throw new MassiveException().addMsg("<b>No faction or player matching \"<p>%s<b>\".", str);
} }
@Override
public Collection<String> getTabList(CommandSender sender, String arg)
{
List<String> ret = new MassiveList<String>();
for (Faction faction : FactionColl.get().getAll())
{
ret.add(faction.getName());
}
return ret;
}
} }

View File

@ -24,7 +24,7 @@ public class ARMFlag extends ARAbstractSelect<MFlag>
// -------------------------------------------- // // -------------------------------------------- //
@Override @Override
public String typename() public String getTypeName()
{ {
return "faction flag"; return "faction flag";
} }
@ -70,6 +70,12 @@ public class ARMFlag extends ARAbstractSelect<MFlag>
return ret; return ret;
} }
@Override
public Collection<String> getTabList(CommandSender sender, String arg)
{
return this.altNames(sender);
}
// -------------------------------------------- // // -------------------------------------------- //
// UTIL // UTIL
@ -84,5 +90,5 @@ public class ARMFlag extends ARAbstractSelect<MFlag>
{ {
return getComparable(mflag.getName()); return getComparable(mflag.getName());
} }
} }

View File

@ -24,7 +24,7 @@ public class ARMPerm extends ARAbstractSelect<MPerm>
// -------------------------------------------- // // -------------------------------------------- //
@Override @Override
public String typename() public String getTypeName()
{ {
return "faction permission"; return "faction permission";
} }
@ -70,6 +70,12 @@ public class ARMPerm extends ARAbstractSelect<MPerm>
return ret; return ret;
} }
@Override
public Collection<String> getTabList(CommandSender sender, String arg)
{
return this.altNames(sender);
}
// -------------------------------------------- // // -------------------------------------------- //
// UTIL // UTIL
@ -84,5 +90,5 @@ public class ARMPerm extends ARAbstractSelect<MPerm>
{ {
return getComparable(mperm.getName()); return getComparable(mperm.getName());
} }
} }

View File

@ -2,7 +2,7 @@ package com.massivecraft.factions.cmd.arg;
import com.massivecraft.factions.entity.MPlayer; import com.massivecraft.factions.entity.MPlayer;
import com.massivecraft.factions.entity.MPlayerColl; import com.massivecraft.factions.entity.MPlayerColl;
import com.massivecraft.massivecore.cmd.arg.ArgReader; import com.massivecraft.massivecore.cmd.arg.AR;
public class ARMPlayer public class ARMPlayer
{ {
@ -10,12 +10,12 @@ public class ARMPlayer
// INSTANCE // INSTANCE
// -------------------------------------------- // // -------------------------------------------- //
public static ArgReader<MPlayer> getAny() public static AR<MPlayer> getAny()
{ {
return MPlayerColl.get().getAREntity(); return MPlayerColl.get().getAREntity();
} }
public static ArgReader<MPlayer> getOnline() public static AR<MPlayer> getOnline()
{ {
return MPlayerColl.get().getAREntity(true); return MPlayerColl.get().getAREntity(true);
} }

View File

@ -1,6 +1,8 @@
package com.massivecraft.factions.cmd.arg; package com.massivecraft.factions.cmd.arg;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -12,6 +14,19 @@ import com.massivecraft.massivecore.util.Txt;
public class ARRank extends ARAbstractSelect<Rel> public class ARRank extends ARAbstractSelect<Rel>
{ {
// -------------------------------------------- //
// CONSTANTS
// -------------------------------------------- //
public static final List<String> ALT_NAMES = Collections.unmodifiableList(MUtil.list(
Txt.getNicedEnum(Rel.LEADER),
Txt.getNicedEnum(Rel.OFFICER),
Txt.getNicedEnum(Rel.MEMBER),
Txt.getNicedEnum(Rel.RECRUIT),
"Promote",
"Demote"
));
// -------------------------------------------- // // -------------------------------------------- //
// INSTANCE & CONSTRUCT // INSTANCE & CONSTRUCT
// -------------------------------------------- // // -------------------------------------------- //
@ -52,7 +67,7 @@ public class ARRank extends ARAbstractSelect<Rel>
// This is especially useful when one rank can have aliases. // This is especially useful when one rank can have aliases.
// In the case of promote/demote, // In the case of promote/demote,
// that would require 10 lines of code repeated for each alias. // that would require 10 lines of code repeated for each alias.
arg = this.prepareArg(arg); arg = getComparable(arg);
// All the normal ranks // All the normal ranks
if (arg.equals("leader")) return Rel.LEADER; if (arg.equals("leader")) return Rel.LEADER;
@ -91,27 +106,34 @@ public class ARRank extends ARAbstractSelect<Rel>
@Override @Override
public Collection<String> altNames(CommandSender sender) public Collection<String> altNames(CommandSender sender)
{ {
return MUtil.list( return ALT_NAMES;
Txt.getNicedEnum(Rel.LEADER), }
Txt.getNicedEnum(Rel.OFFICER),
Txt.getNicedEnum(Rel.MEMBER),
Txt.getNicedEnum(Rel.RECRUIT), @Override
"Promote", public Collection<String> getTabList(CommandSender sender, String arg)
"Demote" {
); return this.altNames(sender);
} }
@Override @Override
public String typename() public boolean isValid(String arg, CommandSender sender)
{ {
return "rank"; try
{
return this.select(arg, sender) != null;
}
catch (MassiveException e)
{
return true;
}
} }
// -------------------------------------------- // // -------------------------------------------- //
// ARG // ARG
// -------------------------------------------- // // -------------------------------------------- //
public String prepareArg(String str) public static String getComparable(String str)
{ {
String ret = str.toLowerCase(); String ret = str.toLowerCase();

View File

@ -24,7 +24,7 @@ public class ARRel extends ARAbstractSelect<Rel>
// -------------------------------------------- // // -------------------------------------------- //
@Override @Override
public String typename() public String getTypeName()
{ {
return "role"; return "role";
} }
@ -47,5 +47,11 @@ public class ARRel extends ARAbstractSelect<Rel>
return ret; return ret;
} }
@Override
public Collection<String> getTabList(CommandSender sender, String arg)
{
return this.altNames(sender);
}
} }

View File

@ -1,7 +1,9 @@
package com.massivecraft.factions.cmd.arg; package com.massivecraft.factions.cmd.arg;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -14,6 +16,12 @@ import com.massivecraft.massivecore.util.MUtil;
public class ARSortMPlayer extends ARAbstractSelect<Comparator<MPlayer>> public class ARSortMPlayer extends ARAbstractSelect<Comparator<MPlayer>>
{ {
// -------------------------------------------- //
// CONSTANTS
// -------------------------------------------- //
public static final List<String> ALT_NAMES = Collections.unmodifiableList(MUtil.list("rank", "power", "time"));
// -------------------------------------------- // // -------------------------------------------- //
// INSTANCE & CONSTRUCT // INSTANCE & CONSTRUCT
// -------------------------------------------- // // -------------------------------------------- //
@ -26,7 +34,7 @@ public class ARSortMPlayer extends ARAbstractSelect<Comparator<MPlayer>>
// -------------------------------------------- // // -------------------------------------------- //
@Override @Override
public String typename() public String getTypeName()
{ {
return "player sorter"; return "player sorter";
} }
@ -58,7 +66,13 @@ public class ARSortMPlayer extends ARAbstractSelect<Comparator<MPlayer>>
@Override @Override
public Collection<String> altNames(CommandSender sender) public Collection<String> altNames(CommandSender sender)
{ {
return MUtil.list("rank", "power", "time"); return ALT_NAMES;
}
@Override
public Collection<String> getTabList(CommandSender sender, String arg)
{
return this.altNames(sender);
} }
} }