From 5bf6d73a23355a2d7d0828a0a7ceab487a9aa944 Mon Sep 17 00:00:00 2001 From: astatin3eeeee <77305074+Astatin3@users.noreply.github.com> Date: Mon, 30 Dec 2024 11:48:17 -0700 Subject: [PATCH] Get lavacast generation working --- .editorconfig | 13 + .github/workflows/dev_build.yml | 25 + .github/workflows/pull_request.yml | 23 + .gitignore | 33 + LICENSE | 121 +++ README.md | 87 +- build.gradle | 62 ++ gradle.properties | 19 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 61574 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 244 ++++++ gradlew.bat | 92 +++ settings.gradle | 10 + .../java/com/example/addon/AddonTemplate.java | 52 ++ .../com/example/addon/LavacastGenerator.java | 127 +++ .../com/example/addon/LavacastPlacer.java | 7 + .../addon/commands/CommandExample.java | 38 + .../com/example/addon/hud/HudExample.java | 29 + .../com/example/addon/mixin/ExampleMixin.java | 31 + .../com/example/addon/modules/BaseFinder.java | 764 ++++++++++++++++++ .../example/addon/modules/ModuleExample.java | 66 ++ src/main/resources/addon-template.mixins.json | 11 + src/main/resources/assets/template/icon.png | Bin 0 -> 2137 bytes src/main/resources/fabric.mod.json | 31 + 24 files changed, 1890 insertions(+), 2 deletions(-) create mode 100755 .editorconfig create mode 100755 .github/workflows/dev_build.yml create mode 100755 .github/workflows/pull_request.yml create mode 100755 .gitignore create mode 100755 LICENSE mode change 100644 => 100755 README.md create mode 100755 build.gradle create mode 100755 gradle.properties create mode 100755 gradle/wrapper/gradle-wrapper.jar create mode 100755 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100755 gradlew.bat create mode 100755 settings.gradle create mode 100755 src/main/java/com/example/addon/AddonTemplate.java create mode 100644 src/main/java/com/example/addon/LavacastGenerator.java create mode 100644 src/main/java/com/example/addon/LavacastPlacer.java create mode 100755 src/main/java/com/example/addon/commands/CommandExample.java create mode 100755 src/main/java/com/example/addon/hud/HudExample.java create mode 100755 src/main/java/com/example/addon/mixin/ExampleMixin.java create mode 100755 src/main/java/com/example/addon/modules/BaseFinder.java create mode 100755 src/main/java/com/example/addon/modules/ModuleExample.java create mode 100755 src/main/resources/addon-template.mixins.json create mode 100755 src/main/resources/assets/template/icon.png create mode 100755 src/main/resources/fabric.mod.json diff --git a/.editorconfig b/.editorconfig new file mode 100755 index 0000000..4ec6ab5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +[*] +charset = utf-8 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +indent_size = 4 +ij_continuation_indent_size = 4 + +[*.{json, yml}] +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.github/workflows/dev_build.yml b/.github/workflows/dev_build.yml new file mode 100755 index 0000000..05f693a --- /dev/null +++ b/.github/workflows/dev_build.yml @@ -0,0 +1,25 @@ +name: Publish Development Build +on: push + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Set up Java + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: adopt + - name: Build with Gradle + run: ./gradlew build + - name: Release + uses: marvinpinto/action-automatic-releases@latest + with: + repo_token: '${{ secrets.GITHUB_TOKEN }}' + automatic_release_tag: latest + prerelease: true + title: Dev Build + files: | + ./build/libs/*.jar diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100755 index 0000000..e0b5026 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,23 @@ +name: Build Pull Request Artifacts +on: pull_request + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Wrapper Validation + uses: gradle/actions/wrapper-validation@v3 + - name: Set up Java + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: adopt + - name: Build with Gradle + run: ./gradlew build + - name: Release + uses: actions/upload-artifact@v4 + with: + name: Artifacts + path: build/libs/ diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..09cd281 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# macos + +*.DS_Store + +# fabric + +run/ diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..0e259d4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md old mode 100644 new mode 100755 index a3ad3cc..92043ce --- a/README.md +++ b/README.md @@ -1,2 +1,85 @@ -# meteor-baritone - Experementing with meteor and barotone +# Meteor Addon Template + +A template to allow easy usage of the Meteor Addon API. + +### How to use + +- Clone this project +- Use this template to create new modules/commands +- Build the executable using the gradle `build` task. +- Run the mod with Meteor. + +### Project structure + +```text +. +│── .github +│ ╰── workflows +│ │── dev_build.yml +│ ╰── pull_request.yml +│── gradle +│ ╰── wrapper +│ │── gradle-wrapper.jar +│ ╰── gradle-wrapper.properties +│── src +│ ╰── main +│ │── java +│ │ ╰── com +│ │ ╰── example +│ │ ╰── addon +│ │ │── commands +│ │ │ ╰── CommandExample +│ │ │── hud +│ │ │ ╰── HudExample +│ │ │── modules +│ │ │ ╰── ModuleExample +│ │ ╰── AddonTemplate +│ ╰── resources +│ │── assets +│ │ ╰── template +│ │ ╰── icon.png +│ │── addon-template.mixins.json +│ ╰── fabric.mod.json +│── .editorconfig +│── .gitignore +│── build.gradle +│── gradle.properties +│── gradlew +│── gradlew.bat +│── LICENSE +│── README.md +╰── settings.gradle +``` + +This is the default project structure. Each folder/file has a specific purpose. +Here is a brief explanation of the ones you might need to modify: + +- `.github/workflows`: Contains the GitHub Actions configuration files. +- `gradle`: Contains the Gradle wrapper files. + Edit the `gradle.properties` file to change the version of the Gradle wrapper. +- `src/main/java/com/example/addon`: Contains the main class of the addon. + Here you can register your custom commands, modules, and HUDs. + Edit the `getPackage` method to reflect the package of your addon. +- `src/main/resources`: Contains the resources of the addon. + - `assets`: Contains the assets of the addon. + You can add your own assets here, separated in subfolders. + - `template`: Contains the assets of the template. + You can replace the `icon.png` file with your own addon icon. + Also, rename this folder to reflect the name of your addon. + - `addon-template.mixins.json`: Contains the Mixin configuration for the addon. + You can add your own mixins in the `client` array. + - `fabric.mod.json`: Contains the metadata of the addon. + Edit the various fields to reflect the metadata of your addon. +- `build.gradle`: Contains the Gradle build script. + You can manage the dependencies of the addon here. + Remember to keep the `fabric-loom` version up-to-date. +- `gradle.properties`: Contains the properties of the Gradle build. + These will be used by the build script. +- `LICENSE`: Contains the license of the addon. + You can edit this file to change the license of your addon. +- `README.md`: Contains the documentation of the addon. + You can edit this file to reflect the documentation of your addon, and showcase its features. + +## License + +This template is available under the CC0 license. Feel free to use it for your own projects. diff --git a/build.gradle b/build.gradle new file mode 100755 index 0000000..e4db899 --- /dev/null +++ b/build.gradle @@ -0,0 +1,62 @@ +plugins { + id "fabric-loom" version "1.8-SNAPSHOT" +} + +base { + archivesBaseName = project.archives_base_name + version = project.mod_version + group = project.maven_group +} + +repositories { + maven { + name = "Meteor Dev Releases" + url = "https://maven.meteordev.org/releases" + } + maven { + name = "Meteor Dev Snapshots" + url = "https://maven.meteordev.org/snapshots" + } +} + +dependencies { + // Fabric + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Meteor + modImplementation "meteordevelopment:meteor-client:${project.meteor_version}" + + // Baritone (https://github.com/MeteorDevelopment/baritone) + modCompileOnly "meteordevelopment:baritone:${project.baritone_version}-SNAPSHOT" +} + +tasks { + processResources { + def propertyMap = [ + "version" : project.version, + "mc_version": project.minecraft_version, + ] + + filesMatching("fabric.mod.json") { + expand(propertyMap) + } + } + + jar { + from("LICENSE") { + rename { "${it}_${project.base.archivesBaseName}" } + } + } + + java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + } + + tasks.withType(JavaCompile).configureEach { + it.options.encoding = "UTF-8" + it.options.release = 21 + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100755 index 0000000..042f341 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,19 @@ +org.gradle.jvmargs=-Xmx2G + +# Fabric Properties (https://fabricmc.net/develop) +minecraft_version=1.21.3 +yarn_mappings=1.21.3+build.2 +loader_version=0.16.9 + +# Mod Properties +mod_version=0.1.0 +maven_group=com.example +archives_base_name=addon-template + +# Dependencies + +# Meteor (https://maven.meteordev.org) +meteor_version=0.5.9-SNAPSHOT + +# Baritone (https://github.com/MeteorDevelopment/baritone) +baritone_version=1.21.3 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..943f0cbfa754578e88a3dae77fce6e3dea56edbf GIT binary patch literal 61574 zcmb6AV{~QRwml9f72CFLyJFk6ZKq;e729@pY}>YNR8p1vbMJH7ubt