Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/ch/njol/skript/SkriptConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -294,8 +294,8 @@ public static String formatDate(final long timestamp) {
})
.optional(true);

public static final Option<Boolean> useTypeProperties = new Option<>("use type properties", false)
.optional(true);
public static final Option<Boolean> useTypeProperties = new Option<>("use type properties", true)
.optional(false);

public static final Option<Boolean> allowUnsafePlatforms = new Option<>("allow unsafe platforms", false)
.optional(true);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
package org.skriptlang.skript.common.properties;

import ch.njol.skript.Skript;
import ch.njol.skript.SkriptConfig;
import org.skriptlang.skript.addon.AddonModule;
import org.skriptlang.skript.addon.SkriptAddon;
import org.skriptlang.skript.common.properties.expressions.PropExprScale;
import org.skriptlang.skript.common.properties.conditions.PropCondContains;
import org.skriptlang.skript.common.properties.conditions.PropCondIsEmpty;
import org.skriptlang.skript.common.properties.expressions.*;
import org.skriptlang.skript.docs.Origin;

import java.io.IOException;
import org.skriptlang.skript.registration.SyntaxRegistry;

public class PropertiesModule implements AddonModule {

@Override
public void load(SkriptAddon addon) {
SyntaxRegistry registry = addon.syntaxRegistry();
Origin origin = AddonModule.origin(addon, "type properties");
PropExprScale.register(addon, origin);
PropExprScale.register(registry, origin);
if (SkriptConfig.useTypeProperties.value()) { // not using canLoad since this should only gate old properties, not new ones
PropCondContains.register(registry, origin);
PropCondIsEmpty.register(registry, origin);

// fully use type properties for existing syntax
// TODO: use registration API
if (SkriptConfig.useTypeProperties.value()) {
try {
Skript.getAddonInstance().loadClasses("org.skriptlang.skript.common.properties", "expressions", "conditions");
} catch (IOException e) {
throw new RuntimeException(e);
}
PropExprAmount.register(registry, origin);
PropExprCustomName.register(registry, origin);
PropExprName.register(registry, origin);
PropExprNumber.register(registry, origin);
PropExprSize.register(registry, origin);
PropExprValueOf.register(registry, origin);
PropExprWXYZ.register(registry, origin);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,16 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converters;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseSyntax;
import org.skriptlang.skript.lang.properties.PropertyMap;
import org.skriptlang.skript.lang.properties.handlers.ContainsHandler;
import org.skriptlang.skript.registration.SyntaxInfo;
import org.skriptlang.skript.registration.SyntaxRegistry;

import java.util.Arrays;
import java.util.Map;
Expand All @@ -45,14 +48,19 @@
@RelatedProperty("contains")
public class PropCondContains extends Condition implements PropertyBaseSyntax<ContainsHandler<?,?>>, VerboseAssert {

static {
Skript.registerCondition(PropCondContains.class,
"%objects% contain[1:s] %objects%",
"%objects% (1:doesn't|1:does not|do not|don't) contain %objects%",
"contents of %objects% contain %objects%",
"contents of %objects% (do not|don't) contain %objects%",
"%inventories% (has|have) %itemtypes% [in [(the[ir]|his|her|its)] inventory]",
"%inventories% (doesn't|does not|do not|don't) have %itemtypes% [in [(the[ir]|his|her|its)] inventory]");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.CONDITION, SyntaxInfo.builder(PropCondContains.class)
.origin(origin)
.addPatterns(
"%objects% contain[1:s] %objects%",
"%objects% (1:doesn't|1:does not|do not|don't) contain %objects%",
"contents of %objects% contain %objects%",
"contents of %objects% (do not|don't) contain %objects%",
"%inventories% (has|have) %itemtypes% [in [(the[ir]|his|her|its)] inventory]",
"%inventories% (doesn't|does not|do not|don't) have %itemtypes% [in [(the[ir]|his|her|its)] inventory]"
)
.supplier(PropCondContains::new)
.build());
}

/*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package org.skriptlang.skript.common.properties.conditions;

import ch.njol.skript.conditions.base.PropertyCondition;
import ch.njol.skript.doc.*;
import org.jetbrains.annotations.NotNull;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseCondition;
import org.skriptlang.skript.lang.properties.handlers.base.ConditionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Is Empty")
@Description("Checks whether something is empty.")
Expand All @@ -13,8 +16,12 @@
@RelatedProperty("empty")
public class PropCondIsEmpty extends PropertyBaseCondition<ConditionPropertyHandler<?>> {

static {
register(PropCondIsEmpty.class, "empty", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.CONDITION,
PropertyCondition.infoBuilder(PropCondIsEmpty.class, PropertyCondition.PropertyType.BE, "empty", "objects")
.origin(origin)
.supplier(PropCondIsEmpty::new)
.build());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ch.njol.skript.classes.Changer.ChangeMode;
import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionList;
import ch.njol.skript.lang.SkriptParser.ParseResult;
Expand All @@ -11,9 +12,11 @@
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Amount")
@Description("""
Expand All @@ -28,8 +31,12 @@
@RelatedProperty("amount")
public class PropExprAmount extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {

static {
register(PropExprAmount.class, "amount[:s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprAmount.class, Object.class, "amount[:s]", "objects", false)
.origin(origin)
.supplier(PropExprAmount::new)
.build());
}

private ExpressionList<?> exprs;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package org.skriptlang.skript.common.properties.expressions;

import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Display Name")
@Description({
Expand Down Expand Up @@ -34,8 +37,12 @@
@RelatedProperty("display name")
public class PropExprCustomName extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {

static {
register(PropExprCustomName.class, "(display|nick|chat|custom)[ ]name[s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprCustomName.class, Object.class, "(display|nick|chat|custom)[ ]name[s]", "objects", false)
.origin(origin)
.supplier(PropExprCustomName::new)
.build());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package org.skriptlang.skript.common.properties.expressions;

import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Name")
@Description({
Expand Down Expand Up @@ -41,8 +44,12 @@
@RelatedProperty("name")
public class PropExprName extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {

static {
register(PropExprName.class , "name[s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprName.class, Object.class, "name[s]", "objects", false)
.origin(origin)
.supplier(PropExprName::new)
.build());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ch.njol.skript.classes.Changer;
import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionList;
import ch.njol.skript.lang.SkriptParser.ParseResult;
Expand All @@ -10,9 +11,11 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Number Of")
@Description("""
Expand All @@ -25,8 +28,12 @@
@RelatedProperty("number")
public class PropExprNumber extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {

static {
register(PropExprNumber.class, "number[:s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprNumber.class, Object.class, "number[:s]", "objects", false)
.origin(origin)
.supplier(PropExprNumber::new)
.build());
}

private ExpressionList<?> exprs;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.skriptlang.skript.common.properties.expressions;


import ch.njol.skript.doc.*;
import org.skriptlang.skript.addon.SkriptAddon;
import ch.njol.skript.expressions.base.PropertyExpression;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Scale")
@Description({
Expand All @@ -20,8 +20,12 @@
@RelatedProperty("scale")
public class PropExprScale extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {

public static void register(SkriptAddon addon, Origin origin) {
register(PropExprScale.class , "scale[s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprScale.class, Object.class, "scale[s]", "objects", false)
.origin(origin)
.supplier(PropExprScale::new)
.build());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ch.njol.skript.classes.Changer;
import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.ExpressionList;
import ch.njol.skript.lang.SkriptParser.ParseResult;
Expand All @@ -10,9 +11,11 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

@Name("Size")
@Description("""
Expand All @@ -25,8 +28,12 @@
@RelatedProperty("size")
public class PropExprSize extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {

static {
register(PropExprSize.class, "size[:s]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprSize.class, Object.class, "size[:s]", "objects", false)
.origin(origin)
.supplier(PropExprSize::new)
.build());
}

private ExpressionList<?> exprs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import ch.njol.skript.Skript;
import ch.njol.skript.classes.ClassInfo;
import ch.njol.skript.doc.*;
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptParser.ParseResult;
Expand All @@ -12,10 +13,12 @@
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.PropertyBaseSyntax;
import org.skriptlang.skript.lang.properties.handlers.TypedValueHandler;
import org.skriptlang.skript.registration.SyntaxRegistry;

import java.lang.reflect.Array;
import java.util.Arrays;
Expand All @@ -40,8 +43,12 @@
@RelatedProperty("typed value")
public class PropExprValueOf extends PropertyBaseExpression<TypedValueHandler<?, ?>> {

static {
register(PropExprValueOf.class, "[%-*classinfo%] value", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprValueOf.class, Object.class, "[%-*classinfo%] value", "objects", false)
.origin(origin)
.supplier(PropExprValueOf::new)
.build());
}

private ClassInfo<?> type;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
package org.skriptlang.skript.common.properties.expressions;

import ch.njol.skript.Skript;
import ch.njol.skript.expressions.base.PropertyExpression;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
import org.jetbrains.annotations.NotNull;
import org.skriptlang.skript.docs.Origin;
import org.skriptlang.skript.lang.properties.Property;
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
import org.skriptlang.skript.lang.properties.handlers.WXYZHandler;
import org.skriptlang.skript.lang.properties.handlers.WXYZHandler.Axis;
import org.skriptlang.skript.registration.SyntaxRegistry;

import java.util.ArrayList;
import java.util.Locale;

public class PropExprWXYZ extends PropertyBaseExpression<WXYZHandler<?, ?>> {

static {
register(PropExprWXYZ.class, "(:x|:y|:z|:w)( |-)[component[s]|coord[inate][s]|dep:(pos[ition[s]]|loc[ation][s])]", "objects");
public static void register(SyntaxRegistry registry, Origin origin) {
registry.register(SyntaxRegistry.EXPRESSION,
PropertyExpression.infoBuilder(PropExprWXYZ.class, Object.class, "(:x|:y|:z|:w)( |-)[component[s]|coord[inate][s]|dep:(pos[ition[s]]|loc[ation][s])]", "objects", false)
.origin(origin)
.supplier(PropExprWXYZ::new)
.build());
}

private Axis axis;
Expand Down
Loading