Skip to content

Commit 2eaa6e9

Browse files
authored
Move type properties to partial release (SkriptLang#8336)
1 parent 96b8309 commit 2eaa6e9

16 files changed

Lines changed: 123 additions & 85 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,8 @@ public static String formatDate(final long timestamp) {
294294
})
295295
.optional(true);
296296

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

300300
public static final Option<Boolean> allowUnsafePlatforms = new Option<>("allow unsafe platforms", false)
301301
.optional(true);
Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
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-
import org.skriptlang.skript.common.properties.expressions.PropExprScale;
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.*;
89
import org.skriptlang.skript.docs.Origin;
9-
10-
import java.io.IOException;
10+
import org.skriptlang.skript.registration.SyntaxRegistry;
1111

1212
public class PropertiesModule implements AddonModule {
1313

1414
@Override
1515
public void load(SkriptAddon addon) {
16+
SyntaxRegistry registry = addon.syntaxRegistry();
1617
Origin origin = AddonModule.origin(addon, "type properties");
17-
PropExprScale.register(addon, origin);
18+
PropExprScale.register(registry, origin);
19+
if (SkriptConfig.useTypeProperties.value()) { // not using canLoad since this should only gate old properties, not new ones
20+
PropCondContains.register(registry, origin);
21+
PropCondIsEmpty.register(registry, origin);
1822

19-
// fully use type properties for existing syntax
20-
// TODO: use registration API
21-
if (SkriptConfig.useTypeProperties.value()) {
22-
try {
23-
Skript.getAddonInstance().loadClasses("org.skriptlang.skript.common.properties", "expressions", "conditions");
24-
} catch (IOException e) {
25-
throw new RuntimeException(e);
26-
}
23+
PropExprAmount.register(registry, origin);
24+
PropExprCustomName.register(registry, origin);
25+
PropExprName.register(registry, origin);
26+
PropExprNumber.register(registry, origin);
27+
PropExprSize.register(registry, origin);
28+
PropExprValueOf.register(registry, origin);
29+
PropExprWXYZ.register(registry, origin);
2730
}
2831
}
2932
}

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/PropExprScale.java

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

3-
43
import ch.njol.skript.doc.*;
5-
import org.skriptlang.skript.addon.SkriptAddon;
4+
import ch.njol.skript.expressions.base.PropertyExpression;
65
import org.skriptlang.skript.docs.Origin;
76
import org.skriptlang.skript.lang.properties.Property;
87
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
98
import org.skriptlang.skript.lang.properties.handlers.base.ExpressionPropertyHandler;
9+
import org.skriptlang.skript.registration.SyntaxRegistry;
1010

1111
@Name("Scale")
1212
@Description({
@@ -20,8 +20,12 @@
2020
@RelatedProperty("scale")
2121
public class PropExprScale extends PropertyBaseExpression<ExpressionPropertyHandler<?,?>> {
2222

23-
public static void register(SkriptAddon addon, Origin origin) {
24-
register(PropExprScale.class , "scale[s]", "objects");
23+
public static void register(SyntaxRegistry registry, Origin origin) {
24+
registry.register(SyntaxRegistry.EXPRESSION,
25+
PropertyExpression.infoBuilder(PropExprScale.class, Object.class, "scale[s]", "objects", false)
26+
.origin(origin)
27+
.supplier(PropExprScale::new)
28+
.build());
2529
}
2630

2731
@Override

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;

0 commit comments

Comments
 (0)