Skip to content

Commit a1ea83a

Browse files
committed
use registration api and move to default to on, with config option to disable
1 parent 64b1407 commit a1ea83a

12 files changed

Lines changed: 112 additions & 37 deletions

File tree

src/main/java/ch/njol/skript/SkriptConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public static String formatDate(final long timestamp) {
295295
.optional(true);
296296

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

300300
public static final Option<Boolean> allowUnsafePlatforms = new Option<>("allow unsafe platforms", false)
301301
.optional(true);
Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
package org.skriptlang.skript.common.properties;
22

3-
import ch.njol.skript.Skript;
43
import ch.njol.skript.SkriptConfig;
54
import org.skriptlang.skript.addon.AddonModule;
65
import org.skriptlang.skript.addon.SkriptAddon;
7-
8-
import java.io.IOException;
6+
import org.skriptlang.skript.common.properties.conditions.PropCondContains;
7+
import org.skriptlang.skript.common.properties.conditions.PropCondIsEmpty;
8+
import org.skriptlang.skript.common.properties.expressions.*;
9+
import org.skriptlang.skript.docs.Origin;
10+
import org.skriptlang.skript.registration.SyntaxRegistry;
911

1012
public class PropertiesModule implements AddonModule {
1113

12-
@Override
13-
public boolean canLoad(SkriptAddon addon) {
14-
return SkriptConfig.useTypeProperties.value();
15-
}
16-
1714
@Override
1815
public void load(SkriptAddon addon) {
19-
try {
20-
Skript.getAddonInstance().loadClasses("org.skriptlang.skript.common.properties", "expressions", "conditions");
21-
} catch (IOException e) {
22-
throw new RuntimeException(e);
16+
SyntaxRegistry registry = addon.syntaxRegistry();
17+
Origin origin = AddonModule.origin(addon, "type properties");
18+
if (SkriptConfig.useTypeProperties.value()) { // not using canLoad since this should only gate old properties, not new ones
19+
PropCondContains.register(registry, origin);
20+
PropCondIsEmpty.register(registry, origin);
21+
22+
PropExprAmount.register(registry, origin);
23+
PropExprCustomName.register(registry, origin);
24+
PropExprName.register(registry, origin);
25+
PropExprNumber.register(registry, origin);
26+
PropExprSize.register(registry, origin);
27+
PropExprValueOf.register(registry, origin);
28+
PropExprWXYZ.register(registry, origin);
2329
}
2430
}
2531
}

src/main/java/org/skriptlang/skript/common/properties/conditions/PropCondContains.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717
import org.bukkit.event.Event;
1818
import org.jetbrains.annotations.NotNull;
1919
import org.jetbrains.annotations.Nullable;
20+
import org.skriptlang.skript.docs.Origin;
2021
import org.skriptlang.skript.lang.comparator.Comparators;
2122
import org.skriptlang.skript.lang.comparator.Relation;
2223
import org.skriptlang.skript.lang.converter.Converters;
2324
import org.skriptlang.skript.lang.properties.Property;
2425
import org.skriptlang.skript.lang.properties.PropertyBaseSyntax;
2526
import org.skriptlang.skript.lang.properties.PropertyMap;
2627
import org.skriptlang.skript.lang.properties.handlers.ContainsHandler;
28+
import org.skriptlang.skript.registration.SyntaxInfo;
29+
import org.skriptlang.skript.registration.SyntaxRegistry;
2730

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

48-
static {
49-
Skript.registerCondition(PropCondContains.class,
50-
"%objects% contain[1:s] %objects%",
51-
"%objects% (1:doesn't|1:does not|do not|don't) contain %objects%",
52-
"contents of %objects% contain %objects%",
53-
"contents of %objects% (do not|don't) contain %objects%",
54-
"%inventories% (has|have) %itemtypes% [in [(the[ir]|his|her|its)] inventory]",
55-
"%inventories% (doesn't|does not|do not|don't) have %itemtypes% [in [(the[ir]|his|her|its)] inventory]");
51+
public static void register(SyntaxRegistry registry, Origin origin) {
52+
registry.register(SyntaxRegistry.CONDITION, SyntaxInfo.builder(PropCondContains.class)
53+
.origin(origin)
54+
.addPatterns(
55+
"%objects% contain[1:s] %objects%",
56+
"%objects% (1:doesn't|1:does not|do not|don't) contain %objects%",
57+
"contents of %objects% contain %objects%",
58+
"contents of %objects% (do not|don't) contain %objects%",
59+
"%inventories% (has|have) %itemtypes% [in [(the[ir]|his|her|its)] inventory]",
60+
"%inventories% (doesn't|does not|do not|don't) have %itemtypes% [in [(the[ir]|his|her|its)] inventory]"
61+
)
62+
.supplier(PropCondContains::new)
63+
.build());
5664
}
5765

5866
/*

src/main/java/org/skriptlang/skript/common/properties/conditions/PropCondIsEmpty.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package org.skriptlang.skript.common.properties.conditions;
22

3+
import ch.njol.skript.conditions.base.PropertyCondition;
34
import ch.njol.skript.doc.*;
45
import org.jetbrains.annotations.NotNull;
6+
import org.skriptlang.skript.docs.Origin;
57
import org.skriptlang.skript.lang.properties.Property;
68
import org.skriptlang.skript.lang.properties.PropertyBaseCondition;
79
import org.skriptlang.skript.lang.properties.handlers.base.ConditionPropertyHandler;
10+
import org.skriptlang.skript.registration.SyntaxRegistry;
811

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

16-
static {
17-
register(PropCondIsEmpty.class, "empty", "objects");
19+
public static void register(SyntaxRegistry registry, Origin origin) {
20+
registry.register(SyntaxRegistry.CONDITION,
21+
PropertyCondition.infoBuilder(PropCondIsEmpty.class, PropertyCondition.PropertyType.BE, "empty", "objects")
22+
.origin(origin)
23+
.supplier(PropCondIsEmpty::new)
24+
.build());
1825
}
1926

2027
@Override

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprAmount.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ch.njol.skript.classes.Changer.ChangeMode;
44
import ch.njol.skript.doc.*;
5+
import ch.njol.skript.expressions.base.PropertyExpression;
56
import ch.njol.skript.lang.Expression;
67
import ch.njol.skript.lang.ExpressionList;
78
import ch.njol.skript.lang.SkriptParser.ParseResult;
@@ -11,9 +12,11 @@
1112
import org.jetbrains.annotations.ApiStatus;
1213
import org.jetbrains.annotations.NotNull;
1314
import org.jetbrains.annotations.Nullable;
15+
import org.skriptlang.skript.docs.Origin;
1416
import org.skriptlang.skript.lang.properties.Property;
1517
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
1618
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
19+
import org.skriptlang.skript.registration.SyntaxRegistry;
1720

1821
@Name("Amount")
1922
@Description("""
@@ -28,8 +31,12 @@
2831
@RelatedProperty("amount")
2932
public class PropExprAmount extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {
3033

31-
static {
32-
register(PropExprAmount.class, "amount[:s]", "objects");
34+
public static void register(SyntaxRegistry registry, Origin origin) {
35+
registry.register(SyntaxRegistry.EXPRESSION,
36+
PropertyExpression.infoBuilder(PropExprAmount.class, Object.class, "amount[:s]", "objects", false)
37+
.origin(origin)
38+
.supplier(PropExprAmount::new)
39+
.build());
3340
}
3441

3542
private ExpressionList<?> exprs;

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprCustomName.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package org.skriptlang.skript.common.properties.expressions;
22

33
import ch.njol.skript.doc.*;
4+
import ch.njol.skript.expressions.base.PropertyExpression;
5+
import org.skriptlang.skript.docs.Origin;
46
import org.skriptlang.skript.lang.properties.Property;
57
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
68
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
9+
import org.skriptlang.skript.registration.SyntaxRegistry;
710

811
@Name("Display Name")
912
@Description({
@@ -34,8 +37,12 @@
3437
@RelatedProperty("display name")
3538
public class PropExprCustomName extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {
3639

37-
static {
38-
register(PropExprCustomName.class, "(display|nick|chat|custom)[ ]name[s]", "objects");
40+
public static void register(SyntaxRegistry registry, Origin origin) {
41+
registry.register(SyntaxRegistry.EXPRESSION,
42+
PropertyExpression.infoBuilder(PropExprCustomName.class, Object.class, "(display|nick|chat|custom)[ ]name[s]", "objects", false)
43+
.origin(origin)
44+
.supplier(PropExprCustomName::new)
45+
.build());
3946
}
4047

4148
@Override

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprName.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package org.skriptlang.skript.common.properties.expressions;
22

33
import ch.njol.skript.doc.*;
4+
import ch.njol.skript.expressions.base.PropertyExpression;
5+
import org.skriptlang.skript.docs.Origin;
46
import org.skriptlang.skript.lang.properties.Property;
57
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
68
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
9+
import org.skriptlang.skript.registration.SyntaxRegistry;
710

811
@Name("Name")
912
@Description({
@@ -41,8 +44,12 @@
4144
@RelatedProperty("name")
4245
public class PropExprName extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {
4346

44-
static {
45-
register(PropExprName.class , "name[s]", "objects");
47+
public static void register(SyntaxRegistry registry, Origin origin) {
48+
registry.register(SyntaxRegistry.EXPRESSION,
49+
PropertyExpression.infoBuilder(PropExprName.class, Object.class, "name[s]", "objects", false)
50+
.origin(origin)
51+
.supplier(PropExprName::new)
52+
.build());
4653
}
4754

4855
@Override

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprNumber.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ch.njol.skript.classes.Changer;
44
import ch.njol.skript.doc.*;
5+
import ch.njol.skript.expressions.base.PropertyExpression;
56
import ch.njol.skript.lang.Expression;
67
import ch.njol.skript.lang.ExpressionList;
78
import ch.njol.skript.lang.SkriptParser.ParseResult;
@@ -10,9 +11,11 @@
1011
import org.bukkit.event.Event;
1112
import org.jetbrains.annotations.NotNull;
1213
import org.jetbrains.annotations.Nullable;
14+
import org.skriptlang.skript.docs.Origin;
1315
import org.skriptlang.skript.lang.properties.Property;
1416
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
1517
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
18+
import org.skriptlang.skript.registration.SyntaxRegistry;
1619

1720
@Name("Number Of")
1821
@Description("""
@@ -25,8 +28,12 @@
2528
@RelatedProperty("number")
2629
public class PropExprNumber extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {
2730

28-
static {
29-
register(PropExprNumber.class, "number[:s]", "objects");
31+
public static void register(SyntaxRegistry registry, Origin origin) {
32+
registry.register(SyntaxRegistry.EXPRESSION,
33+
PropertyExpression.infoBuilder(PropExprNumber.class, Object.class, "number[:s]", "objects", false)
34+
.origin(origin)
35+
.supplier(PropExprNumber::new)
36+
.build());
3037
}
3138

3239
private ExpressionList<?> exprs;

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprSize.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ch.njol.skript.classes.Changer;
44
import ch.njol.skript.doc.*;
5+
import ch.njol.skript.expressions.base.PropertyExpression;
56
import ch.njol.skript.lang.Expression;
67
import ch.njol.skript.lang.ExpressionList;
78
import ch.njol.skript.lang.SkriptParser.ParseResult;
@@ -10,9 +11,11 @@
1011
import org.bukkit.event.Event;
1112
import org.jetbrains.annotations.NotNull;
1213
import org.jetbrains.annotations.Nullable;
14+
import org.skriptlang.skript.docs.Origin;
1315
import org.skriptlang.skript.lang.properties.Property;
1416
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
1517
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
18+
import org.skriptlang.skript.registration.SyntaxRegistry;
1619

1720
@Name("Size")
1821
@Description("""
@@ -25,8 +28,12 @@
2528
@RelatedProperty("size")
2629
public class PropExprSize extends PropertyBaseExpression<ExpressionPropertyHandler<?, ?>> {
2730

28-
static {
29-
register(PropExprSize.class, "size[:s]", "objects");
31+
public static void register(SyntaxRegistry registry, Origin origin) {
32+
registry.register(SyntaxRegistry.EXPRESSION,
33+
PropertyExpression.infoBuilder(PropExprSize.class, Object.class, "size[:s]", "objects", false)
34+
.origin(origin)
35+
.supplier(PropExprSize::new)
36+
.build());
3037
}
3138

3239
private ExpressionList<?> exprs;

src/main/java/org/skriptlang/skript/common/properties/expressions/PropExprValueOf.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import ch.njol.skript.Skript;
44
import ch.njol.skript.classes.ClassInfo;
55
import ch.njol.skript.doc.*;
6+
import ch.njol.skript.expressions.base.PropertyExpression;
67
import ch.njol.skript.lang.Expression;
78
import ch.njol.skript.lang.Literal;
89
import ch.njol.skript.lang.SkriptParser.ParseResult;
@@ -12,10 +13,12 @@
1213
import org.bukkit.event.Event;
1314
import org.jetbrains.annotations.NotNull;
1415
import org.jetbrains.annotations.Nullable;
16+
import org.skriptlang.skript.docs.Origin;
1517
import org.skriptlang.skript.lang.properties.Property;
1618
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
1719
import org.skriptlang.skript.lang.properties.PropertyBaseSyntax;
1820
import org.skriptlang.skript.lang.properties.handlers.TypedValueHandler;
21+
import org.skriptlang.skript.registration.SyntaxRegistry;
1922

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

43-
static {
44-
register(PropExprValueOf.class, "[%-*classinfo%] value", "objects");
46+
public static void register(SyntaxRegistry registry, Origin origin) {
47+
registry.register(SyntaxRegistry.EXPRESSION,
48+
PropertyExpression.infoBuilder(PropExprValueOf.class, Object.class, "[%-*classinfo%] value", "objects", false)
49+
.origin(origin)
50+
.supplier(PropExprValueOf::new)
51+
.build());
4552
}
4653

4754
private ClassInfo<?> type;

0 commit comments

Comments
 (0)