Skip to content

Commit

Permalink
Added tests for 2.6.4, 2.7.3 and 2.8.7, added many methods Compatibil…
Browse files Browse the repository at this point in the history
…ityUtils and expanded the various skript adapters to make Lusk work on those versions, replaced methods accordingly.
  • Loading branch information
JakeGBLP committed Jan 26, 2025
1 parent 212c04b commit c4cf4e9
Show file tree
Hide file tree
Showing 42 changed files with 533 additions and 110 deletions.
13 changes: 11 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ compileJava {
options.encoding = "UTF-8"
}

version = "1.3.3-beta1"
version = "1.3.3"

def java16 = 16
def java17 = 17
Expand Down Expand Up @@ -144,14 +144,23 @@ void createTestTask(String name, String desc, String environments, int javaVersi
}

String environments = 'src/test/environments/'
createTestTask('luskTest_1_16_5_skript_2_6_4', 'Runs tests on Paper 1.16.5 and with Skript 2.6.4.', environments + 'paper-1.16.5_skript-2.6.4.json', java16, -1)
createTestTask('luskTest_1_16_5_skript_2_7_3', 'Runs tests on Paper 1.16.5 and with Skript 2.7.3.', environments + 'paper-1.16.5_skript-2.7.3.json', java16, -1)
createTestTask('luskTest_1_16_5_skript_2_8_7', 'Runs tests on Paper 1.16.5 and with Skript 2.8.7.', environments + 'paper-1.16.5_skript-2.8.7.json', java16, -1)

createTestTask('luskTest_1_16_5', 'Runs tests on Paper 1.16.5.', environments + 'paper-1.16.5.json', java16, -1)
createTestTask('luskTest_1_17_1', 'Runs tests on Paper 1.17.1.', environments + 'paper-1.17.1.json', java17, -1)
createTestTask('luskTest_1_18_2', 'Runs tests on Paper 1.18.2.', environments + 'paper-1.18.2.json', java17, -1)
createTestTask('luskTest_1_19_4', 'Runs tests on Paper 1.19.4.', environments + 'paper-1.19.4.json', java17, -1)
createTestTask('luskTest_1_20_6', 'Runs tests on Paper 1.20.6.', environments + 'paper-1.20.6.json', java21, -1)
createTestTask('luskTest_1_21_4', 'Runs tests on Paper 1.21.4.', environments + 'paper-1.21.4.json', java21, -1)

tasks.register("luskTestOlderSkriptVersions") {
description = 'Runs tests on older skript versions.'
dependsOn luskTest_1_16_5_skript_2_6_4, luskTest_1_16_5_skript_2_7_3, luskTest_1_16_5_skript_2_8_7
}

