Skip to content

Commit 1b17201

Browse files
committed
Switch between Mirror providers.
1 parent cb6545b commit 1b17201

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

src/main/java/skript.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public static double log(Object object) {
137137
//endregion
138138

139139
//region Generic
140-
public static AtomicVariable get_atomic_literal(Object atomic) { // todo returning atomics
140+
public static AtomicVariable get_atomic_literal(Object atomic) {
141141
if (atomic instanceof AtomicVariable variable) return variable;
142142
else return AtomicVariable.wrap(atomic);
143143
}
@@ -186,27 +186,38 @@ public static MethodAccessor<Object> get_java_method(Object owner, Object name,
186186
else {
187187
arguments = new Class[]{(Class<?>) parameters};
188188
}
189-
return Mirror.of((owner)).useProvider(Skript.LOADER).method(name + "", arguments);
189+
return mirror(owner).method(name + "", arguments);
190190
}
191191

192192
public static MethodAccessor<Object> get_java_method(Object owner, Object name) {
193-
return Mirror.of((owner)).useProvider(Skript.LOADER).method(name + "");
193+
return mirror(owner).method(name + "");
194194
}
195195

196196
public static boolean has_java_field(Object owner, Object name) {
197-
return Mirror.of((owner)).useProvider(Skript.LOADER).field((name) + "") != null;
197+
return mirror(owner).field((name) + "") != null;
198198
}
199199

200200
public static Object get_java_field(Object owner, Object name) {
201-
final FieldAccessor<?> accessor = Mirror.of((owner)).useProvider(Skript.LOADER).field((name) + "");
201+
final FieldAccessor<?> accessor = mirror(owner).field((name) + "");
202202
if (accessor == null) return null;
203203
return accessor.get();
204204
}
205205

206206
public static Void set_java_field(Object owner, Object name, Object value) {
207-
Mirror.of((owner)).useProvider(Skript.LOADER).field((name) + "").set((value));
207+
mirror(owner).field((name) + "").set((value));
208208
return null;
209209
}
210+
211+
private static Mirror<?> mirror(Object owner) {
212+
if (owner == null) return null;
213+
if (owner instanceof Class<?> type) {
214+
if (type.getName().startsWith("skript")) return Mirror.of(type).useProvider(Skript.LOADER);
215+
return Mirror.of(type);
216+
} else {
217+
if (owner.getClass().getName().startsWith("skript")) return Mirror.of(owner).useProvider(Skript.LOADER);
218+
return Mirror.of(owner);
219+
}
220+
}
210221
//endregion
211222

212223
//region Thread Handlers

0 commit comments

Comments
 (0)