[Bleeding] More lenient command creation from plugin.yml. Fixes BUKKIT-1093

This commit is contained in:
Wesley Wolfe 2012-03-10 13:11:21 -06:00 committed by EvilSeph
parent 2ab4e6bdc7
commit ff9fa6b32e

View File

@ -202,24 +202,26 @@ public final class PluginDescriptionFile {
try { try {
for (Map.Entry<?, ?> command : ((Map<?, ?>) map.get("commands")).entrySet()) { for (Map.Entry<?, ?> command : ((Map<?, ?>) map.get("commands")).entrySet()) {
ImmutableMap.Builder<String, Object> commandBuilder = ImmutableMap.<String, Object>builder(); ImmutableMap.Builder<String, Object> commandBuilder = ImmutableMap.<String, Object>builder();
if (command.getValue() != null) {
for (Map.Entry<?, ?> commandEntry : ((Map<?, ?>) command.getValue()).entrySet()) { for (Map.Entry<?, ?> commandEntry : ((Map<?, ?>) command.getValue()).entrySet()) {
if (commandEntry.getValue() instanceof Iterable) { if (commandEntry.getValue() instanceof Iterable) {
// This prevents internal alias list changes // This prevents internal alias list changes
ImmutableList.Builder<Object> commandSubList = ImmutableList.<Object>builder(); ImmutableList.Builder<Object> commandSubList = ImmutableList.<Object>builder();
for (Object commandSubListItem : (Iterable<?>) commandEntry.getValue()) { for (Object commandSubListItem : (Iterable<?>) commandEntry.getValue()) {
if (commandSubListItem != null) {
commandSubList.add(commandSubListItem); commandSubList.add(commandSubListItem);
} }
}
commandBuilder.put(commandEntry.getKey().toString(), commandSubList.build()); commandBuilder.put(commandEntry.getKey().toString(), commandSubList.build());
} else if (commandEntry.getValue() != null) { } else if (commandEntry.getValue() != null) {
commandBuilder.put(commandEntry.getKey().toString(), commandEntry.getValue()); commandBuilder.put(commandEntry.getKey().toString(), commandEntry.getValue());
} }
} }
}
commandsBuilder.put(command.getKey().toString(), commandBuilder.build()); commandsBuilder.put(command.getKey().toString(), commandBuilder.build());
} }
} catch (ClassCastException ex) { } catch (ClassCastException ex) {
throw new InvalidDescriptionException(ex, "commands are of wrong type"); throw new InvalidDescriptionException(ex, "commands are of wrong type");
} catch (NullPointerException ex) {
throw new InvalidDescriptionException(ex, "commands are not properly defined");
} }
commands = commandsBuilder.build(); commands = commandsBuilder.build();
} }