Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '1.11-SNAPSHOT'
id 'net.fabricmc.fabric-loom-remap' version '1.14-SNAPSHOT'
id 'maven-publish'
}

Expand Down Expand Up @@ -34,7 +34,7 @@ tasks.named('runGameTest', JavaExec).configure {
dependencies {
//to change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
mappings loom.officialMojangMappings()
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation "carpet:fabric-carpet:${project.minecraft_version}-${project.carpet_core_version}"

Expand Down
15 changes: 9 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
org.gradle.jvmargs=-Xmx1G
org.gradle.parallel=true

# IntelliJ IDEA is not yet fully compatible with configuration cache, see: https://github.com/FabricMC/fabric-loom/issues/1349
org.gradle.configuration-cache=false

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21.9
yarn_mappings=1.21.9+build.1
loader_version=0.17.2
minecraft_version=1.21.11
loader_version=0.18.2

# check available versions on maven (https://masa.dy.fi/maven/carpet/fabric-carpet/) for the given minecraft version you are using
carpet_core_version=1.4.185+v250930
carpet_core_version=1.4.193+v251211
# for gametests
fabric_api_version=0.134.0+1.21.9
fabric_api_version=0.139.5+1.21.11

# Mod Properties
mod_version = 1.4.177
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
13 changes: 6 additions & 7 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 23 additions & 23 deletions src/gametest/java/carpetextra/machinery/DynamicTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
import java.util.Locale;
import java.util.function.Consumer;

import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.test.FunctionTestInstance;
import net.minecraft.test.TestContext;
import net.minecraft.test.TestData;
import net.minecraft.test.TestEnvironmentDefinition;
import net.minecraft.test.TestInstance;
import net.minecraft.util.BlockRotation;
import net.minecraft.util.Identifier;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.gametest.framework.FunctionGameTestInstance;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.gametest.framework.GameTestInstance;
import net.minecraft.gametest.framework.TestData;
import net.minecraft.gametest.framework.TestEnvironmentDefinition;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.block.Rotation;

// slightly extended TestData
public record DynamicTest(
Expand All @@ -23,37 +23,37 @@ public record DynamicTest(
int maxTicks,
int setupTicks,
boolean required,
BlockRotation rotation,
Rotation rotation,
boolean manualOnly,
int maxAttempts,
int requiredSuccesses,
boolean skyAccess,
Consumer<TestContext> testFunction
Consumer<GameTestHelper> testFunction
) {

public DynamicTest(String environment, String name, String structure, int maxTicks, int setupTicks, boolean required, BlockRotation rotation, Consumer<TestContext> runner) {
public DynamicTest(String environment, String name, String structure, int maxTicks, int setupTicks, boolean required, Rotation rotation, Consumer<GameTestHelper> runner) {
this(environment, name, structure, maxTicks, setupTicks, required, rotation, false, 1, 1, false, runner);
}

public DynamicTest(String environment, String name, String structure, int maxTicks, int setupTicks, boolean required, Consumer<TestContext> runner) {
this(environment, name, structure, maxTicks, setupTicks, required, BlockRotation.NONE, runner);
public DynamicTest(String environment, String name, String structure, int maxTicks, int setupTicks, boolean required, Consumer<GameTestHelper> runner) {
this(environment, name, structure, maxTicks, setupTicks, required, Rotation.NONE, runner);
}

// adapted from TestAnnotationLocator.TestMethod
public TestInstance testInstance(Registry<TestEnvironmentDefinition> envRegistry) {
return new FunctionTestInstance(
RegistryKey.of(RegistryKeys.TEST_FUNCTION, identifier()),
public GameTestInstance testInstance(Registry<TestEnvironmentDefinition> envRegistry) {
return new FunctionGameTestInstance(
ResourceKey.create(Registries.TEST_FUNCTION, identifier()),
testData(envRegistry)
);
}

TestData<RegistryEntry<TestEnvironmentDefinition>> testData(Registry<TestEnvironmentDefinition> testEnvironmentDefinitionRegistry) {
TestData<Holder<TestEnvironmentDefinition>> testData(Registry<TestEnvironmentDefinition> testEnvironmentDefinitionRegistry) {
DynamicTest gameTest = this;
RegistryEntry<TestEnvironmentDefinition> testEnvironment = testEnvironmentDefinitionRegistry.getOrThrow(RegistryKey.of(RegistryKeys.TEST_ENVIRONMENT, Identifier.of(gameTest.environment())));
Holder<TestEnvironmentDefinition> testEnvironment = testEnvironmentDefinitionRegistry.getOrThrow(ResourceKey.create(Registries.TEST_ENVIRONMENT, Identifier.parse(gameTest.environment())));

return new TestData<>(
testEnvironment,
Identifier.of(gameTest.structure()),
Identifier.parse(gameTest.structure()),
gameTest.maxTicks(),
gameTest.setupTicks(),
gameTest.required(),
Expand All @@ -70,7 +70,7 @@ private static String camelToSnake(String input) {
}

public Identifier identifier() {
return Identifier.of("carpet-extra-gametest", camelToSnake(name));
return Identifier.fromNamespaceAndPath("carpet-extra-gametest", camelToSnake(name));
}

}
20 changes: 10 additions & 10 deletions src/gametest/java/carpetextra/machinery/TestEnvDefinitions.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import carpet.CarpetServer;
import carpet.api.settings.InvalidRuleValueException;
import carpet.api.settings.RuleHelper;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.test.TestEnvironmentDefinition;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.gametest.framework.TestEnvironmentDefinition;
import net.minecraft.server.level.ServerLevel;

class TestEnvDefinitions {
public static void runRegistration() {
Registry.register(Registries.TEST_ENVIRONMENT_DEFINITION_TYPE, "carpet:rule", CarpetRule.CODEC);
Registry.register(BuiltInRegistries.TEST_ENVIRONMENT_DEFINITION_TYPE, "carpet:rule", CarpetRule.CODEC);
}

public record CarpetRule(String key, String value) implements TestEnvironmentDefinition {
Expand All @@ -24,21 +24,21 @@ public record CarpetRule(String key, String value) implements TestEnvironmentDef
).apply(i, CarpetRule::new));

@Override
public void setup(ServerWorld world) {
public void setup(ServerLevel world) {
try {
CarpetServer.settingsManager.getCarpetRule(key).set(world.getServer().getCommandSource(), value);
CarpetServer.settingsManager.getCarpetRule(key).set(world.getServer().createCommandSourceStack(), value);
} catch (InvalidRuleValueException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public MapCodec<? extends TestEnvironmentDefinition> getCodec() {
public MapCodec<? extends TestEnvironmentDefinition> codec() {
return CODEC;
}
@Override
public void teardown(ServerWorld world) {
RuleHelper.resetToDefault(CarpetServer.settingsManager.getCarpetRule(key), world.getServer().getCommandSource());
public void teardown(ServerLevel world) {
RuleHelper.resetToDefault(CarpetServer.settingsManager.getCarpetRule(key), world.getServer().createCommandSourceStack());
}
}
}
4 changes: 2 additions & 2 deletions src/gametest/java/carpetextra/machinery/TestMachinery.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
import java.nio.file.Path;

import net.fabricmc.api.ModInitializer;
import net.minecraft.test.TestInstanceUtil;
import net.minecraft.gametest.framework.StructureUtils;

public class TestMachinery implements ModInitializer {
@Override
public void onInitialize() {
TestInstanceUtil.testStructuresDirectoryName = Path.of("../src/gametest/resources/data/carpet-extra/gametest/structure");
StructureUtils.testStructuresDir = Path.of("../src/gametest/resources/data/carpet-extra/gametest/structure");
TestEnvDefinitions.runRegistration();
TestProviderRunner.onInitialize();
}
Expand Down
14 changes: 7 additions & 7 deletions src/gametest/java/carpetextra/machinery/TestProviderRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import net.fabricmc.fabric.api.gametest.v1.CustomTestMethodInvoker;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.test.TestEnvironmentDefinition;
import net.minecraft.test.TestInstance;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.gametest.framework.GameTestInstance;
import net.minecraft.gametest.framework.TestEnvironmentDefinition;

// note: adapted from Fabric API implementation
public class TestProviderRunner {
Expand Down Expand Up @@ -44,14 +44,14 @@ public static void onInitialize() {
}

for (DynamicTest test : generated) {
Registry.register(Registries.TEST_FUNCTION, test.identifier(), test.testFunction());
Registry.register(BuiltInRegistries.TEST_FUNCTION, test.identifier(), test.testFunction());
}

}

public static void registerDynamicEntries(Registry<TestInstance> testInstances, Registry<TestEnvironmentDefinition> envRegistry) {
public static void registerDynamicEntries(Registry<GameTestInstance> testInstances, Registry<TestEnvironmentDefinition> envRegistry) {
for (DynamicTest test : generated) {
TestInstance testInstance = test.testInstance(envRegistry);
GameTestInstance testInstance = test.testInstance(envRegistry);
Registry.register(testInstances, test.identifier(), testInstance);
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/gametest/java/carpetextra/mixin/FabricGametestMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@

import carpetextra.machinery.TestProviderRunner;
import net.fabricmc.fabric.impl.gametest.FabricGameTestModInitializer;
import net.minecraft.registry.Registry;
import net.minecraft.test.TestEnvironmentDefinition;
import net.minecraft.test.TestInstance;
import net.minecraft.core.Registry;
import net.minecraft.gametest.framework.GameTestInstance;
import net.minecraft.gametest.framework.TestEnvironmentDefinition;

@Mixin(value = FabricGameTestModInitializer.class, remap = false)
class FabricGametestMixin {
@Inject(method = "registerDynamicEntries", at = @At("TAIL"))
private static void addOursToo(CallbackInfo ci,
@Local(name="testInstances") Registry<TestInstance> testInstances,
@Local(name="testInstances") Registry<GameTestInstance> testInstances,
@Local(name="testEnvironmentDefinitionRegistry") Registry<TestEnvironmentDefinition> envRegistry) {
TestProviderRunner.registerDynamicEntries(testInstances, envRegistry);
}
Expand Down
Loading