✨ Expose input string from EntitySelectors
This commit is contained in:
parent
4c178fc9cd
commit
a8b2b9a608
9 changed files with 35 additions and 15 deletions
|
|
@ -34,14 +34,18 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public abstract class EntitySelector {
|
public abstract class EntitySelector {
|
||||||
|
|
||||||
|
private final String selector;
|
||||||
private final List<Entity> entities;
|
private final List<Entity> entities;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new entity selector
|
* Construct a new entity selector
|
||||||
*
|
*
|
||||||
|
* @param selector The input string used to create this selector
|
||||||
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
||||||
*/
|
*/
|
||||||
public EntitySelector(final @NonNull List<@NonNull Entity> entities) {
|
public EntitySelector(final @NonNull String selector,
|
||||||
|
final @NonNull List<@NonNull Entity> entities) {
|
||||||
|
this.selector = selector;
|
||||||
this.entities = entities;
|
this.entities = entities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -54,4 +58,12 @@ public abstract class EntitySelector {
|
||||||
return Collections.unmodifiableList(this.entities);
|
return Collections.unmodifiableList(this.entities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the input String for this selector
|
||||||
|
*
|
||||||
|
* @return The input String for this selector
|
||||||
|
*/
|
||||||
|
public @NonNull String getSelector() {
|
||||||
|
return this.selector;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,12 @@ import java.util.List;
|
||||||
public class MultipleEntitySelector extends EntitySelector {
|
public class MultipleEntitySelector extends EntitySelector {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param selector The input string used to create this selector
|
||||||
* @param entities The List of Bukkit {@link Entity}s to construct the {@link EntitySelector} from
|
* @param entities The List of Bukkit {@link Entity}s to construct the {@link EntitySelector} from
|
||||||
*/
|
*/
|
||||||
public MultipleEntitySelector(final @NonNull List<@NonNull Entity> entities) {
|
public MultipleEntitySelector(final @NonNull String selector,
|
||||||
super(entities);
|
final @NonNull List<@NonNull Entity> entities) {
|
||||||
|
super(selector, entities);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,10 +39,12 @@ public class MultiplePlayerSelector extends MultipleEntitySelector {
|
||||||
/**
|
/**
|
||||||
* Construct a new selector
|
* Construct a new selector
|
||||||
*
|
*
|
||||||
|
* @param selector The input string used to create this selector
|
||||||
* @param entities The List of Bukkit {@link Entity}s to construct the {@link EntitySelector} from
|
* @param entities The List of Bukkit {@link Entity}s to construct the {@link EntitySelector} from
|
||||||
*/
|
*/
|
||||||
public MultiplePlayerSelector(final @NonNull List<@NonNull Entity> entities) {
|
public MultiplePlayerSelector(final @NonNull String selector,
|
||||||
super(entities);
|
final @NonNull List<@NonNull Entity> entities) {
|
||||||
|
super(selector, entities);
|
||||||
entities.forEach(e -> {
|
entities.forEach(e -> {
|
||||||
if (e.getType() != EntityType.PLAYER) {
|
if (e.getType() != EntityType.PLAYER) {
|
||||||
throw new IllegalArgumentException("Non-players selected in player selector.");
|
throw new IllegalArgumentException("Non-players selected in player selector.");
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,12 @@ public final class SingleEntitySelector extends MultipleEntitySelector {
|
||||||
/**
|
/**
|
||||||
* Construct a new selector
|
* Construct a new selector
|
||||||
*
|
*
|
||||||
|
* @param selector The input string used to create this selector
|
||||||
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
||||||
*/
|
*/
|
||||||
public SingleEntitySelector(final @NonNull List<@NonNull Entity> entities) {
|
public SingleEntitySelector(final @NonNull String selector,
|
||||||
super(entities);
|
final @NonNull List<@NonNull Entity> entities) {
|
||||||
|
super(selector, entities);
|
||||||
if (entities.size() > 1) {
|
if (entities.size() > 1) {
|
||||||
throw new IllegalArgumentException("More than 1 entity selected in single entity selector.");
|
throw new IllegalArgumentException("More than 1 entity selected in single entity selector.");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,12 @@ public final class SinglePlayerSelector extends MultiplePlayerSelector {
|
||||||
/**
|
/**
|
||||||
* Construct a new selector
|
* Construct a new selector
|
||||||
*
|
*
|
||||||
|
* @param selector The input string used to create this selector
|
||||||
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
* @param entities The List of Bukkit {@link Entity entities} to construct the {@link EntitySelector} from
|
||||||
*/
|
*/
|
||||||
public SinglePlayerSelector(final @NonNull List<@NonNull Entity> entities) {
|
public SinglePlayerSelector(final @NonNull String selector,
|
||||||
super(entities);
|
final @NonNull List<@NonNull Entity> entities) {
|
||||||
|
super(selector, entities);
|
||||||
if (getPlayers().size() > 1) {
|
if (getPlayers().size() > 1) {
|
||||||
throw new IllegalArgumentException("More than 1 player selected in single player selector.");
|
throw new IllegalArgumentException("More than 1 player selected in single player selector.");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ public final class MultipleEntitySelectorArgument<C> extends CommandArgument<C,
|
||||||
return ArgumentParseResult.failure(new SelectorParseException(input));
|
return ArgumentParseResult.failure(new SelectorParseException(input));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ArgumentParseResult.success(new MultipleEntitySelector(entities));
|
return ArgumentParseResult.success(new MultipleEntitySelector(input, entities));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ public final class MultiplePlayerSelectorArgument<C> extends CommandArgument<C,
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
return ArgumentParseResult.failure(new PlayerArgument.PlayerParseException(input));
|
return ArgumentParseResult.failure(new PlayerArgument.PlayerParseException(input));
|
||||||
}
|
}
|
||||||
return ArgumentParseResult.success(new MultiplePlayerSelector(ImmutableList.of(player)));
|
return ArgumentParseResult.success(new MultiplePlayerSelector(input, ImmutableList.of(player)));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Entity> entities;
|
List<Entity> entities;
|
||||||
|
|
@ -156,7 +156,7 @@ public final class MultiplePlayerSelectorArgument<C> extends CommandArgument<C,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ArgumentParseResult.success(new MultiplePlayerSelector(entities));
|
return ArgumentParseResult.success(new MultiplePlayerSelector(input, entities));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ public final class SingleEntitySelectorArgument<C> extends CommandArgument<C, Si
|
||||||
new IllegalArgumentException("More than 1 entity selected in single entity selector."));
|
new IllegalArgumentException("More than 1 entity selected in single entity selector."));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ArgumentParseResult.success(new SingleEntitySelector(entities));
|
return ArgumentParseResult.success(new SingleEntitySelector(input, entities));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ public final class SinglePlayerSelectorArgument<C> extends CommandArgument<C, Si
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
return ArgumentParseResult.failure(new PlayerArgument.PlayerParseException(input));
|
return ArgumentParseResult.failure(new PlayerArgument.PlayerParseException(input));
|
||||||
}
|
}
|
||||||
return ArgumentParseResult.success(new SinglePlayerSelector(ImmutableList.of(player)));
|
return ArgumentParseResult.success(new SinglePlayerSelector(input, ImmutableList.of(player)));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Entity> entities;
|
List<Entity> entities;
|
||||||
|
|
@ -159,7 +159,7 @@ public final class SinglePlayerSelectorArgument<C> extends CommandArgument<C, Si
|
||||||
new IllegalArgumentException("More than 1 player selected in single player selector"));
|
new IllegalArgumentException("More than 1 player selected in single player selector"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ArgumentParseResult.success(new SinglePlayerSelector(entities));
|
return ArgumentParseResult.success(new SinglePlayerSelector(input, entities));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue