Skip to content

Commit 50a5314

Browse files
committed
cleaning and reorganization
1 parent 1afb977 commit 50a5314

13 files changed

Lines changed: 100 additions & 92 deletions

File tree

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,6 @@ public static ExperimentRegistry experiments() {
372372
return experimentRegistry;
373373
}
374374

375-
376-
private static PropertyRegistry propertyRegistry;
377-
public static PropertyRegistry getPropertyRegistry() {
378-
return propertyRegistry;
379-
}
380-
381375
/**
382376
* @return The folder containing all Scripts.
383377
*/
@@ -506,7 +500,7 @@ public void onEnable() {
506500
experimentRegistry = new ExperimentRegistry(this);
507501
Feature.registerAll(getAddonInstance(), experimentRegistry);
508502

509-
propertyRegistry = new PropertyRegistry(this);
503+
getAddonInstance().storeRegistry(PropertyRegistry.class, new PropertyRegistry(this));
510504
Property.registerDefaultProperties();
511505

512506
// Load classes which are always safe to use

src/main/java/ch/njol/skript/classes/ClassInfo.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import org.jetbrains.annotations.NotNull;
1414
import org.jetbrains.annotations.Nullable;
1515
import org.skriptlang.skript.lang.properties.Property;
16-
import org.skriptlang.skript.lang.properties.PropertyInfo;
16+
import org.skriptlang.skript.lang.properties.PropertyHandler;
1717

1818
import java.util.*;
1919
import java.util.function.Supplier;
@@ -477,13 +477,13 @@ public String toString(final @Nullable Event event, final boolean debug) {
477477
}
478478

479479

480-
private final Map<Property<?>, PropertyInfo<?>> propertyInfos = new HashMap<>();
480+
private final Map<Property<?>, Property.PropertyInfo<?>> propertyInfos = new HashMap<>();
481481

482-
public <Handler extends Property.PropertyHandler<T>> ClassInfo<T> property(Property<? super Handler> property, @NotNull Handler handler) {
482+
public <Handler extends PropertyHandler<T>> ClassInfo<T> property(Property<? super Handler> property, @NotNull Handler handler) {
483483
if (propertyInfos.containsKey(property)) {
484484
throw new IllegalStateException("Property " + property.name() + " is already registered for the " + c.getName() + " type.");
485485
}
486-
propertyInfos.put(property, new PropertyInfo<>(property, handler));
486+
propertyInfos.put(property, new Property.PropertyInfo<>(property, handler));
487487
Classes.CLASS_INFOS_BY_PROPERTY.computeIfAbsent(property, k -> new ArrayList<>()).add(this);
488488
return this;
489489
}
@@ -492,12 +492,12 @@ public boolean hasProperty(Property<?> property) {
492492
return propertyInfos.containsKey(property);
493493
}
494494

495-
public <Handler extends Property.PropertyHandler<?>> @Nullable PropertyInfo<Handler> getPropertyInfo(Property<Handler> property) {
495+
public <Handler extends PropertyHandler<?>> @Nullable Property.PropertyInfo<Handler> getPropertyInfo(Property<Handler> property) {
496496
if (!propertyInfos.containsKey(property)) {
497497
return null;
498498
}
499499
//noinspection unchecked
500-
return (PropertyInfo<Handler>) propertyInfos.get(property);
500+
return (Property.PropertyInfo<Handler>) propertyInfos.get(property);
501501
}
502502

503503

src/main/java/ch/njol/skript/classes/data/BukkitClasses.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@
6363
import org.jetbrains.annotations.NotNull;
6464
import org.jetbrains.annotations.Nullable;
6565
import org.skriptlang.skript.lang.properties.Property;
66-
import org.skriptlang.skript.lang.properties.Property.NameHandler;
66+
import org.skriptlang.skript.lang.properties.PropertyHandler;
67+
import org.skriptlang.skript.lang.properties.PropertyHandler.ContainsHandler;
6768

6869
import java.io.StreamCorruptedException;
6970
import java.util.*;
@@ -584,7 +585,7 @@ public String toVariableNameString(final Inventory i) {
584585
return "inventory of " + Classes.toString(i.getHolder(), StringMode.VARIABLE_NAME);
585586
}
586587
}).changer(DefaultChangers.inventoryChanger)
587-
.property(Property.CONTAINS, new Property.ContainsHandler<Inventory, Object>() {
588+
.property(Property.CONTAINS, new ContainsHandler<Inventory, Object>() {
588589
@Override
589590
public boolean contains(Inventory container, Object element) {
590591
if (element instanceof ItemType type) {
@@ -699,7 +700,7 @@ public String getDebugMessage(final Player p) {
699700
})
700701
.changer(DefaultChangers.playerChanger)
701702
.serializeAs(OfflinePlayer.class)
702-
.property(Property.NAME, new NameHandler<Player, String>() {
703+
.property(Property.NAME, new PropertyHandler.NameHandler<Player, String>() {
703704
@Override
704705
public String name(Player player) {
705706
return player.getName();

src/main/java/ch/njol/skript/classes/data/JavaClasses.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.jetbrains.annotations.Nullable;
2020
import org.joml.Quaternionf;
2121
import org.skriptlang.skript.lang.properties.Property;
22-
import org.skriptlang.skript.lang.properties.Property.ContainsHandler;
22+
import org.skriptlang.skript.lang.properties.PropertyHandler.ContainsHandler;
2323

2424
import java.io.StreamCorruptedException;
2525
import java.util.UUID;

src/main/java/ch/njol/skript/classes/data/SkriptClasses.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
import org.bukkit.inventory.ItemStack;
3232
import org.jetbrains.annotations.NotNull;
3333
import org.jetbrains.annotations.Nullable;
34+
import org.skriptlang.skript.lang.properties.PropertyHandler;
3435
import org.skriptlang.skript.lang.properties.Property;
36+
import org.skriptlang.skript.lang.properties.PropertyHandler.ContainsHandler;
3537
import org.skriptlang.skript.lang.script.Script;
3638
import org.skriptlang.skript.lang.util.SkriptQueue;
3739
import org.skriptlang.skript.util.Executable;
@@ -221,7 +223,7 @@ public String toVariableNameString(final ItemType t) {
221223
})
222224
.cloner(ItemType::clone)
223225
.serializer(new YggdrasilSerializer<>())
224-
.property(Property.NAME, new Property.NameHandler<ItemType, String>() {
226+
.property(Property.NAME, new PropertyHandler.NameHandler<ItemType, String>() {
225227
@Override
226228
public String name(ItemType itemType) {
227229
return itemType.name();
@@ -966,7 +968,7 @@ public String toVariableNameString(DynamicFunctionReference<?> function) {
966968
.usage("")
967969
.examples("{thing}'s name")
968970
.since("2.10")
969-
.property(Property.NAME, new Property.NameHandler<AnyNamed, String>() {
971+
.property(Property.NAME, new PropertyHandler.NameHandler<AnyNamed, String>() {
970972

971973
@Override
972974
public @NotNull Class<String> returnType() {
@@ -1021,7 +1023,7 @@ public void change(AnyNamed named, Object @Nullable [] delta, ChangeMode mode) {
10211023
.usage("")
10221024
.examples("{a} contains {b}")
10231025
.since("2.10")
1024-
.property(Property.CONTAINS, new Property.ContainsHandler<AnyContains, Object>() {
1026+
.property(Property.CONTAINS, new ContainsHandler<AnyContains, Object>() {
10251027
@Override
10261028
public boolean contains(AnyContains anyContains, Object object) {
10271029
return anyContains.checkSafely(object);

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

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

33
import ch.njol.skript.Skript;
44
import ch.njol.skript.lang.Condition;
@@ -12,7 +12,9 @@
1212
import org.jetbrains.annotations.Nullable;
1313
import org.skriptlang.skript.lang.comparator.Comparators;
1414
import org.skriptlang.skript.lang.comparator.Relation;
15-
import org.skriptlang.skript.lang.properties.Property.ContainsHandler;
15+
import org.skriptlang.skript.lang.properties.Property;
16+
import org.skriptlang.skript.lang.properties.PropertyHandler.ContainsHandler;
17+
import org.skriptlang.skript.lang.properties.PropertyUtils;
1618
import org.skriptlang.skript.lang.properties.PropertyUtils.PropertyMap;
1719

1820
public class PropCondContains extends Condition {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
package org.skriptlang.skript.lang.properties;
1+
package org.skriptlang.skript.common.expressions;
22

33
import ch.njol.skript.Skript;
44
import ch.njol.skript.lang.ExpressionType;
55
import org.bukkit.event.Event;
66
import org.jetbrains.annotations.Nullable;
7-
import org.skriptlang.skript.lang.properties.Property.NameHandler;
7+
import org.skriptlang.skript.lang.properties.Property;
8+
import org.skriptlang.skript.lang.properties.PropertyBaseExpression;
9+
import org.skriptlang.skript.lang.properties.PropertyHandler.NameHandler;
810

911
public class PropExprName extends PropertyBaseExpression<NameHandler<?,?>> {
1012

@@ -14,7 +16,7 @@ public class PropExprName extends PropertyBaseExpression<NameHandler<?,?>> {
1416
}
1517

1618
@Override
17-
Property<NameHandler<?, ?>> getProperty() {
19+
public Property<NameHandler<?, ?>> getProperty() {
1820
return Property.NAME;
1921
}
2022

src/main/java/org/skriptlang/skript/lang/properties/Property.java

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33

44
import ch.njol.skript.Skript;
5-
import ch.njol.skript.classes.Changer.ChangeMode;
65
import org.jetbrains.annotations.NotNull;
7-
import org.jetbrains.annotations.Nullable;
86
import org.skriptlang.skript.addon.SkriptAddon;
7+
import org.skriptlang.skript.lang.properties.PropertyHandler.ContainsHandler;
8+
import org.skriptlang.skript.lang.properties.PropertyHandler.NameHandler;
99

1010
import java.util.Locale;
1111

12-
public record Property<Handler extends Property.PropertyHandler<?>>(
12+
public record Property<Handler extends PropertyHandler<?>>(
1313
String name,
1414
SkriptAddon provider,
1515
@NotNull Class<? extends Handler> handler
@@ -47,45 +47,11 @@ public static void registerDefaultProperties() {
4747
// Register default propertyRegistry here
4848
// Example: PropertyRegistry.getInstance().register(new Property("example", SkriptAddon.getInstance(), ExampleExpression.class));
4949
// This method can be called during addon initialization to ensure default propertyRegistry are registered.
50-
PropertyRegistry propertyRegistry = Skript.getPropertyRegistry();
50+
PropertyRegistry propertyRegistry = Skript.getAddonInstance().registry(PropertyRegistry.class);
5151
propertyRegistry.register(NAME);
5252
propertyRegistry.register(CONTAINS);
5353
}
5454

55-
@SuppressWarnings("unused")
56-
public interface PropertyHandler<Type> {}
57-
58-
public interface ExpressionPropertyHandler<Type, ReturnType> extends PropertyHandler<Type> {
59-
// Handler for the NAME property
60-
default Class<?> @Nullable [] acceptChange(ChangeMode mode) {
61-
return null;
62-
}
63-
default void change(Type named, Object @Nullable [] delta, ChangeMode mode) {
64-
throw new UnsupportedOperationException("Changing the name is not supported for this property.");
65-
}
66-
@NotNull Class<ReturnType> returnType();
67-
}
68-
69-
/**
70-
* no returning arrays
71-
* @param <Named>
72-
* @param <Name>
73-
*/
74-
public interface NameHandler<Named, Name> extends ExpressionPropertyHandler<Named, Name> {
75-
Name name(Named named);
55+
public record PropertyInfo<Handler extends PropertyHandler<?>>(Property<Handler> property, Handler handler) {
7656
}
77-
78-
public interface ContainsHandler<Container, Element> extends PropertyHandler<Container> {
79-
boolean contains(Container container, Element element);
80-
Class<? extends Element>[] elementTypes();
81-
default boolean canContain(Class<?> type) {
82-
for (Class<? extends Element> elementType : elementTypes()) {
83-
if (elementType.isAssignableFrom(type)) {
84-
return true;
85-
}
86-
}
87-
return false;
88-
}
89-
}
90-
9157
}

src/main/java/org/skriptlang/skript/lang/properties/PropertyBaseExpression.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,13 @@
1313
import org.bukkit.event.Event;
1414
import org.jetbrains.annotations.NotNull;
1515
import org.jetbrains.annotations.Nullable;
16-
import org.skriptlang.skript.lang.properties.Property.ExpressionPropertyHandler;
1716
import org.skriptlang.skript.lang.properties.PropertyUtils.PropertyMap;
1817

1918
import java.lang.reflect.Array;
2019
import java.util.*;
2120
import java.util.function.Function;
2221

23-
public abstract class PropertyBaseExpression<Handler extends ExpressionPropertyHandler<?,?>> extends SimpleExpression<Object> {
24-
25-
abstract Property<Handler> getProperty();
22+
public abstract class PropertyBaseExpression<Handler extends PropertyHandler.ExpressionPropertyHandler<?,?>> extends SimpleExpression<Object> {
2623

2724
protected static void register(Class<? extends PropertyBaseExpression<?>> expressionClass, String property) {
2825
Skript.registerExpression(expressionClass, Object.class, ExpressionType.PROPERTY, PropertyExpression.getPatterns(property, "objects"));
@@ -34,6 +31,9 @@ protected static void register(Class<? extends PropertyBaseExpression<?>> expres
3431
private Class<?> returnType;
3532
private final Property<Handler> property = getProperty();
3633

34+
35+
public abstract Property<Handler> getProperty();
36+
3737
@Override
3838
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, ParseResult parseResult) {
3939
this.expr = PropertyUtils.asProperty(property, expressions[0]);
@@ -81,7 +81,7 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean is
8181
@Override
8282
public Class<?> @Nullable [] acceptChange(ChangeMode mode) {
8383
Set<Class<?>> allowedChangeTypes = new HashSet<>();
84-
for (PropertyInfo<Handler> propertyInfo : properties.values()) {
84+
for (Property.PropertyInfo<Handler> propertyInfo : properties.values()) {
8585
Class<?>[] types = propertyInfo.handler().acceptChange(mode);
8686
changeDetails.storeTypes(mode, propertyInfo, types);
8787
if (types != null) {
@@ -101,19 +101,19 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean is
101101

102102
private final ChangeDetails changeDetails = new ChangeDetails();
103103

104-
class ChangeDetails extends EnumMap<ChangeMode, Map<PropertyInfo<Handler>, Class<?>[]>> {
104+
class ChangeDetails extends EnumMap<ChangeMode, Map<Property.PropertyInfo<Handler>, Class<?>[]>> {
105105

106106
public ChangeDetails() {
107107
super(ChangeMode.class);
108108
}
109109

110-
public void storeTypes(ChangeMode mode, PropertyInfo<Handler> propertyInfo, Class<?>[] types) {
111-
Map<PropertyInfo<Handler>, Class<?>[]> map = computeIfAbsent(mode, k -> new HashMap<>());
110+
public void storeTypes(ChangeMode mode, Property.PropertyInfo<Handler> propertyInfo, Class<?>[] types) {
111+
Map<Property.PropertyInfo<Handler>, Class<?>[]> map = computeIfAbsent(mode, k -> new HashMap<>());
112112
map.put(propertyInfo, types);
113113
}
114114

115-
public Class<?>[] getTypes(ChangeMode mode, PropertyInfo<Handler> propertyInfo) {
116-
Map<PropertyInfo<Handler>, Class<?>[]> map = get(mode);
115+
public Class<?>[] getTypes(ChangeMode mode, Property.PropertyInfo<Handler> propertyInfo) {
116+
Map<Property.PropertyInfo<Handler>, Class<?>[]> map = get(mode);
117117
if (map != null) {
118118
return map.get(propertyInfo);
119119
}
@@ -130,7 +130,7 @@ public Class<?>[] getTypes(ChangeMode mode, PropertyInfo<Handler> propertyInfo)
130130
@Override
131131
public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
132132
for (Object propertyHaver : expr.getArray(event)) {
133-
PropertyInfo<Handler> propertyInfo = properties.get(propertyHaver.getClass());
133+
Property.PropertyInfo<Handler> propertyInfo = properties.get(propertyHaver.getClass());
134134
if (propertyInfo == null) {
135135
continue; // no property info found, skip
136136
}
@@ -151,7 +151,7 @@ public void change(Event event, Object @Nullable [] delta, ChangeMode mode) {
151151
|| (delta != null && allowedType.isInstance(delta[0]))) {
152152
// if the propertyHaver is allowed, change
153153
@SuppressWarnings("unchecked")
154-
var handler = (ExpressionPropertyHandler<Object, ?>) propertyInfo.handler();
154+
var handler = (PropertyHandler.ExpressionPropertyHandler<Object, ?>) propertyInfo.handler();
155155
handler.change(propertyHaver, delta, mode);
156156
}
157157
// if allowed type is singular, take delta[0]
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.skriptlang.skript.lang.properties;
2+
3+
import ch.njol.skript.classes.Changer;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.jetbrains.annotations.Nullable;
6+
7+
@SuppressWarnings("unused")
8+
public interface PropertyHandler<Type> {
9+
interface ContainsHandler<Container, Element> extends PropertyHandler<Container> {
10+
boolean contains(Container container, Element element);
11+
12+
Class<? extends Element>[] elementTypes();
13+
14+
default boolean canContain(Class<?> type) {
15+
for (Class<? extends Element> elementType : elementTypes()) {
16+
if (elementType.isAssignableFrom(type)) {
17+
return true;
18+
}
19+
}
20+
return false;
21+
}
22+
}
23+
24+
interface ExpressionPropertyHandler<Type, ReturnType> extends PropertyHandler<Type> {
25+
// Handler for the NAME property
26+
default Class<?> @Nullable [] acceptChange(Changer.ChangeMode mode) {
27+
return null;
28+
}
29+
30+
default void change(Type named, Object @Nullable [] delta, Changer.ChangeMode mode) {
31+
throw new UnsupportedOperationException("Changing the name is not supported for this property.");
32+
}
33+
34+
@NotNull Class<ReturnType> returnType();
35+
}
36+
37+
/**
38+
* no returning arrays
39+
*
40+
* @param <Named>
41+
* @param <Name>
42+
*/
43+
interface NameHandler<Named, Name> extends ExpressionPropertyHandler<Named, Name> {
44+
Name name(Named named);
45+
}
46+
}

0 commit comments

Comments
 (0)