diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4b24385..c428712 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,32 +1,2 @@ -image: gradle:jdk17 - -variables: - GRADLE_OPTS: "-Dorg.gradle.daemon=false" - -before_script: - - export GRADLE_USER_HOME=`pwd`/.gradle - -stages: - - build - - deploy - -build_test: - stage: build - script: - - gradle --build-cache build - - cp build/libs/* ./ - - mv *-dev.jar dev.zip - - mv *.jar latest.jar - - mv dev.zip latest-dev.jar - artifacts: - paths: - - build/libs - - latest.jar - - latest-dev.jar - -deploy: - rules: - - if: $CI_COMMIT_TAG && '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^master/' - stage: deploy - script: - - gradle --build-cache build curseforge modrinth +include: + - remote: 'https://jfmods.gitlab.io/scripts/jfmod.yml' diff --git a/build.gradle b/build.gradle index e407b9d..31b20cc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,22 +1,6 @@ -apply from: "https://gitlab.com/-/snippets/2121059/raw/master/jfbase.gradle" - -repositories { - maven { - name = 'TerraformersMC' - url = 'https://maven.terraformersmc.com/' - } - maven { - url "https://gitlab.com/api/v4/projects/25805200/packages/maven" - } -} +apply from: "https://jfmods.gitlab.io/scripts/jfmod.gradle" dependencies { - //to change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.minecraft_version}+${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" include modImplementation("io.gitlab.jfronny.libjf:libjf-web-v0:${project.jfapi_version}") @@ -24,5 +8,5 @@ dependencies { include("io.gitlab.jfronny.libjf:libjf-unsafe-v0:${project.jfapi_version}") include("io.gitlab.jfronny.libjf:libjf-base:${project.jfapi_version}") - modImplementation "com.terraformersmc:modmenu:2.0.7" + modImplementation "com.terraformersmc:modmenu:3.0.0" } diff --git a/gradle.properties b/gradle.properties index b4b9eb0..6fb89e7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,20 +2,17 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/versions.html -minecraft_version=1.17.1 -yarn_mappings=build.63 -loader_version=0.12.5 +minecraft_version=1.18 +yarn_mappings=build.1 +loader_version=0.12.6 # Mod Properties -mod_version=1.1.2 maven_group=io.gitlab.jfronny archives_base_name=dynres #Dependencies -fabric_version=0.42.1+1.17 -jfapi_version=2.1.3-406390708 +fabric_version=0.43.1+1.18 +jfapi_version=2.2.0 modrinth_id=v3lfX2LD -modrinth_required_dependencies=dOW0jmMj -modrinth_optional_dependencies=wRE7Emzz +modrinth_optional_dependencies=JPP6w2U1 curseforge_id=407012 -curseforge_required_dependencies=libjf curseforge_optional_dependencies=modmenu diff --git a/src/main/java/io/gitlab/jfronny/dynres/DynRes.java b/src/main/java/io/gitlab/jfronny/dynres/DynRes.java index 9243450..14d318c 100644 --- a/src/main/java/io/gitlab/jfronny/dynres/DynRes.java +++ b/src/main/java/io/gitlab/jfronny/dynres/DynRes.java @@ -4,30 +4,32 @@ import io.gitlab.jfronny.libjf.web.api.WebInit; import io.gitlab.jfronny.libjf.web.api.WebServer; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.impl.gui.FabricGuiEntry; import org.apache.logging.log4j.LogManager; -import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; public class DynRes implements WebInit { public static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger("DynRes"); - public static File resFile; + public static Path resFile; public static String resourceLink = ""; static { - resFile = new File(FabricLoader.getInstance().getGameDir().toFile(), Cfg.resourcesFile); - if (!resFile.isFile()) { - FabricGuiEntry.displayCriticalError(new FileNotFoundException("The file " + resFile + " does not exist in the game directory but is required"), true); + resFile = FabricLoader.getInstance().getGameDir().resolve(Cfg.resourcesFile); + if (!Files.exists(resFile)) { + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER) { + LOGGER.error("The resource file specified in your config could not be found. YOU MUST SPECIFY A RESOURCE PACK FOR IT TO BE SERVED!", new Exception("File not found")); + } + resFile = null; } } @Override public void register(WebServer api) { - if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER) { + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.SERVER && resFile != null) { try { - resourceLink = api.registerFile("/resources.zip", resFile.toPath(), !Cfg.hashResources); + resourceLink = api.registerFile("/resources.zip", resFile, !Cfg.hashResources); LOGGER.info("Initialized DynRes at " + resourceLink); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/io/gitlab/jfronny/dynres/ServerPropertiesHandlerExt.java b/src/main/java/io/gitlab/jfronny/dynres/ServerPropertiesHandlerExt.java deleted file mode 100644 index a751cb8..0000000 --- a/src/main/java/io/gitlab/jfronny/dynres/ServerPropertiesHandlerExt.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.gitlab.jfronny.dynres; - -public interface ServerPropertiesHandlerExt { - void applyChanges(boolean print); -} diff --git a/src/main/java/io/gitlab/jfronny/dynres/mixin/ServerPropertiesHandlerMixin.java b/src/main/java/io/gitlab/jfronny/dynres/mixin/ServerPropertiesHandlerMixin.java index a434fe5..92ea93d 100644 --- a/src/main/java/io/gitlab/jfronny/dynres/mixin/ServerPropertiesHandlerMixin.java +++ b/src/main/java/io/gitlab/jfronny/dynres/mixin/ServerPropertiesHandlerMixin.java @@ -2,9 +2,7 @@ package io.gitlab.jfronny.dynres.mixin; import io.gitlab.jfronny.dynres.Cfg; import io.gitlab.jfronny.dynres.DynRes; -import io.gitlab.jfronny.dynres.ServerPropertiesHandlerExt; import io.gitlab.jfronny.libjf.web.api.WebServer; -import io.gitlab.jfronny.libjf.web.impl.JfWeb; import io.gitlab.jfronny.libjf.web.impl.util.WebPaths; import net.minecraft.server.dedicated.ServerPropertiesHandler; import org.apache.commons.codec.digest.DigestUtils; @@ -16,37 +14,31 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; @Mixin(ServerPropertiesHandler.class) -public class ServerPropertiesHandlerMixin implements ServerPropertiesHandlerExt { +public class ServerPropertiesHandlerMixin { @Mutable @Final @Shadow public String resourcePackHash; @Mutable @Final @Shadow public String resourcePackSha1; @Mutable @Final @Shadow public String resourcePack; @Inject(at = @At("RETURN"), method = "(Ljava/util/Properties;)V") public void init(CallbackInfo info) { - applyChanges(true); - } - - @Override - public void applyChanges(boolean print) { - resourcePack = WebPaths.concat(WebServer.getInstance().getServerRoot(), "resources.zip"); - if (print) + if (DynRes.resFile != null) { + resourcePack = WebPaths.concat(WebServer.getInstance().getServerRoot(), "resources.zip"); DynRes.LOGGER.info("Pack link: " + resourcePack); - resourcePackSha1 = ""; - if (Cfg.hashResources) { - try { - FileInputStream fs = new FileInputStream(DynRes.resFile); - resourcePackSha1 = DigestUtils.sha1Hex(fs); - if (print) + resourcePackSha1 = ""; + if (Cfg.hashResources) { + try (InputStream fs = Files.newInputStream(DynRes.resFile)) { + resourcePackSha1 = DigestUtils.sha1Hex(fs); DynRes.LOGGER.info("Set hash to " + resourcePackSha1); - fs.close(); - } catch (IOException e) { - DynRes.LOGGER.error("Failed to get hash, continuing with empty", e); + } catch (IOException e) { + DynRes.LOGGER.error("Failed to get hash, continuing with empty", e); + } } + resourcePackHash = resourcePackSha1; } - resourcePackHash = resourcePackSha1; } } diff --git a/src/main/resources/dynres.mixins.json b/src/main/resources/dynres.mixins.json index eea3b34..7c62c72 100644 --- a/src/main/resources/dynres.mixins.json +++ b/src/main/resources/dynres.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "io.gitlab.jfronny.dynres.mixin", - "compatibilityLevel": "JAVA_8", + "compatibilityLevel": "JAVA_17", "client": [ "ClientPlayNetworkHandlerMixin", "ServerInfoMixin"