Don't parse player name as count in /csgive (Fixes #355)

This commit is contained in:
Phoenix616 2020-09-14 14:36:10 +01:00
parent 54a713af89
commit cbbdaf0bbf
No known key found for this signature in database
GPG Key ID: 40E2321E71738EB0

View File

@ -12,8 +12,8 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.util.ArrayList; import java.util.HashSet;
import java.util.List; import java.util.Set;
/** /**
* @author Acrobot * @author Acrobot
@ -34,7 +34,7 @@ public class Give implements CommandExecutor {
Player receiver = (sender instanceof Player ? (Player) sender : null); Player receiver = (sender instanceof Player ? (Player) sender : null);
int quantity = 1; int quantity = 1;
List<Integer> disregardedIndexes = new ArrayList<Integer>(); Set<Integer> disregardedIndexes = new HashSet<>();
if (args.length > 1) { if (args.length > 1) {
for (int index = args.length - 1; index >= 0; --index) { for (int index = args.length - 1; index >= 0; --index) {
@ -50,7 +50,7 @@ public class Give implements CommandExecutor {
} }
for (int index = args.length - 1; index >= 0; --index) { for (int index = args.length - 1; index >= 0; --index) {
if (!NumberUtil.isInteger(args[index]) || Integer.parseInt(args[index]) < 0) { if (disregardedIndexes.contains(index) || !NumberUtil.isInteger(args[index]) || Integer.parseInt(args[index]) < 0) {
continue; continue;
} }
@ -83,7 +83,7 @@ public class Give implements CommandExecutor {
return true; return true;
} }
private static ItemStack getItem(String[] arguments, List<Integer> disregardedElements) { private static ItemStack getItem(String[] arguments, Set<Integer> disregardedElements) {
StringBuilder builder = new StringBuilder(arguments.length * 5); StringBuilder builder = new StringBuilder(arguments.length * 5);
for (int index = 0; index < arguments.length; ++index) { for (int index = 0; index < arguments.length; ++index) {