// Native Minecraft 1.21.11
package com.xfestudio.mydimensionlord.platform;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.function.Consumer;
import net.minecraft.core.registries.Registries;
import net.minecraft.gametest.framework.*;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.neoforged.neoforge.event.RegisterGameTestsEvent;
public final class PortGameTests {
private static final Class<?>[] SUITES = {
com.xfestudio.mydimensionlord.builder.BuilderGameTests.class,
com.xfestudio.mydimensionlord.builder.BuilderInteractionGameTests.class,
com.xfestudio.mydimensionlord.builder.anchor.ResonantSupplyAnchorGameTests.class,
com.xfestudio.mydimensionlord.builder.AddonIntegrationGameTests.class,
com.xfestudio.mydimensionlord.equipment.EquipmentGameTests.class,
com.xfestudio.mydimensionlord.equipment.PickaxeGameTests.class
};
public static void register(IEventBus bus) {
DeferredRegister<Consumer<GameTestHelper>> functions = DeferredRegister.create(Registries.TEST_FUNCTION, "mydimension_lord");
for (Class<?> suite : SUITES) for (var method : suite.getDeclaredMethods()) {
if (!method.isAnnotationPresent(GameTest.class)) continue;
functions.register(method.getName().toLowerCase(Locale.ROOT), () -> helper -> {
try { method.invoke(null, helper); }
catch (InvocationTargetException e) {
if (e.getCause() instanceof RuntimeException runtime) throw runtime;
if (e.getCause() instanceof Error error) throw error;
throw new RuntimeException(e.getCause());
} catch (ReflectiveOperationException e) { throw new RuntimeException(e); }
});
}
functions.register(bus);
bus.addListener(PortGameTests::registerInstances);
}
private static void registerInstances(RegisterGameTestsEvent event) {
var environment = event.registerEnvironment(id("default"));
for (Class<?> suite : SUITES) for (var method : suite.getDeclaredMethods()) {
GameTest metadata = method.getAnnotation(GameTest.class);
if (metadata == null) continue;
Identifier name = id(method.getName().toLowerCase(Locale.ROOT));
event.registerTest(name, new FunctionGameTestInstance(ResourceKey.create(Registries.TEST_FUNCTION, name),
new TestData<>(environment, id("empty"), metadata.timeoutTicks(), 0, true)));
}
}
private static Identifier id(String path) { return Identifier.fromNamespaceAndPath("mydimension_lord", path); }
}
// Native Minecraft 1.21.11
package com.xfestudio.mydimensionlord.platform;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.function.Consumer;
import net.minecraft.core.registries.Registries;
import net.minecraft.gametest.framework.*;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.neoforged.neoforge.event.RegisterGameTestsEvent;
public final class PortGameTests {
private static final Class<?>[] SUITES = {
com.xfestudio.mydimensionlord.builder.BuilderGameTests.class,
com.xfestudio.mydimensionlord.builder.BuilderInteractionGameTests.class,
com.xfestudio.mydimensionlord.builder.anchor.ResonantSupplyAnchorGameTests.class,
com.xfestudio.mydimensionlord.builder.AddonIntegrationGameTests.class,
com.xfestudio.mydimensionlord.equipment.EquipmentGameTests.class,
com.xfestudio.mydimensionlord.equipment.PickaxeGameTests.class
};
public static void register(IEventBus bus) {
DeferredRegister<Consumer<GameTestHelper>> functions = DeferredRegister.create(Registries.TEST_FUNCTION, "mydimension_lord");
for (Class<?> suite : SUITES) for (var method : suite.getDeclaredMethods()) {
if (!method.isAnnotationPresent(GameTest.class)) continue;
functions.register(method.getName().toLowerCase(Locale.ROOT), () -> helper -> {
try { method.invoke(null, helper); }
catch (InvocationTargetException e) {
if (e.getCause() instanceof RuntimeException runtime) throw runtime;
if (e.getCause() instanceof Error error) throw error;
throw new RuntimeException(e.getCause());
} catch (ReflectiveOperationException e) { throw new RuntimeException(e); }
});
}
functions.register(bus);
bus.addListener(PortGameTests::registerInstances);
}
private static void registerInstances(RegisterGameTestsEvent event) {
var environment = event.registerEnvironment(id("default"));
for (Class<?> suite : SUITES) for (var method : suite.getDeclaredMethods()) {
GameTest metadata = method.getAnnotation(GameTest.class);
if (metadata == null) continue;
Identifier name = id(method.getName().toLowerCase(Locale.ROOT));
event.registerTest(name, new FunctionGameTestInstance(ResourceKey.create(Registries.TEST_FUNCTION, name),
new TestData<>(environment, id("empty"), metadata.timeoutTicks(), 0, true)));
}
}
private static Identifier id(String path) { return Identifier.fromNamespaceAndPath("mydimension_lord", path); }
}