use of pl.themolka.arcade.filter.Filter in project Arcade2 by ShootGame.
the class RegionListeners method getFilterResult.
private AbstainableResult getFilterResult(Region region, RegionEventType type, Player player, GamePlayer game, Block block) {
if (region == null) {
return OptionalResult.ABSTAIN;
}
Filter filter = null;
if (filter == null) {
return OptionalResult.ABSTAIN;
}
if (game == null && player != null) {
game = this.regions.getGame().getPlayer(player);
}
List<Object> data = new ArrayList<>();
if (player != null) {
data.add(player);
}
if (game != null) {
data.add(game);
}
data.add(block);
return filter.filter(data.toArray(new Object[data.size()]));
}
use of pl.themolka.arcade.filter.Filter in project Arcade2 by ShootGame.
the class DamageRuleParser method parsePrimitive.
@Override
protected ParserResult<DamageRule.Config> parsePrimitive(Node node, String name, String value) throws ParserException {
String id = this.parseOptionalId(node);
Ref<Filter.Config<?>> entityFilter = this.entityFilterParser.parse(node.property("entity-filter", "filter")).orDefault(Ref.empty());
Ref<Filter.Config<?>> playerFilter = this.playerFilterParser.parse(node.property("player-filter", "filter")).orDefault(Ref.empty());
boolean notDenied = this.denyParser.parse(node).orDefault(true);
double damage = notDenied ? this.damageParser.parse(node).orFail() : DamageRule.Config.DENY_DAMAGE;
Percentage multiplier = this.multiplierParser.parse(node.property("multiplier", "multiply")).orDefault(Percentage.DONE);
return ParserResult.fine(node, name, value, new DamageRule.Config() {
public String id() {
return id;
}
public double damage() {
return damage;
}
public Ref<Filter.Config<?>> entityFilter() {
return entityFilter;
}
public Percentage multiplier() {
return multiplier;
}
public Ref<Filter.Config<?>> playerFilter() {
return playerFilter;
}
});
}
use of pl.themolka.arcade.filter.Filter in project Arcade2 by ShootGame.
the class PortalParser method parseNode.
@Override
protected ParserResult<Portal.Config> parseNode(Node node, String name, String value) throws ParserException {
SpawnApply destination = this.parseDestination(node, name, value);
Ref<Filter> filter = this.filterParser.parse(node.property("filter")).orDefault(Ref.empty());
String id = this.parseOptionalId(node);
Ref<Kit> kit = this.kitParser.parse(node.property("kit")).orDefault(Ref.empty());
AbstractRegion.Config<?> region = this.regionParser.parseWithDefinition(node, name, value).orFail();
return ParserResult.fine(node, name, value, new Portal.Config() {
public SpawnApply destination() {
return destination;
}
public Ref<Filter> filter() {
return filter;
}
public String id() {
return id;
}
public Ref<Kit> kit() {
return kit;
}
public Ref<AbstractRegion.Config<?>> region() {
return Ref.ofProvided(region);
}
});
}
use of pl.themolka.arcade.filter.Filter in project Arcade2 by ShootGame.
the class AutoRespawnGameParser method parseNode.
@Override
protected ParserResult<AutoRespawnGame.Config> parseNode(Node node, String name, String value) throws ParserException {
Ref<Filter.Config<?>> filter = this.filterParser.parse(node.property("filter")).orDefault(Ref.empty());
Time cooldown = this.cooldownParser.parse(node.property("cooldown", "after")).orDefault(PlayerDeathEvent.DEFAULT_AUTO_RESPAWN_COOLDOWN);
return ParserResult.fine(node, name, value, new AutoRespawnGame.Config() {
public Ref<Filter.Config<?>> filter() {
return filter;
}
public Time cooldown() {
return cooldown;
}
});
}
Aggregations