Add a system property for a custom output directory for gametest structures (#3509)

* Add a check for the output directory in the test command

* Fix style and add a run configuration with the output directory set

* Update fabric-gametest-api-v1/build.gradle

---------

Co-authored-by: modmuss <modmuss50@gmail.com>
(cherry picked from commit a21facc05f)
This commit is contained in:
ErrorCraft 2024-01-11 16:44:46 +01:00 committed by modmuss50
parent bb43a8b9bf
commit 51ad78441b
3 changed files with 57 additions and 0 deletions

View file

@ -2,6 +2,17 @@ version = getSubprojectVersion(project)
loom {
accessWidenerPath = file("src/main/resources/fabric-gametest-api-v1.accesswidener")
runs {
testmodClient {
client()
name = "Testmod Client"
vmArg "-Dfabric-api.gametest.structures.output-dir=${file("src/testmod/resources/data/fabric-gametest-api-v1-testmod/gametest/structures")}"
ideConfigGenerated = false
source sourceSets.testmodClient
}
}
}
moduleDependencies(project, [

View file

@ -0,0 +1,45 @@
/*
* Copyright (c) 2016, 2017, 2018, 2019 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.fabricmc.fabric.mixin.gametest;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import net.minecraft.server.command.TestCommand;
@Mixin(TestCommand.class)
public class TestCommandMixin {
@Unique
private static final String OUTPUT_DIR = System.getProperty("fabric-api.gametest.structures.output-dir");
@ModifyArg(
method = "executeExport(Lnet/minecraft/server/command/ServerCommandSource;Ljava/lang/String;)I",
at = @At(
value = "INVOKE",
target = "Ljava/nio/file/Paths;get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;"
)
)
private static String useCustomOutputDirectory(String first) {
if (OUTPUT_DIR != null) {
return OUTPUT_DIR;
}
return first;
}
}

View file

@ -7,6 +7,7 @@
"CommandManagerMixin",
"MinecraftServerMixin",
"StructureTemplateManagerMixin",
"TestCommandMixin",
"TestFunctionsMixin",
"TestServerMixin"
],