From dba940f3370e821ec360f96b634b6e8e7161f38f Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Wed, 30 Jan 2013 12:48:18 +0100 Subject: [PATCH] Remove that old stuff and add in some new herp. --- .../massivecraft/mcore5/InternalListener.java | 8 +- .../mcore5/cmd/arg/ARAbstractPrimitive.java | 8 +- .../mcore5/cmd/arg/ARAbstractSelect.java | 6 +- .../mcore5/cmd/arg/ARAbstractStringMatch.java | 95 ----------- .../massivecraft/mcore5/cmd/arg/ARAspect.java | 4 +- .../mcore5/cmd/arg/ARBoolean.java | 6 +- .../massivecraft/mcore5/cmd/arg/ARByte.java | 4 +- .../mcore5/cmd/arg/ARChatColor.java | 6 +- .../massivecraft/mcore5/cmd/arg/ARDate.java | 4 +- .../mcore5/cmd/arg/ARDifficulty.java | 12 +- .../massivecraft/mcore5/cmd/arg/ARDouble.java | 4 +- .../mcore5/cmd/arg/AREnvironment.java | 14 +- .../massivecraft/mcore5/cmd/arg/ARFloat.java | 4 +- .../mcore5/cmd/arg/ARGameMode.java | 10 +- .../mcore5/cmd/arg/ARInteger.java | 4 +- .../massivecraft/mcore5/cmd/arg/ARLong.java | 4 +- .../mcore5/cmd/arg/ARMaterial.java | 6 +- .../mcore5/cmd/arg/ARMultiverse.java | 4 +- .../mcore5/cmd/arg/AROnlinePlayerExact.java | 31 ---- .../mcore5/cmd/arg/AROnlinePlayerMatch.java | 49 ------ .../massivecraft/mcore5/cmd/arg/ARPlayer.java | 46 ++++++ .../massivecraft/mcore5/cmd/arg/ARSender.java | 46 ++++++ .../mcore5/cmd/arg/ARSenderEntity.java | 63 +++++++ .../mcore5/cmd/arg/ARSenderId.java | 43 +++++ .../mcore5/cmd/arg/ARSenderIdAbstract.java | 69 ++++++++ .../cmd/arg/ARSenderIdAbstractPredsource.java | 72 ++++++++ .../massivecraft/mcore5/cmd/arg/ARString.java | 4 +- .../mcore5/cmd/arg/ARStringEntity.java | 54 ------ .../mcore5/cmd/arg/ARStringMatchFull.java | 25 --- .../mcore5/cmd/arg/ARStringMatchStart.java | 34 ---- .../mcore5/cmd/arg/ARUniverse.java | 8 +- .../massivecraft/mcore5/cmd/arg/ARWorld.java | 4 +- .../mcore5/cmd/arg/ARWorldType.java | 22 +-- .../mcore5/cmd/arg/ArgPredictate.java | 8 + .../mcore5/cmd/arg/ArgPredictateAnd.java | 31 ++++ .../cmd/arg/ArgPredictateStringEqualsLC.java | 24 +++ .../ArgPredictateStringIsOnlineSenderId.java | 26 +++ .../cmd/arg/ArgPredictateStringStartsLC.java | 24 +++ .../mcore5/cmd/arg/ArgReader.java | 2 +- .../mcore5/store/MixinSenderIdSource.java | 26 +++ .../massivecraft/mcore5/store/PlayerColl.java | 155 ------------------ .../mcore5/store/PlayerEntity.java | 122 -------------- .../massivecraft/mcore5/store/SenderColl.java | 50 ++---- .../mcore5/store/SenderEntity.java | 13 +- .../mcore5/store/SenderIdSource.java | 8 + .../mcore5/store/SenderIdSourceCombined.java | 46 ++++++ .../mcore5/util/extractor/ExtractorLogic.java | 3 +- 47 files changed, 631 insertions(+), 680 deletions(-) delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARAbstractStringMatch.java delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerExact.java delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerMatch.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARPlayer.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARSender.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARSenderEntity.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARSenderId.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstract.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstractPredsource.java delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARStringEntity.java delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARStringMatchFull.java delete mode 100644 src/com/massivecraft/mcore5/cmd/arg/ARStringMatchStart.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ArgPredictate.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ArgPredictateAnd.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringEqualsLC.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringIsOnlineSenderId.java create mode 100644 src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringStartsLC.java create mode 100644 src/com/massivecraft/mcore5/store/MixinSenderIdSource.java delete mode 100644 src/com/massivecraft/mcore5/store/PlayerColl.java delete mode 100644 src/com/massivecraft/mcore5/store/PlayerEntity.java create mode 100644 src/com/massivecraft/mcore5/store/SenderIdSource.java create mode 100644 src/com/massivecraft/mcore5/store/SenderIdSourceCombined.java diff --git a/src/com/massivecraft/mcore5/InternalListener.java b/src/com/massivecraft/mcore5/InternalListener.java index 80eaa1bd..7f6c5be4 100644 --- a/src/com/massivecraft/mcore5/InternalListener.java +++ b/src/com/massivecraft/mcore5/InternalListener.java @@ -21,7 +21,6 @@ import com.massivecraft.mcore5.event.MCoreAfterPlayerRespawnEvent; import com.massivecraft.mcore5.event.MCoreAfterPlayerTeleportEvent; import com.massivecraft.mcore5.event.MCorePlayerLeaveEvent; import com.massivecraft.mcore5.store.Coll; -import com.massivecraft.mcore5.store.PlayerColl; import com.massivecraft.mcore5.store.SenderColl; import com.massivecraft.mcore5.util.SmokeUtil; @@ -81,7 +80,6 @@ public class InternalListener implements Listener String id = event.getPlayer().getName(); Player player = event.getPlayer(); - PlayerColl.setPlayerRefferences(id, player); SenderColl.setSenderRefferences(id, player); } @@ -93,7 +91,6 @@ public class InternalListener implements Listener String id = event.getPlayer().getName(); Player player = null; - PlayerColl.setPlayerRefferences(id, player); SenderColl.setSenderRefferences(id, player); } @@ -103,7 +100,6 @@ public class InternalListener implements Listener String id = event.getPlayer().getName(); Player player = null; - PlayerColl.setPlayerRefferences(id, player); SenderColl.setSenderRefferences(id, player); } @@ -205,8 +201,8 @@ public class InternalListener implements Listener String playerName = player.getName(); for (Coll coll : Coll.instances) { - if (!(coll instanceof PlayerColl)) continue; - PlayerColl pcoll = (PlayerColl)coll; + if (!(coll instanceof SenderColl)) continue; + SenderColl pcoll = (SenderColl)coll; pcoll.syncId(playerName); } } diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractPrimitive.java b/src/com/massivecraft/mcore5/cmd/arg/ARAbstractPrimitive.java index 0b424152..eef611ba 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractPrimitive.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARAbstractPrimitive.java @@ -5,20 +5,20 @@ import org.bukkit.command.CommandSender; public abstract class ARAbstractPrimitive implements ArgReader { public abstract String typename(); - public abstract T convert(String str) throws Exception; + public abstract T convert(String arg) throws Exception; @Override - public ArgResult read(String str, CommandSender sender) + public ArgResult read(String arg, CommandSender sender) { ArgResult result = new ArgResult(); try { - result.setResult(this.convert(str)); + result.setResult(this.convert(arg)); } catch (Exception e) { - result.getErrors().add("Invalid "+this.typename()+" \""+str+"\"."); + result.getErrors().add("Invalid "+this.typename()+" \""+arg+"\"."); } return result; diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractSelect.java b/src/com/massivecraft/mcore5/cmd/arg/ARAbstractSelect.java index b7d3e97e..b7e707d3 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractSelect.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARAbstractSelect.java @@ -14,13 +14,13 @@ public abstract class ARAbstractSelect implements ArgReader public boolean canList(CommandSender sender) { return true; } @Override - public ArgResult read(String str, CommandSender sender) + public ArgResult read(String arg, CommandSender sender) { - ArgResult result = new ArgResult(this.select(str, sender)); + ArgResult result = new ArgResult(this.select(arg, sender)); if (!result.hasResult()) { - result.getErrors().add("No "+this.typename()+" matches \""+str+"\"."); + result.getErrors().add("No "+this.typename()+" matches \""+arg+"\"."); if (this.canList(sender)) { Collection names = this.altNames(sender); diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractStringMatch.java b/src/com/massivecraft/mcore5/cmd/arg/ARAbstractStringMatch.java deleted file mode 100644 index 49bf5a87..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/ARAbstractStringMatch.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import org.bukkit.command.CommandSender; - -import com.massivecraft.mcore5.util.Txt; - -public abstract class ARAbstractStringMatch implements ArgReader -{ - // -------------------------------------------- // - // IMPLEMENTATION - // -------------------------------------------- // - - @Override - public ArgResult read(String str, CommandSender sender) - { - ArgResult result = new ArgResult(); - - // Find all matches - Set matches = new HashSet(); - String perfectMatch = null; - - outerloop: - for (Collection altColl : this.altColls()) - { - for (String alt : altColl) - { - Integer matchDistance = this.matches(str, alt); - if (matchDistance == null) continue; - if (matchDistance == 0) - { - perfectMatch = alt; - break outerloop; - } - else - { - matches.add(alt); - } - } - } - - // Set result and errors - if (perfectMatch != null) - { - result.setResult(perfectMatch); - } - else if (matches.size() == 1) - { - result.setResult(matches.iterator().next()); - } - else if (matches.size() > 1) - { - result.getErrors().add(""+Txt.upperCaseFirst(this.typename())+" matching \""+str+"\" is ambigious."); - result.getErrors().add("Did you mean "+Txt.implodeCommaAndDot(matches, "%s", ", ", " or ", "?")); - } - else if (matches.size() == 0) - { - result.getErrors().add("No "+this.typename()+" matching \""+str+"\"."); - } - - return result; - } - - // -------------------------------------------- // - // ABSTRACT - // -------------------------------------------- // - - // return null if no match - // return 0 if perfect match - // return >0 to declare distance from perfect match - public abstract Integer matches(String arg, String alt); - - // -------------------------------------------- // - // FIELDS - // -------------------------------------------- // - - protected String typename; - public String typename() { return this.typename; } - - protected Collection> altColls; - public Collection> altColls() { return this.altColls; } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public ARAbstractStringMatch(String typename, Collection> altColls) - { - this.typename = typename; - this.altColls = altColls; - } -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARAspect.java b/src/com/massivecraft/mcore5/cmd/arg/ARAspect.java index ba5fc8cb..4ff52564 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARAspect.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARAspect.java @@ -17,9 +17,9 @@ public class ARAspect extends ARAbstractSelect } @Override - public Aspect select(String str, CommandSender sender) + public Aspect select(String arg, CommandSender sender) { - return AspectColl.i.get(str); + return AspectColl.i.get(arg); } @Override diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARBoolean.java b/src/com/massivecraft/mcore5/cmd/arg/ARBoolean.java index 14a1a9e0..9ff70c75 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARBoolean.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARBoolean.java @@ -9,10 +9,10 @@ public class ARBoolean extends ARAbstractPrimitive } @Override - public Boolean convert(String str) throws Exception + public Boolean convert(String arg) throws Exception { - str = str.toLowerCase(); - if (str.startsWith("y") || str.startsWith("t") || str.startsWith("on") || str.startsWith("+") || str.startsWith("1")) + arg = arg.toLowerCase(); + if (arg.startsWith("y") || arg.startsWith("t") || arg.startsWith("on") || arg.startsWith("+") || arg.startsWith("1")) { return true; } diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARByte.java b/src/com/massivecraft/mcore5/cmd/arg/ARByte.java index d279efe9..6dd8c05c 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARByte.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARByte.java @@ -9,9 +9,9 @@ public class ARByte extends ARAbstractPrimitive } @Override - public Byte convert(String str) throws Exception + public Byte convert(String arg) throws Exception { - return Byte.parseByte(str); + return Byte.parseByte(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARChatColor.java b/src/com/massivecraft/mcore5/cmd/arg/ARChatColor.java index aa0ef283..d9d12741 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARChatColor.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARChatColor.java @@ -16,18 +16,18 @@ public class ARChatColor extends ARAbstractSelect } @Override - public ChatColor select(String str, CommandSender sender) + public ChatColor select(String arg, CommandSender sender) { ChatColor ret = null; - str = getToCompare(str); + arg = getToCompare(arg); for (ChatColor cc : ChatColor.values()) { String ccstr = getToCompare(cc.name()); - if ( ! ccstr.equals(str)) continue; + if ( ! ccstr.equals(arg)) continue; ret = cc; break; } diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARDate.java b/src/com/massivecraft/mcore5/cmd/arg/ARDate.java index 001e77e6..e3d6d61e 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARDate.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARDate.java @@ -15,9 +15,9 @@ public class ARDate extends ARAbstractPrimitive } @Override - public Date convert(String str) throws Exception + public Date convert(String arg) throws Exception { - return df.parse(str); + return df.parse(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARDifficulty.java b/src/com/massivecraft/mcore5/cmd/arg/ARDifficulty.java index 831bfa84..09ae9b8e 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARDifficulty.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARDifficulty.java @@ -16,25 +16,25 @@ public class ARDifficulty extends ARAbstractSelect } @Override - public Difficulty select(String str, CommandSender sender) + public Difficulty select(String arg, CommandSender sender) { Difficulty ret = null; - str = str.toLowerCase(); + arg = arg.toLowerCase(); - if (str.startsWith("p")) + if (arg.startsWith("p")) { ret = Difficulty.PEACEFUL; } - else if (str.startsWith("e")) + else if (arg.startsWith("e")) { ret = Difficulty.EASY; } - else if (str.startsWith("n")) + else if (arg.startsWith("n")) { ret = Difficulty.NORMAL; } - else if (str.startsWith("h")) + else if (arg.startsWith("h")) { ret = Difficulty.HARD; } diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARDouble.java b/src/com/massivecraft/mcore5/cmd/arg/ARDouble.java index 1f03c680..22c6ba98 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARDouble.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARDouble.java @@ -9,9 +9,9 @@ public class ARDouble extends ARAbstractPrimitive } @Override - public Double convert(String str) throws Exception + public Double convert(String arg) throws Exception { - return Double.parseDouble(str); + return Double.parseDouble(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/AREnvironment.java b/src/com/massivecraft/mcore5/cmd/arg/AREnvironment.java index ddd3947e..31924b81 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/AREnvironment.java +++ b/src/com/massivecraft/mcore5/cmd/arg/AREnvironment.java @@ -16,26 +16,26 @@ public class AREnvironment extends ARAbstractSelect } @Override - public Environment select(String str, CommandSender sender) + public Environment select(String arg, CommandSender sender) { Environment ret = null; // "THE_END" --> "end" - str = str.toLowerCase(); - str = str.replace("_", ""); - str = str.replace("the", ""); + arg = arg.toLowerCase(); + arg = arg.replace("_", ""); + arg = arg.replace("the", ""); - if (str.startsWith("no") || str.startsWith("d")) + if (arg.startsWith("no") || arg.startsWith("d")) { // "normal" or "default" ret = Environment.NORMAL; } - else if (str.startsWith("ne")) + else if (arg.startsWith("ne")) { // "nether" ret = Environment.NETHER; } - else if (str.startsWith("e")) + else if (arg.startsWith("e")) { // "end" ret = Environment.THE_END; diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARFloat.java b/src/com/massivecraft/mcore5/cmd/arg/ARFloat.java index d3d7e925..af3291a5 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARFloat.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARFloat.java @@ -9,9 +9,9 @@ public class ARFloat extends ARAbstractPrimitive } @Override - public Float convert(String str) throws Exception + public Float convert(String arg) throws Exception { - return Float.parseFloat(str); + return Float.parseFloat(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARGameMode.java b/src/com/massivecraft/mcore5/cmd/arg/ARGameMode.java index a7e20ce1..b670c160 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARGameMode.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARGameMode.java @@ -16,21 +16,21 @@ public class ARGameMode extends ARAbstractSelect } @Override - public GameMode select(String str, CommandSender sender) + public GameMode select(String arg, CommandSender sender) { GameMode ret = null; - str = str.toLowerCase(); + arg = arg.toLowerCase(); - if (str.startsWith("s")) + if (arg.startsWith("s")) { ret = GameMode.SURVIVAL; } - else if (str.startsWith("c")) + else if (arg.startsWith("c")) { ret = GameMode.CREATIVE; } - else if (str.startsWith("a")) + else if (arg.startsWith("a")) { ret = GameMode.ADVENTURE; } diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARInteger.java b/src/com/massivecraft/mcore5/cmd/arg/ARInteger.java index 75c75df6..1d97f5d4 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARInteger.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARInteger.java @@ -9,9 +9,9 @@ public class ARInteger extends ARAbstractPrimitive } @Override - public Integer convert(String str) throws Exception + public Integer convert(String arg) throws Exception { - return Integer.parseInt(str); + return Integer.parseInt(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARLong.java b/src/com/massivecraft/mcore5/cmd/arg/ARLong.java index f45b8d9f..939bfff8 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARLong.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARLong.java @@ -9,9 +9,9 @@ public class ARLong extends ARAbstractPrimitive } @Override - public Long convert(String str) throws Exception + public Long convert(String arg) throws Exception { - return Long.parseLong(str); + return Long.parseLong(arg); } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARMaterial.java b/src/com/massivecraft/mcore5/cmd/arg/ARMaterial.java index 4e5fc13d..5e4306c7 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARMaterial.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARMaterial.java @@ -6,12 +6,12 @@ import org.bukkit.command.CommandSender; public class ARMaterial implements ArgReader { @Override - public ArgResult read(String str, CommandSender sender) + public ArgResult read(String arg, CommandSender sender) { - ArgResult result = new ArgResult(Material.matchMaterial(str)); + ArgResult result = new ArgResult(Material.matchMaterial(arg)); if (!result.hasResult()) { - result.getErrors().add("No material matches "+str+"."); + result.getErrors().add("No material matches "+arg+"."); result.getErrors().add("Suggestion: http://www.minecraftwiki.net/wiki/Data_values"); } return result; diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARMultiverse.java b/src/com/massivecraft/mcore5/cmd/arg/ARMultiverse.java index 6b129369..e9b95054 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARMultiverse.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARMultiverse.java @@ -17,9 +17,9 @@ public class ARMultiverse extends ARAbstractSelect } @Override - public Multiverse select(String str, CommandSender sender) + public Multiverse select(String arg, CommandSender sender) { - return MultiverseColl.i.get(str); + return MultiverseColl.i.get(arg); } @Override diff --git a/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerExact.java b/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerExact.java deleted file mode 100644 index 806ecd38..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerExact.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class AROnlinePlayerExact implements ArgReader -{ - @Override - public ArgResult read(String str, CommandSender sender) - { - ArgResult result = new ArgResult(); - Player player = Bukkit.getServer().getPlayerExact(str); - result.setResult(player); - - if (!result.hasResult()) - { - result.getErrors().add("No online player with exact name \""+str+"\"."); - } - - return result; - } - - // -------------------------------------------- // - // INSTANCE - // -------------------------------------------- // - - private static AROnlinePlayerExact i = new AROnlinePlayerExact(); - public static AROnlinePlayerExact get() { return i; } - -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerMatch.java b/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerMatch.java deleted file mode 100644 index 179d952f..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/AROnlinePlayerMatch.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import java.util.ArrayList; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.massivecraft.mcore5.util.Txt; - -public class AROnlinePlayerMatch implements ArgReader -{ - @Override - public ArgResult read(String str, CommandSender sender) - { - ArgResult result = new ArgResult(); - - List players = Bukkit.getServer().matchPlayer(str); - if (players.size() == 1) - { - result.setResult(players.get(0)); - } - else if (players.size() > 1) - { - List names = new ArrayList(); - for (Player player : players) - { - names.add(player.getName()); - } - result.getErrors().add("Online player matching \""+str+"\" is ambigious."); - result.getErrors().add("Did you mean "+Txt.implodeCommaAndDot(names, "%s", ", ", " or ", "?")); - } - else if (players.size() == 0) - { - result.getErrors().add("No online player matching \""+str+"\"."); - } - - return result; - } - - // -------------------------------------------- // - // INSTANCE - // -------------------------------------------- // - - private static AROnlinePlayerMatch i = new AROnlinePlayerMatch(); - public static AROnlinePlayerMatch get() { return i; } - -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARPlayer.java b/src/com/massivecraft/mcore5/cmd/arg/ARPlayer.java new file mode 100644 index 00000000..bf01517d --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARPlayer.java @@ -0,0 +1,46 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.entity.Player; + +import com.massivecraft.mcore5.store.MixinSenderIdSource; +import com.massivecraft.mcore5.store.SenderIdSource; +import com.massivecraft.mcore5.util.SenderUtil; + +public class ARPlayer extends ARSenderIdAbstractPredsource +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static final ARPlayer full = getFull(MixinSenderIdSource.get()); + public static ARPlayer getFull() { return full; } + + private static final ARPlayer start = getStart(MixinSenderIdSource.get()); + public static ARPlayer getStart() { return start; } + + public static ARPlayer getFull(SenderIdSource source) + { + return new ARPlayer(source, "player", ArgPredictateStringEqualsLC.get()); + } + + public static ARPlayer getStart(SenderIdSource source) + { + return new ARPlayer(source, "player", ArgPredictateStringStartsLC.get()); + } + + private ARPlayer(SenderIdSource source, String typename, ArgPredictate argPredictate) + { + super(source, typename, argPredictate); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public Player getResultForSenderId(String senderId) + { + return SenderUtil.getPlayer(senderId); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARSender.java b/src/com/massivecraft/mcore5/cmd/arg/ARSender.java new file mode 100644 index 00000000..cb0cfc2d --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARSender.java @@ -0,0 +1,46 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore5.store.MixinSenderIdSource; +import com.massivecraft.mcore5.store.SenderIdSource; +import com.massivecraft.mcore5.util.SenderUtil; + +public class ARSender extends ARSenderIdAbstractPredsource +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static final ARSender full = getFull(MixinSenderIdSource.get()); + public static ARSender getFull() { return full; } + + private static final ARSender start = getStart(MixinSenderIdSource.get()); + public static ARSender getStart() { return start; } + + public static ARSender getFull(SenderIdSource source) + { + return new ARSender(source, "sender", ArgPredictateStringEqualsLC.get()); + } + + public static ARSender getStart(SenderIdSource source) + { + return new ARSender(source, "sender", ArgPredictateStringStartsLC.get()); + } + + private ARSender(SenderIdSource source, String typename, ArgPredictate argPredictate) + { + super(source, typename, argPredictate); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public CommandSender getResultForSenderId(String senderId) + { + return SenderUtil.getSender(senderId); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARSenderEntity.java b/src/com/massivecraft/mcore5/cmd/arg/ARSenderEntity.java new file mode 100644 index 00000000..a952661e --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARSenderEntity.java @@ -0,0 +1,63 @@ +package com.massivecraft.mcore5.cmd.arg; + +import com.massivecraft.mcore5.store.SenderIdSource; +import com.massivecraft.mcore5.store.SenderColl; +import com.massivecraft.mcore5.store.SenderEntity; + +public class ARSenderEntity> extends ARSenderIdAbstractPredsource +{ + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final SenderColl coll; + + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + public static > ARSenderEntity getFullAny(SenderColl coll) { return getFullAny(coll, coll.isCreative() ? coll.getMixinedIdSource() : coll); } + + public static > ARSenderEntity getStartAny(SenderColl coll) { return getStartAny(coll, coll.isCreative() ? coll.getMixinedIdSource() : coll); } + + public static > ARSenderEntity getFullOnline(SenderColl coll) { return getFullOnline(coll, coll.isCreative() ? coll.getMixinedIdSource() : coll); } + + public static > ARSenderEntity getStartOnline(SenderColl coll) { return getStartOnline(coll, coll.isCreative() ? coll.getMixinedIdSource() : coll); } + + public static > ARSenderEntity getFullOnline(SenderColl coll, SenderIdSource source) + { + return new ARSenderEntity(coll, source, "player", new ArgPredictateAnd(ArgPredictateStringEqualsLC.get(), ArgPredictateStringIsOnlineSenderId.get())); + } + + public static > ARSenderEntity getStartOnline(SenderColl coll, SenderIdSource source) + { + return new ARSenderEntity(coll, source, "player", new ArgPredictateAnd(ArgPredictateStringStartsLC.get(), ArgPredictateStringIsOnlineSenderId.get())); + } + + public static > ARSenderEntity getFullAny(SenderColl coll, SenderIdSource source) + { + return new ARSenderEntity(coll, source, "player", ArgPredictateStringEqualsLC.get()); + } + + public static > ARSenderEntity getStartAny(SenderColl coll, SenderIdSource source) + { + return new ARSenderEntity(coll, source, "player", ArgPredictateStringStartsLC.get()); + } + + private ARSenderEntity(SenderColl coll, SenderIdSource source, String typename, ArgPredictate argPredictate) + { + super(source, typename, argPredictate); + this.coll = coll; + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public T getResultForSenderId(String senderId) + { + return this.coll.get(senderId); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARSenderId.java b/src/com/massivecraft/mcore5/cmd/arg/ARSenderId.java new file mode 100644 index 00000000..ea1baddf --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARSenderId.java @@ -0,0 +1,43 @@ +package com.massivecraft.mcore5.cmd.arg; + +import com.massivecraft.mcore5.store.MixinSenderIdSource; +import com.massivecraft.mcore5.store.SenderIdSource; + +public class ARSenderId extends ARSenderIdAbstractPredsource +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static final ARSenderId full = getFull(MixinSenderIdSource.get()); + public static ARSenderId getFull() { return full; } + + private static final ARSenderId start = getStart(MixinSenderIdSource.get()); + public static ARSenderId getStart() { return start; } + + public static ARSenderId getFull(SenderIdSource source) + { + return new ARSenderId(source, "player", ArgPredictateStringEqualsLC.get()); + } + + public static ARSenderId getStart(SenderIdSource source) + { + return new ARSenderId(source, "player", ArgPredictateStringStartsLC.get()); + } + + private ARSenderId(SenderIdSource source, String typename, ArgPredictate argPredictate) + { + super(source, typename, argPredictate); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public String getResultForSenderId(String senderId) + { + return senderId; + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstract.java b/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstract.java new file mode 100644 index 00000000..6344982b --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstract.java @@ -0,0 +1,69 @@ +package com.massivecraft.mcore5.cmd.arg; + +import java.util.Collection; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore5.mixin.Mixin; +import com.massivecraft.mcore5.util.Txt; + +public abstract class ARSenderIdAbstract implements ArgReader +{ + // -------------------------------------------- // + // ABSTRACT + // -------------------------------------------- // + + public abstract String getTypename(); + + public abstract T getResultForSenderId(String senderId); + + public abstract Collection getSenderIdsFor(String arg, CommandSender sender); + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public ArgResult read(String arg, CommandSender sender) + { + ArgResult ret = new ArgResult(); + + Collection senderIds = this.getSenderIdsFor(arg, sender); + + if (senderIds.size() == 0) + { + // No alternatives found + ret.setErrors("No "+this.getTypename()+" matches \""+arg+"\"."); + } + else if (senderIds.size() == 1) + { + // Only one alternative found + String senderId = senderIds.iterator().next(); + ret.setResult(this.getResultForSenderId(senderId)); + } + else if (senderIds.contains(arg)) + { + // Exact match + String senderId = Mixin.tryFix(arg); + ret.setResult(this.getResultForSenderId(senderId)); + } + else + { + // Ambigious! + ret.getErrors().add("Online "+this.getTypename()+" matching \""+arg+"\" is ambigious."); + if (senderIds.size() > 10) + { + // To many to list + ret.getErrors().add("Could be any of "+senderIds.size()+" possible alternatives."); + } + else + { + // List the alternatives + ret.getErrors().add("Did you mean "+Txt.implodeCommaAndDot(senderIds, "%s", ", ", " or ", "?")); + } + } + + return ret; + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstractPredsource.java b/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstractPredsource.java new file mode 100644 index 00000000..b6849d9b --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ARSenderIdAbstractPredsource.java @@ -0,0 +1,72 @@ +package com.massivecraft.mcore5.cmd.arg; + +import java.util.Collection; +import java.util.Iterator; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore5.store.SenderIdSource; + +public abstract class ARSenderIdAbstractPredsource extends ARSenderIdAbstract +{ + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final SenderIdSource source; + private final String typename; + private final ArgPredictate argPredictate; + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public ARSenderIdAbstractPredsource(SenderIdSource source, String typename, ArgPredictate argPredictate) + { + this.source = source; + this.typename = typename; + this.argPredictate = argPredictate; + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public String getTypename() + { + return this.typename; + } + + @Override + public Collection getSenderIdsFor(String arg, CommandSender sender) + { + Collection senderIds = this.source.getSenderIds(); + arg = arg.toLowerCase(); + + Iterator iter = senderIds.iterator(); + while(iter.hasNext()) + { + String senderId = iter.next(); + if (this.isSenderIdOk(senderId, arg, sender)) continue; + iter.remove(); + } + + return senderIds; + } + + protected boolean isSenderIdOk(String senderId, String arg, CommandSender sender) + { + // If the predictate applies ... + if (!this.argPredictate.apply(senderId, arg, sender)) return false; + + // ... and the result is non null ... + T result = this.getResultForSenderId(senderId); + if (result == null) return false; + + // ... then the senderId is ok. + return true; + } + + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARString.java b/src/com/massivecraft/mcore5/cmd/arg/ARString.java index 7976a20d..e3310288 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARString.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARString.java @@ -9,9 +9,9 @@ public class ARString extends ARAbstractPrimitive } @Override - public String convert(String str) throws Exception + public String convert(String arg) throws Exception { - return str; + return arg; } // -------------------------------------------- // diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARStringEntity.java b/src/com/massivecraft/mcore5/cmd/arg/ARStringEntity.java deleted file mode 100644 index b0517039..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/ARStringEntity.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import org.bukkit.command.CommandSender; - -import com.massivecraft.mcore5.store.Coll; -import com.massivecraft.mcore5.store.Entity; - -public class ARStringEntity> implements ArgReader -{ - // -------------------------------------------- // - // IMPLEMENTATION - // -------------------------------------------- // - - @Override - public ArgResult read(String str, CommandSender sender) - { - ArgResult result = new ArgResult(); - ArgResult innerResult = this.stringReader().read(str, sender); - - if (innerResult.hasResult()) - { - String playerName = innerResult.getResult(); - E entity = this.coll().get(playerName); - result.setResult(entity); - } - else - { - result.setErrors(innerResult.getErrors()); - } - - return result; - } - - // -------------------------------------------- // - // FIELDS - // -------------------------------------------- // - - protected ArgReader stringReader; - public ArgReader stringReader() { return this.stringReader; } - - protected Coll coll; - public Coll coll() { return this.coll; } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public ARStringEntity(ArgReader stringReader, Coll coll) - { - this.stringReader = stringReader; - this.coll = coll; - } - -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchFull.java b/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchFull.java deleted file mode 100644 index a417b91c..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchFull.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import java.util.Collection; - -public class ARStringMatchFull extends ARAbstractStringMatch -{ - // -------------------------------------------- // - // IMPLEMENTATION - // -------------------------------------------- // - - @Override - public Integer matches(String arg, String alt) - { - return alt.equalsIgnoreCase(arg) ? 0 : null; - } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public ARStringMatchFull(String typename, Collection> altColls) - { - super(typename, altColls); - } -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchStart.java b/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchStart.java deleted file mode 100644 index 380aafbe..00000000 --- a/src/com/massivecraft/mcore5/cmd/arg/ARStringMatchStart.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.massivecraft.mcore5.cmd.arg; - -import java.util.Collection; - -public class ARStringMatchStart extends ARAbstractStringMatch -{ - // -------------------------------------------- // - // IMPLEMENTATION - // -------------------------------------------- // - - @Override - public Integer matches(String arg, String alt) - { - arg = arg.toLowerCase(); - alt = alt.toLowerCase(); - if (alt.startsWith(arg)) - { - return alt.length() - arg.length(); - } - else - { - return null; - } - } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public ARStringMatchStart(String typename, Collection> altColls) - { - super(typename, altColls); - } -} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARUniverse.java b/src/com/massivecraft/mcore5/cmd/arg/ARUniverse.java index d095a973..d5193f2c 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARUniverse.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARUniverse.java @@ -15,17 +15,17 @@ public class ARUniverse implements ArgReader // -------------------------------------------- // @Override - public ArgResult read(String str, CommandSender sender) + public ArgResult read(String arg, CommandSender sender) { ArgResult result = new ArgResult(); - if (multiverse.containsUniverse(str)) + if (multiverse.containsUniverse(arg)) { - result.setResult(str); + result.setResult(arg); } else { - result.getErrors().add("No universe \""+str+"\" exists in multiverse "+this.multiverse.getId()+"."); + result.getErrors().add("No universe \""+arg+"\" exists in multiverse "+this.multiverse.getId()+"."); Collection names = new ArrayList(multiverse.getUniverses()); result.getErrors().add("Use "+Txt.implodeCommaAndDot(names, "%s", ", ", " or ", ".")); diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARWorld.java b/src/com/massivecraft/mcore5/cmd/arg/ARWorld.java index badd4a52..8026a763 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARWorld.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARWorld.java @@ -16,9 +16,9 @@ public class ARWorld extends ARAbstractSelect } @Override - public World select(String str, CommandSender sender) + public World select(String arg, CommandSender sender) { - return Bukkit.getWorld(str); + return Bukkit.getWorld(arg); } @Override diff --git a/src/com/massivecraft/mcore5/cmd/arg/ARWorldType.java b/src/com/massivecraft/mcore5/cmd/arg/ARWorldType.java index a99d6b6d..a14e8e75 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ARWorldType.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ARWorldType.java @@ -16,36 +16,36 @@ public class ARWorldType extends ARAbstractSelect } @Override - public WorldType select(String str, CommandSender sender) + public WorldType select(String arg, CommandSender sender) { WorldType ret = null; // "DEFAULT_1_1" --> "11" // "LARGE_BIOMES" --> "large" // "Default" --> "" - str = str.toLowerCase(); - str = str.replace("_", ""); - str = str.replace(".", ""); - str = str.replace("normal", ""); - str = str.replace("default", ""); - str = str.replace("large", ""); + arg = arg.toLowerCase(); + arg = arg.replace("_", ""); + arg = arg.replace(".", ""); + arg = arg.replace("normal", ""); + arg = arg.replace("default", ""); + arg = arg.replace("large", ""); - if (str.equals("")) + if (arg.equals("")) { // "normal" or "default" ret = WorldType.NORMAL; } - else if (str.startsWith("flat")) + else if (arg.startsWith("flat")) { // "flat" ret = WorldType.FLAT; } - else if (str.contains("11")) + else if (arg.contains("11")) { // "VERSION_1_1" ret = WorldType.VERSION_1_1; } - else if (str.contains("large")) + else if (arg.contains("large")) { // "LARGE_BIOMES" ret = WorldType.LARGE_BIOMES; diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgPredictate.java b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictate.java new file mode 100644 index 00000000..6cd3b308 --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictate.java @@ -0,0 +1,8 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +public interface ArgPredictate +{ + public boolean apply(T type, String arg, CommandSender sender); +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateAnd.java b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateAnd.java new file mode 100644 index 00000000..202b37a3 --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateAnd.java @@ -0,0 +1,31 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +public class ArgPredictateAnd implements ArgPredictate +{ + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final ArgPredictate one; + private final ArgPredictate two; + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public ArgPredictateAnd(ArgPredictate one, ArgPredictatetwo) + { + this.one = one; + this.two = two; + } + + @Override + public boolean apply(T type, String arg, CommandSender sender) + { + if (!this.one.apply(type, arg, sender)) return false; + return this.two.apply(type, arg, sender); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringEqualsLC.java b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringEqualsLC.java new file mode 100644 index 00000000..3e7226b3 --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringEqualsLC.java @@ -0,0 +1,24 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +public class ArgPredictateStringEqualsLC implements ArgPredictate +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static ArgPredictateStringEqualsLC i = new ArgPredictateStringEqualsLC(); + public static ArgPredictateStringEqualsLC get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(String string, String arg, CommandSender sender) + { + return string.toLowerCase().equals(arg); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringIsOnlineSenderId.java b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringIsOnlineSenderId.java new file mode 100644 index 00000000..7983d8e9 --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringIsOnlineSenderId.java @@ -0,0 +1,26 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore5.mixin.Mixin; + +public class ArgPredictateStringIsOnlineSenderId implements ArgPredictate +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static ArgPredictateStringIsOnlineSenderId i = new ArgPredictateStringIsOnlineSenderId(); + public static ArgPredictateStringIsOnlineSenderId get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(String string, String arg, CommandSender sender) + { + return Mixin.isOnline(string); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringStartsLC.java b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringStartsLC.java new file mode 100644 index 00000000..4e750b15 --- /dev/null +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgPredictateStringStartsLC.java @@ -0,0 +1,24 @@ +package com.massivecraft.mcore5.cmd.arg; + +import org.bukkit.command.CommandSender; + +public class ArgPredictateStringStartsLC implements ArgPredictate +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static ArgPredictateStringStartsLC i = new ArgPredictateStringStartsLC(); + public static ArgPredictateStringStartsLC get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(String string, String arg, CommandSender sender) + { + return string.toLowerCase().startsWith(arg); + } + +} diff --git a/src/com/massivecraft/mcore5/cmd/arg/ArgReader.java b/src/com/massivecraft/mcore5/cmd/arg/ArgReader.java index 503b55d3..4d808f23 100644 --- a/src/com/massivecraft/mcore5/cmd/arg/ArgReader.java +++ b/src/com/massivecraft/mcore5/cmd/arg/ArgReader.java @@ -4,5 +4,5 @@ import org.bukkit.command.CommandSender; public interface ArgReader { - public ArgResult read(String str, CommandSender sender); + public ArgResult read(String arg, CommandSender sender); } \ No newline at end of file diff --git a/src/com/massivecraft/mcore5/store/MixinSenderIdSource.java b/src/com/massivecraft/mcore5/store/MixinSenderIdSource.java new file mode 100644 index 00000000..972c8061 --- /dev/null +++ b/src/com/massivecraft/mcore5/store/MixinSenderIdSource.java @@ -0,0 +1,26 @@ +package com.massivecraft.mcore5.store; + +import java.util.Collection; + +import com.massivecraft.mcore5.mixin.Mixin; + +public class MixinSenderIdSource implements SenderIdSource +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static MixinSenderIdSource i = new MixinSenderIdSource(); + public static MixinSenderIdSource get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public Collection getSenderIds() + { + return Mixin.getAllSenderIds(); + } + +} diff --git a/src/com/massivecraft/mcore5/store/PlayerColl.java b/src/com/massivecraft/mcore5/store/PlayerColl.java deleted file mode 100644 index 2f92ade2..00000000 --- a/src/com/massivecraft/mcore5/store/PlayerColl.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.massivecraft.mcore5.store; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - -import com.massivecraft.mcore5.MCore; -import com.massivecraft.mcore5.MPlugin; -import com.massivecraft.mcore5.Predictate; -import com.massivecraft.mcore5.cmd.arg.ARStringEntity; -import com.massivecraft.mcore5.cmd.arg.ARStringMatchFull; -import com.massivecraft.mcore5.cmd.arg.ARStringMatchStart; -import com.massivecraft.mcore5.cmd.arg.ArgReader; -import com.massivecraft.mcore5.util.MUtil; -import com.massivecraft.mcore5.util.PlayerUtil; - -public class PlayerColl> extends Coll -{ - // -------------------------------------------- // - // FIELDS - // -------------------------------------------- // - - // Note that the lowercasing should be kept at either true or false. - protected boolean lowercasing = false; - public boolean isLowercasing() { return this.lowercasing; } - - // -------------------------------------------- // - // CONSTRUCT - // -------------------------------------------- // - - public PlayerColl(Db db, MPlugin mplugin, String name, Class entityClass, boolean creative, boolean lowercasing) - { - super(db, mplugin, "ai", name, entityClass, String.class, creative); - this.lowercasing = lowercasing; - } - - public PlayerColl(Db db, MPlugin mplugin, String name, Class entityClass, boolean creative) - { - this(db, mplugin, name, entityClass, creative, false); - } - - public PlayerColl(Db db, MPlugin mplugin, String name, Class entityClass) - { - this(db, mplugin, name, entityClass, true); - } - - public PlayerColl(MPlugin mplugin, String name, Class entityClass, boolean creative, boolean lowercasing) - { - this(MCore.getDb(), mplugin, name, entityClass, creative, lowercasing); - } - - public PlayerColl(MPlugin mplugin, String name, Class entityClass, boolean creative) - { - this(MCore.getDb(), mplugin, name, entityClass, creative); - } - - public PlayerColl(MPlugin mplugin, String name, Class entityClass) - { - this(MCore.getDb(), mplugin, name, entityClass); - } - - // -------------------------------------------- // - // EXTRAS - // -------------------------------------------- // - - @Override - public String fixId(Object oid) - { - if (oid == null) return null; - String ret = MUtil.extract(String.class, "playerName", oid); - if (ret == null) return ret; - return this.lowercasing ? ret.toLowerCase() : ret; - } - - public Collection getAllOnline() - { - List ret = new ArrayList(); - for(Player player : Bukkit.getOnlinePlayers()) - { - E entity = this.get(player.getName()); - if (entity == null) continue; - ret.add(entity); - } - return ret; - } - - public Collection getAllOffline() - { - return this.getAll(new Predictate() - { - public boolean apply(E entity) - { - return entity.isOffline(); - } - }); - } - - // -------------------------------------------- // - // PLAYER REFFERENCE MANAGEMENT - // -------------------------------------------- // - - protected void setPlayerRefference(String playerName, Player player) - { - E pentity = this.get(playerName, false); - if (pentity == null) return; - pentity.player = player; - pentity.playerInitiated = true; - } - - public static void setPlayerRefferences(String playerName, Player player) - { - for (Coll coll : Coll.instances) - { - if (!(coll instanceof PlayerColl)) continue; - PlayerColl pcoll = (PlayerColl)coll; - pcoll.setPlayerRefference(playerName, player); - } - } - - // -------------------------------------------- // - // ARGUMENT READERS - // -------------------------------------------- // - - protected Collection> forgeAltColls() - { - Collection> ret = new ArrayList>(); - ret.add(this.getIds()); - if (this.isCreative()) ret.add(PlayerUtil.getAllVisitorNames()); - return ret; - } - - public ArgReader argReaderPlayerNameFull() - { - return new ARStringMatchFull("player", this.forgeAltColls()); - } - - public ArgReader argReaderPlayerNameStart() - { - return new ARStringMatchStart("player", this.forgeAltColls()); - } - - public ArgReader argReaderPlayerFull() - { - return new ARStringEntity(this.argReaderPlayerNameFull(), this); - } - - public ArgReader argReaderPlayerStart() - { - return new ARStringEntity(this.argReaderPlayerNameStart(), this); - } - -} diff --git a/src/com/massivecraft/mcore5/store/PlayerEntity.java b/src/com/massivecraft/mcore5/store/PlayerEntity.java deleted file mode 100644 index e5b2b5b0..00000000 --- a/src/com/massivecraft/mcore5/store/PlayerEntity.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.massivecraft.mcore5.store; - -import java.util.Collection; - -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.entity.Player; - -import com.massivecraft.mcore5.util.Txt; - -public abstract class PlayerEntity> extends Entity -{ - // The Bukkit player reference is initiated here - // It's kept updated using the InternalListener - protected transient Player player = null; - protected transient boolean playerInitiated = false; - public Player getPlayer() - { - if ( ! this.playerInitiated) - { - this.player = Bukkit.getPlayerExact(this.getId()); - this.playerInitiated = true; - } - return this.player; - } - - @Override - public PlayerColl getColl() - { - return (PlayerColl) super.getColl(); - } - - public boolean isOnline() - { - return this.getPlayer() != null; - } - - public boolean isOffline() - { - return ! isOnline(); - } - - /*public String getCurrentUniverse() - { - Player player = this.getPlayer(); - if (player == null) return null; - - String aspectId = this.getColl().nameAspect(); - Aspect aspect = Aspect.get(aspectId); - - aspect. - - return USelColl.i.get(aspect).select(player.getWorld().getName()); - - - - - vi ska returna ett universeId - } - - public boolean isInThisUniverse() - { - String universe = this.getUniverse(); - if (universe == null) return false; - - String currentUniverse = this.getCurrentUniverse(); - if (currentUniverse == null) return false; - - return universe.equals(currentUniverse); - }*/ - - // -------------------------------------------- // - // CHECKER UTILS - // -------------------------------------------- // - public boolean isGameMode(GameMode gm, boolean defaultIfOffline) - { - Player player = this.getPlayer(); - if (player == null || ! player.isOnline()) return defaultIfOffline; - return player.getGameMode() == gm; - } - - // -------------------------------------------- // - // Message Sending Helpers - // -------------------------------------------- // - - public void sendMessage(String msg) - { - Player player = this.getPlayer(); - if (player == null) return; - player.sendMessage(msg); - } - - public void sendMessage(Collection msgs) - { - Player player = this.getPlayer(); - if (player == null) return; - for(String msg : msgs) - { - player.sendMessage(msg); - } - } - - public void msg(String msg) - { - this.sendMessage(Txt.parse(msg)); - } - - public void msg(String msg, Object... args) - { - this.sendMessage(Txt.parse(msg, args)); - } - - public void msg(Collection msgs) - { - Player player = this.getPlayer(); - if (player == null) return; - for(String msg : msgs) - { - player.sendMessage(Txt.parse(msg)); - } - } -} diff --git a/src/com/massivecraft/mcore5/store/SenderColl.java b/src/com/massivecraft/mcore5/store/SenderColl.java index 08b6120f..d1eb03f0 100644 --- a/src/com/massivecraft/mcore5/store/SenderColl.java +++ b/src/com/massivecraft/mcore5/store/SenderColl.java @@ -1,6 +1,5 @@ package com.massivecraft.mcore5.store; -import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.TreeSet; @@ -9,16 +8,10 @@ import org.bukkit.command.CommandSender; import com.massivecraft.mcore5.MPlugin; import com.massivecraft.mcore5.Predictate; -import com.massivecraft.mcore5.cmd.arg.ARStringEntity; -import com.massivecraft.mcore5.cmd.arg.ARStringMatchFull; -import com.massivecraft.mcore5.cmd.arg.ARStringMatchStart; -import com.massivecraft.mcore5.cmd.arg.ArgReader; import com.massivecraft.mcore5.mixin.Mixin; import com.massivecraft.mcore5.util.MUtil; -import com.massivecraft.mcore5.util.PlayerUtil; -import com.massivecraft.mcore5.util.SenderUtil; -public class SenderColl> extends Coll +public class SenderColl> extends Coll implements SenderIdSource { // -------------------------------------------- // // CONSTANTS @@ -38,6 +31,9 @@ public class SenderColl> extends Coll protected boolean lowercasing; public boolean isLowercasing() { return this.lowercasing; } + protected final SenderIdSource mixinedIdSource = new SenderIdSourceCombined(this, MixinSenderIdSource.get()); + public SenderIdSource getMixinedIdSource() { return this.mixinedIdSource; } + // -------------------------------------------- // // CONSTRUCT // -------------------------------------------- // @@ -77,6 +73,12 @@ public class SenderColl> extends Coll return ret; } + @Override + public Collection getSenderIds() + { + return this.getFixedIds(); + } + @Override public String fixId(Object oid) { @@ -134,36 +136,14 @@ public class SenderColl> extends Coll // ARGUMENT READERS // -------------------------------------------- // - protected Collection> forgeAltColls() + /*public ArgReader getARFullAny() { - Collection> ret = new ArrayList>(); - ret.add(this.getIds()); - if (this.isCreative()) - { - ret.add(PlayerUtil.getAllVisitorNames()); - ret.add(SenderUtil.getIdToSender().keySet()); - } - return ret; + return ARSenderEntity.getFullAny(this); } - public ArgReader argReaderSenderIdFull() + public ArgReader getARStartAny() { - return new ARStringMatchFull("player", this.forgeAltColls()); - } - - public ArgReader argReaderSenderIdStart() - { - return new ARStringMatchStart("player", this.forgeAltColls()); - } - - public ArgReader argReaderEntityFull() - { - return new ARStringEntity(this.argReaderSenderIdFull(), this); - } - - public ArgReader argReaderEntityStart() - { - return new ARStringEntity(this.argReaderSenderIdStart(), this); - } + return ARSenderEntity.getStartAny(this); + }*/ } diff --git a/src/com/massivecraft/mcore5/store/SenderEntity.java b/src/com/massivecraft/mcore5/store/SenderEntity.java index eaf2eaa9..1c0d5c5f 100644 --- a/src/com/massivecraft/mcore5/store/SenderEntity.java +++ b/src/com/massivecraft/mcore5/store/SenderEntity.java @@ -32,6 +32,15 @@ public abstract class SenderEntity> extends Entity> extends Entity getSenderIds(); +} diff --git a/src/com/massivecraft/mcore5/store/SenderIdSourceCombined.java b/src/com/massivecraft/mcore5/store/SenderIdSourceCombined.java new file mode 100644 index 00000000..4912701a --- /dev/null +++ b/src/com/massivecraft/mcore5/store/SenderIdSourceCombined.java @@ -0,0 +1,46 @@ +package com.massivecraft.mcore5.store; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.TreeSet; + +public class SenderIdSourceCombined implements SenderIdSource +{ + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final List sources; + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public SenderIdSourceCombined(SenderIdSource... sources) + { + this.sources = new ArrayList(Arrays.asList(sources)); + } + + public SenderIdSourceCombined(Collection sources) + { + this.sources = new ArrayList(sources); + } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public Collection getSenderIds() + { + TreeSet ret = new TreeSet(String.CASE_INSENSITIVE_ORDER); + for (SenderIdSource source : this.sources) + { + ret.addAll(source.getSenderIds()); + } + return ret; + } + +} diff --git a/src/com/massivecraft/mcore5/util/extractor/ExtractorLogic.java b/src/com/massivecraft/mcore5/util/extractor/ExtractorLogic.java index 5c482329..0c7f339c 100644 --- a/src/com/massivecraft/mcore5/util/extractor/ExtractorLogic.java +++ b/src/com/massivecraft/mcore5/util/extractor/ExtractorLogic.java @@ -26,7 +26,6 @@ import org.bukkit.event.vehicle.VehicleEvent; import org.bukkit.event.vehicle.VehicleExitEvent; import com.massivecraft.mcore5.PS; -import com.massivecraft.mcore5.store.PlayerEntity; import com.massivecraft.mcore5.store.SenderEntity; import com.massivecraft.mcore5.util.SenderUtil; @@ -97,7 +96,7 @@ public class ExtractorLogic if (o == null) return null; if (o instanceof String) return (String)o; if (o instanceof SenderEntity) return ((SenderEntity)o).getId(); - if (o instanceof PlayerEntity) return ((PlayerEntity)o).getId(); + if (o instanceof SenderEntity) return ((SenderEntity)o).getId(); CommandSender sender = senderFromObject(o); if (sender == null) return null; return SenderUtil.getSenderId(sender);