MassiveCore - Various Improvements
This commit is contained in:
parent
ab533bbd2b
commit
de2c1bc249
@ -25,6 +25,7 @@ import com.massivecraft.massivecore.MassivePlugin;
|
|||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.collections.MassiveMap;
|
import com.massivecraft.massivecore.collections.MassiveMap;
|
||||||
import com.massivecraft.massivecore.command.requirement.Requirement;
|
import com.massivecraft.massivecore.command.requirement.Requirement;
|
||||||
|
import com.massivecraft.massivecore.command.requirement.RequirementAbstract;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
||||||
import com.massivecraft.massivecore.command.type.Type;
|
import com.massivecraft.massivecore.command.type.Type;
|
||||||
import com.massivecraft.massivecore.mixin.Mixin;
|
import com.massivecraft.massivecore.mixin.Mixin;
|
||||||
@ -331,9 +332,9 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand
|
|||||||
|
|
||||||
public void addChild(MassiveCommand child, int index)
|
public void addChild(MassiveCommand child, int index)
|
||||||
{
|
{
|
||||||
if (this.children.isEmpty() && ! (child instanceof HelpCommand))
|
if (this.children.isEmpty() && ! (child instanceof MassiveCommandHelp))
|
||||||
{
|
{
|
||||||
this.children.add(0, HelpCommand.get());
|
this.children.add(0, MassiveCommandHelp.get());
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
child.addToChain(this);
|
child.addToChain(this);
|
||||||
@ -718,20 +719,12 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand
|
|||||||
|
|
||||||
public boolean isRequirementsMet(CommandSender sender, boolean verboose)
|
public boolean isRequirementsMet(CommandSender sender, boolean verboose)
|
||||||
{
|
{
|
||||||
String error = this.getRequirementsError(sender, verboose);
|
return RequirementAbstract.isRequirementsMet(this.getRequirements(), sender, this, verboose);
|
||||||
if (error != null && verboose) Mixin.messageOne(sender, error);
|
|
||||||
return error == null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRequirementsError(CommandSender sender, boolean verboose)
|
public String getRequirementsError(CommandSender sender, boolean verboose)
|
||||||
{
|
{
|
||||||
for (Requirement requirement : this.getRequirements())
|
return RequirementAbstract.getRequirementsError(this.getRequirements(), sender, this, verboose);
|
||||||
{
|
|
||||||
if (requirement.apply(sender, this)) continue;
|
|
||||||
if ( ! verboose) return "";
|
|
||||||
return requirement.createErrorMessage(sender, this);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -943,7 +936,7 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand
|
|||||||
List<MassiveCommand> chain = new ArrayList<MassiveCommand>(this.getChain());
|
List<MassiveCommand> chain = new ArrayList<MassiveCommand>(this.getChain());
|
||||||
chain.add(this);
|
chain.add(this);
|
||||||
|
|
||||||
HelpCommand.get().execute(this.sender, this.getArgs(), chain);
|
MassiveCommandHelp.get().execute(this.sender, this.getArgs(), chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.massivecraft.massivecore.command;
|
package com.massivecraft.massivecore.command;
|
||||||
|
|
||||||
public class DeprecatedCommand extends MassiveCommand
|
public class MassiveCommandDeprecated extends MassiveCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// FIELDS
|
// FIELDS
|
||||||
@ -12,7 +12,7 @@ public class DeprecatedCommand extends MassiveCommand
|
|||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public DeprecatedCommand(MassiveCommand target, String... aliases)
|
public MassiveCommandDeprecated(MassiveCommand target, String... aliases)
|
||||||
{
|
{
|
||||||
// Fields
|
// Fields
|
||||||
this.target = target;
|
this.target = target;
|
@ -11,15 +11,15 @@ import com.massivecraft.massivecore.MassiveException;
|
|||||||
import com.massivecraft.massivecore.mson.Mson;
|
import com.massivecraft.massivecore.mson.Mson;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
|
|
||||||
public class HelpCommand extends MassiveCommand
|
public class MassiveCommandHelp extends MassiveCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// INSTANCE & CONSTRUCT
|
// INSTANCE & CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
protected static HelpCommand i = new HelpCommand();
|
protected static MassiveCommandHelp i = new MassiveCommandHelp();
|
||||||
public static HelpCommand get() { return i; }
|
public static MassiveCommandHelp get() { return i; }
|
||||||
private HelpCommand()
|
private MassiveCommandHelp()
|
||||||
{
|
{
|
||||||
// Aliases
|
// Aliases
|
||||||
this.addAliases("?", "h", "help");
|
this.addAliases("?", "h", "help");
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.massivecraft.massivecore.command;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.command.type.primitive.TypeBoolean;
|
||||||
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
|
|
||||||
|
public abstract class MassiveCommandToggle extends MassiveCommand
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELD
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
protected String info = null;
|
||||||
|
public String getInfo() { return this.info; }
|
||||||
|
public void setInfo(String info) { this.info = info; }
|
||||||
|
public String getInfoSuffix()
|
||||||
|
{
|
||||||
|
String info = this.getInfo();
|
||||||
|
if (info == null) return "";
|
||||||
|
return " " + info;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public MassiveCommandToggle()
|
||||||
|
{
|
||||||
|
// Parameters
|
||||||
|
this.addParameter(TypeBoolean.getOn(), "on|off", "toggle");
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ABSTRACT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public abstract boolean get();
|
||||||
|
|
||||||
|
public abstract void set(boolean value);
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// GET NAME
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
List<String> aliases = this.getAliases();
|
||||||
|
return Txt.upperCaseFirst(aliases.get(aliases.size() - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void perform() throws MassiveException
|
||||||
|
{
|
||||||
|
// Args
|
||||||
|
boolean before = this.get();
|
||||||
|
boolean after = this.readArg( ! before);
|
||||||
|
String afterDesc = TypeBoolean.getOn().getVisual(after, sender);
|
||||||
|
|
||||||
|
// NoChange
|
||||||
|
if (after == before)
|
||||||
|
{
|
||||||
|
String message = Txt.parse("<h>%s<i> is already <h>%s<i>.", this.getName(), afterDesc);
|
||||||
|
if (after) message += this.getInfoSuffix();
|
||||||
|
message(message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply
|
||||||
|
set(after);
|
||||||
|
|
||||||
|
// Inform
|
||||||
|
String message = Txt.parse("<h>%s<i> is now <h>%s<i>.", this.getName(), afterDesc);
|
||||||
|
if (after) message += this.getInfoSuffix();
|
||||||
|
message(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -10,7 +10,7 @@ import org.bukkit.plugin.PluginDescriptionFile;
|
|||||||
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
|
|
||||||
public class VersionCommand extends MassiveCommand
|
public class MassiveCommandVersion extends MassiveCommand
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTANTS
|
// CONSTANTS
|
||||||
@ -29,12 +29,12 @@ public class VersionCommand extends MassiveCommand
|
|||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public VersionCommand(Plugin plugin, String permissionName, String... aliases)
|
public MassiveCommandVersion(Plugin plugin, String permissionName, String... aliases)
|
||||||
{
|
{
|
||||||
this(plugin, permissionName, Arrays.asList(aliases));
|
this(plugin, permissionName, Arrays.asList(aliases));
|
||||||
}
|
}
|
||||||
|
|
||||||
public VersionCommand(Plugin plugin, String permissionName, Collection<String> aliases)
|
public MassiveCommandVersion(Plugin plugin, String permissionName, Collection<String> aliases)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
|
@ -6,7 +6,7 @@ import com.massivecraft.massivecore.MassiveCore;
|
|||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
import com.massivecraft.massivecore.MassiveCorePerm;
|
import com.massivecraft.massivecore.MassiveCorePerm;
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
import com.massivecraft.massivecore.command.MassiveCommand;
|
||||||
import com.massivecraft.massivecore.command.VersionCommand;
|
import com.massivecraft.massivecore.command.MassiveCommandVersion;
|
||||||
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
import com.massivecraft.massivecore.command.requirement.RequirementHasPerm;
|
||||||
|
|
||||||
public class CmdMassiveCore extends MassiveCommand
|
public class CmdMassiveCore extends MassiveCommand
|
||||||
@ -29,7 +29,7 @@ public class CmdMassiveCore extends MassiveCommand
|
|||||||
public CmdMassiveCoreHearsound cmdMassiveCoreHearsound = new CmdMassiveCoreHearsound();
|
public CmdMassiveCoreHearsound cmdMassiveCoreHearsound = new CmdMassiveCoreHearsound();
|
||||||
public CmdMassiveCoreBuffer cmdMassiveCoreBuffer = new CmdMassiveCoreBuffer();
|
public CmdMassiveCoreBuffer cmdMassiveCoreBuffer = new CmdMassiveCoreBuffer();
|
||||||
public CmdMassiveCoreCmdurl cmdMassiveCoreCmdurl = new CmdMassiveCoreCmdurl();
|
public CmdMassiveCoreCmdurl cmdMassiveCoreCmdurl = new CmdMassiveCoreCmdurl();
|
||||||
public VersionCommand cmdMassiveCoreVersion = new VersionCommand(MassiveCore.get(), MassiveCorePerm.VERSION.node, "v", "version");
|
public MassiveCommandVersion cmdMassiveCoreVersion = new MassiveCommandVersion(MassiveCore.get(), MassiveCorePerm.VERSION.node, "v", "version");
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
|
@ -5,11 +5,16 @@ import java.io.Serializable;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import com.massivecraft.massivecore.command.MassiveCommand;
|
import com.massivecraft.massivecore.command.MassiveCommand;
|
||||||
|
import com.massivecraft.massivecore.mixin.Mixin;
|
||||||
|
|
||||||
public abstract class RequirementAbstract implements Requirement, Serializable
|
public abstract class RequirementAbstract implements Requirement, Serializable
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(CommandSender sender)
|
public boolean apply(CommandSender sender)
|
||||||
{
|
{
|
||||||
@ -28,4 +33,26 @@ public abstract class RequirementAbstract implements Requirement, Serializable
|
|||||||
return command.getDesc();
|
return command.getDesc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// BULK
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static boolean isRequirementsMet(Iterable<Requirement> requirements, CommandSender sender, MassiveCommand command, boolean verboose)
|
||||||
|
{
|
||||||
|
String error = getRequirementsError(requirements, sender, command, verboose);
|
||||||
|
if (error != null && verboose) Mixin.messageOne(sender, error);
|
||||||
|
return error == null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getRequirementsError(Iterable<Requirement> requirements, CommandSender sender, MassiveCommand command, boolean verboose)
|
||||||
|
{
|
||||||
|
for (Requirement requirement : requirements)
|
||||||
|
{
|
||||||
|
if (requirement.apply(sender, command)) continue;
|
||||||
|
if ( ! verboose) return "";
|
||||||
|
return requirement.createErrorMessage(sender, command);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.massivecraft.massivecore.command.type;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.command.type.TypeAbstract;
|
||||||
|
|
||||||
|
public abstract class TypeNameAbstract extends TypeAbstract<String>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// FIELDS
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
private final boolean strict;
|
||||||
|
public boolean isStrict() { return this.strict; }
|
||||||
|
public boolean isLenient() { return ! this.isStrict(); }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public TypeNameAbstract(boolean strict)
|
||||||
|
{
|
||||||
|
this.strict = strict;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String read(String arg, CommandSender sender) throws MassiveException
|
||||||
|
{
|
||||||
|
if (arg == null) throw new NullPointerException("arg");
|
||||||
|
|
||||||
|
// Allow changing capitalization of the current name if lenient.
|
||||||
|
String current = this.getCurrentName(sender);
|
||||||
|
if (current != null && current.equalsIgnoreCase(arg) && this.isLenient()) return arg;
|
||||||
|
|
||||||
|
if (this.isNameTaken(arg)) throw new MassiveException().addMsg("<b>The name \"<h>%s<b>\" is already in use.",arg);
|
||||||
|
|
||||||
|
return arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> getTabList(CommandSender sender, String arg)
|
||||||
|
{
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ABSTRACT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public abstract String getCurrentName(CommandSender sender);
|
||||||
|
|
||||||
|
public abstract boolean isNameTaken(String name);
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,9 @@ package com.massivecraft.massivecore.comparator;
|
|||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.Named;
|
||||||
|
import com.massivecraft.massivecore.Prioritized;
|
||||||
|
import com.massivecraft.massivecore.store.Entity;
|
||||||
import com.massivecraft.massivecore.util.MUtil;
|
import com.massivecraft.massivecore.util.MUtil;
|
||||||
|
|
||||||
public class ComparatorAbstract<T> implements Comparator<T>
|
public class ComparatorAbstract<T> implements Comparator<T>
|
||||||
@ -35,7 +38,6 @@ public class ComparatorAbstract<T> implements Comparator<T>
|
|||||||
@Override
|
@Override
|
||||||
public int compare(T type1, T type2)
|
public int compare(T type1, T type2)
|
||||||
{
|
{
|
||||||
// Create
|
|
||||||
Integer ret;
|
Integer ret;
|
||||||
|
|
||||||
// Null
|
// Null
|
||||||
@ -44,18 +46,48 @@ public class ComparatorAbstract<T> implements Comparator<T>
|
|||||||
|
|
||||||
// Inner
|
// Inner
|
||||||
ret = this.compareInner(type1, type2);
|
ret = this.compareInner(type1, type2);
|
||||||
|
if (ret != null) return ret;
|
||||||
|
|
||||||
// Return
|
// Prioritized
|
||||||
return ret;
|
if (type1 instanceof Prioritized)
|
||||||
|
{
|
||||||
|
Prioritized prioritized1 = (Prioritized)type1;
|
||||||
|
Prioritized prioritized2 = (Prioritized)type2;
|
||||||
|
|
||||||
|
ret = Integer.compare(prioritized1.getPriority(), prioritized2.getPriority());
|
||||||
|
if (ret != null) return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Named
|
||||||
|
if (type1 instanceof Named)
|
||||||
|
{
|
||||||
|
Named named1 = (Named)type1;
|
||||||
|
Named named2 = (Named)type2;
|
||||||
|
|
||||||
|
ret = ComparatorNaturalOrder.get().compare(named1.getName(), named2.getName());
|
||||||
|
if (ret != null) return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EntityId
|
||||||
|
if (type1 instanceof Entity<?>)
|
||||||
|
{
|
||||||
|
Entity<?> entity1 = (Entity<?>)type1;
|
||||||
|
Entity<?> entity2 = (Entity<?>)type2;
|
||||||
|
ret = MUtil.compare(entity1.getId(), entity2.getId());
|
||||||
|
if (ret != null) return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Identity
|
||||||
|
return ComparatorIdentity.get().compare(type1, type2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// INNER
|
// INNER
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public int compareInner(T type1, T type2)
|
public Integer compareInner(T type1, T type2)
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException("not implemented");
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ public abstract class ComparatorAbstractTransformer<T, X> extends ComparatorAbst
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareInner(T type1, T type2)
|
public Integer compareInner(T type1, T type2)
|
||||||
{
|
{
|
||||||
X x1 = this.transform(type1);
|
X x1 = this.transform(type1);
|
||||||
X x2 = this.transform(type2);
|
X x2 = this.transform(type2);
|
||||||
|
@ -14,7 +14,7 @@ public class ComparatorCaseInsensitive extends ComparatorAbstract<String>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareInner(String string1, String string2)
|
public Integer compareInner(String string1, String string2)
|
||||||
{
|
{
|
||||||
return String.CASE_INSENSITIVE_ORDER.compare(string1, string2);
|
return String.CASE_INSENSITIVE_ORDER.compare(string1, string2);
|
||||||
}
|
}
|
||||||
|
@ -16,14 +16,9 @@ public class ComparatorHashCode extends ComparatorAbstract<Object>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareInner(Object object1, Object object2)
|
public Integer compareInner(Object object1, Object object2)
|
||||||
{
|
{
|
||||||
int ret;
|
return Integer.compare(Objects.hashCode(object1), Objects.hashCode(object2));
|
||||||
|
|
||||||
ret = Integer.compare(Objects.hashCode(object1), Objects.hashCode(object2));
|
|
||||||
if (ret != 0) return ret;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.massivecraft.massivecore.comparator;
|
||||||
|
|
||||||
|
public class ComparatorIdentity extends ComparatorAbstract<Object>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INSTANCE & CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
private static transient ComparatorIdentity i = new ComparatorIdentity();
|
||||||
|
public static ComparatorIdentity get() { return i; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer compareInner(Object object1, Object object2)
|
||||||
|
{
|
||||||
|
if (object1 == object2) return 0;
|
||||||
|
return Integer.compare(System.identityHashCode(object1), System.identityHashCode(object2));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
package com.massivecraft.massivecore.comparator;
|
|
||||||
|
|
||||||
public class ComparatorIdentityHashCode extends ComparatorAbstract<Object>
|
|
||||||
{
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// INSTANCE & CONSTRUCT
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
private static transient ComparatorIdentityHashCode i = new ComparatorIdentityHashCode();
|
|
||||||
public static ComparatorIdentityHashCode get() { return i; }
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// OVERRIDE
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareInner(Object object1, Object object2)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = Integer.compare(System.identityHashCode(object1), System.identityHashCode(object2));
|
|
||||||
if (ret != 0) return ret;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -29,7 +29,7 @@ public class ComparatorLenient<T> extends ComparatorAbstractWrapper<T, T>
|
|||||||
ret = ComparatorHashCode.get().compare(type1, type2);
|
ret = ComparatorHashCode.get().compare(type1, type2);
|
||||||
if (ret != 0) return ret;
|
if (ret != 0) return ret;
|
||||||
|
|
||||||
ret = ComparatorIdentityHashCode.get().compare(type1, type2);
|
ret = ComparatorIdentity.get().compare(type1, type2);
|
||||||
if (ret != 0) return ret;
|
if (ret != 0) return ret;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -43,7 +43,7 @@ public class ComparatorNaturalOrder extends ComparatorAbstract<Object>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareInner(Object object1, Object object2)
|
public Integer compareInner(Object object1, Object object2)
|
||||||
{
|
{
|
||||||
// Martin Pool
|
// Martin Pool
|
||||||
String a = object1.toString();
|
String a = object1.toString();
|
||||||
|
@ -17,7 +17,7 @@ public class ComparatorPriority extends ComparatorAbstract<Prioritized>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareInner(Prioritized prioritized1, Prioritized prioritized2)
|
public Integer compareInner(Prioritized prioritized1, Prioritized prioritized2)
|
||||||
{
|
{
|
||||||
// Equals
|
// Equals
|
||||||
if (prioritized1.equals(prioritized2)) return 0;
|
if (prioritized1.equals(prioritized2)) return 0;
|
||||||
@ -35,7 +35,7 @@ public class ComparatorPriority extends ComparatorAbstract<Prioritized>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We should only return 0 if the items actually are equal.
|
// We should only return 0 if the items actually are equal.
|
||||||
return Integer.compare(prioritized1.hashCode(), prioritized2.hashCode());
|
return ComparatorIdentity.get().compare(prioritized1, prioritized2);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.massivecraft.massivecore.mson.Mson;
|
|||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ public class Pager<T>
|
|||||||
protected List<String> args = null;
|
protected List<String> args = null;
|
||||||
public boolean hasArgs() { return this.args != null; }
|
public boolean hasArgs() { return this.args != null; }
|
||||||
public Pager<T> setArgs(List<String> args) { this.args = args; return this; }
|
public Pager<T> setArgs(List<String> args) { this.args = args; return this; }
|
||||||
|
public Pager<T> setArgs(String... args) { this.setArgs(Arrays.asList(args)); return this; }
|
||||||
public List<String> getArgs() { return this.args; }
|
public List<String> getArgs() { return this.args; }
|
||||||
public List<String> getArgsCalc()
|
public List<String> getArgsCalc()
|
||||||
{
|
{
|
||||||
|
@ -14,9 +14,12 @@ import java.util.concurrent.ConcurrentSkipListMap;
|
|||||||
import com.massivecraft.massivecore.MassiveCore;
|
import com.massivecraft.massivecore.MassiveCore;
|
||||||
import com.massivecraft.massivecore.MassiveCoreMConf;
|
import com.massivecraft.massivecore.MassiveCoreMConf;
|
||||||
import com.massivecraft.massivecore.MassivePlugin;
|
import com.massivecraft.massivecore.MassivePlugin;
|
||||||
|
import com.massivecraft.massivecore.Named;
|
||||||
import com.massivecraft.massivecore.collections.MassiveList;
|
import com.massivecraft.massivecore.collections.MassiveList;
|
||||||
import com.massivecraft.massivecore.comparator.ComparatorNaturalOrder;
|
import com.massivecraft.massivecore.comparator.ComparatorNaturalOrder;
|
||||||
import com.massivecraft.massivecore.mixin.Mixin;
|
import com.massivecraft.massivecore.mixin.Mixin;
|
||||||
|
import com.massivecraft.massivecore.predicate.Predicate;
|
||||||
|
import com.massivecraft.massivecore.predicate.PredicateEqualsIgnoreCase;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
import com.massivecraft.massivecore.xlib.gson.Gson;
|
import com.massivecraft.massivecore.xlib.gson.Gson;
|
||||||
import com.massivecraft.massivecore.xlib.gson.JsonElement;
|
import com.massivecraft.massivecore.xlib.gson.JsonElement;
|
||||||
@ -1018,5 +1021,33 @@ public class Coll<E extends Entity<E>> extends CollAbstract<E>
|
|||||||
{
|
{
|
||||||
return name2instance.containsKey(this.getName());
|
return name2instance.containsKey(this.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// NAME UTILITIES
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public E getByName(String name)
|
||||||
|
{
|
||||||
|
if (name == null) throw new NullPointerException("name");
|
||||||
|
|
||||||
|
Predicate<String> predicate = PredicateEqualsIgnoreCase.get(name);
|
||||||
|
for (E entity : this.getAll())
|
||||||
|
{
|
||||||
|
if (entity == null) continue;
|
||||||
|
|
||||||
|
if ( ! (entity instanceof Named)) continue;
|
||||||
|
Named named = (Named)entity;
|
||||||
|
|
||||||
|
if (predicate.apply(named.getName())) return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNameTaken(String str)
|
||||||
|
{
|
||||||
|
return this.getByName(str) != null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -167,6 +167,7 @@ public class Txt
|
|||||||
|
|
||||||
public static String parse(String string)
|
public static String parse(String string)
|
||||||
{
|
{
|
||||||
|
if (string == null) return null;
|
||||||
StringBuffer ret = new StringBuffer();
|
StringBuffer ret = new StringBuffer();
|
||||||
Matcher matcher = parsePattern.matcher(string);
|
Matcher matcher = parsePattern.matcher(string);
|
||||||
while (matcher.find())
|
while (matcher.find())
|
||||||
@ -198,6 +199,7 @@ public class Txt
|
|||||||
|
|
||||||
public static ArrayList<String> wrap(final String string)
|
public static ArrayList<String> wrap(final String string)
|
||||||
{
|
{
|
||||||
|
if (string == null) return null;
|
||||||
return new ArrayList<String>(Arrays.asList(PATTERN_NEWLINE.split(string)));
|
return new ArrayList<String>(Arrays.asList(PATTERN_NEWLINE.split(string)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user