diff --git a/CHANGELOG.md b/CHANGELOG.md index 179df3f..493a5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ -- Updated to 1.21.9 -- Little code refactoring -- Added uk_ua.json by StarmanMine142 \ No newline at end of file +# (Neo)Forge Support +Particle Effects (and my other cool mods) will now support (Neo)Forge mod loader! + +## Why? +All my mods were released exclusively for Fabric, as my projects always used Yarn mappings. + +After the recent news about the end of support for Yarn mappings, it made sense to switch to the official Mojmap. + +Since mappings are no longer an issue, it's fairly easy for me to add Neo(Forge) support. + +## Which versions will be supported? +Only the main ones, the ones most played. + +Currently, I plan to support: +- Forge: 1.20.1 +- NeoForge: 1.20.1 1.21.1 1.21.10 + +If there are many requests to add another popular version to support, I (maybe) will add support for it. + +## Does this affect Fabric users? +Not really, it's the same for you; the highest priority is still given to Fabric support. \ No newline at end of file diff --git a/LICENSE b/LICENSE index 153d416..e0ca589 100644 --- a/LICENSE +++ b/LICENSE @@ -1,165 +1 @@ - 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. \ No newline at end of file +Particle Effects © 2025 by LopyMine & KlashRaick is licensed under CC-BY-ND 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nd/4.0/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2ea603b..c24d418 100644 --- a/build.gradle +++ b/build.gradle @@ -1,34 +1,26 @@ plugins { - id("net.lopymine.mossy-plugin") + id "net.lopymine.mossy-plugin-core" version "$mossy_plugin_version" + id "maven-publish" } mossyDependencies { minecraft = stonecutter.current.version.toString() - mappings = prop("build.yarn") + mappings = "official" lombok = prop("base.lombok_version") + fabricApi = prop("build.fabric_api") fabricLoader = prop("build.fabric_loader") - additional { - // - By default, every additional project dependency ("dep.modId" from gradle.properties) will use - // - Modrinth Maven and "modImplementation" configuration name - // - If you want to override mod configuration name, you can do this: - - override("modCompileOnly", "modmenu") - - // - It will do this: - // - modImplementation("maven.modrinth:modId:version") -> modCompileOnly("maven.modrinth:modId:version") + forge = prop("build.forge") - // - Or if you want to disable it and handle by yourself, just disable it auto handling: + neoForge = prop("build.neoforge") + parchment = prop("build.parchment") - //disable("just_mod_id") + additional { + //override("modCompileOnly", "yacl") } } -mossyResources { - //expandFiles = ["custom", "file", "patterns", "here"] -} - String prop(String key) { return findProperty(key).toString() } \ No newline at end of file diff --git a/buildSettings/build.gradle b/buildSettings/build.gradle deleted file mode 100644 index b703c9c..0000000 --- a/buildSettings/build.gradle +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - id 'java' - id 'java-gradle-plugin' -} - -def mainModuleId = property("main_module_id").toString() -def pluginMavenPackage = property("plugin_maven_package").toString() -def pluginPackage = property("plugin_package").toString() -def pluginClass = property("plugin_class").toString() -def pluginVersion = property("plugin_version").toString() - -group = pluginPackage -version = pluginVersion - -repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - maven { - name "Fabric" - url "https://maven.fabricmc.net/" - } - maven { - name "Kiku Snapshots" - url "https://maven.kikugie.dev/snapshots" - } - maven { - name "Kiku Releases" - url "https://maven.kikugie.dev/releases" - } -} - -dependencies { - compileOnly "org.projectlombok:lombok:${property("lombok_version")}" - annotationProcessor "org.projectlombok:lombok:${property("lombok_version")}" - - implementation "com.google.code.gson:gson:${property("gson_version")}" - - implementation "dev.kikugie.stonecutter:dev.kikugie.stonecutter.gradle.plugin:${property("stonecutter_version")}" -} - -test { - useJUnitPlatform() -} -gradlePlugin { - plugins { - create(mainModuleId) { - id = "${pluginMavenPackage}.${mainModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}" - } - } -} diff --git a/buildSettings/gradle.properties b/buildSettings/gradle.properties deleted file mode 100644 index 64c72f5..0000000 --- a/buildSettings/gradle.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Gradle Plugin properties - -# Plugin Properties -main_module_id = mossy-settings-plugin -plugin_maven_package = net.lopymine -plugin_package = net.lopymine.mossy.settings -plugin_class = MossySettingsPlugin -plugin_version = 1.0.0 - -# Dependencies -lombok_version = 1.18.32 -gson_version = 2.13.1 -stonecutter_version = 0.7.1 \ No newline at end of file diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java deleted file mode 100644 index a4cb657..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/MossySettingsPlugin.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.lopymine.mossy.settings; - -import java.io.*; -import java.util.*; -import lombok.Getter; -import net.lopymine.mossy.settings.manager.*; -import org.gradle.api.*; - -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -@Getter -public class MossySettingsPlugin implements Plugin { - - @Override - public void apply(@NotNull Settings settings) { - Properties gradleProperties = getGradleProperties(settings.getRootDir()); - - settings.getRootProject().setName(getProperty(gradleProperties, "data.mod_name")); - - List additionalDependencies = getAdditionalDependencies(gradleProperties); - if (additionalDependencies.isEmpty()) { - System.out.println("No additional dependencies!"); - } else { - System.out.println("Found additional dependencies: [%s]".formatted(String.join(", ", additionalDependencies))); - } - - List multiVersions = getMultiVersions(gradleProperties); - - System.out.println("Found MC versions: [%s]".formatted(String.join(", ", multiVersions))); - - StonecutterManager.apply(settings, multiVersions); - AccessWidenerManager.apply(settings, multiVersions); - VersionedGradlePropertiesManager.apply(settings, gradleProperties, multiVersions, additionalDependencies); - } - - public List getAdditionalDependencies(Properties properties) { - List additionalDepends = new ArrayList<>(); - - for (Map.Entry entry : properties.entrySet()) { - String key = entry.getKey().toString(); - if (key.startsWith("dep.")) { - int i = key.indexOf(".") + 1; - String modId = key.substring(i); - additionalDepends.add(modId); - } - } - - return additionalDepends; - } - - public static List getMultiVersions(Properties gradleProperties) { - String multiVersions = getProperty(gradleProperties, "multi_versions"); - - List versions = new ArrayList<>(); - - for (String s : multiVersions.split(" ")) { - int index = s.indexOf("["); - if (index == -1) { - versions.add(s); - } else { - versions.add(s.substring(0, index)); - } - } - - return versions; - } - - public static String getProperty(Properties gradleProperties, String id) { - if (!gradleProperties.containsKey(id)) { - throw new IllegalArgumentException("Missing important property with id \"%s\" !".formatted(id)); - } - return gradleProperties.get(id).toString(); - } - - public static @NotNull Properties getGradleProperties(File project) { - Properties properties = new Properties(); - try (FileReader reader = new FileReader(project.toPath().resolve("gradle.properties").toFile())) { - properties.load(reader); - } catch (Exception e) { - throw new RuntimeException(e); - } - return properties; - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java deleted file mode 100644 index 66cf72c..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/FabricDependenciesAPI.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.settings.api; - -public class FabricDependenciesAPI { - - public static String getYarnVersion(String minecraftVersion) { - try { - return JsonHelper.get("https://meta.fabricmc.net/v2/versions/yarn/%s?limit=1".formatted(minecraftVersion)) - .getAsJsonArray() - .get(0) - .getAsJsonObject() - .get("version") - .getAsString(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java deleted file mode 100644 index 2291f5f..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/JsonHelper.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.lopymine.mossy.settings.api; - -import com.google.gson.*; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import java.io.*; -import java.net.*; -import java.nio.charset.StandardCharsets; - - -public class JsonHelper { - - public static JsonElement get(String url) throws Exception { - URI uri = URI.create(url); - HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection(); - connection.setRequestMethod("GET"); - JsonReader jsonReader = new JsonReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); - return new Gson().fromJson(jsonReader, TypeToken.get(JsonElement.class)); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java deleted file mode 100644 index 3e61dc3..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/api/ModrinthDependenciesAPI.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.lopymine.mossy.settings.api; - -import com.google.gson.*; -import java.io.*; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import org.jetbrains.annotations.NotNull; - -public class ModrinthDependenciesAPI { - - @NotNull - public static String getVersion(String modId, String minecraftVersion, String loader) { - String encodedLoader = URLEncoder.encode("[\"%s\"]".formatted(loader), StandardCharsets.UTF_8); - String encodedMinecraftVersion = URLEncoder.encode("[\"%s\"]".formatted(minecraftVersion), StandardCharsets.UTF_8); - String url = "https://api.modrinth.com/v2/project/%s/version?loaders=%s&game_versions=%s".formatted(modId, encodedLoader, encodedMinecraftVersion); - JsonElement element; - try { - element = JsonHelper.get(url); - } catch (FileNotFoundException e) { - System.out.printf("\nFailed to find Modrinth project with id \"%s\"%n", modId); - e.printStackTrace(System.out); - return "unknown"; - } catch (Exception e) { - e.printStackTrace(System.out); - return "unknown"; - } - JsonArray array = element.getAsJsonArray(); - if (array.isEmpty()) { - return "unknown"; - } - JsonElement jsonElement = array.get(0); - JsonObject jsonObject = jsonElement.getAsJsonObject(); - - return jsonObject.get("version_number").getAsString(); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java deleted file mode 100644 index 8aa33bb..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/AccessWidenerManager.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import java.io.*; -import java.nio.file.Path; -import java.util.List; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.*; - -public class AccessWidenerManager { - - public static void apply(@NotNull Settings settings, List multiVersions) { - Path path = settings.getRootDir().toPath(); - for (String version : multiVersions) { - createExampleAccessWidener(path, version); - } - } - - public static void createExampleAccessWidener(Path rootProject, String version) { - File awFile = createAWFile(rootProject, version); - if (awFile == null) { - return; - } - - try (FileWriter writer = new FileWriter(awFile)) { - writer.write("accessWidener v2 named\n"); - writer.write("# " + version + " AW\n"); - } catch (Exception e) { - throw new RuntimeException(e); - } - - System.out.println("Successfully created AW for " + version); - } - - @Nullable - private static File createAWFile(Path rootProject, String version) { - Path awsFolder = rootProject.resolve("src/main/resources/aws/"); - File awsFolderFile = awsFolder.toFile(); - if (!awsFolderFile.exists() && !awsFolderFile.mkdirs()) { - System.out.println("Failed to get or create AW folder for " + version); - return null; - } - - File versionedAWFile = awsFolder.resolve(version + ".accesswidener").toFile(); - if (versionedAWFile.exists()) { - return null; - } - - try { - if (!versionedAWFile.createNewFile()) { - System.out.println("Failed to create AW file for " + version); - return null; - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - return versionedAWFile; - } -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java deleted file mode 100644 index 8277af3..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/StonecutterManager.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import dev.kikugie.stonecutter.settings.StonecutterSettingsExtension; -import java.util.List; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -public class StonecutterManager { - - public static void apply(@NotNull Settings settings, List versions) { - StonecutterSettingsExtension stonecutter = settings.getExtensions().getByType(StonecutterSettingsExtension.class); - stonecutter.create(settings.getRootProject(), (builder) -> { - builder.versions(versions); - builder.getVcsVersion().set(versions.get(versions.size() - 1)); - }); - } - -} diff --git a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java b/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java deleted file mode 100644 index c3e46f0..0000000 --- a/buildSettings/src/main/java/net/lopymine/mossy/settings/manager/VersionedGradlePropertiesManager.java +++ /dev/null @@ -1,186 +0,0 @@ -package net.lopymine.mossy.settings.manager; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.nio.file.*; -import java.util.*; -import java.util.function.*; -import net.lopymine.mossy.settings.api.*; -import org.gradle.api.initialization.Settings; -import org.jetbrains.annotations.NotNull; - -public class VersionedGradlePropertiesManager { - - public static void apply(@NotNull Settings settings, Properties gradleProperties, List multiVersions, List additionalDependencies) { - Path path = settings.getRootDir().toPath(); - - for (String version : multiVersions) { - try { - createGradleProperties( - path, - version, - additionalDependencies, - gradleProperties, - (modId, ver) -> ModrinthDependenciesAPI.getVersion(modId, version, "fabric"), - FabricDependenciesAPI::getYarnVersion - ); - } catch (Exception e) { - throw new RuntimeException("Failed to create versioned gradle properties for " + version + ", reason: " + e.getMessage(), e); - } - } - } - - public static void createGradleProperties(Path rootPath, String version, List additionalDependencies, Properties rootGradleProperties, BiFunction dependResolver, Function yarnResolver) throws IOException { - File file = getOrCreateGradlePropertiesFile(rootPath, version); - if (file == null) { - return; - } - - Properties gradleProperties = new Properties(); - try (InputStream in = new FileInputStream(file)) { - gradleProperties.load(in); - } - - String fileText = Files.readString(file.toPath(), StandardCharsets.UTF_8); - boolean isEmpty = fileText.isBlank(); - - List missingDependencies = new ArrayList<>(); - for (String id : additionalDependencies) { - String key = "dep." + id; - String markerVal = rootGradleProperties.getProperty(key); - if (!"[VERSIONED]".equals(markerVal)) { - continue; - } - if (!gradleProperties.containsKey(key)) { - missingDependencies.add(id); - } - } - - List oldDependencies = new ArrayList<>(); - for (String key : gradleProperties.stringPropertyNames()) { - if (!key.startsWith("dep.")) { - continue; - } - String markerVal = rootGradleProperties.getProperty(key); - if (markerVal != null && !"[VERSIONED]".equals(markerVal)) { - oldDependencies.add(key); - continue; - } - String shortId = substringSince(key, "."); - if (!additionalDependencies.contains(shortId)) { - oldDependencies.add(key); - } - } - - boolean update = fileText.replace(" ", "").contains("=[UPDATE]"); - - if (!isEmpty && !update && missingDependencies.isEmpty() && oldDependencies.isEmpty()) { - return; - } - - if (isEmpty) { - StringBuilder builder = new StringBuilder(); - builder.append("# Versioned Properties\n"); - builder.append("# Tip: You can set any dependency value to \"[UPDATE]\"\n"); - builder.append("# and reload Gradle to update only it's value.\n\n"); - builder.append("# Fabric Properties, check https://fabricmc.net/develop/\n"); - builder.append("build.yarn=").append(yarnResolver.apply(version)).append("\n"); - builder.append("build.fabric_api=").append(dependResolver.apply("fabric-api", version)); - if (!additionalDependencies.isEmpty()) { - builder.append("\n\n"); - builder.append("# Additional Dependencies Properties\n"); - for (String depend : additionalDependencies) { - builder.append("# ").append(depend).append(", check https://modrinth.com/mod/").append(depend).append("/versions?g=").append(version).append("&l=fabric\n"); - builder.append("dep.").append(depend).append("=").append(dependResolver.apply(depend, version)).append("\n"); - } - } - Files.writeString(file.toPath(), builder.toString(), StandardCharsets.UTF_8); - System.out.println("Successfully created gradle.properties for " + version); - return; - } - - if (update) { - String text = fileText.replace(" ", "ㅤ").trim(); - for (String key : gradleProperties.stringPropertyNames()) { - String value = gradleProperties.getProperty(key); - if (!"[UPDATE]".equals(value)) { - continue; - } - String oldLine = key + "=[UPDATE]"; - String updatedLine = null; - if (key.startsWith("dep.")) { - String depId = substringSince(key, "."); - updatedLine = key + "=" + dependResolver.apply(depId, version); - } else if (key.startsWith("build.")) { - String buildProp = substringSince(key, "."); - if ("yarn".equals(buildProp)) { - updatedLine = key + "=" + yarnResolver.apply(version); - } else if ("fabric_api".equals(buildProp)) { - updatedLine = key + "=" + dependResolver.apply("fabric-api", version); - } - } - if (updatedLine == null) { - continue; - } - text = text.replace(oldLine, updatedLine); - } - String finalText = text.replace("ㅤ", " "); - Files.writeString(file.toPath(), finalText, StandardCharsets.UTF_8); - System.out.println("Successfully updated gradle.properties for " + version); - } - - if (!missingDependencies.isEmpty()) { - String text = Files.readString(file.toPath(), StandardCharsets.UTF_8); - if (!text.endsWith("\n")) text = text + "\n"; - StringBuilder builder = new StringBuilder(text); - for (String depend : missingDependencies) { - builder.append("# ").append(depend).append(", check https://modrinth.com/mod/").append(depend).append("/versions?g=").append(version).append("&l=fabric\n"); - builder.append("dep.").append(depend).append("=").append(dependResolver.apply(depend, version)).append("\n"); - } - Files.writeString(file.toPath(), builder.toString(), StandardCharsets.UTF_8); - System.out.println("Successfully added new depends " + missingDependencies + " to gradle.properties for " + version); - } - - if (!oldDependencies.isEmpty()) { - String text = Files.readString(file.toPath(), StandardCharsets.UTF_8); - List removed = new ArrayList<>(); - for (String fullKey : oldDependencies) { - String dep = substringSince(fullKey, "."); - String propValue = gradleProperties.getProperty(fullKey); - String block = "# " + dep + ", check https://modrinth.com/mod/" + dep + "/versions?g=" + version + "&l=fabric\n" + "dep." + dep + "=" + propValue + "\n"; - text = text.replace(block, ""); - removed.add(dep); - } - Files.writeString(file.toPath(), text, StandardCharsets.UTF_8); - System.out.println("Successfully removed old depends " + removed + " from gradle.properties for " + version); - } - } - - private static File getOrCreateGradlePropertiesFile(Path path, String version) { - try { - Path folder = path.resolve("versions/" + version); - File folderFile = folder.toFile(); - if (!folderFile.exists() && !folderFile.mkdirs()) { - System.out.println("Failed to get or create folder for " + version); - return null; - } - File gradlePropertiesFile = folder.resolve("gradle.properties").toFile(); - if (!gradlePropertiesFile.exists() && !gradlePropertiesFile.createNewFile()) { - System.out.println("Failed to get or create gradle.properties for " + version); - return null; - } - return gradlePropertiesFile; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @SuppressWarnings("all") - private static String substringSince(String text, String since) { - int index = text.indexOf(since); - if (index == -1) { - return text; - } - return text.substring(index + 1); - } -} diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index ece3d83..0000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -plugins { - id 'java' - id 'java-gradle-plugin' -} - -def mainModuleId = property("main_module_id").toString() -def stonecutterModuleId = property("stonecutter_module_id").toString() -def pluginMavenPackage = property("plugin_maven_package").toString() -def pluginPackage = property("plugin_package").toString() -def pluginClass = property("plugin_class").toString() -def pluginVersion = property("plugin_version").toString() - -group = pluginPackage -version = pluginVersion - -repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() - maven { - name "Fabric" - url "https://maven.fabricmc.net/" - } - maven { - name "Kiku Snapshots" - url "https://maven.kikugie.dev/snapshots" - } - maven { - name "Kiku Releases" - url "https://maven.kikugie.dev/releases" - } -} - -dependencies { - compileOnly "org.projectlombok:lombok:${property("lombok_version")}" - annotationProcessor "org.projectlombok:lombok:${property("lombok_version")}" - - implementation "me.modmuss50.mod-publish-plugin:me.modmuss50.mod-publish-plugin.gradle.plugin:${property("mod_publish_plugin_version")}" - implementation "dev.kikugie.stonecutter:dev.kikugie.stonecutter.gradle.plugin:${property("stonecutter_version")}" - implementation "dev.kikugie.fletching-table:dev.kikugie.fletching-table.gradle.plugin:${property("fletching_table_version")}" - implementation "fabric-loom:fabric-loom.gradle.plugin:${property("fabric_loom_version")}" -} - -test { - useJUnitPlatform() -} -gradlePlugin { - plugins { - create(mainModuleId) { - id = "${pluginMavenPackage}.${mainModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}" - } - create(stonecutterModuleId) { - id = "${pluginMavenPackage}.${stonecutterModuleId}" - implementationClass = "${pluginPackage}.${pluginClass}Stonecutter" - } - } -} diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties deleted file mode 100644 index 8a24066..0000000 --- a/buildSrc/gradle.properties +++ /dev/null @@ -1,17 +0,0 @@ -# Gradle Plugin properties - -# Plugin Properties -main_module_id = mossy-plugin -stonecutter_module_id = mossy-plugin-stonecutter -plugin_maven_package = net.lopymine -plugin_package = net.lopymine.mossy -plugin_class = MossyPlugin - -plugin_version = 1.0.0 - -# Dependencies -lombok_version = 1.18.32 -mod_publish_plugin_version = 0.7.4 -stonecutter_version = 0.7.1 -fabric_loom_version = 1.11-SNAPSHOT -fletching_table_version = 0.1.0-alpha.17 \ No newline at end of file diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java deleted file mode 100644 index 32dd311..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyLogger.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.lopymine.mossy; - -import org.gradle.api.Project; - -public class MossyLogger { - - private Project project; - - public void setup(Project project) { - this.project = project; - } - - @SuppressWarnings("all") - public void log(String text, Object... objects) { - System.out.println("[Mossy/%s] %s".formatted(this.project.getName(), text.formatted(objects))); - } - - @SuppressWarnings("all") - public void logModule(String module, String text, Object... objects) { - System.out.println("[Mossy/%s/%s] %s".formatted(this.project.getName(), module, text.formatted(objects))); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java deleted file mode 100644 index 52fd189..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyPlugin.java +++ /dev/null @@ -1,312 +0,0 @@ -package net.lopymine.mossy; - -import dev.kikugie.stonecutter.build.StonecutterBuildExtension; -import lombok.Getter; -import me.modmuss50.mpp.ModPublishExtension; -import org.gradle.api.*; -import org.gradle.api.plugins.*; -import org.gradle.api.tasks.*; -import org.gradle.jvm.tasks.Jar; - -import net.fabricmc.loom.api.LoomGradleExtensionAPI; -import net.fabricmc.loom.task.RemapJarTask; - -import net.lopymine.mossy.manager.*; -import net.lopymine.mossy.multi.MultiVersion; -import net.lopymine.mossy.tasks.*; - -import java.io.*; -import java.nio.file.Files; -import java.util.*; -import java.util.Map.Entry; -import org.jetbrains.annotations.NotNull; - -@Getter -public class MossyPlugin implements Plugin { - - public static final MossyLogger LOGGER = new MossyLogger(); - - private MultiVersion projectMultiVersion; - private int javaVersionIndex; - private JavaVersion javaVersion; - - @Override - public void apply(@NotNull Project project) { - LOGGER.setup(project); - - // - - PluginContainer plugins = project.getPlugins(); - plugins.apply("dev.kikugie.stonecutter"); - plugins.apply("fabric-loom"); - plugins.apply("me.modmuss50.mod-publish-plugin"); - plugins.apply("dev.kikugie.fletching-table"); - - // - - this.projectMultiVersion = MossyPlugin.getProjectMultiVersion(project); - this.javaVersionIndex = MossyPlugin.getJavaVersion(project); - this.javaVersion = JavaVersion.toVersion(this.javaVersionIndex); - - // - - MossyPlugin.configureProject(project, this); - - MossyJavaManager.apply(project,this); - MossyJ52JManager.apply(project); - MossyProcessResourcesManager.apply(project, this); - - MossyDependenciesManager.apply(project); - MossyStonecutterManager.apply(project, this); - - // - - MossyPlugin.configureExtensions(project, this); - MossyPlugin.configureTasks(project, this); - - LOGGER.log("Project Version: %s", project.getVersion()); - LOGGER.log("Java Version: %s", this.javaVersionIndex); - } - - private static void configureExtensions(@NotNull Project project, MossyPlugin plugin) { - project.getExtensions().configure(LoomGradleExtensionAPI.class, (loom) -> { - MossyLoomManager.apply(project, plugin, loom); - }); - - project.getExtensions().configure(ModPublishExtension.class, (mpe) -> { - MossyModPublishManager.apply(project, plugin, mpe); - }); - } - - private static void configureTasks(@NotNull Project project, MossyPlugin plugin) { - project.getTasks().register("generatePublishWorkflowsForEachVersion", GeneratePublishWorkflowsForEachVersionTask.class, (task) -> { - task.setGroup("mossy"); - }); - project.getTasks().register("generatePersonalProperties", GeneratePersonalPropertiesTask.class, (task) -> { - task.setGroup("mossy"); - }); - project.getTasks().register("regenerateRunConfigurations", Delete.class, (task) -> { - task.setGroup("mossy"); - String version = plugin.getProjectMultiVersion().projectVersion(); - task.delete(getRootFile(project, ".idea/runConfigurations/Minecraft_Client___%s__%s.xml".formatted(version.replace(".", "_"), version))); - task.delete(getRootFile(project, ".idea/runConfigurations/Minecraft_Server___%s__%s.xml".formatted(version.replace(".", "_"), version))); - task.finalizedBy("ideaSyncTask"); - }); - project.getTasks().register("rebuildLibs", Delete.class, task -> { - task.setGroup("build"); - String modName = getProperty(project, "data.mod_name").replace(" ", ""); - String version = project.getVersion().toString(); - - String jarFileName = "libs/%s-%s.jar".formatted(modName, version); - String sourcesJarFileName = "libs/%s-%s-sources.jar".formatted(modName, version); - - task.delete(getRootFile(project, jarFileName)); - task.delete(project.getLayout().getBuildDirectory().file(jarFileName)); - task.delete(project.getLayout().getBuildDirectory().file(sourcesJarFileName)); - }); - project.getTasks().named("build", task -> { - task.mustRunAfter("rebuildLibs"); - }); - project.getTasks().register("buildAndCollect", Copy.class, task -> { - task.setGroup("build"); - task.dependsOn("rebuildLibs", "build"); - task.from(((RemapJarTask) project.getTasks().getByName("remapJar")).getArchiveFile().get()); - task.into(getRootFile(project, "libs/")); - }); - for (String publishTask : List.of("publishModrinth", "publishCurseforge")) { - project.getTasks().named(publishTask).configure((task) -> { - task.doLast((t) -> { - try { - Thread.sleep(1000L); - } catch (Exception e) { - MossyPlugin.LOGGER.log("Failed to wait before publishing!"); - e.printStackTrace(); - } - }); - }); - } - } - - private static void configureProject(@NotNull Project project, MossyPlugin plugin) { - String projectVersion = plugin.getMossyProjectVersion(project); - String mavenGroup = getProperty(project, "data.mod_maven_group"); - project.setVersion(projectVersion); - project.setGroup(mavenGroup); - - BasePluginExtension base = project.getExtensions().getByType(BasePluginExtension.class); - base.getArchivesName().set(getProperty(project, "data.mod_name").replace(" ", "")); - - Jar jar = (Jar) project.getTasks().getByName("jar"); - jar.getArchiveBaseName().set(base.getArchivesName().get()); - jar.from(getRootFile(project, "LICENSE"), (spec) -> { - spec.rename(s -> "%s_%s".formatted(s, base.getArchivesName().get())); - }); - } - - public static int getJavaVersion(Project project) { - String currentMCVersion = getCurrentMCVersion(project); - StonecutterBuildExtension stonecutter = getStonecutter(project); - return stonecutter.compare("1.20.5", currentMCVersion) == 1 ? - stonecutter.compare("1.18", currentMCVersion) == 1 ? - stonecutter.compare("1.16.5", currentMCVersion) == 1 ? - 8 - : - 16 - : - 17 - : - 21; - } - - - public static MultiVersion getProjectMultiVersion(@NotNull Project currentProject) { - String currentMCVersion = getCurrentMCVersion(currentProject); - - String[] versions = getProperty(currentProject, "versions_specifications").split(" "); - for (String version : versions) { - String[] split = version.substring(0, version.length()-1).split("\\["); - String project = split[0]; - if (Objects.equals(project, currentMCVersion)) { - String supportedVersionsString = split[1]; - if (supportedVersionsString.contains("-")) { - String[] supportedVersions = supportedVersionsString.split("-"); - return new MultiVersion(currentMCVersion, supportedVersions[0], supportedVersions[1]); - } else if (supportedVersionsString.contains(".")) { - return new MultiVersion(currentMCVersion, currentMCVersion, supportedVersionsString); - } else { - int a = project.indexOf("."); - int i = project.lastIndexOf("."); - if (a == i) { - i = project.length(); - } - String p = project.substring(0, i); - String supportedMaxVersion = "%s.%s".formatted(p, supportedVersionsString); - return new MultiVersion(currentMCVersion, currentMCVersion, supportedMaxVersion); - } - } - } - return new MultiVersion(currentMCVersion, currentMCVersion, currentMCVersion); - } - - public static Properties getPersonalProperties(@NotNull Project project) { - File file = project.getRootProject().file("personal/personal.properties"); - Properties personalProperties = new Properties(); - - if (!file.exists()) { - return personalProperties; - } - - try (InputStream stream = new FileInputStream(file)) { - personalProperties.load(stream); - } catch (IOException e) { - LOGGER.log("Something went wrong when parsing personal properties:"); - LOGGER.log(e.getMessage()); - } - - try { - String mixinPath = "absolute_path_to_sponge_mixin"; - - for (String line : Files.readAllLines(file.toPath())) { - if (!line.startsWith(mixinPath)) { - continue; - } - personalProperties.setProperty(mixinPath, line.substring(mixinPath.length() + 1)); - } - } catch (Exception e) { - LOGGER.log("Something went wrong when parsing personal properties mixin path:"); - LOGGER.log(e.getMessage()); - } - - return personalProperties; - } - - public static Map getMossyProperties(Project project, String prefix) { - HashMap dependencies = new HashMap<>(); - - Map properties = project.getProperties(); - for (Entry entry : properties.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - if (!key.startsWith(prefix + ".")) { - continue; - } - dependencies.put(substringSince(key, "."), value.toString()); - } - - return dependencies; - } - - public static String getCurrentMCVersion(@NotNull Project project) { - return getStonecutter(project).getCurrent().getProject(); - } - - public static @NotNull StonecutterBuildExtension getStonecutter(@NotNull Project project) { - return (StonecutterBuildExtension) project.getExtensions().getByName("stonecutter"); - } - - public static String getProperty(@NotNull Project project, String id) { - Map properties = project.getProperties(); - if (!properties.containsKey(id)) { - throw new IllegalArgumentException("Missing important property with id \"%s\" !".formatted(id)); - } - return properties.get(id).toString(); - } - - public static String[] getMultiVersions(@NotNull Project project) { - return getProperty(project, "multi_versions").split(" "); - } - - public static List getVersionsSpecifications(@NotNull Project project) { - return Arrays.stream(getProperty(project, "versions_specifications") - .split(" ")) - .map((version) -> substringBefore(version, "[")) - .toList(); - } - - @SuppressWarnings("unused") - public static String substringBeforeLast(String value, String since) { - int i = value.lastIndexOf(since); - if (i == -1) { - return value; - } - return value.substring(0, i); - } - - @SuppressWarnings("unused") - public static String substringSinceLast(String value, String since) { - int i = value.lastIndexOf(since); - if (i == -1) { - return value; - } - return value.substring(i + 1); - } - - @SuppressWarnings("unused") - public static String substringBefore(String value, String since) { - int i = value.indexOf(since); - if (i == -1) { - return value; - } - return value.substring(0, i); - } - - @SuppressWarnings("unused") - public static String substringSince(String value, String since) { - int i = value.indexOf(since); - if (i == -1) { - return value; - } - return value.substring(i + 1); - } - - public String getMossyProjectVersion(Project project) { - String modVersion = getProperty(project, "data.mod_version"); - MultiVersion multiVersion = this.getProjectMultiVersion(); - return "%s+%s".formatted(modVersion, multiVersion.projectVersion()); - } - - public static File getRootFile(@NotNull Project project, String path) { - return project.getRootProject().file(path); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java b/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java deleted file mode 100644 index fd6b6fc..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/MossyPluginStonecutter.java +++ /dev/null @@ -1,115 +0,0 @@ -package net.lopymine.mossy; - -import dev.kikugie.stonecutter.controller.StonecutterControllerExtension; -import dev.kikugie.stonecutter.data.StonecutterProject; -import lombok.experimental.ExtensionMethod; -import org.gradle.*; -import org.gradle.api.*; -import org.gradle.api.initialization.Settings; -import org.gradle.api.invocation.Gradle; -import org.gradle.api.tasks.*; - -import java.util.List; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyPluginStonecutter implements Plugin { - - @Override - public void apply(@NotNull Project project) { - TaskContainer tasks = project.getTasks(); - StonecutterControllerExtension controller = project.getExtensions().getByType(StonecutterControllerExtension.class); - - for (StonecutterProject version : controller.getVersions()) { - tasks.register("buildAndCollect+%s".formatted(version.getProject()), (task) -> { - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - task.setGroup("mossy-build"); - }); - } - - for (StonecutterProject version : controller.getVersions()) { - tasks.register("publish+%s".formatted(version.getProject()), (task) -> { - task.dependsOn(":%s:publishMods".formatted(version.getProject())); - task.setGroup("mossy-publish"); - }); - } - - tasks.register("buildAndCollect+All", (task) -> { - controller.getVersions().forEach((version) -> { - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - }); - task.setGroup("mossy-build"); - }); - - tasks.register("buildAndCollect+Specified", (task) -> { - List versionsSpecifications = project.getVersionsSpecifications(); - controller.getVersions().forEach((version) -> { - if (!versionsSpecifications.contains(version.getProject())) { - return; - } - task.dependsOn(":%s:buildAndCollect".formatted(version.getProject())); - }); - task.setGroup("mossy-build"); - }); - - tasks.register("publish+All", (task) -> { - List versions = controller.getVersions() - .stream() - .sorted((a, b) -> controller.compare(a.getProject(), b.getProject())) - .toList(); - - for (String publishTask : List.of("publishModrinth", "publishCurseforge")) { - for (int i = 1; i < versions.size(); i++) { - StonecutterProject first = versions.get(i - 1); - StonecutterProject second = versions.get(i); - - TaskProvider firstTask = project.getChildProjects().get(first.getProject()).getTasks().named(publishTask); - TaskProvider secondTask = project.getChildProjects().get(second.getProject()).getTasks().named(publishTask); - task.dependsOn(firstTask, secondTask); - - secondTask.configure((t) -> t.setMustRunAfter(List.of(firstTask))); - } - } - - task.setGroup("mossy-publish"); - }); - - tasks.register("publish+Specified", (task) -> { - List versionsSpecifications = project.getVersionsSpecifications(); - controller.getVersions().forEach((version) -> { - if (!versionsSpecifications.contains(version.getProject())) { - return; - } - task.dependsOn(":%s:publishMods".formatted(version.getProject())); - }); - task.setGroup("mossy-publish"); - }); - - project.getGradle().addBuildListener(new BuildListener() { - @Override - public void settingsEvaluated(@NotNull Settings settings) { - - } - - @Override - public void projectsLoaded(@NotNull Gradle gradle) { - - } - - @Override - public void projectsEvaluated(@NotNull Gradle gradle) { - for (Task task : tasks) { - if (!"stonecutter".equals(task.getGroup())) { - continue; - } - task.setGroup("mossy-stonecutter"); - } - } - - @Override - public void buildFinished(@NotNull BuildResult result) { - - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java deleted file mode 100644 index 1bbd41b..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyAdditionalDependencies.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; - -import java.util.*; - -@Getter -public class MossyAdditionalDependencies { - - private final Map overrides = new HashMap<>(); - private final Set disabled = new HashSet<>(); - - public void override(String configurationName, String modId) { - this.overrides.put(modId, new AdditionalDependencyOverride(modId, configurationName)); - } - - public void disable(String modId) { - this.disabled.add(modId); - } - - public record AdditionalDependencyOverride(String modId, String configurationName) { - - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java deleted file mode 100644 index 2622f70..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyDependenciesExtension.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; -import org.gradle.api.Action; -import org.gradle.api.tasks.*; - -@Getter -public class MossyDependenciesExtension { - - @Input - String minecraft; - - @Input - String mappings; - - @Input - String fabricApi; - - @Input - String fabricLoader; - - @Input - String lombok; - - @Nested - MossyAdditionalDependencies additional = new MossyAdditionalDependencies(); - - public void additional(Action action) { - action.execute(this.additional); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java b/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java deleted file mode 100644 index 51a1b19..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/extension/MossyProcessResourcesExtension.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.lopymine.mossy.extension; - -import lombok.Getter; -import org.gradle.api.tasks.Input; - -import java.util.List; -import org.jetbrains.annotations.Nullable; - -@Getter -public class MossyProcessResourcesExtension { - - @Input - @Nullable - List expandFiles; - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java deleted file mode 100644 index 869faa5..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyDependenciesManager.java +++ /dev/null @@ -1,121 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.artifacts.dsl.DependencyHandler; -import org.gradle.api.artifacts.repositories.MavenArtifactRepository; - -import net.lopymine.mossy.*; -import net.lopymine.mossy.extension.*; -import net.lopymine.mossy.extension.MossyAdditionalDependencies.AdditionalDependencyOverride; - -import java.util.*; -import java.util.function.Consumer; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyDependenciesManager { - - private static void addDependencies(MossyDependenciesExtension extension, Project project) { - String minecraft = extension.getMinecraft(); - String mappings = extension.getMappings(); - String fabricApi = extension.getFabricApi(); - String fabricLoader = extension.getFabricLoader(); - String lombok = extension.getLombok(); - - DependencyHandler dependencies = project.getDependencies(); - dependencies.add("minecraft", "com.mojang:minecraft:%s".formatted(minecraft)); - dependencies.add("mappings", "net.fabricmc:yarn:%s:v2".formatted(mappings)); - dependencies.add("modImplementation", "net.fabricmc.fabric-api:fabric-api:%s".formatted(fabricApi)); - dependencies.add("modImplementation", "net.fabricmc:fabric-loader:%s".formatted(fabricLoader)); - dependencies.add("compileOnly", "org.projectlombok:lombok:%s".formatted(lombok)); - dependencies.add("annotationProcessor", "org.projectlombok:lombok:%s".formatted(lombok)); - - Map properties = project.getMossyProperties("dep"); - MossyAdditionalDependencies additional = extension.getAdditional(); - additional.disable("yacl"); - - Map overrides = additional.getOverrides(); - Set disabled = additional.getDisabled(); - properties.forEach((modId, version) -> { - if (disabled.contains(modId)) { - //System.out.println("Disabling auto-dependency for %s !".formatted(modId)); - return; - } - - if (version.equals("unknown")) { - return; - } - - AdditionalDependencyOverride override = overrides.get(modId); - String configurationName = override != null ? override.configurationName() : "modImplementation"; - dependencies.add(configurationName, "maven.modrinth:%s:%s".formatted(modId, version)); - }); - - project.getConfigurations().forEach((configuration) -> { - configuration.resolutionStrategy((strategy) -> { - strategy.force("com.twelvemonkeys.common:common-io:3.10.0"); - strategy.force("com.twelvemonkeys.common:common-lang:3.10.0"); - strategy.force("com.twelvemonkeys.common:common-image:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-metadata:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-webp:3.10.0"); - strategy.force("com.twelvemonkeys.imageio:imageio-core:3.10.0"); - }); - }); - - String yaclVersion = properties.get("yacl"); - if (yaclVersion != null && !yaclVersion.equals("unknown")) { - Set oldMavenVersions = Set.of("1.19.4", "1.20", "1.20.2", "1.20.3"); - if (oldMavenVersions.contains(minecraft)) { - dependencies.add("modImplementation", "dev.isxander.yacl:yet-another-config-lib-fabric:%s".formatted(MossyPlugin.substringBeforeLast(yaclVersion, "-"))); - } else { - dependencies.add("modImplementation", "dev.isxander:yet-another-config-lib:%s".formatted(yaclVersion)); - } - } - } - - private static void addRepositories(Project project) { - project.getRepositories().mavenCentral(); - addRepository(project, "Quilt", "https://maven.quiltmc.org/repository/release/"); - addRepository(project, "Sonatype", "https://oss.sonatype.org/content/repositories/snapshots/"); - addRepository(project, "Terraformers", "https://maven.terraformersmc.com/"); - addRepository(project, "YACL", "https://maven.isxander.dev/releases"); - addRepository(project, "Nucleoid", "https://maven.nucleoid.xyz/"); - addRepository(project, "Modrinth", "https://api.modrinth.com/maven", (repository) -> { - repository.content((descriptor) -> { - descriptor.includeGroup("maven.modrinth"); - }); - }); - - } - - private static void addRepository(Project project, String name, String url) { - addRepository(project, name, url, (repository) -> {}); - } - - private static void addRepository(Project project, String name, String url, Consumer consumer) { - project.getRepositories().maven((repository) -> { - repository.setName(name); - repository.setUrl(url); - consumer.accept(repository); - }); - } - - public static void apply(@NotNull Project project) { - project.getExtensions().create("mossyDependencies", MossyDependenciesExtension.class); - - addRepositories(project); - project.getGradle().addProjectEvaluationListener(new ProjectEvaluationListener() { - @Override - public void beforeEvaluate(@NotNull Project project) { - } - - @Override - public void afterEvaluate(@NotNull Project project, @NotNull ProjectState state) { - MossyDependenciesExtension extension = project.getExtensions().getByType(MossyDependenciesExtension.class); - MossyDependenciesManager.addDependencies(extension, project); - project.getGradle().removeProjectEvaluationListener(this); - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java deleted file mode 100644 index e77e652..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJ52JManager.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.mossy.manager; - -import dev.kikugie.fletching_table.extension.FletchingTableExtension; -import lombok.experimental.ExtensionMethod; -import net.lopymine.mossy.MossyPlugin; -import org.gradle.api.Project; - -@ExtensionMethod(MossyPlugin.class) -public class MossyJ52JManager { - - public static void apply(Project project) { - project.getExtensions().configure(FletchingTableExtension.class, (extension) -> { - var main = extension.getJ52j().register("main"); - main.configure((container) -> container.extension("json", "**/*.json5")); - }); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java deleted file mode 100644 index da89d8a..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyJavaManager.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.plugins.*; -import org.gradle.api.tasks.TaskCollection; -import org.gradle.api.tasks.compile.JavaCompile; - -import net.lopymine.mossy.MossyPlugin; - -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyJavaManager { - - public static void apply(@NotNull Project project, MossyPlugin mossyPlugin) { - int javaVersionIndex = mossyPlugin.getJavaVersionIndex(); - JavaVersion javaVersion = mossyPlugin.getJavaVersion(); - - TaskCollection collection = project.getTasks().withType(JavaCompile.class); - for (JavaCompile javaCompile : collection) { - javaCompile.getOptions().getRelease().set(javaVersionIndex); - } - - JavaPluginExtension javaExtension = project.getExtensions().getByType(JavaPluginExtension.class); - javaExtension.setSourceCompatibility(javaVersion); - javaExtension.setTargetCompatibility(javaVersion); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java deleted file mode 100644 index 4f63a65..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyLoomManager.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; - -import net.fabricmc.loom.api.LoomGradleExtensionAPI; -import net.fabricmc.loom.configuration.ide.RunConfigSettings; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.File; -import java.util.*; -import java.util.regex.Pattern; -import org.jetbrains.annotations.*; - -@ExtensionMethod(MossyPlugin.class) -public class MossyLoomManager { - - private static final Pattern PLAYER_NICKNAME_PATTERN = Pattern.compile("[a-zA-Z0-9_]{2,16}$"); - - @SuppressWarnings("UnstableApiUsage") - public static void apply(@NotNull Project project, MossyPlugin plugin, LoomGradleExtensionAPI loom) { - String modId = project.getProperty("data.mod_id"); - String currentVersion = plugin.getProjectMultiVersion().projectVersion(); - File file = project.getRootFile("src/main/resources/aws/%s.accesswidener".formatted(currentVersion)); - - // Mixins and AWs - - loom.getMixin().getDefaultRefmapName().set("%s.refmap.json".formatted(modId)); - loom.getAccessWidenerPath().set(file); - - // Run Configs - - Properties personalProperties = project.getPersonalProperties(); - - String playerNickname = getPlayerNickname(personalProperties); - UUID playerUuid = getPlayerUuid(personalProperties); - Object quickPlayWorld = personalProperties.get("quick_play_world"); - Object pathToSpongeMixin = personalProperties.get("absolute_path_to_sponge_mixin"); - - for (RunConfigSettings runConfig : loom.getRunConfigs()) { - runConfig.setIdeConfigGenerated(true); - runConfig.setRunDir("../../runs/" + runConfig.getEnvironment()); - - if (runConfig.getEnvironment().equals("client")) { - addProgramArg(runConfig, "--username", playerNickname); - addProgramArg(runConfig, "--uuid", playerUuid); - addProgramArg(runConfig, "--quickPlaySingleplayer", quickPlayWorld); - addVMArg(runConfig, "-javaagent", pathToSpongeMixin); - } - } - } - - private static String getPlayerNickname(Properties personalProperties) { - Object o = personalProperties.get("player_nickname"); - if (o == null) { - return "Player"; - } - String playerNickname = o.toString(); - if (!PLAYER_NICKNAME_PATTERN.matcher(playerNickname).matches()) { - return "Player"; - } - return playerNickname; - } - - private static @Nullable UUID getPlayerUuid(Properties personalProperties) { - try { - Object o = personalProperties.get("player_uuid"); - if (o == null) { - return null; - } - return UUID.fromString(o.toString()); - } catch (Exception e) { - return null; - } - } - - @SuppressWarnings("all") - private static void addVMArg(RunConfigSettings settings, String propertyKey, @Nullable Object propertyValue) { - if (propertyValue == null || propertyValue.toString().equals("none")) { - return; - } - settings.getVmArgs().add("%s:%s".formatted(propertyKey, propertyValue.toString())); - } - - private static void addProgramArg(RunConfigSettings settings, String propertyKey, @Nullable Object propertyValue) { - if (propertyValue == null || propertyValue.toString().equals("none")) { - return; - } - List programArgs = settings.getProgramArgs(); - programArgs.add(propertyKey); - programArgs.add(propertyValue.toString()); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java deleted file mode 100644 index 7210153..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyModPublishManager.java +++ /dev/null @@ -1,148 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import me.modmuss50.mpp.*; -import org.codehaus.groovy.runtime.ResourceGroovyMethods; -import org.gradle.api.*; -import org.gradle.api.file.RegularFile; -import org.gradle.api.provider.Provider; - -import net.fabricmc.loom.task.RemapJarTask; - -import net.lopymine.mossy.MossyPlugin; -import net.lopymine.mossy.multi.MultiVersion; - -import java.io.*; -import java.util.Arrays; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyModPublishManager { - - public static void apply(@NotNull Project project, MossyPlugin mossyPlugin, ModPublishExtension mpe) { - MultiVersion projectMultiVersion = mossyPlugin.getProjectMultiVersion(); - String name = "[%s] %s v%s".formatted(projectMultiVersion.toVersionRange(), project.getProperty("data.mod_name"), project.getProperty("data.mod_version")); - - String[] loaders = project.getProperty("loaders").split(" "); - String modrinthId = project.getProperty("modrinth_id"); - String curseForgeId = project.getProperty("curseforge_id"); - String[] dependsEmbeds = project.getProperty("depends_embeds").split(" "); - String[] dependsRequires = project.getProperty("depends_requires").split(" "); - String[] dependsOptional = project.getProperty("depends_optional").split(" "); - String[] dependsIncompatible = project.getProperty("depends_incompatible").split(" "); - String versionType = project.getProperty("version_type"); - int maxJavaVersion = Integer.parseInt(project.getProperty("max_java_version")); - Boolean isForClient = Boolean.parseBoolean(project.getProperty("is_for_client")); - Boolean isForServer = Boolean.parseBoolean(project.getProperty("is_for_server")); - boolean testPublish = Boolean.parseBoolean(project.getProperty("test_publish")); - - String curseForgeApiKey = project.getProviders().environmentVariable("CURSEFORGE_API_KEY").getOrNull(); - String modrinthApiKey = project.getProviders().environmentVariable("MODRINTH_API_KEY").getOrNull(); - - boolean cannotUpload = testPublish || ((curseForgeApiKey == null && !curseForgeId.equals("none")) || (modrinthApiKey == null && !modrinthId.equals("none"))); - - mpe.getDisplayName().set(name); - mpe.getFile().set(getModFile(project)); - mpe.getChangelog().set(getChangeLog(project)); - mpe.getType().set(getType(versionType)); - mpe.getModLoaders().set(Arrays.asList(loaders)); - mpe.getDryRun().set(cannotUpload); - - if (!curseForgeId.equals("none")) { - mpe.curseforge((curseforge) -> { - curseforge.getProjectId().set(curseForgeId); - curseforge.getAccessToken().set(curseForgeApiKey); - - for (int i = 17; i < maxJavaVersion + 1; i++) { - curseforge.getJavaVersions().add(JavaVersion.values()[i]); - } - - curseforge.getClientRequired().set(isForClient); - curseforge.getServerRequired().set(isForServer); - - if (projectMultiVersion.minIsMax()) { - curseforge.getMinecraftVersions().add(projectMultiVersion.maxVersion()); - } else { - curseforge.minecraftVersionRange((options) -> { - options.getStart().set(projectMultiVersion.minVersion()); - options.getEnd().set(projectMultiVersion.maxVersion()); - }); - } - - if (!dependsEmbeds[0].equals("none")) { - curseforge.embeds(dependsEmbeds); - } - if (!dependsRequires[0].equals("none")) { - curseforge.requires(dependsRequires); - } - if (!dependsOptional[0].equals("none")) { - curseforge.optional(dependsOptional); - } - if (!dependsIncompatible[0].equals("none")) { - curseforge.incompatible(dependsIncompatible); - } - }); - } - - if (!modrinthId.equals("none")) { - mpe.modrinth((modrinth) -> { - modrinth.getProjectId().set(modrinthId); - modrinth.getAccessToken().set(modrinthApiKey); - - if (projectMultiVersion.minIsMax()) { - modrinth.getMinecraftVersions().add(projectMultiVersion.maxVersion()); - } else { - modrinth.minecraftVersionRange((options) -> { - options.getStart().set(projectMultiVersion.minVersion()); - options.getEnd().set(projectMultiVersion.maxVersion()); - }); - } - - if (!dependsEmbeds[0].equals("none")) { - modrinth.embeds(dependsEmbeds); - } - if (!dependsRequires[0].equals("none")) { - modrinth.requires(dependsRequires); - } - if (!dependsOptional[0].equals("none")) { - modrinth.optional(dependsOptional); - } - if (!dependsIncompatible[0].equals("none")) { - modrinth.incompatible(dependsIncompatible); - } - }); - } - - MossyPlugin.LOGGER.logModule("MPP","Configuring \"%s\"", mpe.getDisplayName().get()); - MossyPlugin.LOGGER.logModule("MPP","Dry Run: %s", mpe.getDryRun().get()); - } - - private static Provider getModFile(@NotNull Project project) { - return ((RemapJarTask) project.getTasks().getByName("remapJar")).getArchiveFile(); - } - - private static ReleaseType getType(String versionType) { - return switch (versionType) { - case "RELEASE" -> ReleaseType.STABLE; - case "BETA" -> ReleaseType.BETA; - case "ALPHA" -> ReleaseType.ALPHA; - default -> throw new IllegalArgumentException("Unknown version type!"); - }; - } - - private static String getChangeLog(@NotNull Project project) { - try { - File file = project.getRootFile("CHANGELOG.md"); - if (file.exists()) { - String text = ResourceGroovyMethods.getText(file); - if (!text.isBlank()) { - return text; - } - } - } catch (IOException e) { - throw new RuntimeException("Failed to read changelog:", e); - } - return "No changelog specified."; - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java deleted file mode 100644 index 14a54f4..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyProcessResourcesManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.lopymine.mossy.manager; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.internal.TaskInputsInternal; -import org.gradle.language.jvm.tasks.ProcessResources; - -import net.lopymine.mossy.MossyPlugin; -import net.lopymine.mossy.extension.*; - -import java.util.*; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyProcessResourcesManager { - - public static void apply(@NotNull Project project, MossyPlugin plugin) { - project.getExtensions().create("mossyResources", MossyProcessResourcesExtension.class); - - project.getGradle().addProjectEvaluationListener(new ProjectEvaluationListener() { - @Override - public void beforeEvaluate(@NotNull Project project) { - } - - @Override - public void afterEvaluate(@NotNull Project project, @NotNull ProjectState state) { - MossyProcessResourcesExtension extension = project.getExtensions().getByType(MossyProcessResourcesExtension.class); - MossyProcessResourcesManager.processResources(project, plugin, extension); - project.getGradle().removeProjectEvaluationListener(this); - } - }); - } - - private static void processResources(Project project, MossyPlugin plugin, MossyProcessResourcesExtension extension) { - ProcessResources processResources = (ProcessResources) project.getTasks().getByName("processResources"); - TaskInputsInternal inputs = processResources.getInputs(); - - String mcVersion = plugin.getProjectMultiVersion().projectVersion(); - String modId = project.getProperty("data.mod_id"); - - Map properties = project.getMossyProperties("data"); - properties.putAll(project.getMossyProperties("build")); - properties.putAll(project.getMossyProperties("dep")); - properties.put("java", String.valueOf(plugin.getJavaVersionIndex())); - properties.put("minecraft", mcVersion); - properties.put("fabric_api_id", project.getStonecutter().compare("1.19.1", mcVersion) >= 0 ? "fabric" : "fabric-api"); - properties.put("mod_version", project.getVersion().toString()); - - properties.forEach(inputs::property); - - List patterns = new ArrayList<>(List.of("*.json5", "*.json", "assets/%s/lang/*.json".formatted(modId))); - List expandFiles = extension.getExpandFiles(); - if (expandFiles != null) { - patterns.addAll(expandFiles); - } - - processResources.filesMatching(patterns, (details) -> { - details.expand(properties); - }); - - processResources.filesMatching("aws/*.accesswidener", (details) -> { - if (!details.getName().startsWith(mcVersion)) { - details.exclude(); - } - }); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java b/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java deleted file mode 100644 index c9d2a41..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/manager/MossyStonecutterManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.lopymine.mossy.manager; - -import dev.kikugie.stonecutter.build.StonecutterBuildExtension; -import lombok.experimental.ExtensionMethod; -import org.gradle.api.Project; - -import net.lopymine.mossy.MossyPlugin; - -import java.util.Map; -import org.jetbrains.annotations.NotNull; - -@ExtensionMethod(MossyPlugin.class) -public class MossyStonecutterManager { - - public static void apply(@NotNull Project project, MossyPlugin plugin) { - StonecutterBuildExtension stonecutter = project.getStonecutter(); - - String mcVersion = plugin.getProjectMultiVersion().projectVersion(); - Map properties = project.getMossyProperties("data"); - properties.putAll(project.getMossyProperties("build")); - Map dependencies = project.getMossyProperties("dep"); - properties.putAll(dependencies); - properties.put("java", String.valueOf(plugin.getJavaVersionIndex())); - properties.put("minecraft", mcVersion); - properties.put("fabric_api_id", project.getStonecutter().compare("1.19.1", mcVersion) >= 0 ? "fabric" : "fabric-api"); - properties.put("mod_version", project.getVersion().toString()); - - properties.forEach((key, value) -> { - stonecutter.getSwaps().put(key, getFormatted(value)); - }); - - dependencies.forEach((modId, version) -> { - stonecutter.getConstants().put(modId, !version.equals("unknown")); - }); - } - - private static @NotNull String getFormatted(String modVersion) { - return "\"%s\";".formatted(modVersion); - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java b/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java deleted file mode 100644 index 334a809..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/multi/MultiVersion.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.lopymine.mossy.multi; - -import java.util.Objects; - -public record MultiVersion(String projectVersion, String minVersion, String maxVersion) { - - @Override - public String toString() { - if (!this.minVersion().equals(this.maxVersion())) { - return "%s[%s-%s]".formatted(this.projectVersion(), this.minVersion(), this.maxVersion()); - } - return "%s[%s]".formatted(this.projectVersion(), this.maxVersion()); - } - - public String toVersionRange() { - if (Objects.equals(this.minVersion(), this.maxVersion())) { - return this.maxVersion(); - } - - int aMin = this.minVersion().indexOf("."); - int bMin = this.minVersion().lastIndexOf("."); - if (aMin == bMin) { - bMin = this.minVersion().length(); - } - String minMain = this.minVersion().substring(0, bMin); - - int aMax = this.maxVersion().indexOf("."); - int bMax = this.maxVersion().lastIndexOf("."); - if (aMax == bMax) { - bMax = this.maxVersion().length(); - } - - String maxMain = this.maxVersion().substring(0, bMax); - String maxMinor = this.maxVersion().substring(bMax+1); - if (minMain.equals(maxMain)) { - return "%s-%s".formatted(this.minVersion(), maxMinor); - } - return "%s-%s".formatted(this.minVersion(), this.maxVersion()); - } - - public boolean minIsMax() { - return this.minVersion().equals(this.maxVersion()); - } - -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java b/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java deleted file mode 100644 index c8fdce4..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePersonalPropertiesTask.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.lopymine.mossy.tasks; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.tasks.TaskAction; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.*; -import java.nio.file.Files; - -@ExtensionMethod(MossyPlugin.class) -public class GeneratePersonalPropertiesTask extends DefaultTask { - - @TaskAction - public void generate() { - Project project = this.getProject(); - File file = project.getRootFile("personal/"); - if (!file.exists() && !file.mkdirs()) { - return; - } - try { - File personalPropertiesFile = file.toPath().resolve("personal.properties").toFile(); - if (personalPropertiesFile.exists()) { - return; - } - if (!personalPropertiesFile.createNewFile()) { - return; - } - - String strip = """ - # # # # # # # # # # # # # # - # Personal Properties # - # # # # # # # # # # # # # # - - # If you don't want to set up any property, just set it to "none". - # Remember to run "regenerateRunConfigurations" task after changing this file! - - # Player properties - player_nickname=Steve - player_uuid=8667ba71-b85a-4004-af54-457a9734eed7 - - # Hot Swapping - absolute_path_to_sponge_mixin=none - - # Quick Play - quick_play_world=none - """.stripIndent().strip(); - - Files.write(personalPropertiesFile.toPath(), strip.getBytes()); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java b/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java deleted file mode 100644 index 9358ece..0000000 --- a/buildSrc/src/main/java/net/lopymine/mossy/tasks/GeneratePublishWorkflowsForEachVersionTask.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.lopymine.mossy.tasks; - -import lombok.experimental.ExtensionMethod; -import org.gradle.api.*; -import org.gradle.api.tasks.TaskAction; - -import net.lopymine.mossy.MossyPlugin; - -import java.io.*; -import java.nio.file.Files; - -@ExtensionMethod(MossyPlugin.class) -public class GeneratePublishWorkflowsForEachVersionTask extends DefaultTask { - - @TaskAction - public void generate() { - Project project = this.getProject(); - File file = project.getRootFile(".github/workflows/"); - if (!file.exists() && !file.mkdirs()) { - return; - } - String[] multiVersions = project.getMultiVersions(); - for (String multiVersion : multiVersions) { - try { - File workflowFile = file.toPath().resolve("publish_%s.yml".formatted(multiVersion)).toFile(); - if (workflowFile.exists()) { - continue; - } - if (!workflowFile.createNewFile()) { - continue; - } - String strip = """ - # Generated workflow by task - - name: Publish MULTI_VERSION_ID Version - on: [workflow_dispatch] # Manual trigger - - permissions: - contents: write - - jobs: - build: - runs-on: ubuntu-22.04 - container: - image: mcr.microsoft.com/openjdk/jdk:21-ubuntu - options: --user root - steps: - - uses: actions/checkout@v4 - - name: make gradle wrapper executable - run: chmod +x ./gradlew - - name: Publish MULTI_VERSION_ID Mod Version - run: ./gradlew chiseledBuildAndCollect+MULTI_VERSION_ID chiseledPublish+MULTI_VERSION_ID - env: - CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }} - MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }} - """.replaceAll("MULTI_VERSION_ID", multiVersion).stripIndent().strip(); - Files.write(workflowFile.toPath(), strip.getBytes()); - } catch (Exception ignored) { - } - - } - } - -} diff --git a/gradle.properties b/gradle.properties index 4942826..82e20bb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,34 +2,48 @@ # Gradle Properties # # # # # # # # # # # # # # # -current_mossy_build_version = 1.0.0 - # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx16G +org.gradle.jvmargs=-Xmx24G org.gradle.parallel=true +# Mossy Plugin +mossy_plugin_version = 1.1.88-beta + +# Stonecutter +dev.kikugie.stonecutter.hard_mode=true + # Mod Properties -data.mod_id = particle-effects +data.mod_id = particle_effects data.mod_name = Particle Effects -data.mod_version = 1.0.8 +data.mod_version = 1.1.0 data.mod_group = net.lopymine.pe data.mod_maven_group = net.lopymine +data.mixin_configs = none data.mod_description = Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft! data.mod_authors = LopyMine, KlashRaick -data.mod_license = LGPL-3.0 +data.mod_license = CC-BY-ND 4.0 # Main Dependencies -base.lombok_version = 1.18.32 +base.lombok_version = 1.18.42 +base.mixinextras_version = 0.4.1 +base.mixin_version = 0.8.5 # Multi-Versions Properties # Verified version: 1.20 1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.20.6 1.21 1.21.1 1.21.2 1.21.3 -multi_versions = 1.20.1 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 +fabric.multi_versions = 1.20.1 1.21 1.21.1 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 +neoforge.multi_versions = 1.21.1 1.21.10 +forge.multi_versions = 1.20.1 + +# Mod Loaders +mod_loaders = fabric neoforge forge -# Build Dependencies -build.yarn = [VERSIONED] +# Mod Loader Dependencies Dependencies build.fabric_loader = 0.17.2 build.fabric_api = [VERSIONED] +build.neoforge = [VERSIONED] +build.parchment = [VERSIONED] +build.forge = [VERSIONED] # Additional Dependencies, "dep." is important dep.yacl = [VERSIONED] @@ -39,10 +53,11 @@ dep.modmenu = [VERSIONED] # Publication Properties # # # # # # # # # # # # # # # -# Mod Loaders -loaders = fabric # Versions Specifications -versions_specifications = 1.20.1 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 +fabric.versions_specifications = 1.21.10 +neoforge.versions_specifications = 1.21.10 +forge.versions_specifications = 1.21.10 + # Version Type [RELEASE, BETA, ALPHA] version_type = RELEASE @@ -58,8 +73,20 @@ is_for_client = true is_for_server = false max_java_version = 21 -# Mod Depends -depends_requires = fabric-api -depends_optional = modmenu yacl -depends_incompatible = none -depends_embeds = none +# Fabric Mod Depends +fabric.depends_requires = fabric-api +fabric.depends_optional = modmenu yacl +fabric.depends_incompatible = none +fabric.depends_embeds = none + +# NeoForge Mod Depends +neoforge.depends_requires = none +neoforge.depends_optional = yacl +neoforge.depends_incompatible = none +neoforge.depends_embeds = none + +# Forge Mod Depends +forge.depends_requires = none +forge.depends_optional = yacl +forge.depends_incompatible = none +forge.depends_embeds = none diff --git a/settings.gradle b/settings.gradle index d42fb72..9942978 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,5 @@ pluginManagement { repositories { - mavenLocal() - mavenCentral() - gradlePluginPortal() maven { name "Fabric" url "https://maven.fabricmc.net/" @@ -15,11 +12,25 @@ pluginManagement { name "Kiku Releases" url "https://maven.kikugie.dev/releases" } + maven { + name "Mossy Projects Releases" + url "https://maven.lopymine.net/releases" + } + maven { + name "Mossy Projects Snapshots" + url "https://maven.lopymine.net/snapshots" + } + maven { + name "NeoForge Releases" + url "https://maven.neoforged.net/releases" + } + mavenCentral() + gradlePluginPortal() + mavenLocal() } - includeBuild("buildSettings") } plugins { id "dev.kikugie.stonecutter" version "0.7.1" - id "net.lopymine.mossy-settings-plugin" + id "net.lopymine.mossy-plugin-settings" version "$mossy_plugin_version" } \ No newline at end of file diff --git a/src/main/java/net/lopymine/pe/ParticleEffects.java b/src/main/java/net/lopymine/pe/ParticleEffects.java index 7e81546..29fd8e7 100644 --- a/src/main/java/net/lopymine/pe/ParticleEffects.java +++ b/src/main/java/net/lopymine/pe/ParticleEffects.java @@ -1,37 +1,38 @@ package net.lopymine.pe; import lombok.*; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.network.chat.*; +import net.minecraft.resources.ResourceLocation; import org.slf4j.*; -import net.fabricmc.api.ModInitializer; - import net.lopymine.pe.config.ParticleEffectsConfig; import net.lopymine.pe.manager.ParticleEffectsManager; -public class ParticleEffects implements ModInitializer { +public class ParticleEffects { public static final String MOD_NAME = /*$ mod_name*/ "Particle Effects"; - public static final String MOD_ID = /*$ mod_id*/ "particle-effects"; + public static final String MOD_ID = /*$ mod_id*/ "particle_effects"; + public static final String YACL_DEPEND_VERSION = /*$ yacl*/ "3.8.0+1.21.9-fabric"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME); - public static Identifier id(String path) { - return Identifier.of(MOD_ID, path); + public static ResourceLocation id(String path) { + //? if >=1.21 { + return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); + //?} else { + /*return ResourceLocation.tryBuild(MOD_ID, path); + *///?} } - public static Text text(String path, Object... args) { - return Text.translatable(String.format("%s.%s", MOD_ID, path), args); + public static MutableComponent text(String path, Object... args) { + return Component.translatable(String.format("%s.%s", MOD_ID, path), args); } @Setter @Getter private static ParticleEffectsConfig config; - @Override - public void onInitialize() { + public static void onInitialize() { LOGGER.info("{} Initialized", MOD_NAME); ParticleEffects.config = ParticleEffectsConfig.getInstance(); - ParticleEffectsManager.onInitialize(); } } \ No newline at end of file diff --git a/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java b/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java index 14615d9..3952fc4 100644 --- a/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java +++ b/src/main/java/net/lopymine/pe/capture/ParticleCaptures.java @@ -1,19 +1,19 @@ package net.lopymine.pe.capture; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; import org.jetbrains.annotations.Nullable; public class ParticleCaptures { - private final static ThreadLocal MAIN = new ThreadLocal<>(); + private final static ThreadLocal MAIN = new ThreadLocal<>(); private final static ThreadLocal DEBUG_DATA = new ThreadLocal<>(); - public static void setParticle(ParticleEffect entity) { + public static void setParticle(ParticleOptions entity) { MAIN.set(entity); } @Nullable - public static ParticleEffect getParticle() { + public static ParticleOptions getParticle() { return MAIN.get(); } diff --git a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java index b5b6f1c..d34e12b 100644 --- a/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java +++ b/src/main/java/net/lopymine/pe/client/ParticleEffectsClient.java @@ -2,19 +2,14 @@ import org.slf4j.*; -import net.fabricmc.api.ClientModInitializer; - import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.manager.ParticleEffectsManager; -public class ParticleEffectsClient implements ClientModInitializer { +public class ParticleEffectsClient { public static Logger LOGGER = LoggerFactory.getLogger(ParticleEffects.MOD_NAME + "/Client"); - @Override - public void onInitializeClient() { + public static void onInitializeClient() { LOGGER.info("{} Client Initialized", ParticleEffects.MOD_NAME); - ParticleEffectsManager.onInitializeClient(); } } diff --git a/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java b/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java index 6ca6dd7..dd969a5 100644 --- a/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java +++ b/src/main/java/net/lopymine/pe/config/ParticleEffectsConfig.java @@ -2,14 +2,13 @@ import com.google.gson.*; import lombok.*; +import net.lopymine.pe.loader.MossyLoader; import org.slf4j.*; import com.mojang.serialization.*; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.fabricmc.loader.api.FabricLoader; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; import java.io.*; import java.nio.charset.StandardCharsets; @@ -26,7 +25,7 @@ public class ParticleEffectsConfig { Codec.BOOL.optionalFieldOf("debug_log", false).forGetter(ParticleEffectsConfig::isDebugLogEnabled) ).apply(instance, ParticleEffectsConfig::new)); - private static final File CONFIG_FILE = FabricLoader.getInstance().getConfigDir().resolve(ParticleEffects.MOD_ID + ".json5").toFile(); + private static final File CONFIG_FILE = MossyLoader.getConfigDir().resolve(ParticleEffects.MOD_ID + ".json5").toFile(); private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); private static final Logger LOGGER = LoggerFactory.getLogger(ParticleEffects.MOD_NAME + "/Config"); private boolean modEnabled; diff --git a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java index 7242a9b..96f543b 100644 --- a/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java +++ b/src/main/java/net/lopymine/pe/debug/DebugParticleInfoRenderer.java @@ -1,56 +1,71 @@ package net.lopymine.pe.debug; +import java.util.Queue; import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.mixin.ParticleEngineMixin; import net.lopymine.pe.particle.TexturedParticle; import net.lopymine.pe.utils.*; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.*; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.Font.DisplayMode; import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.Text; -import net.minecraft.util.math.*; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.NotNull; +import org.joml.Quaternionf; public class DebugParticleInfoRenderer { - public static void renderDebugInfo(MatrixStack matrices, Camera camera, float tickProgress, Iterable particles) { + public static void renderAll(PoseStack matrices, Vec3 camera, Quaternionf cameraRotation, float tickProgress) { + //? if >=1.21.9 { + for (ParticleGroup value : ((ParticleEngineMixin) Minecraft.getInstance().particleEngine).getParticles().values()) { + for (Particle particle : value.getAll()) { + renderDebugInfo(matrices, camera, cameraRotation, tickProgress, particle); + } + } + //?} else { + /*for (Queue value : ((ParticleEngineMixin) Minecraft.getInstance().particleEngine).getParticles().values()) { + for (Particle particle : value) { + renderDebugInfo(matrices, camera, cameraRotation, tickProgress, particle); + } + } + *///?} + } + + public static void renderDebugInfo(PoseStack matrices, Vec3 camera, Quaternionf cameraRotation, float tickProgress, Particle particle) { if (!ParticleEffects.getConfig().isDebugLogEnabled()) { return; } - for (Particle particle : particles) { - Vec3d vec3d = camera.getPos(); - float x = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastX /*?} else {*/ /*prevPosX *//*?}*/, particle.x) - vec3d.getX()); - float y = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastY /*?} else {*/ /*prevPosY *//*?}*/, particle.y) - vec3d.getY()); - float z = (float) (MathHelper.lerp(tickProgress, particle./*? if >=1.21.5 {*/ lastZ /*?} else {*/ /*prevPosZ *//*?}*/, particle.z) - vec3d.getZ()); - TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - - matrices.push(); - matrices.translate(x, y + 0.5D, z); - //? if <=1.21.8 { - matrices.multiply(camera.getRotation()); - matrices.scale(/*? if =1.20.1 {*//* - *//*?}*/0.015F, -0.015F, 0.015F); - int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - //?} + float x = (float) (Mth.lerp(tickProgress, particle.xo, particle.x) - camera.x()); + float y = (float) (Mth.lerp(tickProgress, particle.yo, particle.y) - camera.y()); + float z = (float) (Mth.lerp(tickProgress, particle.zo, particle.z) - camera.z()); + Font textRenderer = Minecraft.getInstance().font; - String[] text = getDebugInfo(particle); + matrices.pushPose(); + matrices.translate(x, y + 0.5D, z); + //? if <=1.21.8 { + /*matrices.mulPose(cameraRotation); + matrices.scale(/^? if =1.20.1 {^/ /^- ^//^?}^/0.015F, -0.015F, 0.015F); + *///?} - int yOffset = 0; - for (String line : text) { - //? if <=1.21.8 { - float f = (float) (-textRenderer.getWidth(line)) / 2.0F; - //?} - //? if >=1.21.9 { - /*MinecraftClient.getInstance().worldRenderer.entityRenderDispatcher.getQueue().submitLabel(matrices, Vec3d.ZERO, -yOffset, Text.literal(line), true, LightmapTextureManager.MAX_LIGHT_COORDINATE, 10, MinecraftClient.getInstance().worldRenderer.worldRenderState.cameraRenderState); - *///?} else { - textRenderer.draw(line, f, (float) -yOffset, -1, false, matrices.peek().getPositionMatrix(), MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(), net.minecraft.client.font.TextRenderer.TextLayerType.NORMAL, opacity, LightmapTextureManager.MAX_LIGHT_COORDINATE); - //?} - yOffset += textRenderer.fontHeight + 1; - } + String[] text = getDebugInfo(particle); - matrices.pop(); + int yOffset = 0; + for (String line : text) { + //? if >=1.21.9 { + Minecraft.getInstance().levelRenderer.featureRenderDispatcher.getSubmitNodeStorage().submitNameTag(matrices, Vec3.ZERO, -yOffset, Component.literal(line), false, LightTexture.FULL_BRIGHT, 10, Minecraft.getInstance().levelRenderer.levelRenderState.cameraRenderState); + //?} else { + /*float f = (float) (-textRenderer.width(line)) / 2.0F; + textRenderer.drawInBatch(line, f, (float) -yOffset, -1, false, matrices.last().pose(), Minecraft.getInstance().renderBuffers().bufferSource(), DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); + *///?} + yOffset += textRenderer.lineHeight + 1; } + + matrices.popPose(); } private static String @NotNull [] getDebugInfo(Particle particle) { @@ -68,17 +83,17 @@ public static void renderDebugInfo(MatrixStack matrices, Camera camera, float ti blue = ArgbUtils.getBlue(color); } else { //? if <=1.21.8 { - alpha = (int) (particle.alpha * 255); - red = (int) (particle.red * 255); - green = (int) (particle.green * 255); - blue = (int) (particle.blue * 255); + /*alpha = (int) (particle.alpha * 255); + red = (int) (particle.rCol * 255); + green = (int) (particle.gCol * 255); + blue = (int) (particle.bCol * 255); color = ArgbUtils.getArgb(alpha, red, green, blue); - //?} else { - /*if (particle instanceof BillboardParticle billboard) { + *///?} else { + if (particle instanceof SingleQuadParticle billboard) { alpha = (int) (billboard.alpha * 255); - red = (int) (billboard.red * 255); - green = (int) (billboard.green * 255); - blue = (int) (billboard.blue * 255); + red = (int) (billboard.rCol * 255); + green = (int) (billboard.gCol * 255); + blue = (int) (billboard.bCol * 255); color = ArgbUtils.getArgb(alpha, red, green, blue); } else { alpha = 255; @@ -87,7 +102,7 @@ public static void renderDebugInfo(MatrixStack matrices, Camera camera, float ti blue = 255; color = -1; } - *///?} + //?} } return new String[]{ diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java new file mode 100644 index 0000000..3eec0dd --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEFabricClientEntrypoint.java @@ -0,0 +1,21 @@ +package net.lopymine.pe.entrypoint; + +//? if fabric { + +import net.fabricmc.api.ClientModInitializer; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.manager.ParticleEffectsManager; + +public class PEFabricClientEntrypoint implements ClientModInitializer { + + @Override + public void onInitializeClient() { + ParticleEffectsClient.onInitializeClient(); + ParticleEffectsManager.registerParticleTypes(); + ParticleEffectsManager.swapParticleTypes(); + ParticleEffectsManager.registerParticleColorsForTypes(); + ParticleEffectsManager.registerParticleFactories(); + } +} + +//?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java new file mode 100644 index 0000000..6295c65 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEFabricEntrypoint.java @@ -0,0 +1,17 @@ +package net.lopymine.pe.entrypoint; + +//? if fabric { + +import net.lopymine.pe.ParticleEffects; + +import net.fabricmc.api.ModInitializer; + +public class PEFabricEntrypoint implements ModInitializer { + + @Override + public void onInitialize() { + ParticleEffects.onInitialize(); + } +} + +//?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java new file mode 100644 index 0000000..2fb0105 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEForgeClientEntrypoint.java @@ -0,0 +1,23 @@ +package net.lopymine.pe.entrypoint; + +//? if forge { + +/*import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.lopymine.pe.modmenu.PEModMenuIntegration; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.ModLoadingContext; + +public class PEForgeClientEntrypoint { + + public static void onInitializeClient(IEventBus eventBus) { + ParticleEffectsClient.onInitializeClient(); + eventBus.addListener(ParticleEffectsManager::onRegisterParticleProviders); + PEModMenuIntegration integration = new PEModMenuIntegration(); + integration.register(ModLoadingContext.get().getActiveContainer()); + } + +} + +*///?} + diff --git a/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java new file mode 100644 index 0000000..80d5c44 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PEForgeEntrypoint.java @@ -0,0 +1,31 @@ +package net.lopymine.pe.entrypoint; + +//? if forge { +/*import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLEnvironment; + +@Mod(ParticleEffects.MOD_ID) +public class PEForgeEntrypoint { + + public PEForgeEntrypoint() { + ParticleEffects.onInitialize(); + IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); + ParticleEffectsManager.PARTICLES_REGISTER.register(eventBus); + eventBus.addListener(ParticleEffectsManager::onCommonSetup); + + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + PEForgeClientEntrypoint.onInitializeClient(eventBus); + }); + + ParticleEffectsManager.registerParticleTypes(); + } + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java new file mode 100644 index 0000000..cc945c9 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeClientEntrypoint.java @@ -0,0 +1,24 @@ +package net.lopymine.pe.entrypoint; + +//? if neoforge { +/*import net.lopymine.pe.ParticleEffects; + +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.modmenu.*; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.*; +import net.neoforged.fml.common.Mod; + +@Mod(value = ParticleEffects.MOD_ID, dist = Dist.CLIENT) +public class PENeoForgeClientEntrypoint { + + public PENeoForgeClientEntrypoint(ModContainer container) { + ParticleEffectsClient.onInitializeClient(); + PEModMenuIntegration integration = new PEModMenuIntegration(); + integration.register(container); + } + +} + +*///?} + diff --git a/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java new file mode 100644 index 0000000..11fbb08 --- /dev/null +++ b/src/main/java/net/lopymine/pe/entrypoint/PENeoForgeEntrypoint.java @@ -0,0 +1,23 @@ +package net.lopymine.pe.entrypoint; + +//? if neoforge { +/*import net.lopymine.pe.ParticleEffects; + +import net.lopymine.pe.manager.ParticleEffectsManager; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.common.Mod; + +@Mod(ParticleEffects.MOD_ID) +public class PENeoForgeEntrypoint { + + public PENeoForgeEntrypoint(IEventBus eventBus) { + ParticleEffectsManager.PARTICLES_REGISTER.register(eventBus); + eventBus.addListener(ParticleEffectsManager::onCommonSetup); + eventBus.addListener(ParticleEffectsManager::registerParticleFactories); + ParticleEffects.onInitialize(); + ParticleEffectsManager.registerParticleTypes(); + } + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/extension/RegistryExtension.java b/src/main/java/net/lopymine/pe/extension/RegistryExtension.java new file mode 100644 index 0000000..91b901f --- /dev/null +++ b/src/main/java/net/lopymine/pe/extension/RegistryExtension.java @@ -0,0 +1,17 @@ +package net.lopymine.pe.extension; + +import java.util.List; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.Registry; + +public class RegistryExtension { + + public static List> references(Registry registry) { + //? if >=1.21.4 { + return registry.listElements().toList(); + //?} else { + /*return registry.holders().toList(); + *///?} + } + +} diff --git a/src/main/java/net/lopymine/pe/loader/MossyLoader.java b/src/main/java/net/lopymine/pe/loader/MossyLoader.java new file mode 100644 index 0000000..723518e --- /dev/null +++ b/src/main/java/net/lopymine/pe/loader/MossyLoader.java @@ -0,0 +1,66 @@ +package net.lopymine.pe.loader; + +//? if fabric { + +import net.fabricmc.loader.api.FabricLoader; +import java.nio.file.Path; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + return FabricLoader.getInstance().isModLoaded(modid); + } + + public static Path getConfigDir() { + return FabricLoader.getInstance().getConfigDir(); + } +} +//?} elif neoforge { + +/*import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLLoader; +import net.neoforged.fml.loading.*; +import java.nio.file.Path; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + if (loadingPhase) { + //? if >=1.21.10 { + /^return FMLLoader.getCurrent().getLoadingModList().getModFileById(modid) != null; + ^///?} else { + return FMLLoader.getLoadingModList().getModFileById(modid) != null; + //?} + } else { + return ModList.get().isLoaded(modid); + } + } + + public static Path getConfigDir() { + return FMLPaths.CONFIGDIR.get(); + } +} +*///?} elif forge { + +/*import java.nio.file.Path; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.FMLLoader; + +@SuppressWarnings("unused") +public class MossyLoader { + + public static boolean isModLoaded(String modid, boolean loadingPhase) { + if (loadingPhase) { + return FMLLoader.getLoadingModList().getModFileById(modid) != null; + } else { + return ModList.get().isLoaded(modid); + } + } + + public static Path getConfigDir() { + return net.minecraftforge.fml.loading.FMLPaths.CONFIGDIR.get(); + } +} +*///?} diff --git a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java index 8f895b4..d477b45 100644 --- a/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java +++ b/src/main/java/net/lopymine/pe/manager/ParticleEffectsManager.java @@ -1,103 +1,177 @@ package net.lopymine.pe.manager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import java.util.Map.Entry; import java.util.function.*; +import lombok.experimental.ExtensionMethod; import net.lopymine.pe.capture.ParticleCaptures; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.extension.RegistryExtension; +import net.lopymine.pe.particle.TexturedParticleFactory; import net.minecraft.client.particle.Particle; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.*; -import net.minecraft.potion.Potion; -import net.minecraft.registry.*; - -import net.minecraft.registry.entry.RegistryEntry.Reference; -import net.minecraft.util.Identifier; -import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; -import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; +import net.minecraft.core.*; +import net.minecraft.core.particles.*; +import net.minecraft.core.registries.*; +import net.minecraft.world.effect.*; +import net.minecraft.world.item.alchemy.Potion; + +import net.minecraft.core.Holder.Reference; +import net.minecraft.resources.ResourceLocation; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; -import net.lopymine.pe.particle.*; import net.lopymine.pe.utils.*; import java.util.*; import java.util.stream.*; -import net.minecraft.world.World; - -//? >=1.21 -import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Unique; +//? if fabric { + +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; +import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; + +//?} + +//? if neoforge { + +/*import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.client.event.*; +import net.neoforged.neoforge.registries.*; + +*///?} + +//? if forge { +/*import net.minecraftforge.client.event.RegisterParticleProvidersEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.registries.*; +*///?} + +@ExtensionMethod(RegistryExtension.class) public class ParticleEffectsManager { - private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); - private static final Map> COLOR_TO_PARTICLES_MAP = new HashMap<>(); - private static final HashMap MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE = getMinecraftEffectWidthTexturedParticles(); + //? if fabric { + private static final List REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map EFFECT_TO_PARTICLE = new HashMap<>(); + //?} + + //? if neoforge { + /*public static final DeferredRegister> PARTICLES_REGISTER = DeferredRegister.create(Registries.PARTICLE_TYPE, ParticleEffects.MOD_ID); + private static final List, SimpleParticleType>> REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map, SimpleParticleType>> EFFECT_TO_PARTICLE = new HashMap<>(); + *///?} + + //? if forge { + /*public static final DeferredRegister> PARTICLES_REGISTER = DeferredRegister.create(Registries.PARTICLE_TYPE, ParticleEffects.MOD_ID); + + private static final List> REGISTERED_PARTICLE_TYPES = new ArrayList<>(); + private static final Map> EFFECT_TO_PARTICLE = new HashMap<>(); + *///?} + + private static final Map> COLOR_TO_PARTICLES_MAP = new HashMap<>(); + private static final HashMap MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE = getMinecraftEffectWidthTexturedParticles(); @Nullable - public static List getParticleEffects(Integer i) { + public static List getParticleEffects(Integer i) { return COLOR_TO_PARTICLES_MAP.get(i); } - private static ParticleEffect registerParticleTypeForEffect(StatusEffect statusEffect, Identifier effectId) { + private static void registerParticleTypeForEffect(MobEffect statusEffect, ResourceLocation effectId) { + ResourceLocation modEffectId = getModEffectId(statusEffect, effectId); + + //? if fabric { // CREATE PARTICLE TYPE - ParticleEffect type = Registry.register( - Registries.PARTICLE_TYPE, - getModEffectId(statusEffect, effectId), // WE NEED IT TO AVOID ISSUE WITH VANILLA TEXTURED PARTICLES + ParticleOptions type = Registry.register( + BuiltInRegistries.PARTICLE_TYPE, + modEffectId, // WE NEED IT TO AVOID ISSUE WITH VANILLA TEXTURED PARTICLES FabricParticleTypes.simple() ); // ADD TO REGISTERED PARTICLES TO REGISTER THEIR FACTORY AT CLIENT LAYER REGISTERED_PARTICLE_TYPES.add(type); - return type; + EFFECT_TO_PARTICLE.put(statusEffect, type); + //?} + + //? if neoforge { + /*String registryName = modEffectId.getPath(); + DeferredHolder, SimpleParticleType> holder = PARTICLES_REGISTER.register(registryName, () -> new SimpleParticleType(false)); + REGISTERED_PARTICLE_TYPES.add(holder); + EFFECT_TO_PARTICLE.put(statusEffect, holder); + *///?} + + //? if forge { + /*String registryName = modEffectId.getPath(); + RegistryObject holder = PARTICLES_REGISTER.register(registryName, () -> new SimpleParticleType(false)); + REGISTERED_PARTICLE_TYPES.add(holder); + EFFECT_TO_PARTICLE.put(statusEffect, holder); + *///?} + } - private static Identifier getModEffectId(StatusEffect statusEffect, Identifier effectId) { + private static ResourceLocation getModEffectId(MobEffect statusEffect, ResourceLocation effectId) { boolean bl = MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE.containsValue(statusEffect); return ParticleEffects.id(effectId.getPath() + (bl ? "_new" : "")); } - public static void onInitialize() { + public static void registerParticleTypes() { //-----------------------------------------------------// // SWAP OLD PARTICLE TYPE OF STATUS EFFECTS TO NEW ONE // //-----------------------------------------------------// - for (Reference reference : Registries.STATUS_EFFECT.streamEntries().toList()) { - StatusEffect statusEffect = reference.value(); - Identifier id = reference.registryKey().getValue(); + for (Reference reference : BuiltInRegistries.MOB_EFFECT.references()) { + MobEffect statusEffect = reference.value(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } - // REGISTER NEW PARTICLE TYPE (AND EFFECT) - ParticleEffect type = ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); + ParticleEffectsManager.registerParticleTypeForEffect(statusEffect, id); + } + } + + public static void swapParticleTypes() { + //? if fabric { + for (Entry entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue()); + } + //?} - // SWAP PARTICLE TYPES - StatusEffectUtils.swapParticle(statusEffect, type); + //? if neoforge { + /*for (Entry, SimpleParticleType>> entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue().get()); } + *///?} + + //? if forge { + /*for (Entry> entry : EFFECT_TO_PARTICLE.entrySet()) { + StatusEffectUtils.swapParticle(entry.getKey(), entry.getValue().get()); + } + *///?} + } + public static void registerParticleColorsForTypes() { //---------------------------------------------------// // REGISTER EACH POTION COLOR TO LIST POTION EFFECTS // // POTION COLOR = MIXED COLORS OF EFFECTS // //---------------------------------------------------// - for (Reference reference : Registries.POTION.streamEntries().toList()) { + for (Reference reference : BuiltInRegistries.POTION.references()) { Potion potion = reference.value(); - Identifier id = reference.registryKey().getValue(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } - List effects = potion.getEffects(); + List effects = potion.getEffects(); //? =1.20.1 { /*int color = ArgbUtils.getColorWithoutAlpha(StatusEffectUtils.getColor(effects)); - List particleEffects = effects.stream() - .map(StatusEffectInstance::getEffectType) + List particleEffects = effects.stream() + .map(MobEffectInstance::getEffect) .flatMap((effect) -> { - ParticleEffect particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); if (particleEffect == null) { - ParticleEffectsClient.LOGGER.error("[DEV/Potion Registration] Looks like {} effect (from potion with color {}) doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getName().getString()); + ParticleEffectsClient.LOGGER.error("[DEV/Potion Registration] Looks like {} effect (from potion with color {}) doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getDisplayName().getString()); return Stream.empty(); } return Stream.of(particleEffect); @@ -105,20 +179,20 @@ public static void onInitialize() { .toList(); *///?} else { - OptionalInt optional = net.minecraft.component.type.PotionContentsComponent.mixColors(effects); + OptionalInt optional = net.minecraft.world.item.alchemy.PotionContents.getColorOptional(effects); if (optional.isEmpty()) { continue; } int color = ArgbUtils.getColorWithoutAlpha(optional.getAsInt()); - List particleEffects = effects.stream() - .map(StatusEffectInstance::getEffectType) - .map(RegistryEntry::value) + List particleEffects = effects.stream() + .map(MobEffectInstance::getEffect) + .map(Holder::value) .flatMap((effect) -> { - ParticleEffect particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) effect).particleEffects$getParticleEffect(); if (particleEffect == null) { - ParticleEffects.LOGGER.error("[DEV/Potion Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getName().getString()); + ParticleEffects.LOGGER.error("[DEV/Potion Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping it registration.", color, effect.getDisplayName().getString()); return Stream.empty(); } return Stream.of(particleEffect); @@ -133,28 +207,28 @@ public static void onInitialize() { // NOT ALL EFFECTS CAN BE FOUND IN POTIONS, SO, WE ALSO // // NEED TO REGISTER EACH EFFECT COLOR TO THEIR EFFECT // //------------------------------------------------------// - for (Reference reference : Registries.STATUS_EFFECT.streamEntries().toList()) { - StatusEffect statusEffect = reference.value(); - Identifier id = reference.registryKey().getValue(); + for (Reference reference : BuiltInRegistries.MOB_EFFECT.references()) { + MobEffect statusEffect = reference.value(); + ResourceLocation id = reference.key().location(); if (!id.getNamespace().equals("minecraft")) { continue; } int color = ArgbUtils.getColorWithoutAlpha(statusEffect.getColor()); - ParticleEffect particleEffect = ((PEStatusEffect) statusEffect).particleEffects$getParticleEffect(); + ParticleOptions particleEffect = ((PEStatusEffect) statusEffect).particleEffects$getParticleEffect(); // WE SET PARTICLE EFFECT(AND TYPE) AT FIRST PHASE // WHEN WE REGISTERED NEW PARTICLE TYPE if (particleEffect == null) { - ParticleEffects.LOGGER.error("[DEV/Effect Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping its registration.", color, statusEffect.getName().getString()); + ParticleEffects.LOGGER.error("[DEV/Effect Registration] Looks like {} effect with color {} doesn't have textured particle, this shouldn't happen! Skipping its registration.", color, statusEffect.getDisplayName().getString()); continue; } - List effects = COLOR_TO_PARTICLES_MAP.get(color); + List effects = COLOR_TO_PARTICLES_MAP.get(color); if (effects != null) { if (ParticleEffects.getConfig().isDebugLogEnabled()) { - ParticleEffects.LOGGER.warn("[DEV/Effect Registration] Found registered effects for color {} from {} effect, skipping its registration. If you just mod user, ignore it.", color, statusEffect.getName().getString()); + ParticleEffects.LOGGER.warn("[DEV/Effect Registration] Found registered effects for color {} from {} effect, skipping its registration. If you just mod user, ignore it.", color, statusEffect.getDisplayName().getString()); } } else { COLOR_TO_PARTICLES_MAP.put(color, List.of(particleEffect)); @@ -162,41 +236,77 @@ public static void onInitialize() { } } - public static void onInitializeClient() { - for (ParticleEffect type : REGISTERED_PARTICLE_TYPES) { - ParticleFactoryRegistry.getInstance().register((/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/) type, TexturedParticleFactory::new); + //? if fabric { + public static void registerParticleFactories() { + for (ParticleOptions type : REGISTERED_PARTICLE_TYPES) { + ParticleFactoryRegistry.getInstance().register((SimpleParticleType) type, TexturedParticleFactory::new); } } + //?} + + //? if neoforge { + /*@SubscribeEvent + public static void registerParticleFactories(RegisterParticleProvidersEvent event) { + for (DeferredHolder, SimpleParticleType> holder : REGISTERED_PARTICLE_TYPES) { + event.registerSpriteSet(holder.get(), TexturedParticleFactory::new); + } + } + + @SubscribeEvent + public static void onCommonSetup(FMLCommonSetupEvent event) { + event.enqueueWork(() -> { + swapParticleTypes(); + registerParticleColorsForTypes(); + }); + } + *///?} + + //? if forge { + /*@SubscribeEvent + public static void onRegisterParticleProviders(RegisterParticleProvidersEvent event) { + for (RegistryObject holder : REGISTERED_PARTICLE_TYPES) { + event.registerSpriteSet(holder.get(), TexturedParticleFactory::new); + } + } + + @SubscribeEvent + public static void onCommonSetup(FMLCommonSetupEvent event) { + event.enqueueWork(() -> { + swapParticleTypes(); + registerParticleColorsForTypes(); + }); + } + *///?} - private static HashMap getMinecraftEffectWidthTexturedParticles() { + private static HashMap getMinecraftEffectWidthTexturedParticles() { //? =1.20.1 { /*return new HashMap<>(); *///?} else { - HashMap map = new HashMap<>(); + HashMap map = new HashMap<>(); - map.put(ParticleTypes.ITEM_SLIME, StatusEffects.OOZING.value()); - map.put(ParticleTypes.ITEM_COBWEB, StatusEffects.WEAVING.value()); - map.put(ParticleTypes.INFESTED, StatusEffects.INFESTED.value()); - map.put(ParticleTypes.TRIAL_OMEN, StatusEffects.TRIAL_OMEN.value()); - map.put(ParticleTypes.RAID_OMEN, StatusEffects.RAID_OMEN.value()); - map.put(ParticleTypes.SMALL_GUST, StatusEffects.WIND_CHARGED.value()); + map.put(ParticleTypes.ITEM_SLIME, MobEffects.OOZING.value()); + map.put(ParticleTypes.ITEM_COBWEB, MobEffects.WEAVING.value()); + map.put(ParticleTypes.INFESTED, MobEffects.INFESTED.value()); + map.put(ParticleTypes.TRIAL_OMEN, MobEffects.TRIAL_OMEN.value()); + map.put(ParticleTypes.RAID_OMEN, MobEffects.RAID_OMEN.value()); + map.put(ParticleTypes.SMALL_GUST, MobEffects.WIND_CHARGED.value()); return map; //?} } - public static StatusEffect getVanillaStatusEffectByStatusEffect(ParticleEffect parameters) { + public static MobEffect getVanillaStatusEffectByStatusEffect(ParticleOptions parameters) { return MINECRAFT_EFFECTS_WITH_TEXTURED_PARTICLE.get(parameters); } - public static void processSplashPotionStageOne(LocalRef> localParticleEffects, int color) { + public static void processSplashPotionStageOne(LocalRef> localParticleEffects, int color) { localParticleEffects.set(null); if (!ParticleEffects.getConfig().isModEnabled()) { return; } - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { return; } @@ -204,14 +314,14 @@ public static void processSplashPotionStageOne(LocalRef> lo localParticleEffects.set(list); } - public static Particle processSplashPotionStageTwo(@Nullable World world, ParticleEffect original, Function function, LocalRef> localParticleEffects, int color) { + public static Particle processSplashPotionStageTwo(@Nullable Level world, ParticleOptions original, Function function, LocalRef> localParticleEffects, int color) { Supplier particleSupplier = () -> function.apply(original); if (!ParticleEffects.getConfig().isModEnabled()) { return markDebugData(21, particleSupplier); } - List list = localParticleEffects.get(); + List list = localParticleEffects.get(); if (list == null) { return markDebugData(22, particleSupplier); } @@ -221,7 +331,7 @@ public static Particle processSplashPotionStageTwo(@Nullable World world, Partic if (world == null) { return markDebugData(24, particleSupplier); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, world.getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, world.getRandom()); if (particleEffect == null) { return markDebugData(25, particleSupplier); } @@ -234,7 +344,7 @@ public static Particle processSplashPotionStageTwo(@Nullable World world, Partic return apply; } - public static Particle swapParticle(World world, ParticleEffect original, Function function, Supplier originalCall/*? if =1.20.1 {*/, double x, double y, double z /*?}*/) { + public static Particle swapParticle(Level world, ParticleOptions original, Function function, Supplier originalCall/*? if =1.20.1 {*//*, double x, double y, double z *//*?}*/) { if (!ParticleEffects.getConfig().isModEnabled()) { return markDebugData(10, originalCall); } @@ -254,10 +364,10 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi *///?} else { int color; - if (original instanceof /*? if >=1.21.8 {*/ TintedParticleEffect /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER + if (original instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*ColorParticleOption *//*?}*/ effect) { // RECEIVES IN SINGLEPLAYER AND IN MULTIPLAYER color = effect.color; } else { - StatusEffect statusEffect = ParticleEffectsManager.getVanillaStatusEffectByStatusEffect(original); + MobEffect statusEffect = ParticleEffectsManager.getVanillaStatusEffectByStatusEffect(original); color = statusEffect == null ? 0 : ArgbUtils.getColorWithoutAlpha(statusEffect.getColor()); } @@ -266,7 +376,7 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi } //?} - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { return markDebugData(14, originalCall); } @@ -277,7 +387,7 @@ public static Particle swapParticle(World world, ParticleEffect original, Functi return markDebugData(16, originalCall); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, world.getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, world.getRandom()); if (particleEffect == null) { return markDebugData(17, originalCall); } diff --git a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java index a21cf7d..e36c186 100644 --- a/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/AreaEffectCloudEntityMixin.java @@ -1,93 +1,89 @@ package net.lopymine.pe.mixin; -import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.injector.wrapoperation.*; -import java.util.function.Supplier; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.client.particle.Particle; -import net.minecraft.entity.*; -import net.minecraft.particle.*; -import net.minecraft.world.World; +import net.minecraft.core.particles.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.client.ParticleEffectsClient; import net.lopymine.pe.manager.ParticleEffectsManager; import net.lopymine.pe.utils.*; import java.util.List; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(AreaEffectCloudEntity.class) +@Mixin(AreaEffectCloud.class) public abstract class AreaEffectCloudEntityMixin extends Entity { @Unique - private boolean needReset; + private boolean particleEffects$needReset; @Unique - private boolean needResetDebugData; + private boolean particleEffects$needResetDebugData; //? =1.20.1 /*@Shadow public abstract int getColor();*/ - public AreaEffectCloudEntityMixin(EntityType type, World world) { + public AreaEffectCloudEntityMixin(EntityType type, Level world) { super(type, world); } // LINGERING POTION - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/AreaEffectCloudEntity;getParticleType()Lnet/minecraft/particle/ParticleEffect;"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) - private ParticleEffect swapParticleType(AreaEffectCloudEntity instance, Operation original) { - ParticleEffect originalParticle = original.call(instance); + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/AreaEffectCloud;getParticle()Lnet/minecraft/core/particles/ParticleOptions;"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) + private ParticleOptions swapParticleType(AreaEffectCloud instance, Operation original) { + ParticleOptions originalParticle = original.call(instance); if (!ParticleEffects.getConfig().isModEnabled()) { - return this.markDebugData(31, originalParticle); + return this.particleEffects$markDebugData(31, originalParticle); } //? =1.20.1 { /*int color = this.getColor(); *///?} else { - if (!(originalParticle instanceof /*? if >=1.21.8 {*/ TintedParticleEffect /*?} else {*/ /*EntityEffectParticleEffect *//*?}*/ effect)) { - return this.markDebugData(32, originalParticle); + if (!(originalParticle instanceof /*? if >=1.21.8 {*/ ColorParticleOption /*?} else {*/ /*ColorParticleOption *//*?}*/ effect)) { + return this.particleEffects$markDebugData(32, originalParticle); } int color = effect.color; //?} - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { - return this.markDebugData(33, originalParticle); + return this.particleEffects$markDebugData(33, originalParticle); } if (list.isEmpty()) { - return this.markDebugData(34, originalParticle); + return this.particleEffects$markDebugData(34, originalParticle); } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ /*getEntityWorld *//*?} else {*/ getWorld /*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { - return this.markDebugData(35, originalParticle); + return this.particleEffects$markDebugData(35, originalParticle); } ((PEType) particleEffect).particleEffects$setColor(color); ParticleCaptures.setParticle(particleEffect); - this.needReset = true; + this.particleEffects$needReset = true; return particleEffect; } @Inject(at = @At("TAIL"), method = /*? if >=1.21.2 {*/ "clientTick" /*?} else {*/ /*"tick" *//*?}*/) private void resetParticle(CallbackInfo ci) { - if (this.needReset) { - this.needReset = false; + if (this.particleEffects$needReset) { + this.particleEffects$needReset = false; ParticleCaptures.setParticle(null); } - if (this.needResetDebugData) { - this.needResetDebugData = false; + if (this.particleEffects$needResetDebugData) { + this.particleEffects$needResetDebugData = false; ParticleCaptures.setDebugData(null); } } @Unique - private ParticleEffect markDebugData(int data, ParticleEffect originalParticle) { + private ParticleOptions particleEffects$markDebugData(int data, ParticleOptions originalParticle) { ParticleCaptures.setDebugData(data); - this.needResetDebugData = true; + this.particleEffects$needResetDebugData = true; return originalParticle; } diff --git a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java index 57aad6e..8a7b2f7 100644 --- a/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ArrowEntityMixin.java @@ -6,38 +6,37 @@ import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.manager.ParticleEffectsManager; import net.lopymine.pe.utils.*; -import net.minecraft.entity.*; -import net.minecraft.entity.projectile.ArrowEntity; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ArrowEntity.class) +@Mixin(Arrow.class) public abstract class ArrowEntityMixin extends Entity { - public ArrowEntityMixin(EntityType type, World world) { + public ArrowEntityMixin(EntityType type, Level world) { super(type, world); } - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/World;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "spawnParticles") - private void markParticleFromArrow(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Local(ordinal = 1) int color) { + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" *//*?}*/), method = "makeParticle") + private void markParticleFromArrow(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Local(ordinal = 1) int color) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); - List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); + List list = ParticleEffectsManager.getParticleEffects(ArgbUtils.getColorWithoutAlpha(color)); if (list == null) { - this.markDebugData(41, originalCall); + this.particleEffects$markDebugData(41, originalCall); return; } if (list.isEmpty()) { - this.markDebugData(43, originalCall); + this.particleEffects$markDebugData(43, originalCall); return; } - ParticleEffect particleEffect = ListUtils.getRandomElement(list, this./*? if >=1.21.9 {*/ /*getEntityWorld *//*?} else {*/ getWorld /*?}*/().getRandom()); + ParticleOptions particleEffect = ListUtils.getRandomElement(list, this.level().getRandom()); if (particleEffect == null) { - this.markDebugData(44, originalCall); + this.particleEffects$markDebugData(44, originalCall); return; } @@ -48,7 +47,7 @@ private void markParticleFromArrow(World instance, ParticleEffect parameters, do } @Unique - private void markDebugData(int data, Runnable originalCall) { + private void particleEffects$markDebugData(int data, Runnable originalCall) { ParticleCaptures.setDebugData(data); originalCall.run(); ParticleCaptures.setDebugData(null); diff --git a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java deleted file mode 100644 index 4be5b81..0000000 --- a/src/main/java/net/lopymine/pe/mixin/BillboardParticleRendererMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.lopymine.pe.mixin; - -//? if >=1.21.9 { - -/*import net.lopymine.pe.debug.DebugParticleInfoRenderer; -import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.*; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(BillboardParticleRenderer.class) -public abstract class BillboardParticleRendererMixin extends ParticleRenderer { - - public BillboardParticleRendererMixin(ParticleManager particleManager) { - super(particleManager); - } - - @Inject(at = @At("HEAD"), method = "render") - private void renderDebugInfo(Frustum frustum, Camera camera, float tickProgress, CallbackInfoReturnable cir) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickProgress, this.particles); - } - -} -*///?} diff --git a/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java b/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java index cf1fd71..71a12b7 100644 --- a/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ClientWorldMixin.java @@ -1,24 +1,24 @@ package net.lopymine.pe.mixin; //? if >=1.21.9 { -/*import com.llamalad7.mixinextras.injector.wrapoperation.*; +import com.llamalad7.mixinextras.injector.wrapoperation.*; import java.util.function.Function; import net.lopymine.pe.manager.ParticleEffectsManager; import net.minecraft.client.particle.*; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(ClientWorld.class) +@Mixin(ClientLevel.class) public class ClientWorldMixin { - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleManager;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "addParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)V") - private Particle swapParticle(ParticleManager instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { - Function function = (effect) -> original.call(instance, effect, x, y, z, velocityX, velocityY, velocityZ); - return ParticleEffectsManager.swapParticle(((World) (Object) this), parameters, function, () -> function.apply(parameters)); + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleEngine;createParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "doAddParticle(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)V") + private Particle swapParticle(ParticleEngine instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + Function function = (effect) -> original.call(instance, effect, x, y, z, velocityX, velocityY, velocityZ); + return ParticleEffectsManager.swapParticle(((Level) (Object) this), parameters, function, () -> function.apply(parameters)); } } -*///?} +//?} diff --git a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java index c2e0904..7a34c28 100644 --- a/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/LivingEntityMixin.java @@ -2,47 +2,46 @@ //? =1.20.1 { /*import com.llamalad7.mixinextras.injector.wrapoperation.*; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.ColorHelper.Argb; -import net.minecraft.util.math.random.Random; -import net.minecraft.world.World; +import net.lopymine.pe.utils.*; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.util.RandomSource; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import net.lopymine.pe.ParticleEffects; -import net.lopymine.pe.utils.ListUtils; import java.util.*; @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { - @Shadow public abstract Map getActiveStatusEffects(); + @Shadow public abstract Map getActiveEffectsMap(); - @Shadow public abstract Random getRandom(); + @Shadow public abstract RandomSource getRandom(); - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V"), method = "tickStatusEffects") - private void swapParticle(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V"), method = "tickEffects") + private void swapParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { Runnable originalCall = () -> original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); if (!ParticleEffects.getConfig().isModEnabled()) { - this.markDebugData(51, originalCall); + this.particleEffects$markDebugData(51, originalCall); return; } - Set effects = this.getActiveStatusEffects().keySet(); + Set effects = this.getActiveEffectsMap().keySet(); if (!effects.isEmpty()) { - StatusEffect statusEffect = ListUtils.getRandomElement(effects.stream().toList(), this.getRandom()); + MobEffect statusEffect = ListUtils.getRandomElement(effects.stream().toList(), this.getRandom()); if (statusEffect == null) { - this.markDebugData(52, originalCall); + this.particleEffects$markDebugData(52, originalCall); return; } int color = statusEffect.getColor(); - double red = Argb.getRed(color) / 255.0; - double green = Argb.getGreen(color) / 255.0; - double blue = Argb.getBlue(color) / 255.0; + double red = ArgbUtils.getRed(color) / 255.0; + double green = ArgbUtils.getGreen(color) / 255.0; + double blue = ArgbUtils.getBlue(color) / 255.0; ParticleCaptures.setParticle(parameters); original.call(instance, parameters, x, y, z, red, green, blue); @@ -55,7 +54,7 @@ private void swapParticle(World instance, ParticleEffect parameters, double x, d } @Unique - private void markDebugData(int data, Runnable originalCall) { + private void particleEffects$markDebugData(int data, Runnable originalCall) { ParticleCaptures.setDebugData(data); originalCall.run(); ParticleCaptures.setDebugData(null); diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java new file mode 100644 index 0000000..6250ddc --- /dev/null +++ b/src/main/java/net/lopymine/pe/mixin/ParticleEngineMixin.java @@ -0,0 +1,19 @@ +package net.lopymine.pe.mixin; + +import java.util.*; +import net.minecraft.client.particle.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ParticleEngine.class) +public interface ParticleEngineMixin { + + //? if <=1.21.8 { + /*@Accessor("particles") + Map> getParticles(); + *///?} else { + @Accessor("particles") + Map> getParticles(); + //?} + +} diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java index 287d541..94974d5 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleManagerMixin.java @@ -3,63 +3,37 @@ import com.llamalad7.mixinextras.injector.wrapoperation.*; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; import java.util.*; -import net.lopymine.pe.ParticleEffects; +import java.util.function.Predicate; import net.lopymine.pe.capture.ParticleCaptures; import net.lopymine.pe.debug.DebugParticleInfoRenderer; import net.lopymine.pe.utils.*; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.font.TextRenderer.TextLayerType; +import net.minecraft.client.Camera; import net.minecraft.client.particle.*; -import net.minecraft.client.render.*; -import net.minecraft.client.render.VertexConsumerProvider.Immediate; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.random.Random; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.MultiBufferSource.BufferSource; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.util.RandomSource; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ParticleManager.class) +@Mixin(ParticleEngine.class) public class ParticleManagerMixin { - //? if =1.20.1 { - /*@Shadow - @Final - private Map> particles; - *///?} - - //? if >=1.21.4 && <=1.21.8 { - @Inject(at = @At(value = "TAIL"), method = "renderParticles(Lnet/minecraft/client/render/Camera;FLnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/particle/ParticleTextureSheet;Ljava/util/Queue;)V") - private static void renderDebugInfo(Camera camera, float tickProgress, Immediate vertexConsumers, ParticleTextureSheet sheet, Queue particles, CallbackInfo ci) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickProgress, particles); - } - //?} elif >=1.21 && <=1.21.8 { - /*@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferRenderer;drawWithGlobalProgram(Lnet/minecraft/client/render/BuiltBuffer;)V", shift = Shift.AFTER), method = "renderParticles") - private void renderDebugInfo(LightmapTextureManager lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local Queue particles) { - DebugParticleInfoRenderer.renderDebugInfo(new MatrixStack(), camera, tickDelta, particles); - } - *///?} elif <=1.21.8 { - /*@Inject(at = @At(value = "TAIL"), method = "renderParticles") - private void renderDebugInfo(MatrixStack matrices, Immediate vertexConsumers, LightmapTextureManager lightmapTextureManager, Camera camera, float tickDelta, CallbackInfo ci, @Local(ordinal = 1) MatrixStack stack) { - for (Queue value : this.particles.values()) { - DebugParticleInfoRenderer.renderDebugInfo(matrices, camera, tickDelta, value); - } - } - *///?} - //? if >=1.21.9 { - /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/util/math/random/Random;)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") - private Particle markParticle(ParticleFactory instance, ParticleEffect t, ClientWorld clientWorld, double a, double b, double c, double d, double e, double v, Random random, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleProvider;createParticle(Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/util/RandomSource;)Lnet/minecraft/client/particle/Particle;"), method = "makeParticle") + private Particle markParticle(ParticleProvider instance, ParticleOptions t, ClientLevel clientWorld, double a, double b, double c, double d, double e, double v, RandomSource random, Operation original) { Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v, random); - *///?} else { - @WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleFactory;createParticle(Lnet/minecraft/particle/ParticleEffect;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "createParticle") - private Particle markParticle(ParticleFactory instance, ParticleEffect t, ClientWorld clientWorld, double a, double b, double c, double d, double e, double v, Operation original) { - Particle particle = original.call(instance, t, clientWorld, a, b, c, d, e, v); - //?} + //?} else { + /*@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/ParticleProvider;createParticle(Lnet/minecraft/core/particles/ParticleOptions;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)Lnet/minecraft/client/particle/Particle;"), method = "makeParticle") + private Particle markParticle(ParticleProvider instance, ParticleOptions particleOptions, ClientLevel clientLevel, double a, double b, double c, double d, double e, double v, Operation original) { + Particle particle = original.call(instance, particleOptions, clientLevel, a, b, c, d, e, v); + *///?} Integer debugData = ParticleCaptures.getDebugData(); if (debugData != null && particle != null) { ((PEDebugParticle) particle).particleEffects$setDebugData(debugData); diff --git a/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java b/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java index f5a10e6..f8363d6 100644 --- a/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/ParticleMixin.java @@ -8,15 +8,15 @@ public class ParticleMixin implements PEDebugParticle { @Unique - private int debugData = 0; + private int particleEffects$debugData = 0; @Override public void particleEffects$setDebugData(int i) { - this.debugData = i; + this.particleEffects$debugData = i; } @Override public int particleEffects$getDebugData() { - return this.debugData; + return this.particleEffects$debugData; } } diff --git a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java index 4092ea8..b0e55c9 100644 --- a/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SecondLivingEntityMixin.java @@ -4,18 +4,17 @@ import com.llamalad7.mixinextras.injector.wrapoperation.*; import net.lopymine.pe.capture.ParticleCaptures; -import net.minecraft.entity.LivingEntity; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(LivingEntity.class) public class SecondLivingEntityMixin { - @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/World;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" /*?} else {*/ - /*"Lnet/minecraft/world/World;addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V" *//*?}*/), method = "tickStatusEffects") - private void markParticle(World instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { + @WrapOperation(at = @At(value = "INVOKE", target = /*? if >=1.21.5 {*/ "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" /*?} else {*/ /*"Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V" *//*?}*/), method = "tickEffects") + private void markParticle(Level instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { ParticleCaptures.setParticle(parameters); original.call(instance, parameters, x, y, z, velocityX, velocityY, velocityZ); ParticleCaptures.setParticle(null); diff --git a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java index 0056b53..3053f36 100644 --- a/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/SimpleParticleTypeMixin.java @@ -1,27 +1,27 @@ package net.lopymine.pe.mixin; import net.lopymine.pe.utils.*; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.core.particles.SimpleParticleType; import org.spongepowered.asm.mixin.*; -@Mixin(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/.class) +@Mixin(SimpleParticleType.class) public class SimpleParticleTypeMixin implements PEType { @Unique - private int color; + private int particleEffects$color; @Override public int particleEffects$getColor() { - return this.color; + return this.particleEffects$color; } @Override public void particleEffects$setColor(int color) { // alpha not supported at <1.21 //? if <1.21 { - /*this.color = ArgbUtils.getArgb(255, ArgbUtils.getRed(color), ArgbUtils.getGreen(color), ArgbUtils.getBlue(color)); + /*this.particleEffects$color = ArgbUtils.getArgb(255, ArgbUtils.getRed(color), ArgbUtils.getGreen(color), ArgbUtils.getBlue(color)); *///?} else { - this.color = color; + this.particleEffects$color = color; //?} } } diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java index 2458995..a89587a 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectMixin.java @@ -1,23 +1,23 @@ package net.lopymine.pe.mixin; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.effect.MobEffect; import org.spongepowered.asm.mixin.*; import net.lopymine.pe.utils.PEStatusEffect; -@Mixin(StatusEffect.class) +@Mixin(MobEffect.class) public class StatusEffectMixin implements PEStatusEffect { @Unique - private ParticleEffect particleEffect; + private ParticleOptions particleEffects$particleEffect; @Override - public void particleEffects$setParticleEffect(ParticleEffect particleEffect) { - this.particleEffect = particleEffect; + public void particleEffects$setParticleEffect(ParticleOptions particleEffect) { + this.particleEffects$particleEffect = particleEffect; } - public ParticleEffect particleEffects$getParticleEffect() { - return this.particleEffect; + public ParticleOptions particleEffects$getParticleEffect() { + return this.particleEffects$particleEffect; } } diff --git a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java index e1bae9b..bf41c85 100644 --- a/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/StatusEffectsMixin.java @@ -1,21 +1,21 @@ package net.lopymine.pe.mixin; import com.llamalad7.mixinextras.injector.wrapoperation.*; -import net.minecraft.entity.effect.*; +import net.minecraft.world.effect.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(StatusEffects.class) +@Mixin(MobEffects.class) public class StatusEffectsMixin { //? if >=1.21 { - @WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/entity/effect/StatusEffectCategory;I)Lnet/minecraft/entity/effect/SaturationStatusEffect;"), method = "") - private static SaturationStatusEffect fixColor(StatusEffectCategory statusEffectCategory, int i, Operation original) { + @WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/world/effect/MobEffectCategory;I)Lnet/minecraft/world/effect/SaturationMobEffect;"), method = "") + private static SaturationMobEffect fixColor(MobEffectCategory statusEffectCategory, int i, Operation original) { return original.call(statusEffectCategory, 16262180); } //?} else { - /*@WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/entity/effect/StatusEffectCategory;I)Lnet/minecraft/entity/effect/InstantStatusEffect;"), method = "") - private static InstantStatusEffect fixColor(StatusEffectCategory statusEffectCategory, int i, Operation original) { + /*@WrapOperation(at = @At(value = "NEW", target = "(Lnet/minecraft/world/effect/MobEffectCategory;I)Lnet/minecraft/world/effect/InstantenousMobEffect;", ordinal = 2), method = "") + private static InstantenousMobEffect fixColor(MobEffectCategory statusEffectCategory, int i, Operation original) { return original.call(statusEffectCategory, 16262180); } *///?} diff --git a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java index 6213728..72acb6c 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldEventHandlerMixin.java @@ -5,12 +5,12 @@ import com.llamalad7.mixinextras.injector.wrapoperation.*; import com.llamalad7.mixinextras.sugar.*; import com.llamalad7.mixinextras.sugar.ref.LocalRef; -import java.util.function.Function; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.world.*; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.client.renderer.*; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -20,32 +20,32 @@ import java.util.List; @Debug(export = true) -@Mixin(WorldEventHandler.class) +@Mixin(LevelEventHandler.class) public class WorldEventHandlerMixin { //? if >=1.21.9 { - /*@Shadow - @Final - private ClientWorld world; - *///?} else { @Shadow @Final - private World world; - //?} + private ClientLevel level; + //?} else { + /*@Shadow + @Final + private Level level; + *///?} // SPLASH POTION - @Inject(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;")) - private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { + @Inject(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;atBottomCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;")) + private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { ParticleEffectsManager.processSplashPotionStageOne(localParticleEffects, data); } // SPLASH POTION //? if >=1.21.9 { - /*@WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;addParticleClient(Lnet/minecraft/particle/ParticleEffect;DDDDDD)V", ordinal = 4)) - private void swapParticles(ClientWorld instance, ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + @WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V", ordinal = 4)) + private void swapParticles(ClientLevel instance, ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { @SuppressWarnings("unused") Particle particle = ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> { original.call(instance, particleEffect, x, y, z, velocityX, velocityY, velocityZ); @@ -55,18 +55,18 @@ private void swapParticles(ClientWorld instance, ParticleEffect parameters, doub color ); } - *///?} else { - @WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) - private Particle swapParticles(net.minecraft.client.render.WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + //?} else { + /*@WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) + private Particle swapParticles(LevelRenderer instance, ParticleOptions parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { return ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> original.call(instance, particleEffect, alwaysSpawn, x, y, z, velocityX, velocityY, velocityZ), localParticleEffects, color ); } - //?} + *///?} } //?} diff --git a/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java new file mode 100644 index 0000000..7dc4121 --- /dev/null +++ b/src/main/java/net/lopymine/pe/mixin/WorldRendererDebugParticlesMixin.java @@ -0,0 +1,64 @@ +package net.lopymine.pe.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.vertex.PoseStack; +import net.lopymine.pe.debug.DebugParticleInfoRenderer; +import net.minecraft.client.*; +import net.minecraft.client.renderer.*; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +//? if >=1.21.9 { +import net.minecraft.client.renderer.state.LevelRenderState; +//?} + +@Mixin(LevelRenderer.class) +public class WorldRendererDebugParticlesMixin { + + //? if =1.20.1 { + /*@Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + method = "renderLevel" + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) Camera camera, @Local(argsOnly = true) float delta) { + DebugParticleInfoRenderer.renderAll(stack, camera.getPosition(), camera.rotation(), delta); + } + *///?} + + //? if >=1.21.9 { + @Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + //? if fabric { + method = "method_62214" + //?} elif neoforge { + /*method = "lambda$addMainPass$1" + *///?} + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) LevelRenderState state) { + DebugParticleInfoRenderer.renderAll(stack, state.cameraRenderState.pos, state.cameraRenderState.orientation, Minecraft.getInstance().getDeltaTracker().getGameTimeDeltaPartialTick(false)); + } + //?} elif >=1.21 { + /*@Inject( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;endLastBatch()V" + ), + //? if <=1.21.1 { + method = "renderLevel" + //?} else { + /^method = "method_62214" + ^///?} + ) + private void renderDebugParticles(CallbackInfo ci, @Local PoseStack stack, @Local(argsOnly = true) Camera camera, @Local(argsOnly = true) DeltaTracker tracker) { + DebugParticleInfoRenderer.renderAll(stack, camera.getPosition(), camera.rotation(), tracker.getGameTimeDeltaPartialTick(false)); + } + *///?} + +} diff --git a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java index da6465d..c0eb017 100644 --- a/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java +++ b/src/main/java/net/lopymine/pe/mixin/WorldRendererMixin.java @@ -1,75 +1,65 @@ package net.lopymine.pe.mixin; //? if <=1.21.8 { -import com.llamalad7.mixinextras.injector.wrapoperation.*; +/*import com.llamalad7.mixinextras.injector.wrapoperation.*; import com.llamalad7.mixinextras.sugar.*; import com.llamalad7.mixinextras.sugar.ref.LocalRef; +import java.util.List; import java.util.function.*; -import net.lopymine.pe.capture.ParticleCaptures; -import net.lopymine.pe.client.ParticleEffectsClient; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.*; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.*; -import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.manager.ParticleEffectsManager; -import net.lopymine.pe.utils.*; -import java.util.List; import org.jetbrains.annotations.Nullable; - -//? >=1.21 -import net.minecraft.entity.effect.StatusEffect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//? =1.20.1 -/*import net.minecraft.util.math.ColorHelper.Argb;*/ - @Debug(export = true) -@Mixin(WorldRenderer.class) +@Mixin(LevelRenderer.class) public class WorldRendererMixin { @Shadow @Nullable - private ClientWorld world; + private ClientLevel level; //? <=1.21.1 { - /*// SPLASH POTION - @Inject(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;")) - private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { + /^// SPLASH POTION + @Inject(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;atBottomCenterOf(Lnet/minecraft/core/Vec3i;)Lnet/minecraft/world/phys/Vec3;")) + private void modifyParticleEffect(int eventId, BlockPos pos, int data, CallbackInfo ci, @Share("tp_effects") LocalRef> localParticleEffects) { ParticleEffectsManager.processSplashPotionStageOne(localParticleEffects, data); } // SPLASH POTION - @WrapOperation(method = "processWorldEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) - private Particle swapParticles(WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { + @WrapOperation(method = "levelEvent", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZDDDDDD)Lnet/minecraft/client/particle/Particle;", ordinal = 0)) + private Particle swapParticles(LevelRenderer instance, ParticleOptions parameters, boolean alwaysSpawn, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original, @Share("tp_effects") LocalRef> localParticleEffects, @Local(argsOnly = true, ordinal = 1) int color) { return ParticleEffectsManager.processSplashPotionStageTwo( - this.world, + this.level, parameters, (particleEffect) -> original.call(instance, particleEffect, alwaysSpawn, x, y, z, velocityX, velocityY, velocityZ), localParticleEffects, color); } - *///?} + ^///?} // ENTITY PARTICLES - @WrapOperation(method = "addParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;spawnParticle(Lnet/minecraft/particle/ParticleEffect;ZZDDDDDD)Lnet/minecraft/client/particle/Particle;")) - private Particle swapParticle(WorldRenderer instance, ParticleEffect parameters, boolean alwaysSpawn, boolean canSpawnOnMinimal, double x, double y, double z, double velocityX, double velocityY, double velocityZ, Operation original) { - Function function = (effect) -> original.call(instance, effect, alwaysSpawn, canSpawnOnMinimal, x, y, z, velocityX, velocityY, velocityZ); + @WrapOperation(method = "addParticle(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;addParticleInternal(Lnet/minecraft/core/particles/ParticleOptions;ZZDDDDDD)Lnet/minecraft/client/particle/Particle;")) + private Particle swapParticle(LevelRenderer instance, ParticleOptions particleOptions, boolean alwaysSpawn, boolean canSpawnOnMinimal, double x, double y, double z, double vx, double vy, double vz, Operation original) { + Function function = (effect) -> original.call(instance, effect, alwaysSpawn, canSpawnOnMinimal, x, y, z, vx, vy, vz); return ParticleEffectsManager.swapParticle( - this.world, - parameters, + this.level, + particleOptions, function, - () -> function.apply(parameters) - /*? if =1.20.1 {*/, velocityX, velocityY, velocityZ /*?}*/ + () -> function.apply(particleOptions) + /^? if =1.20.1 {^//^, vx, vy, vz ^//^?}^/ ); } } -//?} +*///?} diff --git a/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java new file mode 100644 index 0000000..66bc8f0 --- /dev/null +++ b/src/main/java/net/lopymine/pe/modmenu/AbstractModMenuIntegration.java @@ -0,0 +1,110 @@ +package net.lopymine.pe.modmenu; + +//? if fabric { +import com.terraformersmc.modmenu.api.*; +import net.fabricmc.loader.api.*; +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.minecraft.client.gui.screens.Screen; + +public abstract class AbstractModMenuIntegration implements ModMenuApi { + + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + FabricLoader fabricLoader = FabricLoader.getInstance(); + if (fabricLoader.isModLoaded("yet_another_config_lib_v3")) { + ModContainer modContainer = fabricLoader.getModContainer("yet_another_config_lib_v3").orElseThrow(); + Version version = modContainer.getMetadata().getVersion(); + try { + Version requestsVersion = Version.parse(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this::createConfigScreen; + } + } catch (VersionParsingException e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return parent -> NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getFriendlyString()); + } + return NoConfigLibraryScreen::createScreen; + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); +} + +//?} elif neoforge { + +/*import net.neoforged.fml.*; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.loader.MossyLoader; +import net.minecraft.client.gui.screens.Screen; +import org.apache.maven.artifact.versioning.*; + +public abstract class AbstractModMenuIntegration { + + public void register(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, (modContainer, parent) -> { + if (MossyLoader.isModLoaded("yet_another_config_lib_v3", false)) { + ModContainer yacl = ModList.get().getModContainerById("yet_another_config_lib_v3").orElseThrow(); + ArtifactVersion version = yacl.getModInfo().getVersion(); + try { + ArtifactVersion requestsVersion = new DefaultArtifactVersion(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this.createConfigScreen(parent); + } + } catch (Exception e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getQualifier()); + } + return NoConfigLibraryScreen.createScreen(parent); + }); + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); + +} + +*///?} elif forge { + +/*import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.loader.MossyLoader; +import net.minecraft.client.gui.screens.Screen; +import net.minecraftforge.client.ConfigScreenHandler.ConfigScreenFactory; +import net.minecraftforge.fml.*; +import org.apache.maven.artifact.versioning.*; + +public abstract class AbstractModMenuIntegration { + + public void register(ModContainer container) { + container.registerExtensionPoint(ConfigScreenFactory.class, () -> new ConfigScreenFactory((minecraft, parent) -> { + if (MossyLoader.isModLoaded("yet_another_config_lib_v3", false)) { + ModContainer yacl = ModList.get().getModContainerById("yet_another_config_lib_v3").orElseThrow(); + ArtifactVersion version = yacl.getModInfo().getVersion(); + try { + ArtifactVersion requestsVersion = new DefaultArtifactVersion(ParticleEffects.YACL_DEPEND_VERSION); + if (version.compareTo(requestsVersion) >= 0) { + return this.createConfigScreen(parent); + } + } catch (Exception e) { + ParticleEffectsClient.LOGGER.error("Failed to compare YACL version, tell mod author about this error: ", e); + } + return NoConfigLibraryScreen.createScreenAboutOldVersion(parent, version.getQualifier()); + } + return NoConfigLibraryScreen.createScreen(parent); + })); + } + + protected abstract String getModId(); + + protected abstract Screen createConfigScreen(Screen parent); + +} + +*///?} diff --git a/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java deleted file mode 100644 index c408a68..0000000 --- a/src/main/java/net/lopymine/pe/modmenu/ModMenuIntegration.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lopymine.pe.modmenu; - -import com.terraformersmc.modmenu.api.*; - -import net.fabricmc.loader.api.FabricLoader; - -import net.lopymine.pe.modmenu.yacl.YACLConfigurationScreen; - -public class ModMenuIntegration implements ModMenuApi { - - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - if (FabricLoader.getInstance().isModLoaded("yet_another_config_lib_v3")) { - return YACLConfigurationScreen::createScreen; - } - return NoConfigLibraryScreen::createScreen; - } -} diff --git a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java index 1fee7b3..acf16a1 100644 --- a/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java +++ b/src/main/java/net/lopymine/pe/modmenu/NoConfigLibraryScreen.java @@ -1,36 +1,33 @@ package net.lopymine.pe.modmenu; import com.google.common.collect.Sets; -import net.minecraft.SharedConstants; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.*; -import net.minecraft.screen.ScreenTexts; -import net.minecraft.util.Util; - -import net.lopymine.pe.client.ParticleEffectsClient; -import net.lopymine.pe.utils.ModMenuUtils; - import java.net.*; import java.util.*; -import org.jetbrains.annotations.*; +import net.lopymine.pe.client.ParticleEffectsClient; +import net.lopymine.pe.utils.ModMenuUtils; +import net.minecraft.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.*; +import net.minecraft.network.chat.CommonComponents; +import org.jetbrains.annotations.NotNull; public class NoConfigLibraryScreen { private static final Set ALLOWED_PROTOCOLS = Sets.newHashSet("http", "https"); private static final String YACL_MODRINTH_LINK = "https://modrinth.com/mod/yacl/versions?l=fabric&g="; + private NoConfigLibraryScreen() { throw new IllegalStateException("Screen class, use createScreen(...) method!"); } - @Contract("_ -> new") public static @NotNull Screen createScreen(Screen parent) { - return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), ScreenTexts.YES, ScreenTexts.BACK); + return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getNoConfigScreenMessage(), CommonComponents.GUI_CONTINUE, CommonComponents.GUI_BACK); } private static void onConfirm(boolean open, Screen parent) { if (open) { try { - String url = NoConfigLibraryScreen.YACL_MODRINTH_LINK + SharedConstants.getGameVersion()./*? if >=1.21.6 {*/ name() /*?} else {*//*getName()*//*?}*/; + String url = NoConfigLibraryScreen.YACL_MODRINTH_LINK + SharedConstants.getCurrentVersion()./*? if >=1.21.6 {*/ name() /*?} else {*//*getName()*//*?}*/; URI link = new URI(url); String string = link.getScheme(); if (string == null) { @@ -39,12 +36,16 @@ private static void onConfirm(boolean open, Screen parent) { if (!NoConfigLibraryScreen.ALLOWED_PROTOCOLS.contains(string.toLowerCase(Locale.ROOT))) { throw new URISyntaxException(url, "Unsupported protocol: " + string.toLowerCase(Locale.ROOT)); } - Util.getOperatingSystem().open(link); + Util.getPlatform().openUri(link); } catch (URISyntaxException e) { ParticleEffectsClient.LOGGER.error("Can't open YACL Modrinth page:", e); } } else { - MinecraftClient.getInstance().setScreen(parent); + Minecraft.getInstance().setScreen(parent); } } + + public static Screen createScreenAboutOldVersion(Screen parent, String version) { + return new ConfirmScreen((open) -> NoConfigLibraryScreen.onConfirm(open, parent), ModMenuUtils.getModTitle(), ModMenuUtils.getOldConfigScreenMessage(version), CommonComponents.GUI_CONTINUE, CommonComponents.GUI_BACK); + } } diff --git a/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java b/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java new file mode 100644 index 0000000..79f9992 --- /dev/null +++ b/src/main/java/net/lopymine/pe/modmenu/PEModMenuIntegration.java @@ -0,0 +1,19 @@ +package net.lopymine.pe.modmenu; + +import net.lopymine.pe.ParticleEffects; +import net.lopymine.pe.modmenu.yacl.YACLConfigurationScreen; +import net.minecraft.client.gui.screens.Screen; + +public class PEModMenuIntegration extends AbstractModMenuIntegration { + + @Override + protected String getModId() { + return ParticleEffects.MOD_ID; + } + + @Override + protected Screen createConfigScreen(Screen parent) { + return YACLConfigurationScreen.createScreen(parent); + } +} + diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java b/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java index b472db5..5b8d776 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/YACLConfigurationScreen.java @@ -1,8 +1,8 @@ package net.lopymine.pe.modmenu.yacl; import dev.isxander.yacl3.api.ConfigCategory; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.client.ParticleEffectsClient; @@ -14,7 +14,7 @@ public class YACLConfigurationScreen { - private static final Function ENABLED_OR_DISABLE_FORMATTER = ModMenuUtils.getEnabledOrDisabledFormatter(); + private static final Function ENABLED_OR_DISABLE_FORMATTER = ModMenuUtils.getEnabledOrDisabledFormatter(); private YACLConfigurationScreen() { throw new IllegalStateException("Screen class"); diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java index 7994251..1e8c9fb 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleCategoryBuilder.java @@ -2,7 +2,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.ConfigCategory.Builder; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import net.lopymine.pe.utils.ModMenuUtils; @@ -12,7 +12,7 @@ public class SimpleCategoryBuilder { private SimpleCategoryBuilder(String categoryId) { String categoryKey = ModMenuUtils.getCategoryKey(categoryId); - Text categoryName = ModMenuUtils.getName(categoryKey); + Component categoryName = ModMenuUtils.getName(categoryKey); this.builder = ConfigCategory.createBuilder().name(categoryName); } diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java index 93e5c3d..e592112 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleGroupBuilder.java @@ -2,7 +2,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.OptionGroup.Builder; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import net.lopymine.pe.utils.ModMenuUtils; @@ -12,8 +12,8 @@ public class SimpleGroupBuilder { public SimpleGroupBuilder(String groupId) { String groupKey = ModMenuUtils.getGroupKey(groupId); - Text groupName = ModMenuUtils.getName(groupKey); - Text description = ModMenuUtils.getDescription(groupKey); + Component groupName = ModMenuUtils.getName(groupKey); + Component description = ModMenuUtils.getDescription(groupKey); this.groupBuilder = OptionGroup.createBuilder() .name(groupName) diff --git a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java index 6dcc54b..1b110f6 100644 --- a/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java +++ b/src/main/java/net/lopymine/pe/modmenu/yacl/simple/SimpleYACLScreenBuilder.java @@ -3,7 +3,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.YetAnotherConfigLib.Builder; import dev.isxander.yacl3.gui.YACLScreen; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import net.lopymine.pe.utils.ModMenuUtils; diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java index 06a5476..087d1c0 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticle.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticle.java @@ -2,12 +2,9 @@ import lombok.*; import net.minecraft.client.particle.*; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.client.multiplayer.ClientLevel; -import net.lopymine.pe.utils.*; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; @Setter @Getter @@ -15,9 +12,9 @@ public class TexturedParticle extends SpellParticle { private int holderColor; - protected TexturedParticle(ClientWorld clientWorld, double d, double e, double f, double g, double h, double i, SpriteProvider spriteProvider, Random random) { + protected TexturedParticle(ClientLevel clientWorld, double d, double e, double f, double g, double h, double i, SpriteSet spriteProvider, RandomSource random) { super(clientWorld, d, e, f, g, h, i, spriteProvider); - super.setSprite(spriteProvider/*? if >=1.21.9 {*//*.getSprite(random) *//*?}*/); + super.setSprite(spriteProvider.get(random)); } @Override @@ -26,11 +23,11 @@ public void setColor(float red, float green, float blue) { } //? if <=1.21.8 { - @Override - public void setSpriteForAge(SpriteProvider spriteProvider) { + /*@Override + public void setSpriteFromAge(SpriteSet spriteSet) { } - //?} + *///?} @Override public void setAlpha(float alpha) { diff --git a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java index e97c584..8e8aa55 100644 --- a/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java +++ b/src/main/java/net/lopymine/pe/particle/TexturedParticleFactory.java @@ -1,23 +1,23 @@ package net.lopymine.pe.particle; import net.minecraft.client.particle.*; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle./*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.particles.SimpleParticleType; import net.lopymine.pe.utils.*; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; -public class TexturedParticleFactory implements ParticleFactory=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/> { +public class TexturedParticleFactory implements ParticleProvider { - private final SpriteProvider spriteProvider; + private final SpriteSet spriteProvider; - public TexturedParticleFactory(SpriteProvider spriteProvider) { + public TexturedParticleFactory(SpriteSet spriteProvider) { this.spriteProvider = spriteProvider; } @Override - public Particle createParticle(/*? >=1.21 {*/SimpleParticleType/*?} else {*//*DefaultParticleType*//*?}*/ effect, ClientWorld clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*//*, Random random *//*?}*/) { - TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*//*random *//*?} else {*/ Random.create() /*?}*/); + public Particle createParticle(SimpleParticleType effect, ClientLevel clientWorld, double d, double e, double f, double g, double h, double i/*? if >=1.21.9 {*/, RandomSource random /*?}*/) { + TexturedParticle texturedParticle = new TexturedParticle(clientWorld, d, e, f, g, h, i, this.spriteProvider, /*? if >=1.21.9 {*/random /*?} else {*/ /*RandomSource.create() *//*?}*/); int color = ((PEType) effect).particleEffects$getColor(); texturedParticle.setAlpha((float) ArgbUtils.getAlpha(color) / 255F); texturedParticle.setHolderColor(color); diff --git a/src/main/java/net/lopymine/pe/utils/ListUtils.java b/src/main/java/net/lopymine/pe/utils/ListUtils.java index a1ec179..e752918 100644 --- a/src/main/java/net/lopymine/pe/utils/ListUtils.java +++ b/src/main/java/net/lopymine/pe/utils/ListUtils.java @@ -1,6 +1,6 @@ package net.lopymine.pe.utils; -import net.minecraft.util.math.random.Random; +import net.minecraft.util.RandomSource; import java.util.List; import org.jetbrains.annotations.Nullable; @@ -8,10 +8,10 @@ public class ListUtils { @Nullable - public static T getRandomElement(List list, Random random) { + public static T getRandomElement(List list, RandomSource random) { if (list.isEmpty()) { return null; } - return list.get(random.nextBetween(0, list.size() - 1)); + return list.get(random.nextIntBetweenInclusive(0, list.size() - 1)); } } diff --git a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java index 3f529c8..b536056 100644 --- a/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java +++ b/src/main/java/net/lopymine/pe/utils/ModMenuUtils.java @@ -1,7 +1,7 @@ package net.lopymine.pe.utils; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.network.chat.*; +import net.minecraft.resources.ResourceLocation; import net.lopymine.pe.ParticleEffects; import net.lopymine.pe.modmenu.yacl.simple.SimpleContent; @@ -26,27 +26,31 @@ public static String getGroupKey(String groupId) { return String.format("%s.modmenu.group.%s", ParticleEffects.MOD_ID, groupId); } - public static Text getName(String key) { - return Text.translatable(key + ".name"); + public static Component getName(String key) { + return Component.translatable(key + ".name"); } - public static Text getDescription(String key) { - return Text.translatable(key + ".description"); + public static Component getDescription(String key) { + return Component.translatable(key + ".description"); } - public static Identifier getContentId(SimpleContent content, String optionId) { + public static ResourceLocation getContentId(SimpleContent content, String optionId) { return ParticleEffects.id(String.format("textures/config/%s/%s.%s", content.getFolder(), optionId, content.getFileExtension())); } - public static Text getModTitle() { + public static Component getModTitle() { return ParticleEffects.text("modmenu.title"); } - public static Function getEnabledOrDisabledFormatter() { + public static Function getEnabledOrDisabledFormatter() { return state -> ParticleEffects.text("modmenu.formatter.enabled_or_disabled." + state); } - public static Text getNoConfigScreenMessage() { + public static MutableComponent getOldConfigScreenMessage(String version) { + return ParticleEffects.text("modmenu.old_config_library_screen.message", version, ParticleEffects.YACL_DEPEND_VERSION); + } + + public static Component getNoConfigScreenMessage() { return ParticleEffects.text("modmenu.no_config_library_screen.message"); } } diff --git a/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java b/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java index e45a4af..6c91f46 100644 --- a/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java +++ b/src/main/java/net/lopymine/pe/utils/PEStatusEffect.java @@ -1,10 +1,10 @@ package net.lopymine.pe.utils; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; public interface PEStatusEffect { - void particleEffects$setParticleEffect(ParticleEffect particleEffect); + void particleEffects$setParticleEffect(ParticleOptions particleEffect); - ParticleEffect particleEffects$getParticleEffect(); + ParticleOptions particleEffects$getParticleEffect(); } diff --git a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java index 1cffee0..e891668 100644 --- a/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java +++ b/src/main/java/net/lopymine/pe/utils/StatusEffectUtils.java @@ -1,27 +1,32 @@ package net.lopymine.pe.utils; -import net.minecraft.entity.effect.*; -import net.minecraft.particle.ParticleEffect; +import net.lopymine.pe.loader.MossyLoader; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.world.effect.*; -import net.fabricmc.loader.api.FabricLoader; +//? if =1.20.1 { +/*import net.minecraft.world.item.alchemy.PotionUtils; import java.util.Collection; +*///?} + public class StatusEffectUtils { - public static void swapParticle(StatusEffect statusEffect, ParticleEffect particleEffect) { + public static void swapParticle(MobEffect statusEffect, ParticleOptions particleEffect) { ((PEStatusEffect) statusEffect).particleEffects$setParticleEffect(particleEffect); } //? if =1.20.1 { + /*// Yeah, I literally copied this thing from the original PotionUtils class to make this mod compatible with Alex Caves // IDK why, for what, just did - public static int getColor(Collection effects) { - if (!FabricLoader.getInstance().isModLoaded("alexscaves")) { - return net.minecraft.potion.PotionUtil.getColor(effects); + public static int getColor(Collection collection) { + if (!MossyLoader.isModLoaded("alexscaves", false)) { + return PotionUtils.getColor(collection); } - if (effects.isEmpty()) { + if (collection.isEmpty()) { return 3694022; } else { float f = 0.0F; @@ -29,13 +34,13 @@ public static int getColor(Collection effects) { float h = 0.0F; int j = 0; - for (StatusEffectInstance statusEffectInstance : effects) { - if (statusEffectInstance.shouldShowParticles()) { - int k = statusEffectInstance.getEffectType().getColor(); - int l = statusEffectInstance.getAmplifier() + 1; - f += (float) (l * (k >> 16 & 255)) / 255.0F; - g += (float) (l * (k >> 8 & 255)) / 255.0F; - h += (float) (l * (k & 255)) / 255.0F; + for (MobEffectInstance mobEffectInstance : collection) { + if (mobEffectInstance.isVisible()) { + int k = mobEffectInstance.getEffect().getColor(); + int l = mobEffectInstance.getAmplifier() + 1; + f += l * (k >> 16 & 0xFF) / 255.0F; + g += l * (k >> 8 & 0xFF) / 255.0F; + h += l * (k & 0xFF) / 255.0F; j += l; } } @@ -43,9 +48,9 @@ public static int getColor(Collection effects) { if (j == 0) { return 0; } else { - f = f / (float) j * 255.0F; - g = g / (float) j * 255.0F; - h = h / (float) j * 255.0F; + f = f / j * 255.0F; + g = g / j * 255.0F; + h = h / j * 255.0F; return (int) f << 16 | (int) g << 8 | (int) h; } } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..00626ca --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,28 @@ +license = "${mod_license}" +issueTrackerURL = "https://github.com/LopyMine/${mod_id}" +modLoader="javafml" +loaderVersion="[1,)" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +side="BOTH" +displayURL = "https://modrinth.com/mod/${mod_id}" +logoFile = "icon/icon.png" +authors = "${mod_authors}" +description = '''${mod_description}''' + +[[dependencies.${mod_id}]] +modId = "forge" +mandatory = true +versionRange = "${forge}" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${ mod_id }]] +modId = "minecraft" +mandatory = true +versionRange = "${minecraft}" +ordering = "NONE" +side = "BOTH" diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000..80e28f7 --- /dev/null +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,31 @@ +license = "${mod_license}" +issueTrackerURL = "https://github.com/LopyMine/${mod_id}" +modLoader="javafml" +loaderVersion="[1,)" + +[[mods]] +modId = "${mod_id}" +version = "${mod_version}" +displayName = "${mod_name}" +side="BOTH" +displayURL = "https://modrinth.com/mod/${mod_id}" +logoFile = "icon/icon.png" +authors = "${mod_authors}" +description = '''${mod_description}''' + +[[mixins]] +config = "${mod_id}.mixins.json" + +[[dependencies.${mod_id}]] +modId = "neoforge" +type = "required" +versionRange = "[1,)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.${mod_id}]] +modId = "minecraft" +type = "required" +versionRange = "${minecraft}" +ordering = "NONE" +side = "BOTH" \ No newline at end of file diff --git a/src/main/resources/assets/particle-effects/lang/en_us.json b/src/main/resources/assets/particle-effects/lang/en_us.json deleted file mode 100644 index f260c85..0000000 --- a/src/main/resources/assets/particle-effects/lang/en_us.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft!", - "particle-effects.modmenu.title": "§l${mod_name} Configuration", - "particle-effects.modmenu.no_config_library_screen.message": "You need to install §6§lYet Another Config Lib [YACL]§f to open ${mod_name} Configuration Screen\n\n§a§lOpen §6§lYACL §a§lModrinth page?", - - "particle-effects.modmenu.category.general.name": "§lGeneral", - - "particle-effects.modmenu.option.mod_enabled.name": "Mod Enabled", - "particle-effects.modmenu.option.mod_enabled.description": "If enabled, each particle of each effect will be replaced with a unique texture; if disabled, won't.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Debug Log Enabled", - "particle-effects.modmenu.option.debug_log_enabled.description": "If enabled, additional info will be logged to console for debugging; if disabled, won't.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Enabled", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Disabled" -} \ No newline at end of file diff --git a/src/main/resources/assets/particle-effects/lang/ru_ru.json b/src/main/resources/assets/particle-effects/lang/ru_ru.json deleted file mode 100644 index 7b941a7..0000000 --- a/src/main/resources/assets/particle-effects/lang/ru_ru.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Визуальный Fabric мод, который добавляет уникальные текстурированные частицы для всех эффектов в ванильном Minecraft!", - "particle-effects.modmenu.title": "§lКонфигурация ${mod_name}", - "particle-effects.modmenu.no_config_library_screen.message": "Вам необходимо установить §6§lYet Another Config Lib [YACL]§f, чтобы открыть экран конфигурации ${mod_name} \n\n§a§lОткрыть страницу §6§lYACL §a§lна Modrinth?", - - "particle-effects.modmenu.category.general.name": "§lОсновное", - - "particle-effects.modmenu.option.mod_enabled.name": "Включить мод", - "particle-effects.modmenu.option.mod_enabled.description": "Если мод включён, то каждая частица каждого эффекта получит свою уникальную текстуру; если отключён, все частицы всех эффектов будут иметь стандартную текстуру.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Включить дополнительный журнал откладки мода", - "particle-effects.modmenu.option.debug_log_enabled.description": "Если включено, в консоль игры будет выведена допольнительная информация о моде; если отключено, не будет.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Включено", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Отключено" -} diff --git a/src/main/resources/assets/particle-effects/lang/tt_ru.json b/src/main/resources/assets/particle-effects/lang/tt_ru.json deleted file mode 100644 index 1fce8a3..0000000 --- a/src/main/resources/assets/particle-effects/lang/tt_ru.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Ваниль Minecraft'дагы Һәр тәэсир өчен уникаль текстураланган кисәкчекләрне өсти торган визуаль Fabric моды!", - "particle-effects.modmenu.title": "§l${mod_name} көйләүләре", - "particle-effects.modmenu.no_config_library_screen.message": "${mod_name} көйләүләре экранын ачу өчен Сезгә §6§lYet Another Config Lib [YACL]§f утыртырга кирәк\n\n§6§lYACL §a§lModrinth битен ачаргамы?", - - "particle-effects.modmenu.category.general.name": "§lТөп", - - "particle-effects.modmenu.option.mod_enabled.name": "Модны кушу", - "particle-effects.modmenu.option.mod_enabled.description": "Кушылса, һәр тәэсир һәр кисәкчеге уникаль текстурага үзгәртеләчәк; Сүндерелсә, үзгәртелмәячәк.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "Кушык", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "Сүнек" -} diff --git a/src/main/resources/assets/particle-effects/lang/uk_ua.json b/src/main/resources/assets/particle-effects/lang/uk_ua.json deleted file mode 100644 index 4c0dab8..0000000 --- a/src/main/resources/assets/particle-effects/lang/uk_ua.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "Візуальний мод Fabric, який додає унікальні текстуровані частинки для кожного стандартного ефекту Minecraft!", - "particle-effects.modmenu.title": "Налаштування §l${mod_name}", - "particle-effects.modmenu.no_config_library_screen.message": "Вам потрібно встановити §6§lYet Another Config Lib [YACL]§f, щоб відкрити екран налаштувань ${mod_name}\n\n§a§lВідкрити сторінку §6§lYACL§a§l на Modrinth?", - - "particle-effects.modmenu.category.general.name": "§lЗагальні", - - "particle-effects.modmenu.option.mod_enabled.name": "Мод увімкнено", - "particle-effects.modmenu.option.mod_enabled.description": "Якщо ввімкнено, кожна частинка кожного ефекту буде замінено унікальною текстурою; якщо вимкнено, не буде.", - "particle-effects.modmenu.option.debug_log_enabled.name": "§6Журнал налагодження ввімкнено", - "particle-effects.modmenu.option.debug_log_enabled.description": "Якщо ввімкнено, додаткова інформація буде зареєстрована на консолі для налагодження; якщо вимкнено, не буде.", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "УВІМК.", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "ВИМК." -} diff --git a/src/main/resources/assets/particle-effects/lang/zh_cn.json b/src/main/resources/assets/particle-effects/lang/zh_cn.json deleted file mode 100644 index b5e8c43..0000000 --- a/src/main/resources/assets/particle-effects/lang/zh_cn.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "modmenu.descriptionTranslation.particle-effects": "一个为原版Minecraft中每个效果添加独特纹理粒子的视觉Fabric模组!", - "particle-effects.modmenu.title": "§l${mod_name} 配置", - "particle-effects.modmenu.no_config_library_screen.message": "你需要安装 §6§lYet Another Config Lib [YACL]§f 才能打开 ${mod_name} 配置界面\n\n§a§l打开 §6§lYACL §a§lModrinth 页面?", - - "particle-effects.modmenu.category.general.name": "§l通用", - - "particle-effects.modmenu.option.mod_enabled.name": "模组启用", - "particle-effects.modmenu.option.mod_enabled.description": "启用时,每个效果的粒子将被独特的纹理替换;禁用时则不会。", - - "particle-effects.modmenu.formatter.enabled_or_disabled.true": "已启用", - "particle-effects.modmenu.formatter.enabled_or_disabled.false": "已禁用" -} diff --git a/src/main/resources/assets/particle-effects/particles/absorption.json b/src/main/resources/assets/particle-effects/particles/absorption.json deleted file mode 100644 index 6f3795d..0000000 --- a/src/main/resources/assets/particle-effects/particles/absorption.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:absorption/1", - "particle-effects:absorption/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/bad_omen.json b/src/main/resources/assets/particle-effects/particles/bad_omen.json deleted file mode 100644 index a657dc3..0000000 --- a/src/main/resources/assets/particle-effects/particles/bad_omen.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:bad_omen/1", - "particle-effects:bad_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/blindness.json b/src/main/resources/assets/particle-effects/particles/blindness.json deleted file mode 100644 index 19639a3..0000000 --- a/src/main/resources/assets/particle-effects/particles/blindness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:blindness/1", - "particle-effects:blindness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/conduit_power.json b/src/main/resources/assets/particle-effects/particles/conduit_power.json deleted file mode 100644 index bb1aad4..0000000 --- a/src/main/resources/assets/particle-effects/particles/conduit_power.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:conduit_power/1", - "particle-effects:conduit_power/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/darkness.json b/src/main/resources/assets/particle-effects/particles/darkness.json deleted file mode 100644 index fd75438..0000000 --- a/src/main/resources/assets/particle-effects/particles/darkness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:darkness/1", - "particle-effects:darkness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/dolphins_grace.json b/src/main/resources/assets/particle-effects/particles/dolphins_grace.json deleted file mode 100644 index 63e5c76..0000000 --- a/src/main/resources/assets/particle-effects/particles/dolphins_grace.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:dolphins_grace/1", - "particle-effects:dolphins_grace/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/fire_resistance.json b/src/main/resources/assets/particle-effects/particles/fire_resistance.json deleted file mode 100644 index 2a56148..0000000 --- a/src/main/resources/assets/particle-effects/particles/fire_resistance.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:fire_resistance/1", - "particle-effects:fire_resistance/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/glowing.json b/src/main/resources/assets/particle-effects/particles/glowing.json deleted file mode 100644 index d4cadbb..0000000 --- a/src/main/resources/assets/particle-effects/particles/glowing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:glowing/1", - "particle-effects:glowing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/haste.json b/src/main/resources/assets/particle-effects/particles/haste.json deleted file mode 100644 index 0d04934..0000000 --- a/src/main/resources/assets/particle-effects/particles/haste.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:haste/1", - "particle-effects:haste/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/health_boost.json b/src/main/resources/assets/particle-effects/particles/health_boost.json deleted file mode 100644 index 1ebdd37..0000000 --- a/src/main/resources/assets/particle-effects/particles/health_boost.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:health_boost/1", - "particle-effects:health_boost/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json b/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json deleted file mode 100644 index 4142c16..0000000 --- a/src/main/resources/assets/particle-effects/particles/hero_of_the_village.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:hero_of_the_village/1", - "particle-effects:hero_of_the_village/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/hunger.json b/src/main/resources/assets/particle-effects/particles/hunger.json deleted file mode 100644 index 6fdeb3c..0000000 --- a/src/main/resources/assets/particle-effects/particles/hunger.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:hunger/1", - "particle-effects:hunger/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/infested_new.json b/src/main/resources/assets/particle-effects/particles/infested_new.json deleted file mode 100644 index a498e71..0000000 --- a/src/main/resources/assets/particle-effects/particles/infested_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:infested/1", - "particle-effects:infested/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/instant_damage.json b/src/main/resources/assets/particle-effects/particles/instant_damage.json deleted file mode 100644 index 833f6fb..0000000 --- a/src/main/resources/assets/particle-effects/particles/instant_damage.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:instant_damage/1", - "particle-effects:instant_damage/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/instant_health.json b/src/main/resources/assets/particle-effects/particles/instant_health.json deleted file mode 100644 index 7c62022..0000000 --- a/src/main/resources/assets/particle-effects/particles/instant_health.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:instant_health/1", - "particle-effects:instant_health/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/invisibility.json b/src/main/resources/assets/particle-effects/particles/invisibility.json deleted file mode 100644 index 94780a2..0000000 --- a/src/main/resources/assets/particle-effects/particles/invisibility.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:invisibility/1", - "particle-effects:invisibility/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/jump_boost.json b/src/main/resources/assets/particle-effects/particles/jump_boost.json deleted file mode 100644 index 9f6c3e7..0000000 --- a/src/main/resources/assets/particle-effects/particles/jump_boost.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:jump_boost/1", - "particle-effects:jump_boost/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/levitation.json b/src/main/resources/assets/particle-effects/particles/levitation.json deleted file mode 100644 index 0e92c74..0000000 --- a/src/main/resources/assets/particle-effects/particles/levitation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:levitation/1", - "particle-effects:levitation/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/luck.json b/src/main/resources/assets/particle-effects/particles/luck.json deleted file mode 100644 index bcebac6..0000000 --- a/src/main/resources/assets/particle-effects/particles/luck.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:luck/1", - "particle-effects:luck/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/mining_fatigue.json b/src/main/resources/assets/particle-effects/particles/mining_fatigue.json deleted file mode 100644 index 0959b40..0000000 --- a/src/main/resources/assets/particle-effects/particles/mining_fatigue.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:mining_fatigue/1", - "particle-effects:mining_fatigue/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/nausea.json b/src/main/resources/assets/particle-effects/particles/nausea.json deleted file mode 100644 index bf2e0ea..0000000 --- a/src/main/resources/assets/particle-effects/particles/nausea.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:nausea/1", - "particle-effects:nausea/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/night_vision.json b/src/main/resources/assets/particle-effects/particles/night_vision.json deleted file mode 100644 index 819deec..0000000 --- a/src/main/resources/assets/particle-effects/particles/night_vision.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:night_vision/1", - "particle-effects:night_vision/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/oozing_new.json b/src/main/resources/assets/particle-effects/particles/oozing_new.json deleted file mode 100644 index 7ce8930..0000000 --- a/src/main/resources/assets/particle-effects/particles/oozing_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:oozing/1", - "particle-effects:oozing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/poison.json b/src/main/resources/assets/particle-effects/particles/poison.json deleted file mode 100644 index 153b5b7..0000000 --- a/src/main/resources/assets/particle-effects/particles/poison.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:poison/1", - "particle-effects:poison/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/raid_omen_new.json b/src/main/resources/assets/particle-effects/particles/raid_omen_new.json deleted file mode 100644 index 58505c6..0000000 --- a/src/main/resources/assets/particle-effects/particles/raid_omen_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:raid_omen/1", - "particle-effects:raid_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/regeneration.json b/src/main/resources/assets/particle-effects/particles/regeneration.json deleted file mode 100644 index da814bc..0000000 --- a/src/main/resources/assets/particle-effects/particles/regeneration.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:regeneration/1", - "particle-effects:regeneration/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/resistance.json b/src/main/resources/assets/particle-effects/particles/resistance.json deleted file mode 100644 index 2b4a4c5..0000000 --- a/src/main/resources/assets/particle-effects/particles/resistance.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:resistance/1", - "particle-effects:resistance/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/saturation.json b/src/main/resources/assets/particle-effects/particles/saturation.json deleted file mode 100644 index 298b2f4..0000000 --- a/src/main/resources/assets/particle-effects/particles/saturation.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:saturation/1", - "particle-effects:saturation/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/slow_falling.json b/src/main/resources/assets/particle-effects/particles/slow_falling.json deleted file mode 100644 index 692cf1e..0000000 --- a/src/main/resources/assets/particle-effects/particles/slow_falling.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:slow_falling/1", - "particle-effects:slow_falling/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/slowness.json b/src/main/resources/assets/particle-effects/particles/slowness.json deleted file mode 100644 index d8eaba5..0000000 --- a/src/main/resources/assets/particle-effects/particles/slowness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:slowness/1", - "particle-effects:slowness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/speed.json b/src/main/resources/assets/particle-effects/particles/speed.json deleted file mode 100644 index a8f0738..0000000 --- a/src/main/resources/assets/particle-effects/particles/speed.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:speed/1", - "particle-effects:speed/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/strength.json b/src/main/resources/assets/particle-effects/particles/strength.json deleted file mode 100644 index 43af04b..0000000 --- a/src/main/resources/assets/particle-effects/particles/strength.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:strength/1", - "particle-effects:strength/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/trial_omen_new.json b/src/main/resources/assets/particle-effects/particles/trial_omen_new.json deleted file mode 100644 index 3bfaf8d..0000000 --- a/src/main/resources/assets/particle-effects/particles/trial_omen_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:trial_omen/1", - "particle-effects:trial_omen/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/unluck.json b/src/main/resources/assets/particle-effects/particles/unluck.json deleted file mode 100644 index 00b4762..0000000 --- a/src/main/resources/assets/particle-effects/particles/unluck.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:unluck/1", - "particle-effects:unluck/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/water_breathing.json b/src/main/resources/assets/particle-effects/particles/water_breathing.json deleted file mode 100644 index 0562aed..0000000 --- a/src/main/resources/assets/particle-effects/particles/water_breathing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:water_breathing/1", - "particle-effects:water_breathing/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/weakness.json b/src/main/resources/assets/particle-effects/particles/weakness.json deleted file mode 100644 index 1184ecd..0000000 --- a/src/main/resources/assets/particle-effects/particles/weakness.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:weakness/1", - "particle-effects:weakness/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/weaving_new.json b/src/main/resources/assets/particle-effects/particles/weaving_new.json deleted file mode 100644 index b5c3703..0000000 --- a/src/main/resources/assets/particle-effects/particles/weaving_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:weaving/1", - "particle-effects:weaving/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/wind_charged_new.json b/src/main/resources/assets/particle-effects/particles/wind_charged_new.json deleted file mode 100644 index de647b3..0000000 --- a/src/main/resources/assets/particle-effects/particles/wind_charged_new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:wind_charged/1", - "particle-effects:wind_charged/2" - ] -} diff --git a/src/main/resources/assets/particle-effects/particles/wither.json b/src/main/resources/assets/particle-effects/particles/wither.json deleted file mode 100644 index 0303c74..0000000 --- a/src/main/resources/assets/particle-effects/particles/wither.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "textures": [ - "particle-effects:wither/1", - "particle-effects:wither/2" - ] -} diff --git a/src/main/resources/assets/particle_effects/lang/en_us.json b/src/main/resources/assets/particle_effects/lang/en_us.json new file mode 100644 index 0000000..7fc5788 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/en_us.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Visual Fabric Mod that adds unique textured particles for every effect in vanilla Minecraft!", + "${mod_id}.modmenu.title": "§l${mod_name} Configuration", + "${mod_id}.modmenu.no_config_library_screen.message": "You need to install §6§lYet Another Config Lib [YACL]§f to open ${mod_name} Configuration Screen\n\n§a§lOpen §6§lYACL §a§lModrinth page?", + + "${mod_id}.modmenu.category.general.name": "§lGeneral", + + "${mod_id}.modmenu.option.mod_enabled.name": "Mod Enabled", + "${mod_id}.modmenu.option.mod_enabled.description": "If enabled, each particle of each effect will be replaced with a unique texture; if disabled, won't.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Debug Log Enabled", + "${mod_id}.modmenu.option.debug_log_enabled.description": "If enabled, additional info will be logged to console for debugging; if disabled, won't.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Enabled", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Disabled" +} \ No newline at end of file diff --git a/src/main/resources/assets/particle_effects/lang/ru_ru.json b/src/main/resources/assets/particle_effects/lang/ru_ru.json new file mode 100644 index 0000000..d6b108e --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/ru_ru.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Визуальный Fabric мод, который добавляет уникальные текстурированные частицы для всех эффектов в ванильном Minecraft!", + "${mod_id}.modmenu.title": "§lКонфигурация ${mod_name}", + "${mod_id}.modmenu.no_config_library_screen.message": "Вам необходимо установить §6§lYet Another Config Lib [YACL]§f, чтобы открыть экран конфигурации ${mod_name} \n\n§a§lОткрыть страницу §6§lYACL §a§lна Modrinth?", + + "${mod_id}.modmenu.category.general.name": "§lОсновное", + + "${mod_id}.modmenu.option.mod_enabled.name": "Включить мод", + "${mod_id}.modmenu.option.mod_enabled.description": "Если мод включён, то каждая частица каждого эффекта получит свою уникальную текстуру; если отключён, все частицы всех эффектов будут иметь стандартную текстуру.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Включить дополнительный журнал откладки мода", + "${mod_id}.modmenu.option.debug_log_enabled.description": "Если включено, в консоль игры будет выведена допольнительная информация о моде; если отключено, не будет.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Включено", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Отключено" +} diff --git a/src/main/resources/assets/particle_effects/lang/tt_ru.json b/src/main/resources/assets/particle_effects/lang/tt_ru.json new file mode 100644 index 0000000..a16fe8d --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/tt_ru.json @@ -0,0 +1,13 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Ваниль Minecraft'дагы Һәр тәэсир өчен уникаль текстураланган кисәкчекләрне өсти торган визуаль Fabric моды!", + "${mod_id}.modmenu.title": "§l${mod_name} көйләүләре", + "${mod_id}.modmenu.no_config_library_screen.message": "${mod_name} көйләүләре экранын ачу өчен Сезгә §6§lYet Another Config Lib [YACL]§f утыртырга кирәк\n\n§6§lYACL §a§lModrinth битен ачаргамы?", + + "${mod_id}.modmenu.category.general.name": "§lТөп", + + "${mod_id}.modmenu.option.mod_enabled.name": "Модны кушу", + "${mod_id}.modmenu.option.mod_enabled.description": "Кушылса, һәр тәэсир һәр кисәкчеге уникаль текстурага үзгәртеләчәк; Сүндерелсә, үзгәртелмәячәк.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "Кушык", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "Сүнек" +} diff --git a/src/main/resources/assets/particle_effects/lang/uk_ua.json b/src/main/resources/assets/particle_effects/lang/uk_ua.json new file mode 100644 index 0000000..3d71121 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/uk_ua.json @@ -0,0 +1,15 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "Візуальний мод Fabric, який додає унікальні текстуровані частинки для кожного стандартного ефекту Minecraft!", + "${mod_id}.modmenu.title": "Налаштування §l${mod_name}", + "${mod_id}.modmenu.no_config_library_screen.message": "Вам потрібно встановити §6§lYet Another Config Lib [YACL]§f, щоб відкрити екран налаштувань ${mod_name}\n\n§a§lВідкрити сторінку §6§lYACL§a§l на Modrinth?", + + "${mod_id}.modmenu.category.general.name": "§lЗагальні", + + "${mod_id}.modmenu.option.mod_enabled.name": "Мод увімкнено", + "${mod_id}.modmenu.option.mod_enabled.description": "Якщо ввімкнено, кожна частинка кожного ефекту буде замінено унікальною текстурою; якщо вимкнено, не буде.", + "${mod_id}.modmenu.option.debug_log_enabled.name": "§6Журнал налагодження ввімкнено", + "${mod_id}.modmenu.option.debug_log_enabled.description": "Якщо ввімкнено, додаткова інформація буде зареєстрована на консолі для налагодження; якщо вимкнено, не буде.", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "УВІМК.", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "ВИМК." +} diff --git a/src/main/resources/assets/particle_effects/lang/zh_cn.json b/src/main/resources/assets/particle_effects/lang/zh_cn.json new file mode 100644 index 0000000..9047fb7 --- /dev/null +++ b/src/main/resources/assets/particle_effects/lang/zh_cn.json @@ -0,0 +1,13 @@ +{ + "modmenu.descriptionTranslation.${mod_id}": "一个为原版Minecraft中每个效果添加独特纹理粒子的视觉Fabric模组!", + "${mod_id}.modmenu.title": "§l${mod_name} 配置", + "${mod_id}.modmenu.no_config_library_screen.message": "你需要安装 §6§lYet Another Config Lib [YACL]§f 才能打开 ${mod_name} 配置界面\n\n§a§l打开 §6§lYACL §a§lModrinth 页面?", + + "${mod_id}.modmenu.category.general.name": "§l通用", + + "${mod_id}.modmenu.option.mod_enabled.name": "模组启用", + "${mod_id}.modmenu.option.mod_enabled.description": "启用时,每个效果的粒子将被独特的纹理替换;禁用时则不会。", + + "${mod_id}.modmenu.formatter.enabled_or_disabled.true": "已启用", + "${mod_id}.modmenu.formatter.enabled_or_disabled.false": "已禁用" +} diff --git a/src/main/resources/assets/particle_effects/particles/absorption.json b/src/main/resources/assets/particle_effects/particles/absorption.json new file mode 100644 index 0000000..86e690e --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/absorption.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:absorption/1", + "particle_effects:absorption/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/bad_omen.json b/src/main/resources/assets/particle_effects/particles/bad_omen.json new file mode 100644 index 0000000..679a3e0 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/bad_omen.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:bad_omen/1", + "particle_effects:bad_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/blindness.json b/src/main/resources/assets/particle_effects/particles/blindness.json new file mode 100644 index 0000000..12dd5a3 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/blindness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:blindness/1", + "particle_effects:blindness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/conduit_power.json b/src/main/resources/assets/particle_effects/particles/conduit_power.json new file mode 100644 index 0000000..7420840 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/conduit_power.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:conduit_power/1", + "particle_effects:conduit_power/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/darkness.json b/src/main/resources/assets/particle_effects/particles/darkness.json new file mode 100644 index 0000000..5468d6d --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/darkness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:darkness/1", + "particle_effects:darkness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/dolphins_grace.json b/src/main/resources/assets/particle_effects/particles/dolphins_grace.json new file mode 100644 index 0000000..ff314ed --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/dolphins_grace.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:dolphins_grace/1", + "particle_effects:dolphins_grace/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/fire_resistance.json b/src/main/resources/assets/particle_effects/particles/fire_resistance.json new file mode 100644 index 0000000..725b6c3 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/fire_resistance.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:fire_resistance/1", + "particle_effects:fire_resistance/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/glowing.json b/src/main/resources/assets/particle_effects/particles/glowing.json new file mode 100644 index 0000000..36733b4 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/glowing.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:glowing/1", + "particle_effects:glowing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/haste.json b/src/main/resources/assets/particle_effects/particles/haste.json new file mode 100644 index 0000000..d1be521 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/haste.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:haste/1", + "particle_effects:haste/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/health_boost.json b/src/main/resources/assets/particle_effects/particles/health_boost.json new file mode 100644 index 0000000..129fa28 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/health_boost.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:health_boost/1", + "particle_effects:health_boost/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json b/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json new file mode 100644 index 0000000..fedd9c5 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/hero_of_the_village.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:hero_of_the_village/1", + "particle_effects:hero_of_the_village/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/hunger.json b/src/main/resources/assets/particle_effects/particles/hunger.json new file mode 100644 index 0000000..637883b --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/hunger.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:hunger/1", + "particle_effects:hunger/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/infested_new.json b/src/main/resources/assets/particle_effects/particles/infested_new.json new file mode 100644 index 0000000..a0d89aa --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/infested_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:infested/1", + "particle_effects:infested/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/instant_damage.json b/src/main/resources/assets/particle_effects/particles/instant_damage.json new file mode 100644 index 0000000..39302ee --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/instant_damage.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:instant_damage/1", + "particle_effects:instant_damage/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/instant_health.json b/src/main/resources/assets/particle_effects/particles/instant_health.json new file mode 100644 index 0000000..87cc910 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/instant_health.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:instant_health/1", + "particle_effects:instant_health/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/invisibility.json b/src/main/resources/assets/particle_effects/particles/invisibility.json new file mode 100644 index 0000000..018e341 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/invisibility.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:invisibility/1", + "particle_effects:invisibility/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/jump_boost.json b/src/main/resources/assets/particle_effects/particles/jump_boost.json new file mode 100644 index 0000000..0095758 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/jump_boost.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:jump_boost/1", + "particle_effects:jump_boost/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/levitation.json b/src/main/resources/assets/particle_effects/particles/levitation.json new file mode 100644 index 0000000..4246f43 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/levitation.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:levitation/1", + "particle_effects:levitation/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/luck.json b/src/main/resources/assets/particle_effects/particles/luck.json new file mode 100644 index 0000000..35fe1de --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/luck.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:luck/1", + "particle_effects:luck/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/mining_fatigue.json b/src/main/resources/assets/particle_effects/particles/mining_fatigue.json new file mode 100644 index 0000000..0969a83 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/mining_fatigue.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:mining_fatigue/1", + "particle_effects:mining_fatigue/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/nausea.json b/src/main/resources/assets/particle_effects/particles/nausea.json new file mode 100644 index 0000000..80bc39b --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/nausea.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:nausea/1", + "particle_effects:nausea/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/night_vision.json b/src/main/resources/assets/particle_effects/particles/night_vision.json new file mode 100644 index 0000000..fbfef18 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/night_vision.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:night_vision/1", + "particle_effects:night_vision/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/oozing_new.json b/src/main/resources/assets/particle_effects/particles/oozing_new.json new file mode 100644 index 0000000..b33c855 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/oozing_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:oozing/1", + "particle_effects:oozing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/poison.json b/src/main/resources/assets/particle_effects/particles/poison.json new file mode 100644 index 0000000..8935537 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/poison.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:poison/1", + "particle_effects:poison/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/raid_omen_new.json b/src/main/resources/assets/particle_effects/particles/raid_omen_new.json new file mode 100644 index 0000000..70b9cb2 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/raid_omen_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:raid_omen/1", + "particle_effects:raid_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/regeneration.json b/src/main/resources/assets/particle_effects/particles/regeneration.json new file mode 100644 index 0000000..6936db6 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/regeneration.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:regeneration/1", + "particle_effects:regeneration/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/resistance.json b/src/main/resources/assets/particle_effects/particles/resistance.json new file mode 100644 index 0000000..4d819b7 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/resistance.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:resistance/1", + "particle_effects:resistance/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/saturation.json b/src/main/resources/assets/particle_effects/particles/saturation.json new file mode 100644 index 0000000..bd20cb0 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/saturation.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:saturation/1", + "particle_effects:saturation/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/slow_falling.json b/src/main/resources/assets/particle_effects/particles/slow_falling.json new file mode 100644 index 0000000..b8adbe5 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/slow_falling.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:slow_falling/1", + "particle_effects:slow_falling/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/slowness.json b/src/main/resources/assets/particle_effects/particles/slowness.json new file mode 100644 index 0000000..3b79aec --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/slowness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:slowness/1", + "particle_effects:slowness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/speed.json b/src/main/resources/assets/particle_effects/particles/speed.json new file mode 100644 index 0000000..09edc12 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/speed.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:speed/1", + "particle_effects:speed/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/strength.json b/src/main/resources/assets/particle_effects/particles/strength.json new file mode 100644 index 0000000..86abe49 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/strength.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:strength/1", + "particle_effects:strength/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/trial_omen_new.json b/src/main/resources/assets/particle_effects/particles/trial_omen_new.json new file mode 100644 index 0000000..a8a804c --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/trial_omen_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:trial_omen/1", + "particle_effects:trial_omen/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/unluck.json b/src/main/resources/assets/particle_effects/particles/unluck.json new file mode 100644 index 0000000..55b1306 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/unluck.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:unluck/1", + "particle_effects:unluck/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/water_breathing.json b/src/main/resources/assets/particle_effects/particles/water_breathing.json new file mode 100644 index 0000000..5075b80 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/water_breathing.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:water_breathing/1", + "particle_effects:water_breathing/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/weakness.json b/src/main/resources/assets/particle_effects/particles/weakness.json new file mode 100644 index 0000000..28511ee --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/weakness.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:weakness/1", + "particle_effects:weakness/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/weaving_new.json b/src/main/resources/assets/particle_effects/particles/weaving_new.json new file mode 100644 index 0000000..1bdad32 --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/weaving_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:weaving/1", + "particle_effects:weaving/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/wind_charged_new.json b/src/main/resources/assets/particle_effects/particles/wind_charged_new.json new file mode 100644 index 0000000..39567fc --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/wind_charged_new.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:wind_charged/1", + "particle_effects:wind_charged/2" + ] +} diff --git a/src/main/resources/assets/particle_effects/particles/wither.json b/src/main/resources/assets/particle_effects/particles/wither.json new file mode 100644 index 0000000..bc5168c --- /dev/null +++ b/src/main/resources/assets/particle_effects/particles/wither.json @@ -0,0 +1,6 @@ +{ + "textures": [ + "particle_effects:wither/1", + "particle_effects:wither/2" + ] +} diff --git a/src/main/resources/assets/particle-effects/textures/particle/absorption/1.png b/src/main/resources/assets/particle_effects/textures/particle/absorption/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/absorption/1.png rename to src/main/resources/assets/particle_effects/textures/particle/absorption/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/absorption/2.png b/src/main/resources/assets/particle_effects/textures/particle/absorption/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/absorption/2.png rename to src/main/resources/assets/particle_effects/textures/particle/absorption/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/bad_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/bad_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/bad_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/bad_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/bad_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/bad_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/bad_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/bad_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/blindness/1.png b/src/main/resources/assets/particle_effects/textures/particle/blindness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/blindness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/blindness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/blindness/2.png b/src/main/resources/assets/particle_effects/textures/particle/blindness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/blindness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/blindness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/conduit_power/1.png b/src/main/resources/assets/particle_effects/textures/particle/conduit_power/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/conduit_power/1.png rename to src/main/resources/assets/particle_effects/textures/particle/conduit_power/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/conduit_power/2.png b/src/main/resources/assets/particle_effects/textures/particle/conduit_power/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/conduit_power/2.png rename to src/main/resources/assets/particle_effects/textures/particle/conduit_power/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/darkness/1.png b/src/main/resources/assets/particle_effects/textures/particle/darkness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/darkness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/darkness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/darkness/2.png b/src/main/resources/assets/particle_effects/textures/particle/darkness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/darkness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/darkness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/1.png b/src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/1.png rename to src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/2.png b/src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/dolphins_grace/2.png rename to src/main/resources/assets/particle_effects/textures/particle/dolphins_grace/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/fire_resistance/1.png b/src/main/resources/assets/particle_effects/textures/particle/fire_resistance/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/fire_resistance/1.png rename to src/main/resources/assets/particle_effects/textures/particle/fire_resistance/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/fire_resistance/2.png b/src/main/resources/assets/particle_effects/textures/particle/fire_resistance/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/fire_resistance/2.png rename to src/main/resources/assets/particle_effects/textures/particle/fire_resistance/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/glowing/1.png b/src/main/resources/assets/particle_effects/textures/particle/glowing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/glowing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/glowing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/glowing/2.png b/src/main/resources/assets/particle_effects/textures/particle/glowing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/glowing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/glowing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/haste/1.png b/src/main/resources/assets/particle_effects/textures/particle/haste/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/haste/1.png rename to src/main/resources/assets/particle_effects/textures/particle/haste/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/haste/2.png b/src/main/resources/assets/particle_effects/textures/particle/haste/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/haste/2.png rename to src/main/resources/assets/particle_effects/textures/particle/haste/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/health_boost/1.png b/src/main/resources/assets/particle_effects/textures/particle/health_boost/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/health_boost/1.png rename to src/main/resources/assets/particle_effects/textures/particle/health_boost/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/health_boost/2.png b/src/main/resources/assets/particle_effects/textures/particle/health_boost/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/health_boost/2.png rename to src/main/resources/assets/particle_effects/textures/particle/health_boost/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/1.png b/src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/1.png rename to src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/2.png b/src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hero_of_the_village/2.png rename to src/main/resources/assets/particle_effects/textures/particle/hero_of_the_village/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hunger/1.png b/src/main/resources/assets/particle_effects/textures/particle/hunger/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hunger/1.png rename to src/main/resources/assets/particle_effects/textures/particle/hunger/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/hunger/2.png b/src/main/resources/assets/particle_effects/textures/particle/hunger/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/hunger/2.png rename to src/main/resources/assets/particle_effects/textures/particle/hunger/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/infested/1.png b/src/main/resources/assets/particle_effects/textures/particle/infested/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/infested/1.png rename to src/main/resources/assets/particle_effects/textures/particle/infested/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/infested/2.png b/src/main/resources/assets/particle_effects/textures/particle/infested/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/infested/2.png rename to src/main/resources/assets/particle_effects/textures/particle/infested/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_damage/1.png b/src/main/resources/assets/particle_effects/textures/particle/instant_damage/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_damage/1.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_damage/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_damage/2.png b/src/main/resources/assets/particle_effects/textures/particle/instant_damage/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_damage/2.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_damage/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_health/1.png b/src/main/resources/assets/particle_effects/textures/particle/instant_health/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_health/1.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_health/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/instant_health/2.png b/src/main/resources/assets/particle_effects/textures/particle/instant_health/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/instant_health/2.png rename to src/main/resources/assets/particle_effects/textures/particle/instant_health/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/invisibility/1.png b/src/main/resources/assets/particle_effects/textures/particle/invisibility/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/invisibility/1.png rename to src/main/resources/assets/particle_effects/textures/particle/invisibility/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/invisibility/2.png b/src/main/resources/assets/particle_effects/textures/particle/invisibility/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/invisibility/2.png rename to src/main/resources/assets/particle_effects/textures/particle/invisibility/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/jump_boost/1.png b/src/main/resources/assets/particle_effects/textures/particle/jump_boost/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/jump_boost/1.png rename to src/main/resources/assets/particle_effects/textures/particle/jump_boost/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/jump_boost/2.png b/src/main/resources/assets/particle_effects/textures/particle/jump_boost/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/jump_boost/2.png rename to src/main/resources/assets/particle_effects/textures/particle/jump_boost/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/levitation/1.png b/src/main/resources/assets/particle_effects/textures/particle/levitation/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/levitation/1.png rename to src/main/resources/assets/particle_effects/textures/particle/levitation/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/levitation/2.png b/src/main/resources/assets/particle_effects/textures/particle/levitation/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/levitation/2.png rename to src/main/resources/assets/particle_effects/textures/particle/levitation/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/luck/1.png b/src/main/resources/assets/particle_effects/textures/particle/luck/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/luck/1.png rename to src/main/resources/assets/particle_effects/textures/particle/luck/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/luck/2.png b/src/main/resources/assets/particle_effects/textures/particle/luck/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/luck/2.png rename to src/main/resources/assets/particle_effects/textures/particle/luck/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/1.png b/src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/1.png rename to src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/2.png b/src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/mining_fatigue/2.png rename to src/main/resources/assets/particle_effects/textures/particle/mining_fatigue/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/nausea/1.png b/src/main/resources/assets/particle_effects/textures/particle/nausea/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/nausea/1.png rename to src/main/resources/assets/particle_effects/textures/particle/nausea/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/nausea/2.png b/src/main/resources/assets/particle_effects/textures/particle/nausea/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/nausea/2.png rename to src/main/resources/assets/particle_effects/textures/particle/nausea/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/night_vision/1.png b/src/main/resources/assets/particle_effects/textures/particle/night_vision/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/night_vision/1.png rename to src/main/resources/assets/particle_effects/textures/particle/night_vision/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/night_vision/2.png b/src/main/resources/assets/particle_effects/textures/particle/night_vision/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/night_vision/2.png rename to src/main/resources/assets/particle_effects/textures/particle/night_vision/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/oozing/1.png b/src/main/resources/assets/particle_effects/textures/particle/oozing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/oozing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/oozing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/oozing/2.png b/src/main/resources/assets/particle_effects/textures/particle/oozing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/oozing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/oozing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/poison/1.png b/src/main/resources/assets/particle_effects/textures/particle/poison/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/poison/1.png rename to src/main/resources/assets/particle_effects/textures/particle/poison/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/poison/2.png b/src/main/resources/assets/particle_effects/textures/particle/poison/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/poison/2.png rename to src/main/resources/assets/particle_effects/textures/particle/poison/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/raid_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/raid_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/raid_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/raid_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/raid_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/raid_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/raid_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/raid_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/regeneration/1.png b/src/main/resources/assets/particle_effects/textures/particle/regeneration/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/regeneration/1.png rename to src/main/resources/assets/particle_effects/textures/particle/regeneration/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/regeneration/2.png b/src/main/resources/assets/particle_effects/textures/particle/regeneration/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/regeneration/2.png rename to src/main/resources/assets/particle_effects/textures/particle/regeneration/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/resistance/1.png b/src/main/resources/assets/particle_effects/textures/particle/resistance/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/resistance/1.png rename to src/main/resources/assets/particle_effects/textures/particle/resistance/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/resistance/2.png b/src/main/resources/assets/particle_effects/textures/particle/resistance/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/resistance/2.png rename to src/main/resources/assets/particle_effects/textures/particle/resistance/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/saturation/1.png b/src/main/resources/assets/particle_effects/textures/particle/saturation/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/saturation/1.png rename to src/main/resources/assets/particle_effects/textures/particle/saturation/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/saturation/2.png b/src/main/resources/assets/particle_effects/textures/particle/saturation/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/saturation/2.png rename to src/main/resources/assets/particle_effects/textures/particle/saturation/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slow_falling/1.png b/src/main/resources/assets/particle_effects/textures/particle/slow_falling/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slow_falling/1.png rename to src/main/resources/assets/particle_effects/textures/particle/slow_falling/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slow_falling/2.png b/src/main/resources/assets/particle_effects/textures/particle/slow_falling/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slow_falling/2.png rename to src/main/resources/assets/particle_effects/textures/particle/slow_falling/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slowness/1.png b/src/main/resources/assets/particle_effects/textures/particle/slowness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slowness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/slowness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/slowness/2.png b/src/main/resources/assets/particle_effects/textures/particle/slowness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/slowness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/slowness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/speed/1.png b/src/main/resources/assets/particle_effects/textures/particle/speed/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/speed/1.png rename to src/main/resources/assets/particle_effects/textures/particle/speed/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/speed/2.png b/src/main/resources/assets/particle_effects/textures/particle/speed/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/speed/2.png rename to src/main/resources/assets/particle_effects/textures/particle/speed/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/strength/1.png b/src/main/resources/assets/particle_effects/textures/particle/strength/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/strength/1.png rename to src/main/resources/assets/particle_effects/textures/particle/strength/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/strength/2.png b/src/main/resources/assets/particle_effects/textures/particle/strength/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/strength/2.png rename to src/main/resources/assets/particle_effects/textures/particle/strength/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/trial_omen/1.png b/src/main/resources/assets/particle_effects/textures/particle/trial_omen/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/trial_omen/1.png rename to src/main/resources/assets/particle_effects/textures/particle/trial_omen/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/trial_omen/2.png b/src/main/resources/assets/particle_effects/textures/particle/trial_omen/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/trial_omen/2.png rename to src/main/resources/assets/particle_effects/textures/particle/trial_omen/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/unluck/1.png b/src/main/resources/assets/particle_effects/textures/particle/unluck/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/unluck/1.png rename to src/main/resources/assets/particle_effects/textures/particle/unluck/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/unluck/2.png b/src/main/resources/assets/particle_effects/textures/particle/unluck/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/unluck/2.png rename to src/main/resources/assets/particle_effects/textures/particle/unluck/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/water_breathing/1.png b/src/main/resources/assets/particle_effects/textures/particle/water_breathing/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/water_breathing/1.png rename to src/main/resources/assets/particle_effects/textures/particle/water_breathing/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/water_breathing/2.png b/src/main/resources/assets/particle_effects/textures/particle/water_breathing/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/water_breathing/2.png rename to src/main/resources/assets/particle_effects/textures/particle/water_breathing/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weakness/1.png b/src/main/resources/assets/particle_effects/textures/particle/weakness/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weakness/1.png rename to src/main/resources/assets/particle_effects/textures/particle/weakness/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weakness/2.png b/src/main/resources/assets/particle_effects/textures/particle/weakness/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weakness/2.png rename to src/main/resources/assets/particle_effects/textures/particle/weakness/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weaving/1.png b/src/main/resources/assets/particle_effects/textures/particle/weaving/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weaving/1.png rename to src/main/resources/assets/particle_effects/textures/particle/weaving/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/weaving/2.png b/src/main/resources/assets/particle_effects/textures/particle/weaving/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/weaving/2.png rename to src/main/resources/assets/particle_effects/textures/particle/weaving/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wind_charged/1.png b/src/main/resources/assets/particle_effects/textures/particle/wind_charged/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wind_charged/1.png rename to src/main/resources/assets/particle_effects/textures/particle/wind_charged/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wind_charged/2.png b/src/main/resources/assets/particle_effects/textures/particle/wind_charged/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wind_charged/2.png rename to src/main/resources/assets/particle_effects/textures/particle/wind_charged/2.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wither/1.png b/src/main/resources/assets/particle_effects/textures/particle/wither/1.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wither/1.png rename to src/main/resources/assets/particle_effects/textures/particle/wither/1.png diff --git a/src/main/resources/assets/particle-effects/textures/particle/wither/2.png b/src/main/resources/assets/particle_effects/textures/particle/wither/2.png similarity index 100% rename from src/main/resources/assets/particle-effects/textures/particle/wither/2.png rename to src/main/resources/assets/particle_effects/textures/particle/wither/2.png diff --git a/src/main/resources/aws/1.20.1.accesswidener b/src/main/resources/aws/1.20.1.accesswidener deleted file mode 100644 index 1d9c3bf..0000000 --- a/src/main/resources/aws/1.20.1.accesswidener +++ /dev/null @@ -1,18 +0,0 @@ -accessWidener v2 named -# 1.20.1 AW - -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.1.accesswidener b/src/main/resources/aws/1.21.1.accesswidener deleted file mode 100644 index f74095a..0000000 --- a/src/main/resources/aws/1.21.1.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.1 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/1.21.2.accesswidener b/src/main/resources/aws/1.21.2.accesswidener deleted file mode 100644 index 71ffea9..0000000 --- a/src/main/resources/aws/1.21.2.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.2 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.3.accesswidener b/src/main/resources/aws/1.21.3.accesswidener deleted file mode 100644 index ba9d5ae..0000000 --- a/src/main/resources/aws/1.21.3.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.3 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.4.accesswidener b/src/main/resources/aws/1.21.4.accesswidener deleted file mode 100644 index ab51f67..0000000 --- a/src/main/resources/aws/1.21.4.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.4 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.5.accesswidener b/src/main/resources/aws/1.21.5.accesswidener deleted file mode 100644 index 233738f..0000000 --- a/src/main/resources/aws/1.21.5.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.5 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.6.accesswidener b/src/main/resources/aws/1.21.6.accesswidener deleted file mode 100644 index cf07f4a..0000000 --- a/src/main/resources/aws/1.21.6.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.6 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.7.accesswidener b/src/main/resources/aws/1.21.7.accesswidener deleted file mode 100644 index 77253e8..0000000 --- a/src/main/resources/aws/1.21.7.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.7 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.8.accesswidener b/src/main/resources/aws/1.21.8.accesswidener deleted file mode 100644 index f9370c8..0000000 --- a/src/main/resources/aws/1.21.8.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21.8 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/TintedParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F \ No newline at end of file diff --git a/src/main/resources/aws/1.21.9.accesswidener b/src/main/resources/aws/1.21.9.accesswidener deleted file mode 100644 index 7f854f3..0000000 --- a/src/main/resources/aws/1.21.9.accesswidener +++ /dev/null @@ -1,25 +0,0 @@ -accessWidener v2 named -# 1.21.9 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/TintedParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle lastX D -accessible field net/minecraft/client/particle/Particle lastY D -accessible field net/minecraft/client/particle/Particle lastZ D - -accessible field net/minecraft/client/particle/BillboardParticle alpha F -accessible field net/minecraft/client/particle/BillboardParticle red F -accessible field net/minecraft/client/particle/BillboardParticle green F -accessible field net/minecraft/client/particle/BillboardParticle blue F - -accessible field net/minecraft/client/render/WorldRenderer entityRenderDispatcher Lnet/minecraft/client/render/command/RenderDispatcher; -accessible field net/minecraft/client/render/WorldRenderer worldRenderState Lnet/minecraft/client/render/state/WorldRenderState; \ No newline at end of file diff --git a/src/main/resources/aws/1.21.accesswidener b/src/main/resources/aws/1.21.accesswidener deleted file mode 100644 index 4672c8f..0000000 --- a/src/main/resources/aws/1.21.accesswidener +++ /dev/null @@ -1,22 +0,0 @@ -accessWidener v2 named -# 1.21 AW - -accessible field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -mutable field net/minecraft/entity/effect/StatusEffect particleFactory Ljava/util/function/Function; -accessible field net/minecraft/potion/Potion baseName Ljava/lang/String; -accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/client/particle/SpriteProvider;)V -accessible field net/minecraft/particle/EntityEffectParticleEffect color I -accessible class net/minecraft/entity/effect/SaturationStatusEffect - -accessible field net/minecraft/client/particle/Particle x D -accessible field net/minecraft/client/particle/Particle y D -accessible field net/minecraft/client/particle/Particle z D - -accessible field net/minecraft/client/particle/Particle prevPosX D -accessible field net/minecraft/client/particle/Particle prevPosY D -accessible field net/minecraft/client/particle/Particle prevPosZ D - -accessible field net/minecraft/client/particle/Particle alpha F -accessible field net/minecraft/client/particle/Particle red F -accessible field net/minecraft/client/particle/Particle green F -accessible field net/minecraft/client/particle/Particle blue F diff --git a/src/main/resources/aws/fabric-1.20.1.accesswidener b/src/main/resources/aws/fabric-1.20.1.accesswidener new file mode 100644 index 0000000..2e723de --- /dev/null +++ b/src/main/resources/aws/fabric-1.20.1.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.20.1 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F + +accessible field net/minecraft/client/particle/ParticleEngine particles Ljava/util/Map; diff --git a/src/main/resources/aws/fabric-1.21.1.accesswidener b/src/main/resources/aws/fabric-1.21.1.accesswidener new file mode 100644 index 0000000..5b0adee --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.1.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21.1 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.10.accesswidener b/src/main/resources/aws/fabric-1.21.10.accesswidener new file mode 100644 index 0000000..e50278b --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.10.accesswidener @@ -0,0 +1,23 @@ +accessWidener v2 named +# 1.21.10 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/SingleQuadParticle alpha F +accessible field net/minecraft/client/particle/SingleQuadParticle rCol F +accessible field net/minecraft/client/particle/SingleQuadParticle gCol F +accessible field net/minecraft/client/particle/SingleQuadParticle bCol F + +accessible field net/minecraft/client/renderer/LevelRenderer featureRenderDispatcher Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher; +accessible field net/minecraft/client/renderer/LevelRenderer levelRenderState Lnet/minecraft/client/renderer/state/LevelRenderState; diff --git a/src/main/resources/aws/fabric-1.21.4.accesswidener b/src/main/resources/aws/fabric-1.21.4.accesswidener new file mode 100644 index 0000000..0968a62 --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.4.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21.4 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.5.accesswidener b/src/main/resources/aws/fabric-1.21.5.accesswidener new file mode 100644 index 0000000..a9d8b05 --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.5.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21.5 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.6.accesswidener b/src/main/resources/aws/fabric-1.21.6.accesswidener new file mode 100644 index 0000000..ff12e0c --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.6.accesswidener @@ -0,0 +1,22 @@ +accessWidener v2 named +# 1.21.6 AW + +accessible field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +mutable field net/minecraft/world/effect/MobEffect particleFactory Ljava/util/function/Function; +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.7.accesswidener b/src/main/resources/aws/fabric-1.21.7.accesswidener new file mode 100644 index 0000000..f6700da --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.7.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21.7 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.8.accesswidener b/src/main/resources/aws/fabric-1.21.8.accesswidener new file mode 100644 index 0000000..1d02288 --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.8.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21.8 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/fabric-1.21.9.accesswidener b/src/main/resources/aws/fabric-1.21.9.accesswidener new file mode 100644 index 0000000..bb0645d --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.9.accesswidener @@ -0,0 +1,23 @@ +accessWidener v2 named +# 1.21.9 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/SingleQuadParticle alpha F +accessible field net/minecraft/client/particle/SingleQuadParticle rCol F +accessible field net/minecraft/client/particle/SingleQuadParticle gCol F +accessible field net/minecraft/client/particle/SingleQuadParticle bCol F + +accessible field net/minecraft/client/renderer/LevelRenderer featureRenderDispatcher Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher; +accessible field net/minecraft/client/renderer/LevelRenderer levelRenderState Lnet/minecraft/client/renderer/state/LevelRenderState; diff --git a/src/main/resources/aws/fabric-1.21.accesswidener b/src/main/resources/aws/fabric-1.21.accesswidener new file mode 100644 index 0000000..69f5518 --- /dev/null +++ b/src/main/resources/aws/fabric-1.21.accesswidener @@ -0,0 +1,20 @@ +accessWidener v2 named +# 1.21 AW + +accessible field net/minecraft/world/item/alchemy/Potion name Ljava/lang/String; +accessible method net/minecraft/client/particle/SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V +accessible field net/minecraft/core/particles/ColorParticleOption color I +accessible class net/minecraft/world/effect/SaturationMobEffect + +accessible field net/minecraft/client/particle/Particle x D +accessible field net/minecraft/client/particle/Particle y D +accessible field net/minecraft/client/particle/Particle z D + +accessible field net/minecraft/client/particle/Particle xo D +accessible field net/minecraft/client/particle/Particle yo D +accessible field net/minecraft/client/particle/Particle zo D + +accessible field net/minecraft/client/particle/Particle alpha F +accessible field net/minecraft/client/particle/Particle rCol F +accessible field net/minecraft/client/particle/Particle gCol F +accessible field net/minecraft/client/particle/Particle bCol F diff --git a/src/main/resources/aws/forge-1.20.1.cfg b/src/main/resources/aws/forge-1.20.1.cfg new file mode 100644 index 0000000..af65e25 --- /dev/null +++ b/src/main/resources/aws/forge-1.20.1.cfg @@ -0,0 +1,14 @@ +public net.minecraft.client.particle.Particle f_107209_ # xo +public net.minecraft.client.particle.Particle f_107210_ # yo +public net.minecraft.client.particle.Particle f_107211_ # zo + +public net.minecraft.client.particle.Particle f_107212_ # x +public net.minecraft.client.particle.Particle f_107213_ # y +public net.minecraft.client.particle.Particle f_107214_ # z + +public net.minecraft.client.particle.Particle f_107227_ # r +public net.minecraft.client.particle.Particle f_107228_ # g +public net.minecraft.client.particle.Particle f_107229_ # b +public net.minecraft.client.particle.Particle f_107230_ # a + +public net.minecraft.client.particle.SpellParticle (Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/client/particle/SpriteSet;)V \ No newline at end of file diff --git a/src/main/resources/aws/neoforge-1.21.1.cfg b/src/main/resources/aws/neoforge-1.21.1.cfg new file mode 100644 index 0000000..861cb25 --- /dev/null +++ b/src/main/resources/aws/neoforge-1.21.1.cfg @@ -0,0 +1,15 @@ +public net.minecraft.core.particles.ColorParticleOption color +public net.minecraft.world.effect.SaturationMobEffect + +public net.minecraft.client.particle.Particle xo +public net.minecraft.client.particle.Particle yo +public net.minecraft.client.particle.Particle zo + +public net.minecraft.client.particle.Particle x +public net.minecraft.client.particle.Particle y +public net.minecraft.client.particle.Particle z + +public net.minecraft.client.particle.Particle rCol +public net.minecraft.client.particle.Particle gCol +public net.minecraft.client.particle.Particle bCol +public net.minecraft.client.particle.Particle alpha \ No newline at end of file diff --git a/src/main/resources/aws/neoforge-1.21.10.cfg b/src/main/resources/aws/neoforge-1.21.10.cfg new file mode 100644 index 0000000..75837c6 --- /dev/null +++ b/src/main/resources/aws/neoforge-1.21.10.cfg @@ -0,0 +1,18 @@ +public net.minecraft.core.particles.ColorParticleOption color +public net.minecraft.world.effect.SaturationMobEffect + +public net.minecraft.client.particle.Particle xo +public net.minecraft.client.particle.Particle yo +public net.minecraft.client.particle.Particle zo + +public net.minecraft.client.particle.Particle x +public net.minecraft.client.particle.Particle y +public net.minecraft.client.particle.Particle z + +public net.minecraft.client.particle.SingleQuadParticle rCol +public net.minecraft.client.particle.SingleQuadParticle gCol +public net.minecraft.client.particle.SingleQuadParticle bCol +public net.minecraft.client.particle.SingleQuadParticle alpha + +public net.minecraft.client.renderer.LevelRenderer featureRenderDispatcher +public net.minecraft.client.renderer.LevelRenderer levelRenderState \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ae86068..8ec3282 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,13 +16,13 @@ "environment": "client", "entrypoints": { "main": [ - "net.lopymine.pe.ParticleEffects" + "net.lopymine.pe.entrypoint.PEFabricEntrypoint" ], "client": [ - "net.lopymine.pe.client.ParticleEffectsClient" + "net.lopymine.pe.entrypoint.PEFabricClientEntrypoint" ], "modmenu": [ - "net.lopymine.pe.modmenu.ModMenuIntegration" + "net.lopymine.pe.modmenu.PEModMenuIntegration" ] }, "depends": { @@ -31,8 +31,8 @@ "java": ">=${java}", "${fabric_api_id}": "*" }, - "accessWidener": "aws/${minecraft}.accesswidener", - "mixins": [ - "${mod_id}.mixins.json" - ] + "accessWidener": "aws/fabric-${minecraft}.accesswidener", + "mixins": [ + "${fabric_trick_mixin_configs}" + ] } \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..145b120 --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "${mod_name}", + "pack_format": 14 + } +} \ No newline at end of file diff --git a/src/main/resources/particle-effects.mixins.json5 b/src/main/resources/particle_effects.mixins.json5 similarity index 80% rename from src/main/resources/particle-effects.mixins.json5 rename to src/main/resources/particle_effects.mixins.json5 index 9f70dbe..f7ffe62 100644 --- a/src/main/resources/particle-effects.mixins.json5 +++ b/src/main/resources/particle_effects.mixins.json5 @@ -13,18 +13,18 @@ /*? !1.20.1*/ "SecondLivingEntityMixin", /*? >=1.21.9*/ - /*"BillboardParticleRendererMixin",*/ - /*? >=1.21.9*/ - /*"ClientWorldMixin",*/ + "ClientWorldMixin", /*? <=1.21.8*/ - "WorldRendererMixin", + /*"WorldRendererMixin",*/ "StatusEffectsMixin", "AreaEffectCloudEntityMixin", "StatusEffectMixin", "SimpleParticleTypeMixin", "ParticleManagerMixin", "ParticleMixin", - "ArrowEntityMixin" + "ArrowEntityMixin", + "WorldRendererDebugParticlesMixin", + "ParticleEngineMixin" ], "injectors": { "defaultRequire": 1 diff --git a/stonecutter.gradle b/stonecutter.gradle index b6713a2..3516906 100644 --- a/stonecutter.gradle +++ b/stonecutter.gradle @@ -1,5 +1,5 @@ plugins { id "dev.kikugie.stonecutter" - id "net.lopymine.mossy-plugin-stonecutter" + id "net.lopymine.mossy-plugin-stonecutter" version "$mossy_plugin_version" } -stonecutter.active "1.21.8" /* [SC] DO NOT EDIT */ \ No newline at end of file +stonecutter.active "fabric-1.21.10" /* [SC] DO NOT EDIT */ \ No newline at end of file diff --git a/versions/1.20.1/gradle.properties b/versions/1.20.1/gradle.properties deleted file mode 100644 index 1f568bf..0000000 --- a/versions/1.20.1/gradle.properties +++ /dev/null @@ -1,14 +0,0 @@ -# Versioned Properties - -# Java Properties -build.java=17 - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.20.1+build.10 -build.fabric_api=0.92.2+1.20.1 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1 -dep.modmenu=7.2.2 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1 -dep.yacl=3.5.0+1.20.1-fabric diff --git a/versions/1.21.1/gradle.properties b/versions/1.21.1/gradle.properties deleted file mode 100644 index 2b0e9f3..0000000 --- a/versions/1.21.1/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.1+build.3 -build.fabric_api=0.107.0+1.21.1 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1 -dep.modmenu=11.0.3 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1 -dep.yacl=3.6.1+1.21-fabric diff --git a/versions/1.21.2/gradle.properties b/versions/1.21.2/gradle.properties deleted file mode 100644 index 2768958..0000000 --- a/versions/1.21.2/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.2+build.1 -build.fabric_api=0.106.1+1.21.2 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.2 -dep.modmenu=12.0.0-beta.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.2 -dep.yacl=3.6.1+1.21.2-fabric diff --git a/versions/1.21.3/gradle.properties b/versions/1.21.3/gradle.properties deleted file mode 100644 index e414f1a..0000000 --- a/versions/1.21.3/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.3+build.2 -build.fabric_api=0.107.0+1.21.3 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.3 -dep.modmenu=12.0.0-beta.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.3 -dep.yacl=3.6.1+1.21.2-fabric diff --git a/versions/1.21.4/gradle.properties b/versions/1.21.4/gradle.properties deleted file mode 100644 index 254fba1..0000000 --- a/versions/1.21.4/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.4+build.8 -build.fabric_api=0.117.0+1.21.4 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.4 -dep.modmenu=13.0.2 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.4 -dep.yacl=3.6.2+1.21.4-fabric diff --git a/versions/1.21/gradle.properties b/versions/1.21/gradle.properties deleted file mode 100644 index 23a5afd..0000000 --- a/versions/1.21/gradle.properties +++ /dev/null @@ -1,11 +0,0 @@ -# Versioned Properties - -# Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21+build.9 -build.fabric_api=0.100.7+1.21 - -# Additional Dependencies Properties -# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21 -dep.modmenu=11.0.1 -# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21 -dep.yacl=3.5.0+1.21-fabric diff --git a/versions/fabric-1.20.1/gradle.properties b/versions/fabric-1.20.1/gradle.properties new file mode 100644 index 0000000..38c7b4a --- /dev/null +++ b/versions/fabric-1.20.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.20.1+build.10 +build.fabric_api=0.92.6+1.20.1 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1&l=fabric +dep.modmenu=7.2.2 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1&l=fabric +dep.yacl=3.6.6+1.20.1-fabric diff --git a/versions/fabric-1.21.1/gradle.properties b/versions/fabric-1.21.1/gradle.properties new file mode 100644 index 0000000..f7807b4 --- /dev/null +++ b/versions/fabric-1.21.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.1+build.3 +build.fabric_api=0.116.7+1.21.1 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1&l=fabric +dep.modmenu=11.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1&l=fabric +dep.yacl=3.8.0+1.21.1-fabric diff --git a/versions/fabric-1.21.10/gradle.properties b/versions/fabric-1.21.10/gradle.properties new file mode 100644 index 0000000..fc78390 --- /dev/null +++ b/versions/fabric-1.21.10/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.10+build.3 +build.fabric_api=0.138.3+1.21.10 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.10&l=fabric +dep.modmenu=16.0.0-rc.1 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.10&l=fabric +dep.yacl=3.8.0+1.21.9-fabric diff --git a/versions/fabric-1.21.4/gradle.properties b/versions/fabric-1.21.4/gradle.properties new file mode 100644 index 0000000..4d4ee29 --- /dev/null +++ b/versions/fabric-1.21.4/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21.4+build.8 +build.fabric_api=0.119.4+1.21.4 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.4&l=fabric +dep.modmenu=13.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.4&l=fabric +dep.yacl=3.8.0+1.21.4-fabric diff --git a/versions/1.21.5/gradle.properties b/versions/fabric-1.21.5/gradle.properties similarity index 82% rename from versions/1.21.5/gradle.properties rename to versions/fabric-1.21.5/gradle.properties index ca91576..7543130 100644 --- a/versions/1.21.5/gradle.properties +++ b/versions/fabric-1.21.5/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.5+build.1 -build.fabric_api=0.119.5+1.21.5 +build.fabric_api=0.128.2+1.21.5 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.5&l=fabric -dep.modmenu=14.0.0-rc.2 +dep.modmenu=14.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.5&l=fabric -dep.yacl=3.6.6+1.21.5-fabric +dep.yacl=3.8.0+1.21.5-fabric diff --git a/versions/1.21.6/gradle.properties b/versions/fabric-1.21.6/gradle.properties similarity index 81% rename from versions/1.21.6/gradle.properties rename to versions/fabric-1.21.6/gradle.properties index e475cdf..817e541 100644 --- a/versions/1.21.6/gradle.properties +++ b/versions/fabric-1.21.6/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.6+build.1 -build.fabric_api=0.128.1+1.21.6 +build.fabric_api=0.128.2+1.21.6 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.6&l=fabric -dep.modmenu=15.0.0-beta.3 +dep.modmenu=15.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.6&l=fabric -dep.yacl=3.7.1+1.21.6-fabric +dep.yacl=3.8.0+1.21.6-fabric diff --git a/versions/1.21.7/gradle.properties b/versions/fabric-1.21.7/gradle.properties similarity index 82% rename from versions/1.21.7/gradle.properties rename to versions/fabric-1.21.7/gradle.properties index e21c4d8..add72cd 100644 --- a/versions/1.21.7/gradle.properties +++ b/versions/fabric-1.21.7/gradle.properties @@ -3,11 +3,11 @@ # and reload Gradle to update only it's value. # Fabric Properties, check https://fabricmc.net/develop/ -build.yarn=1.21.7+build.1 -build.fabric_api=0.128.1+1.21.7 +build.yarn=1.21.7+build.8 +build.fabric_api=0.129.0+1.21.7 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.7&l=fabric -dep.modmenu=15.0.0-beta.3 +dep.modmenu=15.0.0 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.7&l=fabric dep.yacl=3.7.1+1.21.6-fabric diff --git a/versions/1.21.8/gradle.properties b/versions/fabric-1.21.8/gradle.properties similarity index 93% rename from versions/1.21.8/gradle.properties rename to versions/fabric-1.21.8/gradle.properties index b94f231..4f06e8e 100644 --- a/versions/1.21.8/gradle.properties +++ b/versions/fabric-1.21.8/gradle.properties @@ -4,7 +4,7 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.8+build.1 -build.fabric_api=0.133.4+1.21.8 +build.fabric_api=0.136.1+1.21.8 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.8&l=fabric diff --git a/versions/1.21.9/gradle.properties b/versions/fabric-1.21.9/gradle.properties similarity index 82% rename from versions/1.21.9/gradle.properties rename to versions/fabric-1.21.9/gradle.properties index d02f99e..2df10c6 100644 --- a/versions/1.21.9/gradle.properties +++ b/versions/fabric-1.21.9/gradle.properties @@ -4,10 +4,10 @@ # Fabric Properties, check https://fabricmc.net/develop/ build.yarn=1.21.9+build.1 -build.fabric_api=0.133.14+1.21.9 +build.fabric_api=0.134.0+1.21.9 # Additional Dependencies Properties # modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.9&l=fabric -dep.modmenu=15.0.0 +dep.modmenu=16.0.0-rc.1 # yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.9&l=fabric -dep.yacl=3.8.0+1.21.9-fabric \ No newline at end of file +dep.yacl=3.8.0+1.21.9-fabric diff --git a/versions/fabric-1.21/gradle.properties b/versions/fabric-1.21/gradle.properties new file mode 100644 index 0000000..7e92607 --- /dev/null +++ b/versions/fabric-1.21/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Fabric Properties, check https://fabricmc.net/develop/ +build.yarn=1.21+build.9 +build.fabric_api=0.102.0+1.21 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21&l=fabric +dep.modmenu=11.0.3 +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21&l=fabric +dep.yacl=3.8.0+1.21.1-fabric diff --git a/versions/forge-1.20.1/gradle.properties b/versions/forge-1.20.1/gradle.properties new file mode 100644 index 0000000..29ad978 --- /dev/null +++ b/versions/forge-1.20.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# Forge Properties, check https://files.minecraftforge.net/net/minecraftforge/forge/index_1.20.1.html +build.forge=1.20.1-47.4.12 +build.parchment=2023.09.03 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.20.1&l=forge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.20.1&l=forge +dep.yacl=3.6.6+1.20.1-forge diff --git a/versions/neoforge-1.21.1/gradle.properties b/versions/neoforge-1.21.1/gradle.properties new file mode 100644 index 0000000..5c64f70 --- /dev/null +++ b/versions/neoforge-1.21.1/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# NeoForge Properties, check https://neoforged.net/ +build.neoforge=21.1.215 +build.parchment=2024.11.17 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.1&l=neoforge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.1&l=neoforge +dep.yacl=3.8.0+1.21.1-neoforge diff --git a/versions/neoforge-1.21.10/gradle.properties b/versions/neoforge-1.21.10/gradle.properties new file mode 100644 index 0000000..91f3475 --- /dev/null +++ b/versions/neoforge-1.21.10/gradle.properties @@ -0,0 +1,13 @@ +# Versioned Properties +# Tip: You can set any dependency value to "[UPDATE]" +# and reload Gradle to update only it's value. + +# NeoForge Properties, check https://neoforged.net/ +build.neoforge=21.10.56-beta +build.parchment=2025.10.12 + +# Additional Dependencies Properties +# modmenu, check https://modrinth.com/mod/modmenu/versions?g=1.21.10&l=neoforge +dep.modmenu=unknown +# yacl, check https://modrinth.com/mod/yacl/versions?g=1.21.10&l=neoforge +dep.yacl=3.8.0+1.21.9-neoforge