From 4a5cc6f887e749331079ab9164a0509e9e7c2743 Mon Sep 17 00:00:00 2001 From: Metroite Date: Sat, 13 Feb 2021 23:01:30 +0100 Subject: [PATCH] Initial commit a resourcepack screen solution for shaderpack selection in Iris --- .gitattributes | 2 + .gitignore | 118 +++++++++++ LICENSE | 165 ++++++++++++++++ README.md | 7 + build.gradle | 110 +++++++++++ gradle.properties | 21 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58910 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++++++++++++++ gradlew.bat | 104 ++++++++++ settings.gradle | 10 + .../irisexplorer/IrisExplorerMod.java | 95 +++++++++ .../irisexplorer/IrisPackManager.java | 78 ++++++++ .../config/IrisExplorerConfig.java | 9 + .../config/ModMenuIntegration.java | 13 ++ .../ReloadableResourceManagerImplMixin.java | 29 +++ .../resources/assets/iris-explorer/icon.png | Bin 0 -> 21328 bytes .../assets/iris-explorer/lang/de_de.json | 4 + .../assets/iris-explorer/lang/en_us.json | 4 + src/main/resources/fabric.mod.json | 52 +++++ src/main/resources/iris-explorer.mixins.json | 14 ++ .../shaderpack/assets/respackopts/conf.json | 1 + .../resourcepacks/shaderpack/pack.mcmeta | 6 + .../resourcepacks/shaderpack/pack.png | Bin 0 -> 26192 bytes 24 files changed, 1032 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/de/metroite/irisexplorer/IrisExplorerMod.java create mode 100644 src/main/java/de/metroite/irisexplorer/IrisPackManager.java create mode 100644 src/main/java/de/metroite/irisexplorer/config/IrisExplorerConfig.java create mode 100644 src/main/java/de/metroite/irisexplorer/config/ModMenuIntegration.java create mode 100644 src/main/java/de/metroite/irisexplorer/mixin/ReloadableResourceManagerImplMixin.java create mode 100644 src/main/resources/assets/iris-explorer/icon.png create mode 100644 src/main/resources/assets/iris-explorer/lang/de_de.json create mode 100644 src/main/resources/assets/iris-explorer/lang/en_us.json create mode 100644 src/main/resources/fabric.mod.json create mode 100644 src/main/resources/iris-explorer.mixins.json create mode 100644 src/main/resources/resourcepacks/shaderpack/assets/respackopts/conf.json create mode 100644 src/main/resources/resourcepacks/shaderpack/pack.mcmeta create mode 100644 src/main/resources/resourcepacks/shaderpack/pack.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8805d0d --- /dev/null +++ b/LICENSE @@ -0,0 +1,165 @@ +GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d7098af --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Iris Explorer +Shaderpack Explorer for [Iris](https://github.com/IrisShaders/Iris)! + + +A resourcepack screen solution for shaderpack selection in the [Iris](https://github.com/IrisShaders/Iris) mod. + +This mod requires [Iris](https://github.com/IrisShaders/Iris)! \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ad2c6a3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,110 @@ +plugins { + id 'fabric-loom' version '0.5-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. + maven { + name = "Fabric" + url = "https://maven.fabricmc.net/" + } + maven { + name = "Shedaniel" + url = "https://dl.bintray.com/shedaniel/" + } + jcenter() +} + +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" + 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}" + + // Configuration + modImplementation("me.shedaniel.cloth:config-2:${project.cloth_config_version}") + include("me.shedaniel.cloth:config-2:${project.cloth_config_version}") + + modImplementation("me.sargunvohra.mcmods:autoconfig1u:${project.auto_config_version}") + include("me.sargunvohra.mcmods:autoconfig1u:${project.auto_config_version}") + + modImplementation("net.coderbot:iris:${project.iris_version}") + include("net.coderbot:iris:${project.iris_version}") + + modImplementation("com.TerraformersMC:modmenu:${project.mod_menu_version}") +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +tasks.withType(JavaCompile).configureEach { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + + // The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too + // JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used. + // We'll use that if it's available, but otherwise we'll use the older option. + def targetVersion = 8 + if (JavaVersion.current().isJava9Compatible()) { + it.options.release = targetVersion + } +} + +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() +} + +jar { + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}"} + } +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..a7c29b0 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G + +# Fabric Properties +# check these on https://fabricmc.net/use +minecraft_version=1.16.5 +yarn_mappings=1.16.5+build.1 +loader_version=0.11.1 + +# Mod Properties +mod_version = 0.1.0 +maven_group = de.metroite +archives_base_name = iris-explorer + +# Dependencies +# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api +fabric_version=0.30.0+1.16 +iris_version = 0.1.0 +cloth_config_version = 4.8.3 +auto_config_version = 3.3.1 +mod_menu_version = 1.16.6 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..62d4c053550b91381bbd28b1afc82d634bf73a8a GIT binary patch literal 58910 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..bb8b2fc --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..fbd7c51 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..5093609 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..5b60df3 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + jcenter() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/de/metroite/irisexplorer/IrisExplorerMod.java b/src/main/java/de/metroite/irisexplorer/IrisExplorerMod.java new file mode 100644 index 0000000..1dcabe4 --- /dev/null +++ b/src/main/java/de/metroite/irisexplorer/IrisExplorerMod.java @@ -0,0 +1,95 @@ +package de.metroite.irisexplorer; + +import com.google.common.base.Throwables; +import de.metroite.irisexplorer.config.IrisExplorerConfig; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; +import net.minecraft.resource.ResourceManager; +import net.minecraft.resource.ResourceType; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; +import net.coderbot.iris.Iris; +import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; +import me.sargunvohra.mcmods.autoconfig1u.serializer.GsonConfigSerializer; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.IOException; + +public class IrisExplorerMod implements ClientModInitializer { + public static final String MODID = "iris-explorer"; + public static IrisExplorerConfig CONFIG; + public static final Object2IntMap RESOURCE_PACK_PRIORITY_MAP = new Object2IntOpenHashMap<>(); + public static final Logger LOGGER = LogManager.getLogger("iris-explorer"); + public static String SHADER = "(internal)"; + + @Override + public void onInitializeClient() { + // Config + AutoConfig.register(IrisExplorerConfig.class, GsonConfigSerializer::new); + CONFIG = AutoConfig.getConfigHolder(IrisExplorerConfig.class).getConfig(); + // /Config + + + + // Keybind (R) + ClientTickEvents.END_CLIENT_TICK.register((minecraftClient) -> { + if (Iris.reloadKeybind.wasPressed()) { + reloadIrisExplorer(); + try { + Iris.reload(); + if (minecraftClient.player != null) { + minecraftClient.player.sendMessage(new TranslatableText("iris.shaders.reloaded"), false); + } + } catch (Exception var2) { + Iris.logger.error("Error while reloading Shaders for Iris!", var2); + if (minecraftClient.player != null) { + minecraftClient.player.sendMessage((new TranslatableText("iris.shaders.reloaded.failure", new Object[]{Throwables.getRootCause(var2).getMessage()})).formatted(Formatting.RED), false); + } + } + } + + }); + // /Keybind + + + + // Ressourceupdate (F3 + T) + //setupClientReloadListeners(); + ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() { + @Override + public Identifier getFabricId() { + return new Identifier(MODID, "client_update_shader"); + } + + @Override + public void apply(ResourceManager manager) { + reloadIrisExplorer(); + try { //This doesn't reload properly for some reason + Iris.reload(); + } catch (IOException e) { + Iris.logger.error("Error while reloading Shaders for Iris! (F3 + T)", e); + } + } + }); + // /Ressourceupdate + } + + public static void reloadIrisExplorer() { + if (CONFIG.toggle) { + IrisPackManager.updateShaderpackList(); + SHADER = IrisPackManager.getShaderpack(); + IrisPackManager.setShaderpack(SHADER); + LOGGER.info("Shaderpack list updated! Current shaderpack: " + SHADER); + } + } + + static { + RESOURCE_PACK_PRIORITY_MAP.defaultReturnValue(-1); + } +} \ No newline at end of file diff --git a/src/main/java/de/metroite/irisexplorer/IrisPackManager.java b/src/main/java/de/metroite/irisexplorer/IrisPackManager.java new file mode 100644 index 0000000..a78fe3f --- /dev/null +++ b/src/main/java/de/metroite/irisexplorer/IrisPackManager.java @@ -0,0 +1,78 @@ +package de.metroite.irisexplorer; + +import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.util.Identifier; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Path; +import java.util.Properties; + +public class IrisPackManager { + private static final Path shaderpacksDirectory = FabricLoader.getInstance().getGameDir().resolve("shaderpacks"); + private static final Path irisConfig = FabricLoader.getInstance().getConfigDir().resolve("iris.properties"); + public static final String PACKID = "iris"; + + + static String[] getShaderpackPaths() { + String[] pathnames; + File f = new File(shaderpacksDirectory + ""); + pathnames = f.list(); + return pathnames; + } + + public static String getShaderpack() { + String[] packs = getShaderpackPaths(); + int priority = -1; + int currentPriority; + String returnPack = "(internal)"; + for (String pack: packs) { + currentPriority = IrisExplorerMod.RESOURCE_PACK_PRIORITY_MAP.getInt(PACKID + "/" + getPackSubID(pack)); + //if any higher priority shaderpack was found, switch to it + if (currentPriority > priority) { + returnPack = pack; + priority = currentPriority; + } + } + return returnPack; + } + + public static void setShaderpack(String pack) { + try { + FileInputStream in = new FileInputStream(irisConfig.toString()); + Properties props = new Properties(); + props.load(in); + in.close(); + + FileOutputStream out = new FileOutputStream(irisConfig.toString()); + props.setProperty("shaderPack", pack); + props.store(out, null); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void updateShaderpackList() { + String[] packs = getShaderpackPaths(); + for (String pack: + packs) { + createResourcepack(pack); + } + } + + @SuppressWarnings({"deprecation"}) //I need exactly this functionality of registerBuiltinResourcePack + static void createResourcepack(String pack) { + FabricLoader.getInstance().getModContainer(IrisExplorerMod.MODID).ifPresent(modContainer -> { + ResourceManagerHelper.registerBuiltinResourcePack(new Identifier(PACKID + ":" + getPackSubID(pack)), "resourcepacks/shaderpack", modContainer, false); + }); + } + + static String getPackSubID(String pack) { + return pack.toLowerCase().replaceAll("\\s+", "-"); + } + +} diff --git a/src/main/java/de/metroite/irisexplorer/config/IrisExplorerConfig.java b/src/main/java/de/metroite/irisexplorer/config/IrisExplorerConfig.java new file mode 100644 index 0000000..7ff5049 --- /dev/null +++ b/src/main/java/de/metroite/irisexplorer/config/IrisExplorerConfig.java @@ -0,0 +1,9 @@ +package de.metroite.irisexplorer.config; + +import me.sargunvohra.mcmods.autoconfig1u.ConfigData; +import me.sargunvohra.mcmods.autoconfig1u.annotation.Config; + +@Config(name = "iris-explorer") +public class IrisExplorerConfig implements ConfigData { + public boolean toggle = true; // Enable/Disable the mod +} diff --git a/src/main/java/de/metroite/irisexplorer/config/ModMenuIntegration.java b/src/main/java/de/metroite/irisexplorer/config/ModMenuIntegration.java new file mode 100644 index 0000000..cf3f2be --- /dev/null +++ b/src/main/java/de/metroite/irisexplorer/config/ModMenuIntegration.java @@ -0,0 +1,13 @@ +package de.metroite.irisexplorer.config; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; +import net.minecraft.client.gui.screen.Screen; + +public class ModMenuIntegration implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return screen -> AutoConfig.getConfigScreen(IrisExplorerConfig.class, screen).get(); + } +} diff --git a/src/main/java/de/metroite/irisexplorer/mixin/ReloadableResourceManagerImplMixin.java b/src/main/java/de/metroite/irisexplorer/mixin/ReloadableResourceManagerImplMixin.java new file mode 100644 index 0000000..666ad00 --- /dev/null +++ b/src/main/java/de/metroite/irisexplorer/mixin/ReloadableResourceManagerImplMixin.java @@ -0,0 +1,29 @@ +package de.metroite.irisexplorer.mixin; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + +import de.metroite.irisexplorer.IrisExplorerMod; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import net.minecraft.resource.ReloadableResourceManager; +import net.minecraft.resource.ReloadableResourceManagerImpl; +import net.minecraft.resource.ResourcePack; +import net.minecraft.resource.ResourceReloadMonitor; +import net.minecraft.util.Unit; + +//code by NuclearFarts https://github.com/Nuclearfarts/connected-block-textures/blob/1b88d909a13125fbf602ed52d7d62a19c12cbc27/src/main/java/io/github/nuclearfarts/cbt/mixin/ReloadableResourceManagerImplMixin.java#L28 + +@Mixin(ReloadableResourceManagerImpl.class) +public abstract class ReloadableResourceManagerImplMixin implements ReloadableResourceManager { + @Inject(method = "beginMonitoredReload", at = @At(value = "RETURN", shift = At.Shift.BEFORE)) + private void irisResourcePackPriorityMap(Executor prepareExecutor, Executor applyExecutor, CompletableFuture initialStage, List packs, CallbackInfoReturnable cir) { + IrisExplorerMod.RESOURCE_PACK_PRIORITY_MAP.clear(); + for(int i = 0; i < packs.size(); i++) { + IrisExplorerMod.RESOURCE_PACK_PRIORITY_MAP.put(packs.get(i).getName(), i); //.substring(IrisPackManager.PACKID.length() + 1) + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/iris-explorer/icon.png b/src/main/resources/assets/iris-explorer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ff868c0b79aafcd70c255a09062c2be1201df339 GIT binary patch literal 21328 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 Ok-oNx)+Y^@_x}N_fyBN5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/iris-explorer/lang/de_de.json b/src/main/resources/assets/iris-explorer/lang/de_de.json new file mode 100644 index 0000000..71d4bac --- /dev/null +++ b/src/main/resources/assets/iris-explorer/lang/de_de.json @@ -0,0 +1,4 @@ +{ + "text.autoconfig.iris-explorer.title": "Iris Explorer", + "text.autoconfig.iris-explorer.option.toggle": "Iris Explorer aktivieren" +} diff --git a/src/main/resources/assets/iris-explorer/lang/en_us.json b/src/main/resources/assets/iris-explorer/lang/en_us.json new file mode 100644 index 0000000..5bcdd8f --- /dev/null +++ b/src/main/resources/assets/iris-explorer/lang/en_us.json @@ -0,0 +1,4 @@ +{ + "text.autoconfig.iris-explorer.title": "Iris Explorer", + "text.autoconfig.iris-explorer.option.toggle": "Enable Iris Explorer" +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..1771f77 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,52 @@ +{ + "schemaVersion": 1, + "id": "iris-explorer", + "version": "${version}", + + "name": "Iris Explorer", + "description": "Shaderpack Explorer for Iris", + "authors": [ + "Metroite" + ], + "contact": { + "homepage": "https://metroite.de/", + "sources": "https://github.com/Metroite/iris-explorer" + }, + "custom": { + "modmenu": { + "links": { + "Discord": "https://discord.gg/vBgb85N" + }, + "parent": { + "id": "iris" + } + } + }, + + "license": "LGPL-3.0", + "icon": "assets/iris-explorer/icon.png", + + "environment": "client", + "entrypoints": { + "modmenu": [ + "de.metroite.irisexplorer.config.ModMenuIntegration" + ], + "client": [ + "de.metroite.irisexplorer.IrisExplorerMod" + ] + }, + "mixins": [ + "iris-explorer.mixins.json" + ], + + "depends": { + "fabricloader": ">=0.7.4", + "fabric": "*", + "minecraft": "1.16.x", + "iris": "*" + }, + "suggests": { + "modmenu": "*", + "respackopts": "*" + } +} diff --git a/src/main/resources/iris-explorer.mixins.json b/src/main/resources/iris-explorer.mixins.json new file mode 100644 index 0000000..f50561f --- /dev/null +++ b/src/main/resources/iris-explorer.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "de.metroite.irisexplorer.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + ], + "client": [ + "ReloadableResourceManagerImplMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/src/main/resources/resourcepacks/shaderpack/assets/respackopts/conf.json b/src/main/resources/resourcepacks/shaderpack/assets/respackopts/conf.json new file mode 100644 index 0000000..151db0b --- /dev/null +++ b/src/main/resources/resourcepacks/shaderpack/assets/respackopts/conf.json @@ -0,0 +1 @@ +Would be pretty cool if the shader .properties could be changed through respackopts! //Todo diff --git a/src/main/resources/resourcepacks/shaderpack/pack.mcmeta b/src/main/resources/resourcepacks/shaderpack/pack.mcmeta new file mode 100644 index 0000000..369d554 --- /dev/null +++ b/src/main/resources/resourcepacks/shaderpack/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 6, + "description": "Shaderpack listed by Iris Explorer" + } +} diff --git a/src/main/resources/resourcepacks/shaderpack/pack.png b/src/main/resources/resourcepacks/shaderpack/pack.png new file mode 100644 index 0000000000000000000000000000000000000000..fed37af62931d80a2d55d6e33155b8be3d0cb57a GIT binary patch literal 26192 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 aNIGc67H_Hzk07_e0F>q5%hk!4h5sKMt|A)% literal 0 HcmV?d00001