tasks.register('luskTest') {
description = 'Runs tests on all environments.'
dependsOn luskTest_1_16_5, luskTest_1_17_1, luskTest_1_18_2, luskTest_1_19_4, luskTest_1_20_6, luskTest_1_21_4
dependsOn luskTestOlderSkriptVersions, luskTest_1_16_5, luskTest_1_17_1, luskTest_1_18_2, luskTest_1_19_4, luskTest_1_20_6, luskTest_1_21_4
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,35 @@
import ch.njol.skript.lang.Expression;
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Timespan;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.api.SkriptAdapter;
import org.bukkit.event.Event;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converter;
import org.skriptlang.skript.lang.converter.Converters;

import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;

public class Skript_2_10_0 implements SkriptAdapter {

@Override
public boolean exactComparatorExists(Class<?> firstType, Class<?> secondType) {
return Comparators.exactComparatorExists(firstType, secondType);
}

@Override
public <T1, T2> void registerComparator(Class<T1> firstType, Class<T2> secondType, BiFunction<T1, T2, GenericRelation> comparator) {
Comparators.registerComparator(firstType, secondType, (o1, o2) -> Relation.valueOf(comparator.apply(o1, o2).toString()));
}

@Override
public <From, To> To[] convertUnsafe(From[] from, Class<?> toType, Function<? super From, ? extends To> converter) {
return Converters.convertUnsafe(from, toType, (Converter<From, To>) converter::apply);
}

@Override
public <F, T> void registerConverter(Class<F> from, Class<T> to, Function<F, T> converter) {
Converters.registerConverter(from, to, converter::apply);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,51 @@
package it.jakegblp.lusk.version.skript.v2_6_4;

import ch.njol.skript.classes.Comparator;
import ch.njol.skript.classes.Converter;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.registrations.Comparators;
import ch.njol.skript.registrations.Converters;
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Getter;
import ch.njol.skript.util.Timespan;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.api.SkriptAdapter;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;

public class Skript_2_6_4 implements SkriptAdapter {

@Override
public boolean exactComparatorExists(Class<?> firstType, Class<?> secondType) {
// This is not exact, but there doesn't seem to be a better way.
return Comparators.getComparator(firstType, secondType) != null;
}

@Override
public <T1, T2> void registerComparator(Class<T1> firstType, Class<T2> secondType, BiFunction<T1, T2, GenericRelation> comparator) {
Comparators.registerComparator(firstType, secondType, new Comparator<>() {
@Override
public @NotNull Relation compare(T1 o1, T2 o2) {
return Relation.valueOf(comparator.apply(o1, o2).toString());
}

@Override
public boolean supportsOrdering() {
return true;
}
});
}

@Override
public <From, To> To[] convertUnsafe(From[] from, Class<?> toType, Function<? super From, ? extends To> converter) {
return Converters.convertUnsafe(from, toType, (Converter<From, To>) converter::apply);
}

@Override
public <F, T> void registerConverter(Class<F> from, Class<T> to, Function<F, T> converter) {
Converters.registerConverter(from, to, converter::apply);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,54 @@
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Getter;
import ch.njol.skript.util.Timespan;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.api.SkriptAdapter;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.comparator.ComparatorInfo;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converter;
import org.skriptlang.skript.lang.converter.Converters;

import java.lang.reflect.Field;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;

public class Skript_2_7_3 implements SkriptAdapter {

@Override
@SuppressWarnings("unchecked")
public boolean exactComparatorExists(Class<?> firstType, Class<?> secondType) {
List<ComparatorInfo<?, ?>> comparatorInfoList = null;
try {
Field privateStaticField = Comparators.class.getDeclaredField("COMPARATORS");
privateStaticField.setAccessible(true);
comparatorInfoList = (List<ComparatorInfo<?, ?>>) privateStaticField.get(null);
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
// This is not exact, but there doesn't seem to be a better way.
if (comparatorInfoList != null) {
for (ComparatorInfo<?, ?> comparatorInfo : comparatorInfoList) {
if (comparatorInfo.getFirstType() == firstType && comparatorInfo.getSecondType() == secondType) {
return true;
}
}
}
return false;
}

@Override
public <T1, T2> void registerComparator(Class<T1> firstType, Class<T2> secondType, BiFunction<T1, T2, GenericRelation> comparator) {
Comparators.registerComparator(firstType, secondType, (o1, o2) -> Relation.valueOf(comparator.apply(o1, o2).toString()));
}

@Override
public <From, To> To[] convertUnsafe(From[] from, Class<?> toType, Function<? super From, ? extends To> converter) {
return Converters.convertUnsafe(from, toType, (Converter<From, To>) converter::apply);
}

@Override
public <F, T> void registerConverter(Class<F> from, Class<T> to, Function<F, T> converter) {
Converters.registerConverter(from, to, converter::apply);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,36 @@
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Getter;
import ch.njol.skript.util.Timespan;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.api.SkriptAdapter;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converter;
import org.skriptlang.skript.lang.converter.Converters;

import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;

public class Skript_2_8_7 implements SkriptAdapter {

@Override
public boolean exactComparatorExists(Class<?> firstType, Class<?> secondType) {
return false;
}

@Override
public <T1, T2> void registerComparator(Class<T1> firstType, Class<T2> secondType, BiFunction<T1, T2, GenericRelation> comparator) {
Comparators.registerComparator(firstType, secondType, (o1, o2) -> Relation.valueOf(comparator.apply(o1, o2).toString()));
}

@Override
public <From, To> To[] convertUnsafe(From[] from, Class<?> toType, Function<? super From, ? extends To> converter) {
return Converters.convertUnsafe(from, toType, (Converter<From, To>) converter::apply);
}

@Override
public <F, T> void registerConverter(Class<F> from, Class<T> to, Function<F, T> converter) {
Converters.registerConverter(from, to, converter::apply);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,36 @@
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Getter;
import ch.njol.skript.util.Timespan;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.api.SkriptAdapter;
import org.bukkit.event.Event;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converter;
import org.skriptlang.skript.lang.converter.Converters;

import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;

public class Skript_2_9_5 implements SkriptAdapter {

@Override
public boolean exactComparatorExists(Class<?> firstType, Class<?> secondType) {
return Comparators.exactComparatorExists(firstType, secondType);
}

@Override
public <T1, T2> void registerComparator(Class<T1> firstType, Class<T2> secondType, BiFunction<T1, T2, GenericRelation> comparator) {
Comparators.registerComparator(firstType, secondType, (o1, o2) -> Relation.valueOf(comparator.apply(o1, o2).toString()));
}

@Override
public <From, To> To[] convertUnsafe(From[] from, Class<?> toType, Function<? super From, ? extends To> converter) {
return Converters.convertUnsafe(from, toType, (Converter<From, To>) converter::apply);
}

@Override
public <F, T> void registerConverter(Class<F> from, Class<T> to, Function<F, T> converter) {
Converters.registerConverter(from, to, converter::apply);
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/it/jakegblp/lusk/api/skript/EnumWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import ch.njol.skript.classes.Parser;
import ch.njol.skript.lang.ParseContext;
import ch.njol.util.StringUtils;
import it.jakegblp.lusk.api.GenericRelation;
import it.jakegblp.lusk.utils.CompatibilityUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;

import java.util.*;

Expand Down Expand Up @@ -129,8 +129,8 @@ public ClassInfo<E> getClassInfoWithoutUsage(String codeName) {
}

private void registerComparator(Class<E> c) {
if (Comparators.exactComparatorExists(c, c)) return;
Comparators.registerComparator(c, c, (o1, o2) -> Relation.get(o1.equals(o2)));
if (CompatibilityUtils.exactComparatorExists(c, c)) return;
CompatibilityUtils.registerComparator(c, c, (o1, o2) -> GenericRelation.get(o1.equals(o2)));
}

}
Loading

0 comments on commit c4cf4e9

Please sign in to comment.