diff --git a/src/com/massivecraft/massivecore/cmd/arg/AREnum.java b/src/com/massivecraft/massivecore/cmd/arg/AREnum.java index c0a96717..1a95c7af 100644 --- a/src/com/massivecraft/massivecore/cmd/arg/AREnum.java +++ b/src/com/massivecraft/massivecore/cmd/arg/AREnum.java @@ -47,9 +47,23 @@ public class AREnum extends ARAbstractSelect arg = getComparable(arg); // Algorithmic General Detection + + int startswithCount = 0; + T startswith = null; for (T value : getEnumValues(this.clazz)) { - if (getComparable(value.toString()).equals(arg)) return value; + String comparable = getComparable(value.toString()); + if (comparable.equals(arg)) return value; + if (comparable.startsWith(arg)) + { + startswith = value; + startswithCount++; + } + } + + if (startswithCount == 1) + { + return startswith; } // Nothing found diff --git a/src/com/massivecraft/massivecore/cmd/req/ReqIsntCertainSender.java b/src/com/massivecraft/massivecore/cmd/req/ReqIsntCertainSender.java index 173bf0dd..2ab4ccdb 100644 --- a/src/com/massivecraft/massivecore/cmd/req/ReqIsntCertainSender.java +++ b/src/com/massivecraft/massivecore/cmd/req/ReqIsntCertainSender.java @@ -38,7 +38,7 @@ public class ReqIsntCertainSender extends ReqAbstract @Override public String createErrorMessage(CommandSender sender, MassiveCommand command) { - return Txt.parse("Player can't be %s.", Mixin.getDisplayName(this.getSenderId())); + return Txt.parse("Player can't be %s.", Mixin.getDisplayName(this.getSenderId(), sender)); } } diff --git a/src/com/massivecraft/massivecore/mixin/DisplayNameMixin.java b/src/com/massivecraft/massivecore/mixin/DisplayNameMixin.java index 9e8d8774..57470509 100644 --- a/src/com/massivecraft/massivecore/mixin/DisplayNameMixin.java +++ b/src/com/massivecraft/massivecore/mixin/DisplayNameMixin.java @@ -2,6 +2,5 @@ package com.massivecraft.massivecore.mixin; public interface DisplayNameMixin { - public String getDisplayName(Object senderObject); public String getDisplayName(Object senderObject, Object watcherObject); } diff --git a/src/com/massivecraft/massivecore/mixin/DisplayNameMixinAbstract.java b/src/com/massivecraft/massivecore/mixin/DisplayNameMixinAbstract.java index 6d5f1788..b2e51153 100644 --- a/src/com/massivecraft/massivecore/mixin/DisplayNameMixinAbstract.java +++ b/src/com/massivecraft/massivecore/mixin/DisplayNameMixinAbstract.java @@ -2,14 +2,5 @@ package com.massivecraft.massivecore.mixin; public abstract class DisplayNameMixinAbstract implements DisplayNameMixin { - // -------------------------------------------- // - // OVERRIDE - // -------------------------------------------- // - - @Override - public String getDisplayName(Object senderObject) - { - return this.getDisplayName(senderObject, null); - } } \ No newline at end of file diff --git a/src/com/massivecraft/massivecore/mixin/Mixin.java b/src/com/massivecraft/massivecore/mixin/Mixin.java index 7c207701..f2ad31f6 100644 --- a/src/com/massivecraft/massivecore/mixin/Mixin.java +++ b/src/com/massivecraft/massivecore/mixin/Mixin.java @@ -119,9 +119,10 @@ public class Mixin // STATIC EXPOSE: DISPLAY NAME // -------------------------------------------- // + @Deprecated public static String getDisplayName(Object senderObject) { - return getDisplayNameMixin().getDisplayName(senderObject); + return getDisplayNameMixin().getDisplayName(senderObject, null); } public static String getDisplayName(Object senderObject, Object watcherObject) diff --git a/src/com/massivecraft/massivecore/mixin/TeleportMixinDefault.java b/src/com/massivecraft/massivecore/mixin/TeleportMixinDefault.java index b6b28ec6..5ffe6112 100644 --- a/src/com/massivecraft/massivecore/mixin/TeleportMixinDefault.java +++ b/src/com/massivecraft/massivecore/mixin/TeleportMixinDefault.java @@ -74,7 +74,7 @@ public class TeleportMixinDefault extends TeleportMixinAbstract public void teleport(Object teleporteeObject, PSGetter toGetter, String desc, int delaySeconds) throws TeleporterException { String teleporteeId = IdUtil.getId(teleporteeObject); - if (!IdUtil.isPlayerId(teleporteeId)) throw new TeleporterException(Txt.parse("%s is not a player.", Mixin.getDisplayName(teleporteeId))); + if (!IdUtil.isPlayerId(teleporteeId)) throw new TeleporterException(Txt.parse("%s is not a player.", Mixin.getDisplayName(teleporteeId, IdUtil.getConsole()))); if (delaySeconds > 0) { diff --git a/src/com/massivecraft/massivecore/store/SenderEntity.java b/src/com/massivecraft/massivecore/store/SenderEntity.java index 7ffa4ccc..43e5ea8c 100644 --- a/src/com/massivecraft/massivecore/store/SenderEntity.java +++ b/src/com/massivecraft/massivecore/store/SenderEntity.java @@ -95,6 +95,7 @@ public abstract class SenderEntity> extends Entity // DISPLAY NAME + @Deprecated public String getDisplayName() { return Mixin.getDisplayName(this.getId()); diff --git a/src/com/massivecraft/massivecore/util/IdUtil.java b/src/com/massivecraft/massivecore/util/IdUtil.java index 86509d4c..a939693d 100644 --- a/src/com/massivecraft/massivecore/util/IdUtil.java +++ b/src/com/massivecraft/massivecore/util/IdUtil.java @@ -732,11 +732,25 @@ public class IdUtil implements Listener, Runnable return MUtil.isValidPlayerName(string) || MUtil.isValidUUID(string); } + public static boolean isPlayer(Object senderObject) + { + String id = IdUtil.getId(senderObject); + if (id == null) return false; + return isPlayerId(id); + } + public static boolean isConsoleId(String string) { return CONSOLE_ID.equals(string); } + public static boolean isConsole(Object senderObject) + { + String id = IdUtil.getId(senderObject); + if (id == null) return false; + return isConsoleId(id); + } + // -------------------------------------------- // // GET AS // -------------------------------------------- // diff --git a/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java b/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java index 842c8374..c76a0b4d 100644 --- a/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java +++ b/src/com/massivecraft/massivecore/util/extractor/ExtractorLogic.java @@ -25,8 +25,10 @@ import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleEvent; import org.bukkit.event.vehicle.VehicleExitEvent; +import com.massivecraft.massivecore.mixin.Mixin; import com.massivecraft.massivecore.ps.PS; import com.massivecraft.massivecore.util.IdUtil; +import com.massivecraft.massivecore.util.MUtil; public class ExtractorLogic { @@ -156,7 +158,6 @@ public class ExtractorLogic public static World worldFromObject(Object o) { if (o instanceof World) return (World)o; - if (o instanceof Block) return world((Block)o); if (o instanceof Location) return world((Location)o); if (o instanceof Entity) return world((Entity)o); @@ -172,11 +173,37 @@ public class ExtractorLogic public static String worldNameFromObject(Object o) { - if (o instanceof String) return (String)o; + if (o instanceof String) + { + String string = (String)o; + if (MUtil.isValidUUID(string)) + { + String ret = worldNameViaPsMixin(string); + if (ret != null) return ret; + } + return string; + } + if (o instanceof PS) return ((PS)o).getWorld(); + World world = worldFromObject(o); - if (world == null) return null; - return world.getName(); + if (world != null) return world.getName(); + + String ret = worldNameViaPsMixin(o); + if (ret != null) return ret; + + return null; + } + + public static String worldNameViaPsMixin(Object senderObject) + { + if (senderObject == null) return null; + + PS ps = Mixin.getSenderPs(senderObject); + if (ps == null) return null; + + return ps.getWorld(); } } +