From 8b12cadf0afde12719ec54c52a423dda24d4feac Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Wed, 4 Feb 2015 14:04:41 +0100 Subject: [PATCH] Decouple logic for list permission check and avoiding spam. --- .../massivecore/cmd/arg/ARAbstractSelect.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/com/massivecraft/massivecore/cmd/arg/ARAbstractSelect.java b/src/com/massivecraft/massivecore/cmd/arg/ARAbstractSelect.java index 53dff771..aeda6220 100644 --- a/src/com/massivecraft/massivecore/cmd/arg/ARAbstractSelect.java +++ b/src/com/massivecraft/massivecore/cmd/arg/ARAbstractSelect.java @@ -9,6 +9,12 @@ import com.massivecraft.massivecore.util.Txt; public abstract class ARAbstractSelect extends ArgReaderAbstract { + // -------------------------------------------- // + // CONSTANT + // -------------------------------------------- // + + public static final int LIST_COUNT_MAX = 50; + // -------------------------------------------- // // ABSTRACT // -------------------------------------------- // @@ -16,7 +22,7 @@ public abstract class ARAbstractSelect extends ArgReaderAbstract public abstract String typename(); public abstract T select(String str, CommandSender sender); public abstract Collection altNames(CommandSender sender); - public boolean canList(CommandSender sender) { return this.altNames(sender).size() < 50; } + public boolean canList(CommandSender sender) { return true; } // -------------------------------------------- // // OVERRIDE @@ -31,6 +37,7 @@ public abstract class ARAbstractSelect extends ArgReaderAbstract { MassiveCommandException exception = new MassiveCommandException(); exception.addMsg("No %s matches \"%s\".", this.typename(), arg); + if (this.canList(sender)) { Collection names = this.altNames(sender); @@ -38,6 +45,10 @@ public abstract class ARAbstractSelect extends ArgReaderAbstract { exception.addMsg("Note: There is no %s available.", this.typename()); } + else if (names.size() > LIST_COUNT_MAX) + { + exception.addMsg("More than %d alternatives available.", LIST_COUNT_MAX); + } else { String format = Txt.parse("%s");