ArgReader improvements and an extra MassiveCommand utility command
This commit is contained in:
parent
a144e160e8
commit
182b48abd4
@ -25,6 +25,11 @@ public class PotionEffectWrap
|
|||||||
public int getId() { return this.id; }
|
public int getId() { return this.id; }
|
||||||
public void setId(int id) { this.id = id; }
|
public void setId(int id) { this.id = id; }
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public void setPotionEffectType(PotionEffectType potionEffectType) { this.setId(potionEffectType.getId());}
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public PotionEffectType getPotionEffectType() { return PotionEffectType.getById(this.getId()); }
|
||||||
|
|
||||||
protected int amplifier;
|
protected int amplifier;
|
||||||
public int getAmplifier() { return this.amplifier; }
|
public int getAmplifier() { return this.amplifier; }
|
||||||
public void setAmplifier(int amplifier) { this.amplifier = amplifier; }
|
public void setAmplifier(int amplifier) { this.amplifier = amplifier; }
|
||||||
@ -139,4 +144,36 @@ public class PotionEffectWrap
|
|||||||
addEffects(entity, potionEffectWraps);
|
addEffects(entity, potionEffectWraps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// TO STRING
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public String getListLine()
|
||||||
|
{
|
||||||
|
// Create Ret
|
||||||
|
StringBuilder ret = new StringBuilder();
|
||||||
|
|
||||||
|
// Type Name (ID)
|
||||||
|
ret.append(this.getPotionEffectType().getName());
|
||||||
|
ret.append(' ');
|
||||||
|
|
||||||
|
// Amplifier
|
||||||
|
ret.append(this.amplifier);
|
||||||
|
ret.append(' ');
|
||||||
|
|
||||||
|
// Duration
|
||||||
|
ret.append(this.duration);
|
||||||
|
ret.append(' ');
|
||||||
|
|
||||||
|
// Ambient
|
||||||
|
ret.append(this.ambient);
|
||||||
|
ret.append(' ');
|
||||||
|
|
||||||
|
// Particles
|
||||||
|
ret.append(this.particles);
|
||||||
|
|
||||||
|
// Return Ret
|
||||||
|
return ret.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import com.massivecraft.massivecore.MassiveException;
|
|||||||
import com.massivecraft.massivecore.cmd.arg.ArgReader;
|
import com.massivecraft.massivecore.cmd.arg.ArgReader;
|
||||||
import com.massivecraft.massivecore.cmd.req.Req;
|
import com.massivecraft.massivecore.cmd.req.Req;
|
||||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||||
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.mixin.Mixin;
|
import com.massivecraft.massivecore.mixin.Mixin;
|
||||||
import com.massivecraft.massivecore.util.PermUtil;
|
import com.massivecraft.massivecore.util.PermUtil;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
@ -165,10 +166,12 @@ public class MassiveCommand
|
|||||||
// The different names this commands will react to
|
// The different names this commands will react to
|
||||||
protected List<String> aliases;
|
protected List<String> aliases;
|
||||||
public List<String> getAliases() { return this.aliases; }
|
public List<String> getAliases() { return this.aliases; }
|
||||||
public void setAliases(List<String> aliases) { this.aliases = aliases; }
|
|
||||||
|
|
||||||
public void addAliases(String... aliases) { this.aliases.addAll(Arrays.asList(aliases)); }
|
public void setAliases(Collection<String> aliases) { this.aliases = new MassiveList<String>(aliases); }
|
||||||
|
public void setAliases(String... aliases) { this.setAliases(Arrays.asList(aliases)); }
|
||||||
|
|
||||||
public void addAliases(Collection<String> aliases) { this.aliases.addAll(aliases); }
|
public void addAliases(Collection<String> aliases) { this.aliases.addAll(aliases); }
|
||||||
|
public void addAliases(String... aliases) { this.addAliases(Arrays.asList(aliases)); }
|
||||||
|
|
||||||
// FIELD: requiredArgs
|
// FIELD: requiredArgs
|
||||||
// These args must always be sent
|
// These args must always be sent
|
||||||
|
68
src/com/massivecraft/massivecore/cmd/arg/ARCombined.java
Normal file
68
src/com/massivecraft/massivecore/cmd/arg/ARCombined.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package com.massivecraft.massivecore.cmd.arg;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
|
|
||||||
|
public class ARCombined extends ArgReaderAbstract<List<?>>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELDS
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
protected List<ArgReader<?>> inners;
|
||||||
|
public List<ArgReader<?>> getInners() { return this.inners; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INSTANCE & CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static ARCombined get(Collection<ArgReader<?>> inners) { return new ARCombined(inners); }
|
||||||
|
public static ARCombined get(ArgReader<?>... inners) { return new ARCombined(inners); }
|
||||||
|
|
||||||
|
public ARCombined(Collection<ArgReader<?>> inners)
|
||||||
|
{
|
||||||
|
this.inners = new MassiveList<ArgReader<?>>(inners);
|
||||||
|
}
|
||||||
|
public ARCombined(ArgReader<?>... inners)
|
||||||
|
{
|
||||||
|
this(Arrays.asList(inners));
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<?> read(String arg, CommandSender sender) throws MassiveException
|
||||||
|
{
|
||||||
|
// Create Ret
|
||||||
|
List<Object> ret = new MassiveList<Object>();
|
||||||
|
|
||||||
|
// Fill Ret
|
||||||
|
List<String> parts = Arrays.asList(arg.split(","));
|
||||||
|
if (parts.size() > this.getInners().size())
|
||||||
|
{
|
||||||
|
throw new MassiveException().addMsg("<b>Too many parts!");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < parts.size(); i++)
|
||||||
|
{
|
||||||
|
String part = parts.get(i);
|
||||||
|
ArgReader<?> argReader = this.getInners().get(i);
|
||||||
|
|
||||||
|
Object asdf = argReader.read(part, sender);
|
||||||
|
|
||||||
|
ret.add(asdf);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return Ret
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.massivecraft.massivecore.cmd.arg;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
|
|
||||||
|
public class ARPotionEffectType extends ARAbstractSelect<PotionEffectType>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INSTANCE & CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
private static ARPotionEffectType i = new ARPotionEffectType();
|
||||||
|
public static ARPotionEffectType get() { return i; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String typename()
|
||||||
|
{
|
||||||
|
return "potion effect type";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PotionEffectType select(String str, CommandSender sender) throws MassiveException
|
||||||
|
{
|
||||||
|
// Prepare
|
||||||
|
str = getComparable(str);
|
||||||
|
|
||||||
|
// Match Name
|
||||||
|
for (PotionEffectType potionEffectType : PotionEffectType.values())
|
||||||
|
{
|
||||||
|
String name = getComparable(potionEffectType);
|
||||||
|
if (str.equals(name)) return potionEffectType;
|
||||||
|
}
|
||||||
|
|
||||||
|
// :(
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> altNames(CommandSender sender)
|
||||||
|
{
|
||||||
|
// Create Ret
|
||||||
|
List<String> ret = new MassiveList<String>();
|
||||||
|
|
||||||
|
// Match Name
|
||||||
|
for (PotionEffectType potionEffectType : PotionEffectType.values())
|
||||||
|
{
|
||||||
|
if (potionEffectType == null) continue;
|
||||||
|
String name = potionEffectType.getName();
|
||||||
|
if (name == null) continue;
|
||||||
|
|
||||||
|
ret.add(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return Ret
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getComparable(PotionEffectType potionEffectType)
|
||||||
|
{
|
||||||
|
if (potionEffectType == null) return null;
|
||||||
|
return getComparable(potionEffectType.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getComparable(String string)
|
||||||
|
{
|
||||||
|
if (string == null) return null;
|
||||||
|
return string.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package com.massivecraft.massivecore.cmd.arg;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.PotionEffectWrap;
|
||||||
|
|
||||||
|
public class ARPotionEffectWrap extends ArgReaderAbstract<PotionEffectWrap>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INSTANCE & CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
private static ARPotionEffectWrap i = new ARPotionEffectWrap();
|
||||||
|
public static ARPotionEffectWrap get() { return i; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELDS
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
protected final ARCombined combined = new ARCombined(
|
||||||
|
ARPotionEffectType.get(),
|
||||||
|
ARInteger.get(),
|
||||||
|
ARInteger.get(),
|
||||||
|
ARBoolean.get(),
|
||||||
|
ARBoolean.get()
|
||||||
|
);
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PotionEffectWrap read(String arg, CommandSender sender) throws MassiveException
|
||||||
|
{
|
||||||
|
// Create Ret
|
||||||
|
PotionEffectWrap ret = new PotionEffectWrap();
|
||||||
|
|
||||||
|
// Fill Ret
|
||||||
|
List<?> parts = combined.read(arg, sender);
|
||||||
|
|
||||||
|
for (int i = 0 ; i < parts.size() ; i++)
|
||||||
|
{
|
||||||
|
Object part = parts.get(i);
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
PotionEffectType potionEffectType = (PotionEffectType)part;
|
||||||
|
ret.setPotionEffectType(potionEffectType);
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
Integer amplifier = (Integer)part;
|
||||||
|
ret.setAmplifier(amplifier);
|
||||||
|
}
|
||||||
|
else if (i == 2)
|
||||||
|
{
|
||||||
|
Integer duration = (Integer)part;
|
||||||
|
ret.setDuration(duration);
|
||||||
|
}
|
||||||
|
else if (i == 3)
|
||||||
|
{
|
||||||
|
Boolean ambient = (Boolean)part;
|
||||||
|
ret.setAmbient(ambient);
|
||||||
|
}
|
||||||
|
else if (i == 4)
|
||||||
|
{
|
||||||
|
Boolean particles = (Boolean)part;
|
||||||
|
ret.setParticles(particles);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return Ret
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,6 +4,8 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.cmd.MassiveCommand;
|
||||||
|
|
||||||
public abstract class ReqAbstract implements Req, Serializable
|
public abstract class ReqAbstract implements Req, Serializable
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -20,4 +22,10 @@ public abstract class ReqAbstract implements Req, Serializable
|
|||||||
return this.createErrorMessage(sender, null);
|
return this.createErrorMessage(sender, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getDesc(MassiveCommand command)
|
||||||
|
{
|
||||||
|
if (command == null) return "do that";
|
||||||
|
return command.getDesc();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user