diff --git a/.circleci/config.yml b/.circleci/config.yml
index 9deaa401a8..b94abb8cfd 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,50 +1,98 @@
-# Java Gradle CircleCI 2.0 configuration file
-#
-# Check https://circleci.com/docs/2.0/language-java/ for more details
-#
-version: 2
-jobs:
- build:
- docker:
- # specify the version you desire here
- - image: cimg/openjdk:8.0.282
+version: 2.1
- # Specify service dependencies here if necessary
- # CircleCI maintains a library of pre-built images
- # documented at https://circleci.com/docs/2.0/circleci-images/
- # - image: circleci/postgres:9.4
+orbs:
+ gradle: circleci/gradle@3.0.0
- working_directory: ~/repo
+parameters:
+ artifact-name:
+ type: string
+ default: aether_ii
+jobs:
+ build:
+ machine:
+ image: ubuntu-2204:2022.07.1
+ resource_class: large
environment:
- # Customize the JVM maximum heap limit
- JVM_OPTS: -Xmx3200m
- TERM: dumb
+ _JAVA_OPTIONS: -Xmx9600m
+ GRADLE_OPTS: -Dorg.gradle.daemon=false
+ steps:
+ - setup
+ - run:
+ name: Remove sources before persist
+ command: |
+ cd ~/project/build/libs
+ rm *-sources.jar
+ - persist_to_workspace:
+ root: ~/project/build/libs
+ paths:
+ - << pipeline.parameters.artifact-name >>-*.jar
+ - run:
+ name: Publish artifact link to Discord
+ command: |
+ artifact_path=$(curl --request GET --url https://circleci.com/api/v2/project/gh/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BUILD_NUM/artifacts --header 'authorization: Basic REPLACE_BASIC_AUTH' | jq -r '.items[1].path')
+ if [ -z "${WEBHOOK_URL}" ]; then
+ echo "NO DISCORD WEBHOOK SET"
+ echo "Please input your DISCORD_WEBHOOK value either in the settings for this project, or as a parameter for this orb."
+ exit 1
+ else
+ curl -X POST -H 'Content-type: application/json' \
+ --data \
+ "{ \
+ \"embeds\": [{ \
+ \"title\": \"$CIRCLE_BRANCH\", \
+ \"description\": \"The latest CircleCI job has completed, a direct download link for the build can be found here: https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/${artifact_path}\", \
+ \"color\": \"301898\", \
+ \"fields\": [ \
+ { \
+ \"name\": \"Project\", \
+ \"value\": \"$CIRCLE_PROJECT_REPONAME\", \
+ \"inline\": true \
+ }, \
+ { \
+ \"name\": \"Job Number\", \
+ \"value\": \"$CIRCLE_BUILD_NUM\", \
+ \"inline\": true \
+ } \
+ ] \
+ }] \
+ }" ${WEBHOOK_URL}
+ fi
+ publish:
+ machine:
+ image: ubuntu-2204:2022.07.1
+ resource_class: large
+ environment:
+ _JAVA_OPTIONS: -Xmx3200m
+ GRADLE_OPTS: -Dorg.gradle.daemon=false
steps:
- - checkout
- # Download and cache dependencies
- - restore_cache:
- keys:
- - v2-dependencies-{{ checksum "build.gradle" }}
- # fallback to using the latest cache if no exact match is found
- - v2-dependencies-
+ - setup
+ - run: gradle publish
- - run: git clone -b master https://github.com/Gilded-Games/OrbisLib lib/orbis-lib
- - run: ./gradlew -p lib/orbis-lib build
+commands:
+ setup:
+ steps:
+ - checkout
+ - gradle/with_cache:
+ steps:
+ - run: gradle build --build-cache
- store_artifacts:
- path: ~/repo/lib/orbis-lib/build/libs/orbis-lib-1.12.2-0.2.0-SNAPSHOT-universal.jar
-
- - run: chmod +x gradlew
-
- - run: ./gradlew dependencies
+ path: ~/project/build/libs
- - save_cache:
- paths:
- - ~/repo/.gradle
- key: v2-dependencies-{{ checksum "build.gradle" }}
-
- - run: ./gradlew test
- - run: ./gradlew build
- - store_artifacts:
- path: ~/repo/build/libs
\ No newline at end of file
+workflows:
+ build:
+ jobs:
+ - build
+ publish:
+ jobs:
+ - publish:
+ context:
+ - maven
+ filters:
+ tags:
+ only:
+ - /.*/
+ branches:
+ ignore:
+ - /.*/
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
index 673ee4985f..f811f6ae6a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,5 @@
-*.webp binary
\ No newline at end of file
+# Disable autocrlf on generated files, they always generate with LF
+# Add any extra files or paths here to make git stop saying they
+# are changed when only line endings change.
+src/generated/**/.cache/cache text eol=lf
+src/generated/**/*.json text eol=lf
diff --git a/.githooks/commit-msg b/.githooks/commit-msg
new file mode 100644
index 0000000000..ee2d7b9e37
--- /dev/null
+++ b/.githooks/commit-msg
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+# Based on https://github.com/dwmkerr/java-maven-standard-version-sample/blob/master/.githooks/commit-msg
+
+# Create a regex for a conventional commit.
+conventional_commit_regex="^(update|feat|improv|perf|fix|refactor|style|docs|ci|build|test|chore|revert)(\([a-z \-]+\))?!?: .+$"
+
+# Get the commit message (the parameter we're given is just the path to the temporary file which holds the message).
+commit_message=$(cat "$1")
+
+# Check the message, if we match, all good baby.
+if [[ "$commit_message" =~ $conventional_commit_regex ]]; then
+ echo -e "\e[32mCommit message meets Conventional Commit standards...\e[0m"
+ exit 0
+fi
+
+# Uh-oh, this is not a conventional commit, show an example and link to the spec.
+echo -e "\e[31mThe commit message does not meet the Conventional Commit standard\e[0m"
+echo "Examples of valid messages can be found at: https://github.com/Gilded-Games/The-Aether-II/blob/1.19/docs/references/COMMITS.md#examples"
+echo "More details at: https://www.conventionalcommits.org/en/v1.0.0-beta.4/"
+exit 1
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 0000000000..ed50a4eeb3
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,115 @@
+name: '🐛 Bug Report'
+description: Create an issue about a bug.
+labels: [ "type/bug" ]
+title: 'Bug:
'
+body:
+ - type: dropdown
+ id: feat-type
+ attributes:
+ label: What Feature Types Apply to This Bug?
+ multiple: true
+ options:
+ - Art
+ - Audio
+ - Block
+ - Config
+ - Copy
+ - Docs
+ - Entity
+ - Gui
+ - Item
+ - System
+ - World-Gen
+ - Other (Please Describe)
+ - type: input
+ id: other-type
+ attributes:
+ label: Other Type
+ description: If you selected other in the dropdown above, please what type it is.
+ validations:
+ required: false
+ - type: dropdown
+ id: bug-type
+ attributes:
+ label: What Type of Bug Is This?
+ options:
+ - Annoyance
+ - Compatibility
+ - Crash
+ - Design
+ - Performance
+ - Unexpected Behavior
+ - type: input
+ id: forge-ver
+ attributes:
+ label: Forge Version
+ description: What version of Forge are you running? This can be found on the installation jar you have downloaded, in the Mod Options menu, or the profile's version. Please note "latest" is NOT a version.
+ placeholder: "39.0.0"
+ validations:
+ required: true
+ - type: input
+ id: aether-ii-ver
+ attributes:
+ label: The Aether II Version
+ description: What version of The Aether are you running? This can be found on the jar file you have downloaded or the Mod Options menu. Please note "latest" is NOT a version.
+ placeholder: "1.1.1"
+ validations:
+ required: true
+ - type: input
+ id: mod-conflict
+ attributes:
+ label: Is This Bug a Conflict With Another Mod?
+ description: If this happens due to another mod, please put the name and version of the mod here. Leave blank otherwise.
+ validations:
+ required: false
+ - type: input
+ id: client-log
+ attributes:
+ label: Client Log
+ description: A **[Gist](https://gist.github.com/)** link to the full game log. This can be found in the game files under the `logs` folder. Though not necessary, a client log can help diagnose an issue better in case a bug is caused by a reported error. Provide the `latest.log` or `debug.log` file as a Gist as soon as you find the bug, as these files are reset every time the game is opened.
+ - type: input
+ id: crash-log
+ attributes:
+ label: Crash Report (if applicable)
+ description: A **[Gist](https://gist.github.com/)** link to the crash report. This can be found in the game files under the `crash-reports` folder, and all the contents of the file should be pasted into the Gist file. If the bug does not result in a crash, ignore this field.
+ - type: textarea
+ id: steps
+ attributes:
+ label: Steps to Reproduce
+ description: A detailed list of how you encountered this bug if it is not immediately obvious. If the bug is immediately obvious, briefly mention how to replicate it.
+ placeholder: |
+ How often this happens
+ 1. Step 1
+ 2. Step 2
+ 3. Step 3, etc.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: What You Expect To Happen
+ description: Describe what you thought was supposed to have happened. Don't worry if you think what you expected may be wrong.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: What Actually Happened
+ description: Describe what happened to you that wasn't to expectations.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Additional Details
+ description: Provide any other information you think might be useful for this report. This may include screenshots, video footage, other mod details, anything you think might be relevant.
+ - type: checkboxes
+ id: confirmation
+ attributes:
+ label: Please Read and Confirm The Following
+ options:
+ - label: I have confirmed this bug can be replicated without the use of Optifine.
+ required: true
+ - label: I have confirmed this bug is on the most recently supported version of Minecraft.
+ required: true
+ - label: I have confirmed the details provided in this report are concise as possible and does not contained vague information (ie. Versions are properly recorded, answers to questions are clear).
+ required: true
+ - label: I have confirmed this issue is unique and has not been reported already.
+ required: true
\ No newline at end of file
diff --git a/.github/workflows/add-issue.yml b/.github/workflows/add-issue.yml
new file mode 100644
index 0000000000..12beca42ac
--- /dev/null
+++ b/.github/workflows/add-issue.yml
@@ -0,0 +1,15 @@
+name: Add issues to project
+
+on:
+ issues:
+ types:
+ - opened
+jobs:
+ add-issue-to-project:
+ name: Add issue to project
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/add-to-project@v0.3.0
+ with:
+ project-url: https://github.com/orgs/Gilded-Games/projects/5
+ github-token: ${{ secrets.PROJECT_ADD_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/add-pull-request.yml b/.github/workflows/add-pull-request.yml
new file mode 100644
index 0000000000..125fac9bde
--- /dev/null
+++ b/.github/workflows/add-pull-request.yml
@@ -0,0 +1,16 @@
+name: Add pull requests to project
+
+on:
+ pull_request:
+ types:
+ - opened
+jobs:
+ add-pull-request-to-project:
+ name: Add pull request to project
+ runs-on: ubuntu-latest
+ steps:
+ - if: github.event.pull_request.head.repo.full_name == github.repository
+ uses: actions/add-to-project@v0.3.0
+ with:
+ project-url: https://github.com/orgs/Gilded-Games/projects/5
+ github-token: ${{ secrets.PROJECT_ADD_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/trigger-build.yml b/.github/workflows/trigger-build.yml
new file mode 100644
index 0000000000..0ebbc9d199
--- /dev/null
+++ b/.github/workflows/trigger-build.yml
@@ -0,0 +1,59 @@
+name: Trigger build
+
+on:
+ workflow_dispatch:
+ inputs:
+ remote_user:
+ description: 'GitHub name of the fork organization'
+ required: true
+ default: 'Gilded-Games'
+ type: string
+ remote_name:
+ description: 'GitHub name of the fork repository'
+ required: true
+ default: 'The-Aether-II'
+ type: string
+ remote_branch:
+ description: 'GitHub branch that the pull request is merging from'
+ required: true
+ default: '1.19'
+ type: string
+
+jobs:
+ trigger-build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ token: ${{ secrets.GIT_TOKEN }}
+ fetch-depth: 0
+ - name: Trigger build
+ env:
+ REMOTE_USER: ${{ inputs.remote_user }}
+ REMOTE_URL: ${{ format('https://Gilded-Games-Bot:{0}@github.com/{1}/{2}', secrets.GIT_TOKEN, inputs.remote_user, inputs.remote_name) }}
+ BRANCH: ${{ inputs.remote_branch }}
+ REMOTE_BRANCH: ${{ format('{0}/{1}', inputs.remote_user, inputs.remote_branch) }}
+ LOCAL_BRANCH: ${{ format('local/{0}/{1}', inputs.remote_user, inputs.remote_branch) }}
+ MERGE_BRANCH: ${{ format('merge/{0}', inputs.remote_branch) }}
+ run: |
+ git config --local user.email "machine@gildedgames.com"
+ git config --local user.name "Gilded-Games-Bot"
+
+ git checkout -b ${MERGE_BRANCH} ${{ github.action_ref }}
+
+ git remote add ${REMOTE_USER} ${REMOTE_URL}
+ git fetch ${REMOTE_USER}
+ git checkout -b ${LOCAL_BRANCH} ${REMOTE_BRANCH}
+
+ git checkout ${MERGE_BRANCH}
+ git merge ${LOCAL_BRANCH}
+ git commit --allow-empty -m "chore: Trigger build"
+ git push --set-upstream origin ${MERGE_BRANCH}
+
+ git checkout ${LOCAL_BRANCH}
+ git merge ${MERGE_BRANCH}
+ git push ${REMOTE_USER} HEAD:${BRANCH}
+
+ sleep 60
+ git branch -d ${MERGE_BRANCH}
+ git push origin --delete ${MERGE_BRANCH}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 443be5b7de..b0f9908cd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,38 +1,30 @@
-# Compiled Java
-#zephyroos
-*.class
-
-# Eclipse
+# eclipse
+bin
+*.launch
+.settings
+.metadata
.classpath
.project
-.settings
-# IntelliJ IDEA
-*.iml
+# idea
+out
*.ipr
*.iws
+*.iml
.idea
-/out
-/classes
-/libs
-/logs
-# Gradle
+# gradle
+build
.gradle
-/build
-/bin
-/run
-
-# Gradle Wrapper
-/gradle/wrapper/dists
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-# Folder config file
-Desktop.ini
+# other
+eclipse
+run
+__pycache__
+logs
-# JVM crash logs
-hs_err_pid*.log
-replay_pid*.log
\ No newline at end of file
+# Files from Forge MDK
+forge*changelog.txt
+.vscode/
+/Users/
+src/generated/resources/.cache/cache
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index 7c200a6b30..0000000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-before_script:
- - which java
- - which javac
- - java -version
- - javac -version
-
-build:
- cache:
- paths:
- - .gradle
- - lib/OrbisAPI/.gradle
- script:
- - export SIGN_BUILD=true
- - ./gradlew build
- artifacts:
- paths:
- - build/libs/*.jar
- expire_in: 1 month
- variables:
- GIT_SUBMODULE_STRATEGY: recursive
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 543a36f558..0000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "OrbisAPI"]
- path = lib/orbis-lib
- url = https://github.com/Gilded-Games/OrbisLib.git
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 0168ab07a6..0000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,32 +0,0 @@
-### Getting started for programmers
-We're excited to hear that you're interested in contributing to the Aether!
-
-Before getting started, you'll need to install the latest 64-bit version of the OpenJDK 8 for your environment.
-- Windows users: We **strongly** recommend you use the Hotspot OpenJDK 8 builds provided by the [AdoptOpenJDK project](https://adoptopenjdk.net/) instead of the builds provided by Oracle.
-- macOS and Linux users: If you are already using a package manager, OpenJDK builds should be present in your software repositories. If not, we recommend using [SDKMan](https://sdkman.io/) to install the Hotspot OpenJDK 8 builds provided by the [AdoptOpenJDK](https://adoptopenjdk.net/) project.
-
-We strongly recommend you use [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/) when making code contributions. While other IDEs may work (in theory, anyways), support is spotty and you will often run into issues and other roadblocks. If you're not familiar with setting up IntelliJ IDEA for use with ForgeGradle projects, cpw has created a setup video which runs over a few of the basics of ForgeGradle [here](https://www.youtube.com/watch?v=PfmlNiHonV0).
-
-If you have any questions or issues, or would just like to discuss Aether development, feel free to [join us on Discord](https://discord.gg/yrFDeVZEwt).
-
-### Creating merge requests
-When contributing source code changes to the Aether II, it is **mandatory** to keep consistent use of the formatting and style guidelines used throughout the codebase. Merge requests which do not adhere to them will be held back until they're updated to meet our requirements.
-
-If you are using IntelliJ IDEA 2017 or newer, we provide configuration files for our code formatting guidelines and inspections in the `idea` folder.
-
-Furthermore, please make sure before opening a merge request that:
-
-- Your merge request has an overview of the changes it makes, along with a link to the open issue(s) it resolves, if applicable.
-- Your changes include appropriate documentation and conform to our style guidelines.
-- If your merge request contains multiple commits, that you squash them before submitting.
-- You state in the description of your merge request that you agree to the Contributor License Agreement (CLA) found below.
-
-### Contributor License Agreement
-By submitting code, assets, or documentation to the repository you are hereby agreeing that:
-
-- You grant Gilded Games and other users the right to use your contributions under one of the following respective licenses:
- - [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) for assets in `/src/main/java/resources` and wiki pages.
- - [LGPL v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) for code or other changes.
-- Your contributions are of your own work and are free of legal restrictions (such as patents or copyrights).
-
-If you have any questions about these terms, please [get in contact with us](mailto:support@gildedgames.com). **If you do not agree to these terms, please do not submit contributions to this repository.**
diff --git a/CREDITS.txt b/CREDITS.txt
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/JAVA_DELAUNAY_README.txt b/JAVA_DELAUNAY_README.txt
deleted file mode 100644
index d964f60e70..0000000000
--- a/JAVA_DELAUNAY_README.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Java implementation by Connor Clark (www.hotengames.com). Pretty much a 1:1
- * translation of a wonderful map generating algorthim by Amit Patel of Red Blob Games,
- * which can be found here (http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/)
- * Hopefully it's of use to someone out there who needed it in Java like I did!
- *
- * FORTUNE'S ALGORTIHIM
- *
- * This is a java implementation of an AS3 (Flash) implementation of an algorthim
- * originally created in C++. Pretty much a 1:1 translation from as3 to java, save
- * for some necessary workarounds. Original as3 implementation by Alan Shaw (of nodename)
- * can be found here (https://github.com/nodename/as3delaunay). Original algorthim
- * by Steven Fortune (see lisence for c++ implementation below)
- *
- * The author of this software is Steven Fortune. Copyright (c) 1994 by AT&T
- * Bell Laboratories.
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- */
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index eb85182ec7..0000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,37 +0,0 @@
-pipeline {
- agent {
- docker {
- image 'gradle:4.10.3-jdk8-alpine'
- args '-v gradle-cache:/home/gradle/.gradle'
- }
- }
-
- stages {
- stage('Clean') {
- steps {
- dir('build/libs') {
- deleteDir()
- }
- }
- }
-
- stage('Build') {
- environment {
- MAVEN_SECRETS_FILE = credentials('maven-secrets')
-
- JARSIGN_KEYSTORE_FILE = credentials('gilded-games-jarsign-keystore')
- JARSIGN_SECRETS_FILE = credentials('gilded-games-jarsign-secrets')
- }
-
- steps {
- sh 'gradle build --no-daemon'
- }
- }
- }
-
- post {
- success {
- archiveArtifacts artifacts: 'build/libs/*.jar', fingerprint: true
- }
- }
-}
\ No newline at end of file
diff --git a/LICENSE-ASSETS.txt b/LICENSE-ASSETS.txt
new file mode 100644
index 0000000000..0e7da07448
--- /dev/null
+++ b/LICENSE-ASSETS.txt
@@ -0,0 +1,4 @@
+ ALL RIGHTS RESERVED
+
+ The copyright holder reserves all the rights provided by copyright
+law for the licensed material.
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
index 0a041280bd..153d416dc8 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -162,4 +162,4 @@ General Public License ever published by the Free Software Foundation.
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.
+Library.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index 92706f3de5..0000000000
--- a/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-![Banner image](doc/banner.webp)
-
-# The Aether II
-[![Code license (LGPL v3.0)](https://img.shields.io/badge/code%20license-LGPL%20v3.0-green.svg?style=flat-square)](https://www.gnu.org/licenses/lgpl-3.0.en.html)
-[![Asset license (CC BY-SA 4.0)](https://img.shields.io/badge/asset%20license-CC%20BY--SA%204.0-blue.svg?style=flat-square)](https://creativecommons.org/licenses/by-sa/4.0/)
-[![CurseForge downloads](http://cf.way2muchnoise.eu/223796.svg)](https://www.curseforge.com/minecraft/mc-mods/the-aether-ii)
-[![Gilded-Games](https://circleci.com/gh/Gilded-Games/The-Aether-II/tree/1.12.2.svg?style=shield)](https://app.circleci.com/pipelines/github/Gilded-Games/The-Aether-II?branch=1.12.2)
-
-The Aether II is the sequel to the highly popular dimension mod "The Aether", set in a hostile paradise miles up in the clouds, the Aether is an entirely different world from what regular players are used to, filled with fantastic creatures and mysterious structures, the Aether is a world brimming with life and history. You'll have to relearn key ideas as the Aether challenges you with twisted materials, terrifying monsters and deep lore if you want to survive and prosper in this strange new land.
-
-## :heart: Support Gilded Games
-
-[![Patreon pledgers](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3DGildedGames%26type%3Dpatrons&style=flat-square)](https://patreon.com/GildedGames)
-[![Discord user count](https://img.shields.io/discord/118816101936267265.svg?logoColor=FFFFFF&logo=discord&color=7289DA&style=flat-square)](https://discord.gg/yrFDeVZEwt)
-[![Twitter followers](https://img.shields.io/twitter/follow/DevAether.svg?logo=twitter&label=twitter&style=flat-square)](https://twitter.com/DevAether)
-
-**The Aether II would not have been possible without the generous support of our patrons on Patreon.** If you enjoy our work, [please consider making a pledge](https://patreon.com/GildedGames) today to help fund development and gain access to special perks. Every pledge goes directly into the development process and enables us to continue making the Minecraft mods you know and love.
-
-You can also support the Aether project and Gilded Games by telling your friends, joining our Discord server, and sharing our progress and announcements on social media. Every bit helps!
-
-## :warning: Disclaimer
-
-This availability is intended for programmers and early adopters only. **Content may be missing, broken, or subject to major change.** We ask that you have experience with Minecraft modding, locating crash reports, editing configuration files, and a bit of patience, if you're wishing to report issues or contribute back. We recommend joining our [official Discord server](https://discord.gg/YgTv7Vg) for the latest news, discussion, and chat support.
-
-
-## :package: Download the latest releases
-### "Stable" builds
-We use Curseforge to publish **stable builds** of the Aether for Minecraft. You can download the latest stable builds from our [official page found here](https://www.curseforge.com/minecraft/mc-mods/the-aether-ii) without signing up for an account, and even install the Aether for Minecraft using the [Overwolf Launcher](https://curseforge.overwolf.com/) with built-in integration for Curseforge mods. We recommend using our stable Curseforge releases for most people.
-
-### Bleeding edge builds
-If you're feeling a bit more adventurous (or a developer has suggested you to do so), we provide **bleeding edge builds** which are produced on [CircleCI](https://app.circleci.com/pipelines/github/Gilded-Games/The-Aether-II?branch=1.12.2). These builds are very frequently created through the continuous integration service and contain the latest available code without undergoing any form of quality control. We do not generally recommend users use these builds as they may contain serious issues and will not generally receive support. Select the "build" job on a recently ran workflow, and find the binary under the artifacts tab.
-
-## :bug: Report bugs or other issues
-If you're running into bugs or other problems, feel free to open an issue on our [issue tracker](https://github.com/Gilded-Games/The-Aether-II/issues). When doing so, we ask that you provide the following information:
-
-- The exact version of the Aether you are running, such as `1.10.2-1.0.0`, and the version of Forge you are using, such as `14.23.5.2768`. Please do not state "the latest stable release" or "latest Forge".
-- If your issue is a bug or otherwise unexpected behavior, state what you expected to happen.
-- If your issue is a crash, attach the latest client or server log and the complete crash report as a file.
-- If your issue only occurs with other mods/plugins installed, list the exact mod/plugin versions installed.
-
-Make sure to keep your issue's description clear and concise. Your issue's title should also be easy to digest, giving our developers and reporters a good idea of what's wrong without including too many details. Failure to follow any of the above may result in your issue being closed.
-
-Our reporters and developers work around the clock, and will take care of debugging, labeling, and sorting your issues. However, please note that there are currently _many_ open issues, and that it may take some time (up to a few weeks in the worst case) for your issue to be triaged and resolved. Typically, issues are resolved in order of severity and complexity, not the date submitted.
-
-## :wrench: Contribute to the project
-Looking to contribute to the project? We're excited to see what you've got! We ask that you read over our [Contributor's Guide](https://github.com/Gilded-Games/The-Aether-II/blob/1.12.2/CONTRIBUTING.md) for more details and our Contributor License Agreement (CLA) before getting started. Additionally, please note that due to the rapid development pace of the Aether, we're currently not accepting issues or merge requests of which are purely content or feature requests.
-
-Not sure what to help with? Take a look at our issue tracker for some ideas! [Here's a quick link](https://github.com/Gilded-Games/The-Aether-II/labels/status%2Fhelp-wanted) which shows all the currently open issues that we'd love some help on.
-
-## :scroll: License information
-If you're wanting to create a gameplay video/review, extension or addon, parody, or any other fan work of your own for the Aether, go for it! We love seeing the content our community creates, and we hope to make it as welcoming as possible for everyone. We ask however that if you are using code or assets from the Aether II project that you adhere to the licenses below, and that you please don't advertise using our brand. If you're interested in sponsoring the Aether project or Gilded Games or wish to otherwise use our brand, please [contact us](mailto:support@gildedgames.com).
-
-The source code of the Aether II for Minecraft 1.8+ is under the [LGPL v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) license. All assets of the Aether II for Minecraft 1.8+ (found in the [resources folder](https://github.com/Gilded-Games/The-Aether-II/tree/1.12.2/src/main/resources/assets)) and [Wiki contributions](https://github.com/Gilded-Games/The-Aether-II/wiki) are under the [CC BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0/) unless otherwise stated. Previous versions of the Aether are not licensed freely and all rights are reserved to them by Gilded Games.
-
-## :star2: Special mentions
-### :speech_balloon: Translations
-The Aether II project makes use of crowd sourced translations. The Aether is available in these languages thanks to the following contributors:
-
-- :es: **Spanish**: Contributed by Khaoss
-- :ru: **Russian**: Contributed by Dr_Hesperus
-- :cn: **Simplified Chinese**: Contributed by ETStareak
-- :taiwan: **Traditional Chinese**: Contributed by aianlinb
-
-The above list is incomplete, and as such, if your name is missing from it, please contact us. **You can help translate The Aether II Mod to additional languages by joining our team of avid translators [here](https://aether.oneskyapp.com/collaboration/project?id=158537).**
-
-
-### :nut_and_bolt: Open-source projects used
-
-The open-source community is important to Gilded Games, and we hope to contribute as much as we can back to it. We'd like to take a moment to give special mentions to the following projects and their authors, which without their contributions, the Aether II would not have been possible.
-
-- **Amit Patel**: [Polygonal Map Generation for games](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/)
-- **Connor Clark**: [Java Delaunay Library](https://github.com/Hoten/Java-Delaunay)
diff --git a/build.gradle b/build.gradle
index f2fb6acc8d..0d0a9a7e91 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,143 +1,189 @@
buildscript {
repositories {
- jcenter()
maven {
- name = "forge"
- url = "http://files.minecraftforge.net/maven"
+ name 'Forge'
+ url 'https://maven.minecraftforge.net'
}
+ maven {
+ name 'Sponge'
+ url 'https://repo.spongepowered.org/maven'
+ }
+ maven {
+ name 'Parchment'
+ url 'https://maven.parchmentmc.org'
+ }
+ maven {
+ name 'Gradle'
+ url "https://plugins.gradle.org/m2/"
+ }
+ mavenCentral()
}
dependencies {
- classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
+ classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
+ classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7.+', changing: true
+ classpath group: 'org.parchmentmc', name: 'librarian', version: '1.+', changing: true
+ classpath group: 'io.github.0ffz', name: 'gpr-for-gradle', version: '1.+', changing: true
}
}
-
-apply plugin: 'net.minecraftforge.gradle.forge'
+apply plugin: 'net.minecraftforge.gradle'
+apply plugin: 'org.spongepowered.mixin'
+apply plugin: 'org.parchmentmc.librarian.forgegradle'
+apply plugin: 'eclipse'
apply plugin: 'maven-publish'
+apply plugin: 'io.github.0ffz.github-packages'
-repositories {
- mavenCentral()
+version = project.mc_version + '-' + project.aether_ii_version
+group = 'com.gildedgames.aether_ii' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
+archivesBaseName = 'aether_ii'
- maven { url = 'https://repo.spongepowered.org/maven' }
-}
+java.toolchain.languageVersion = JavaLanguageVersion.of(17) // Mojang ships Java 8 to end users, so your mod should target Java 8.
-configurations {
- shaded
- shaded.exclude group: "org.spongepowered"
-}
+minecraft {
+ mappings channel: 'parchment', version: project.mappings
-dependencies {
- compile project(":orbis-lib")
- shaded project(":orbis-lib")
-}
+ accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
-allprojects {
- sourceCompatibility = 1.8
- targetCompatibility = 1.8
-}
+ runs {
+ client {
+ workingDirectory project.file('run')
-if (System.getenv("BUILD_NUMBER") != null) {
- version = "${minecraft_version}-${mod_version}+build${System.getenv("BUILD_NUMBER")}"
-} else {
- version = "${minecraft_version}-${mod_version}-SNAPSHOT"
-}
+ //Only uncomment this if you actually need the debug logging! If you enable this the log will be full of incredibly useless information spam
+ //property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+ //property 'forge.logging.console.level', 'debug'
-group = "com.gildedgames"
-archivesBaseName = "aether_ii"
+ mods {
+ aether_ii {
+ source sourceSets.main
+ }
+ }
+ }
-sourceSets {
- api {
- java { srcDir "src/api/java" }
- }
- test {
- java { srcDir "src/test/java" }
- }
-}
+ server {
+ workingDirectory project.file('run')
-jar {
- from sourceSets.api.output
- from sourceSets.main.output
+ //property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+ //property 'forge.logging.console.level', 'debug'
+
+ mods {
+ aether_ii {
+ source sourceSets.main
+ }
+ }
+ }
- classifier "universal"
+ data {
+ workingDirectory project.file('run')
- gradle.projectsEvaluated({
- def artifacts = configurations.shaded.files
- .findAll { it.name.contains("-universal.jar") }
- .toList()
- .reverse()
+ //property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+ //property 'forge.logging.console.level', 'debug'
- from(artifacts)
+ args '--mod', 'aether_ii', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/'), '--existing', file('src/generated/resources/')
- manifest {
- attributes "ContainedDeps": artifacts.collect { it.name }.join(' ')
- attributes "FMLAT": "aether_at.cfg"
- attributes "SignedFileName": jar.archivePath.name
+ environment 'target', 'fmluserdevdata'
+
+ mods {
+ aether_ii {
+ source sourceSets.main
+ }
+ }
}
- })
+ }
}
-task apiJar(type: Jar) {
- classifier = "api"
-
- from sourceSets.api.output
+sourceSets.main.resources {
+ srcDir 'src/generated/resources'
}
-minecraft {
- version = "$minecraft_version-$forge_version"
- mappings = "$forge_mappings"
+dependencies {
+ minecraft "net.minecraftforge:forge:${project.mc_version}-${project.forge_version}"
- runDir = "run"
+ annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
- clientJvmArgs = serverJvmArgs
-}
+// compileOnly "com.gildedgames.nitrogen:nitrogen:${project.nitrogen_version}"
+// runtimeOnly fg.deobf("com.gildedgames.nitrogen:nitrogen:${project.nitrogen_version}")
-processResources {
- inputs.property "version", project.version
- inputs.property "mcversion", project.minecraft.version
+ compileOnly "top.theillusivec4.curios:curios-forge:${project.curios_version}:api"
+ compileOnly "top.theillusivec4.curios:curios-forge:${project.curios_version}"
+ runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${project.curios_version}")
- from(sourceSets.main.resources.srcDirs) {
- include 'mcmod.info'
+// jarJar fg.deobf("com.gildedgames.nitrogen:nitrogen:${project.nitrogen_version}") {
+// jarJar.ranged(it, "[${project.nitrogen_version},)")
+// jarJar.pin(it, "${project.nitrogen_version}")
+// }
- expand 'version': project.version, 'mcversion': project.minecraft.version
+ jarJar fg.deobf("top.theillusivec4.curios:curios-forge:${project.curios_version}") {
+ jarJar.ranged(it, "[${project.curios_version},)")
+ jarJar.pin(it, "${project.curios_version}")
}
+}
- from(sourceSets.main.resources.srcDirs) {
- exclude 'mcmod.info'
- }
+repositories {
+ maven { url = "https://maven.blamejared.com" }
+ maven { url = "https://maven.theillusivec4.top/" }
+ maven { url = "https://www.cursemaven.com" }
+ maven { url = "https://dvs1.progwml6.com/files/maven/"}
+// maven githubPackage.invoke("Gilded-Games/Nitrogen")
}
-idea {
- module {
- inheritOutputDirs = true
+jar {
+ manifest {
+ attributes([
+ "Specification-Title" : "The Aether II",
+ "Specification-Vendor" : "Gilded Games",
+ "Specification-Version" : "1", // We are version 1 of ourselves
+ "Implementation-Title" : "The Aether II",
+ "Implementation-Version" : "${version}",
+ "Implementation-Vendor" : "Gilded Games",
+ "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
+ "MixinConfigs" : "aether_ii.mixins.json"
+ ])
}
}
-// We disable this because Gradle will fail to build otherwise for some reason.
-// See https://github.com/MinecraftForge/Srg2Source/issues/10
-minecraft {
- makeObfSourceJar = false
+task sourcesJar(type: Jar) {
+ archiveClassifier.set('sources')
+ from sourceSets.main.allJava
}
-if (System.getenv("JARSIGN_SECRETS_FILE") != null) {
- def secretsFile = file(System.getenv("JARSIGN_SECRETS_FILE"))
+artifacts {
+ archives sourcesJar
+}
- def secrets = new Properties()
- secrets.load(secretsFile.newReader())
+jar.finalizedBy('reobfJar')
- [jar, apiJar].each { jarTask ->
- def task = task(jarTask.name + 'Sign', type: SignJar) {
- keyStore = System.getenv("JARSIGN_KEYSTORE_FILE")
- alias = secrets.alias
- storePass = secrets.storePassword
- keyPass = secrets.keyPassword
+reobf.create('jarJar')
- inputFile = jarTask.archivePath
- outputFile = jarTask.archivePath
- }
+def reobfFile = file("$buildDir/reobfJar/output.jar")
+def jar = artifacts.add('default', reobfFile) {
+ type 'jar'
+ builtBy 'reobfJar'
+}
- build.dependsOn task
- }
+tasks.jarJar.configure {
+ archiveClassifier = ""
}
-build.dependsOn apiJar
+publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ artifactId project.archivesBaseName
+ artifact jar
+ artifact sourcesJar
+ }
+ }
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = "https://maven.pkg.github.com/Gilded-Games/The-Aether-II"
+ credentials {
+ username = System.getenv("GITHUB_ACTOR")
+ password = System.getenv("GITHUB_TOKEN")
+ }
+ }
+ }
+}
-jar.dependsOn ":orbis-lib:build"
+mixin {
+ config "aether_ii.mixins.json"
+ add sourceSets.main, "aether_ii.refmap.json"
+}
\ No newline at end of file
diff --git a/docs/AGREEMENT.md b/docs/AGREEMENT.md
new file mode 100644
index 0000000000..6c8f21fd9e
--- /dev/null
+++ b/docs/AGREEMENT.md
@@ -0,0 +1,9 @@
+## Contributor License Agreement
+By making contributions to this repository you are hereby agreeing that:
+
+- You grant Gilded Games and other users the right to use your contributions under one of the following respective licenses:
+ - [All Rights Reserved](https://en.wikipedia.org/wiki/All_rights_reserved) for contributed or updated assets in `/src/main/java/resources`.
+ - [LGPL v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) for code or other changes.
+- Your contributions are of your own work and are free of legal restrictions (such as patents or copyrights).
+
+If you have any questions about these terms, please [get in contact with us](mailto:support@gildedgames.com). **If you do not agree to these terms, please do not submit contributions to this repository.**
\ No newline at end of file
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
new file mode 100644
index 0000000000..aca58ef014
--- /dev/null
+++ b/docs/CONTRIBUTING.md
@@ -0,0 +1,53 @@
+# Contributing to The Aether II
+## Getting started for programmers
+1. Install the latest 64-bit version of OpenJDK 17. Check out [Adoptium](https://adoptium.net/) for the relevant JDK build for your OS.
+
+2. Install the latest 64-bit version of Git, which can be found on the [Git website](https://git-scm.com/).
+
+3. Fork The Aether repository with the [fork](https://github.com/Gilded-Games/The-Aether-II/fork) button in the top right of GitHub.
+
+4. We recommend to use [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/) for contributions. Other IDEs may work but any issues or roadblocks will not receive support.
+
+5. We recommend a Git client if you are new to contributing, however if you know how to use Git you can also use the [command line](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html). Some client options are:
+ 1. IntelliJ IDEA itself ([Tutorial](https://blog.jetbrains.com/idea/2020/10/clone-a-project-from-github/))
+ 2. [GitHub Desktop](https://desktop.github.com/) ([Tutorial](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/overview/getting-started-with-github-desktop))
+ 3. [GitKraken](https://www.gitkraken.com/) ([Tutorial](https://help.gitkraken.com/gitkraken-client/guide/))
+ 4. [SourceTree](https://www.sourcetreeapp.com/) ([Tutorial](https://confluence.atlassian.com/get-started-with-sourcetree))
+
+6. Clone your fork of the repository with Git (note: if using IntelliJ IDEA for Git, this will automatically open the project as well).
+
+7. Open the locally cloned repository with IntelliJ IDEA and set up the project workspace.
+
+ If you're not familiar with setting up IntelliJ IDEA for use with ForgeGradle projects, cpw has created a setup video on a few of the basics of ForgeGradle [here](https://www.youtube.com/watch?v=PfmlNiHonV0).
+
+8. Create a branch for your changes named `feat//`. Read up on your relevant Git tutorial if you are unsure how to do this.
+
+9. Run `git config core.hooksPath .githooks` in your Git client's terminal to configure git hooks for the workspace.
+
+10. Start developing!
+
+If you have any questions or issues, or would just like to discuss Aether II development, feel free to [join us on Discord](https://discord.gg/aethermod).
+
+## Writing commits
+If you are looking to commit to your fork and don't know how, make sure to read up on your relevant Git tutorial.
+
+Once you're ready to commit, there are some things to know about our commit styling. The Aether II makes uses of conventional commits. To understand this, we recommend you read up on [Semantic Versioning](https://github.com/Gilded-Games/.github/blob/main/references/VERSIONING.md) first, and then our [Conventional Commit](https://github.com/Gilded-Games/.github/blob/main/references/COMMITS.md) standards.
+
+It is important to use conventional commits because The Aether II's workflow depends on them for code review and changelogs. Not using it makes management of contributions more difficult.
+
+It is also important to understand semantic versioning as we recommend avoiding breaking changes, and also avoiding anything that could lead to future breaking changes being made.
+
+## Creating pull requests
+To open a pull request, go to the [pull requests page](https://github.com/Gilded-Games/The-Aether-II/pulls), and an indicator should show up on the page to create a PR from a recent commit to a fork.
+
+When creating a PR:
+- Make sure your code conforms to the project's documentation and code styling.
+- Mark it as a draft if the changes are WIP.
+- Follow the template and example given when creating the PR.
+- Follow the instructions of anything written in `[]`.
+- Make sure the section in the code block meets [Conventional Commit](https://github.com/Gilded-Games/.github/blob/main/references/COMMITS.md) standards, as we put the information into the merge commit, just keep in mind the header becomes the title of the PR.
+
+## Code review
+After your PR has been opened, we will make sure to label it with the relevant status, feat, and type labels and assign it to a developer for review. We will then review your code and test if it builds through CircleCI, as well as test the contents to verify they do as described.
+
+If we request any changes, you will have to make them for your PR to be accepted.
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000000..1e3872332b
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,109 @@
+![Banner image](assets/banner.webp)
+# The Aether II
+
+*Work in progress...*
+
+## :heart: Support Gilded Games
+
+[![Patreon pledgers](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3DGildedGames%26type%3Dpatrons&style=flat-square)](https://patreon.com/GildedGames)
+[![Discord user count](https://img.shields.io/discord/118816101936267265.svg?logoColor=FFFFFF&logo=discord&color=7289DA&style=flat-square)](https://discord.gg/aethermod)
+[![Twitter followers](https://img.shields.io/twitter/follow/DevAether.svg?logo=twitter&label=twitter&style=flat-square)](https://twitter.com/DevAether)
+
+If you enjoy our work, [please consider making a pledge](https://patreon.com/GildedGames) today to help fund development. Every pledge goes directly into our development process and services, enabling us to continue making the Minecraft mods you know and love.
+
+You can also support the Aether project and Gilded Games by telling your friends, joining our Discord server, and sharing our progress and announcements on social media. Every bit helps!
+
+If you're interested in sponsoring the Aether project or Gilded Games, please [contact us](mailto:support@gildedgames.com).
+
+## :package: Download the latest releases
+[![Mod loader: Forge](https://img.shields.io/badge/mod%20loader-forge-CC974D?style=flat-square)](https://files.minecraftforge.net/net/minecraftforge/forge/)
+[![](http://cf.way2muchnoise.eu/aether-ii.svg)]()
+[![](http://cf.way2muchnoise.eu/versions/aether-ii_latest.svg)]()
+[![Gilded-Games](https://circleci.com/gh/Gilded-Games/The-Aether/tree/1.19.svg?style=shield)](https://app.circleci.com/pipelines/github/Gilded-Games/The-Aether-II?branch=1.19)
+### Release builds
+The Aether II has no stable release builds for the latest version of Minecraft just yet, but this port is in active development so keep an eye out for its eventual release.
+
+### Bleeding edge builds
+If you’re feeling a bit more adventurous or wish to help test the in-development versions, we provide **bleeding edge builds** which are produced on [CircleCI](https://app.circleci.com/pipelines/github/Gilded-Games/The-Aether-II). These builds are created for every new commit and contain the latest available code. We do not recommend users treat these builds as releases, as they are unfinished and may contain serious issues. If you wish to download these builds, check out [this guide](https://github.com/Gilded-Games/The-Aether-II/wiki/CircleCI-Guide).
+
+### Packages
+To install this mod through GitHub Packages in Gradle for development, you will need the [Gradle Github Packages Plugin](https://github.com/0ffz/gpr-for-gradle). To use it, make sure you have access to the Gradle plugins maven and the plugin as a buildscript dependency:
+
+
+ Buildscript Code
+
+```
+buildscript {
+ repositories {
+ ...
+ maven {
+ name 'Gradle'
+ url "https://plugins.gradle.org/m2/"
+ }
+ }
+ dependencies {
+ ...
+ classpath group: 'io.github.0ffz', name: 'gpr-for-gradle', version: '1.+', changing: true
+ }
+}
+...
+apply plugin: 'io.github.0ffz.github-packages'
+```
+
+
+
+Then you need to specify the package you want to use in your repository:
+
+
+ Repositories Code
+
+```
+repositories {
+ ...
+ maven githubPackage.invoke("Gilded-Games/The-Aether-II")
+}
+```
+
+
+
+Then load it through your dependencies, with `project.aether_ii_version` specified in the `gradle.properties`:
+
+
+ Dependencies Code
+
+```
+dependencies {
+ ...
+ compileOnly "com.gildedgames.aether_ii:aether_ii:${project.aether_ii_version}"
+ runtimeOnly fg.deobf("com.gildedgames.aether_ii:aether_ii:${project.aether_ii_version}")
+ ...
+}
+```
+
+
+
+## :bug: Report bugs or other issues
+If you're running into bugs or other problems, feel free to open an issue on our [issue tracker](https://github.com/Gilded-Games/The-Aether-II/issues). When doing so, make sure to use one of the provided templates and fill out all the requested information. Make sure to keep your issue's description clear and concise. Your issue's title should also be easy to digest, giving our developers and reporters a good idea of what's wrong without including too many details. Failure to follow any of the above may result in your issue being closed.
+
+## :wrench: Contribute to the project
+Looking to contribute to the project? We ask that you read over our [Contributor's Guide](https://github.com/Gilded-Games/The-Aether-II/blob/1.19/docs/CONTRIBUTING.md) for more details as well as our [Contributor License Agreement (CLA)](https://github.com/Gilded-Games/The-Aether-II/blob/1.19/docs/AGREEMENT.md) before getting started.
+
+Not sure what to help with? Take a look at our issue tracker for some ideas! [Here's a quick link](https://github.com/Gilded-Games/The-Aether-II/labels/status%2Fhelp-wanted) which shows all the currently open issues that we'd love some help on.
+
+## :scroll: License information
+[![Asset license (Unlicensed)](https://img.shields.io/badge/assets%20license-All%20Rights%20Reserved-red.svg?style=flat-square)](https://en.wikipedia.org/wiki/All_rights_reserved)
+[![Code license (LGPL v3.0)](https://img.shields.io/badge/code%20license-LGPL%20v3.0-green.svg?style=flat-square)](https://github.com/Gilded-Games/The-Aether-II/blob/1.19/LICENSE.txt)
+
+If you're wanting to create a gameplay video/review, extension or addon, parody, or any other fan work of your own for The Aether II, go for it! We love seeing the content our community creates, and we hope to make it as welcoming as possible for everyone. We ask however that you please don't advertise using our brand (our specific logo assets, team name, official social media posts).
+
+If you are thinking about using the Aether project's code or assets, please note our licensing. **All assets of The Aether II are unlicensed and all rights are reserved to them by Gilded Games and their respective authors.** The source code of The Aether mod for Minecraft 1.10+ is under the LGPL v3.0 license. Any previous versions' source code is unlicensed and all rights are reserved to it by Gilded Games.
+
+If you have a reason that you wish to use our brand or any unlicensed material, please [get in contact with us](mailto:support@gildedgames.com) for details.
+
+## :star2: Special mentions
+### :speech_balloon: Translations
+
+*Work in progress...*
+
+### :hammer: Contributions
+All of our code contribution credits can be found [here](https://github.com/Gilded-Games/The-Aether-II/blob/1.19/CREDITS.txt). If you contributed to the project and do not see your name, please contact us.
\ No newline at end of file
diff --git a/doc/banner.webp b/docs/assets/banner.webp
similarity index 100%
rename from doc/banner.webp
rename to docs/assets/banner.webp
diff --git a/gradle.properties b/gradle.properties
index 17a7c348ff..9485c69938 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,6 +1,14 @@
-org.gradle.jvmargs=-Xmx2G
-mod_version=0.3.0
-minecraft_version=1.12.2
-forge_version=14.23.5.2816
-forge_mappings=stable_39
-phosphor_version=1.12.2-0.2.6+build50
+# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
+# This is required to provide enough memory for the Minecraft decompilation process.
+org.gradle.jvmargs=-Xmx3G
+org.gradle.daemon=false
+
+# Mod
+aether_ii_version=0.0.1
+mc_version=1.19.2
+forge_version=43.1.38
+mappings=1.19.2-2022.08.14-1.19.2
+
+# Dependencies
+#nitrogen_version=1.19.2-0.0.1
+curios_version=1.19.2-5.1.1.0
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index f6b961fd5a..249e5832f0 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 16d28051c9..8049c684f0 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
old mode 100755
new mode 100644
index cccdd3d517..a69d9cb6c2
--- a/gradlew
+++ b/gradlew
@@ -1,78 +1,129 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
+ JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -89,84 +140,101 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=$((i+1))
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
fi
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index e95643d6a2..f127cfd49d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,84 +1,91 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/idea/code_style.xml b/idea/code_style.xml
deleted file mode 100644
index 8e2a7b7d97..0000000000
--- a/idea/code_style.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/idea/inspections.xml b/idea/inspections.xml
deleted file mode 100644
index 3e7001988e..0000000000
--- a/idea/inspections.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/lib/orbis-lib b/lib/orbis-lib
deleted file mode 160000
index 147af30f2d..0000000000
--- a/lib/orbis-lib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 147af30f2d7ff854c7bdbb4cc47d4e55db24d728
diff --git a/settings.gradle b/settings.gradle
index ea88b89d58..3703f364a9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,6 @@
-rootProject.name = 'aether-ii'
-
-include 'orbis-lib'
-project(':orbis-lib').projectDir = file("lib/orbis-lib")
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ maven { url = 'https://maven.minecraftforge.net/' }
+ }
+}
\ No newline at end of file
diff --git a/src/api/java/com/gildedgames/aether/api/AetherAPI.java b/src/api/java/com/gildedgames/aether/api/AetherAPI.java
deleted file mode 100644
index ded6546d0e..0000000000
--- a/src/api/java/com/gildedgames/aether/api/AetherAPI.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.gildedgames.aether.api;
-
-import com.gildedgames.aether.api.registry.IContentRegistry;
-
-public class AetherAPI
-{
- private static IAetherServices services;
-
- public static IContentRegistry content()
- {
- return AetherAPI.services().content();
- }
-
- public static void registerProvider(final IAetherServices services)
- {
- if (AetherAPI.services != null)
- {
- throw new IllegalStateException("The Aether API provider is already initialized");
- }
-
- AetherAPI.services = services;
- }
-
- public static IAetherServices services()
- {
- return AetherAPI.services;
- }
-}
diff --git a/src/api/java/com/gildedgames/aether/api/IAetherServices.java b/src/api/java/com/gildedgames/aether/api/IAetherServices.java
deleted file mode 100644
index cef441e8d6..0000000000
--- a/src/api/java/com/gildedgames/aether/api/IAetherServices.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.gildedgames.aether.api;
-
-import com.gildedgames.aether.api.net.IGildedGamesAccountApi;
-import com.gildedgames.aether.api.registry.IContentRegistry;
-
-public interface IAetherServices
-{
- IContentRegistry content();
-
- IGildedGamesAccountApi gildedGamesAccountApi();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/cache/IEntityStats.java b/src/api/java/com/gildedgames/aether/api/cache/IEntityStats.java
deleted file mode 100644
index b2c17b3529..0000000000
--- a/src/api/java/com/gildedgames/aether/api/cache/IEntityStats.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.gildedgames.aether.api.cache;
-
-import com.gildedgames.aether.api.entity.effects.IAetherStatusEffects;
-
-import java.util.Map;
-
-public interface IEntityStats
-{
- float getMaxHealth();
-
- double getSlashDefenseLevel();
-
- double getPierceDefenseLevel();
-
- double getImpactDefenseLevel();
-
- Map getResistances();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/cache/IEntityStatsCache.java b/src/api/java/com/gildedgames/aether/api/cache/IEntityStatsCache.java
deleted file mode 100644
index b2f809f656..0000000000
--- a/src/api/java/com/gildedgames/aether/api/cache/IEntityStatsCache.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.gildedgames.aether.api.cache;
-
-import net.minecraft.util.ResourceLocation;
-
-public interface IEntityStatsCache
-{
- IEntityStats getStats(final ResourceLocation entityId);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/chunk/IPlacementFlagCapability.java b/src/api/java/com/gildedgames/aether/api/chunk/IPlacementFlagCapability.java
deleted file mode 100644
index 595b988124..0000000000
--- a/src/api/java/com/gildedgames/aether/api/chunk/IPlacementFlagCapability.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.gildedgames.aether.api.chunk;
-
-import com.gildedgames.orbis.lib.util.mc.NBT;
-import net.minecraft.util.math.BlockPos;
-
-/**
- * Stores which blocks in a chunk have been player-modified. Used primarily by
- * Skyroot Tools to decide whether or not to drop extra items.
- */
-public interface IPlacementFlagCapability extends NBT
-{
- /**
- * Marks the world coordinate as player-modified.
- * @param pos The world coordinates of the block to mark
- */
- void markModified(BlockPos pos);
-
- /**
- * Clears the player-modified flag for the world coordinate.
- * @param pos The world coordinates of the block to clear
- */
- void clearModified(BlockPos pos);
-
- /**
- * Returns whether or not the block at world coordinates {@param pos} has
- * been player-modified.
- * @param pos The world coordinates of the block to check
- * @return True if the block was player-modified, otherwise false.
- */
- boolean isModified(BlockPos pos);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogAction.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogAction.java
deleted file mode 100644
index 9f855f94d1..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogAction.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-/**
- * An action that can be performed during a dialog scene either by the user
- * pressing a {@link IDialogButton} or after a {@link IDialogNode} completes.
- */
-public interface IDialogAction
-{
- /**
- * Called when the action is performed.
- *
- * @param controller The controller this action was called from
- */
- void performAction(IDialogController controller);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogButton.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogButton.java
deleted file mode 100644
index 95e925930d..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogButton.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import net.minecraft.util.text.ITextComponent;
-
-import javax.annotation.Nonnull;
-import java.util.Collection;
-
-/**
- * A user-pressable button that can appear at the end of a dialog node.
- */
-public interface IDialogButton
-{
-
- /**
- * @return The conditions required for this button to display, but using or operation.
- */
- @Nonnull
- Collection getOrConditions();
-
- /**
- * @return The conditions required for this button to display.
- */
- @Nonnull
- Collection getConditions();
-
- /**
- * Returns the unlocalized label of this button.
- */
- @Nonnull
- String getLabel();
-
- /**
- * Returns the localized display string of this button.
- */
- @Nonnull
- ITextComponent getLocalizedLabel();
-
- /**
- * Returns the action to perform when this button is clicked.
- */
- @Nonnull
- Collection getActions();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogChangeListener.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogChangeListener.java
deleted file mode 100644
index cc519c9fb2..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogChangeListener.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-/**
- * A listener interface that can be implemented to subscribe to
- * dialog events.
- */
-public interface IDialogChangeListener
-{
- /**
- * Called when the dialog controller advances or otherwise updates.
- */
- void onDialogChanged();
-
- /**
- * Called when the dialog controller closes a scene.
- */
- void beforeSceneCloses();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogCondition.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogCondition.java
deleted file mode 100644
index 46518ded92..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogCondition.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-/**
- * A condition that has to be met during a dialog scene before, for example,
- * a button can be displayed.
- */
-public interface IDialogCondition
-{
- /**
- * Called when the condition needs to be met.
- *
- * @param controller The controller this condition was called from
- */
- boolean isMet(IDialogController controller);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogController.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogController.java
deleted file mode 100644
index 278faff32d..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import com.gildedgames.aether.api.entity.EntityCharacter;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.util.ResourceLocation;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.util.Map;
-
-/**
- * Controls the progression and displaying of a scene to the player.
- */
-public interface IDialogController
-{
- void setConditionsMetData(Map data);
-
- /**
- * @param button The button we're checking if their conditions are met.
- * @return Whether or not the conditions were met for this button.
- */
- boolean conditionsMet(IDialogButton button);
-
- EntityPlayer getDialogPlayer();
-
- @Nullable
- EntityCharacter getTalkingCharacter();
-
- void setTalkingEntity(EntityCharacter entity);
-
- /**
- * Adds a {@link IDialogChangeListener} to this controller. All listeners are removed
- * when the scene is changed.
- * @param listener The listener to add
- */
- void addListener(IDialogChangeListener listener);
-
- /**
- * Opens and displays the scene at it's starting node.
- * @param path The resource path to the scene file
- */
- void openScene(ResourceLocation path, String startinNodeId);
-
- /**
- * Sets the current node in the scene.
- */
- void navigateNode(String nodeId);
-
- /**
- * Sets the current node in the scene to the last active node.
- */
- void navigateBack();
-
- /**
- * Called when the player presses a button in the dialog node.
- *
- * @param button The button to press
- */
- void activateButton(IDialogButton button);
-
- /**
- * Advances the scene forward, automatically performing any actions.
- */
- void advance();
-
- /**
- * Returns the current scene of this controller.
- * @return The currently active scene of this controller
- */
- IDialogScene getCurrentScene();
-
- ISceneInstance getCurrentSceneInstance();
-
- /**
- * Returns the current node of the controller's scene.
- * @return An {@link IDialogNode} of the current scene
- */
- @Nonnull
- IDialogNode getCurrentNode();
-
- /**
- * Returns the current line of the controller's scene.
- * @return An {@link IDialogLine} of the current node
- */
- @Nonnull
- IDialogLine getCurrentLine();
-
- /**
- * Returns whether or not the current node has been read completely.
- * This is really only used to determine whether or not the buttons should be
- * shown yet.
- * @return True if all lines of the node have been read
- */
- boolean isNodeFinished();
-
- /**
- * Kills the scene instance, not gui counterpart.
- */
- void closeScene(ISceneInstance scene);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogLine.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogLine.java
deleted file mode 100644
index 21bc4fab47..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogLine.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.text.ITextComponent;
-
-import javax.annotation.Nonnull;
-import java.util.Optional;
-
-/**
- * Represents a line of text in a scene.
- */
-public interface IDialogLine
-{
- /**
- * Returns the formatted body component of this line.
- *
- * @return The formatted body as a {@link ITextComponent}
- */
- @Nonnull
- ITextComponent getLocalizedBody();
-
- /**
- * Returns the speaker of this line. If the result is empty, no speaker will be shown.
- * If the returned ResourceLocation has a #address suffix, it will use that to point to
- * a given slide registered within that speaker's json file.
- *
- * @return An {@link Optional} containing the {@link ResourceLocation} representing the speaker,
- * empty if there is no speaker.
- */
- @Nonnull
- Optional getSpeaker();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogManager.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogManager.java
deleted file mode 100644
index 2afa848c07..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogManager.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-import java.util.Optional;
-
-/**
- * Manages the loading and caching of dialog scenes.
- */
-public interface IDialogManager
-{
- /**
- * Returns a {@link IDialogSpeaker} for the specified resource location. The default
- * implementation may also cache the speaker in memory for faster access later.
- *
- * This expects the file to be located at /assets/DOMAIN/dialog/speakers/NAME.json
- * @param resource The resource name of the speaker.
- * @return The {@link IDialogSpeaker} representing the resource.
- */
- Optional getSpeaker(ResourceLocation resource);
-
- /**
- * Returns a {@link IDialogScene} for the specified resource location. The default
- * implementation may also cache the scene in memory for faster access later.
- *
- * This expects the file to be located at /assets/DOMAIN/dialog/scenes/NAME.json.
- *
- * @param resource The resource name of the scene
- * @return The {@link IDialogScene} representing the resource
- */
- Optional getScene(ResourceLocation resource);
-
- /**
- * Attempts to find a slide with the given slideAddress. If not defined,
- * it will return an empty optional.
- * @param slideAddress The address of the slide we're attempting to find.
- * @param speaker The speaker where the slide is defined.
- * @return The {@link IDialogSlide} representing the address
- */
- Optional findSlide(String slideAddress, IDialogSpeaker speaker);
-
- /**
- * Attempts to find a slide renderer implementation tied with the given
- * String. If not defined, it will return an empty optional.
- * @param type The defined String key/type for that registered renderer
- * @return The {@link IDialogSlideRenderer} representing the given String.
- */
- Optional findRenderer(String type);
-
- @SideOnly(Side.CLIENT)
- void attachReloadListener();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogNode.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogNode.java
deleted file mode 100644
index b9b504ecf7..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import javax.annotation.Nonnull;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Represents a node that can be navigated to by scene buttons or actions.
- */
-public interface IDialogNode
-{
- /**
- * Returns the dialog lines of this node.
- */
- @Nonnull
- List getLines();
-
- /**
- * Returns the buttons the player is given after all lines have been read.
- *
- * @return A collection of {@link IDialogButton}
- */
- @Nonnull
- Collection getButtons();
-
- /**
- * Returns a collection of actions to perform after the node has been completed.
- *
- * @return A collection of {@link IDialogAction}
- */
- @Nonnull
- Collection getEndActions();
-
- /**
- * This node's unique ID for use by other parts of the dialog system. Must be unique.
- */
- @Nonnull
- String getIdentifier();
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogScene.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogScene.java
deleted file mode 100644
index fb501d96d0..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogScene.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import javax.annotation.Nonnull;
-import java.util.Optional;
-
-/**
- * A scene representing it's dialog nodes and starting point.
- */
-public interface IDialogScene
-{
- /**
- * Returns a dialog node for the scene.
- *
- * @param id The name of the node
- * @return An {@link Optional} value containing the node, if it exists
- */
- Optional getNode(String id);
-
- /**
- * Returns the starting node for this scene.
- *
- * @return A {@link IDialogNode} that kicks off the scene.
- */
- @Nonnull
- IDialogNode getStartingNode();
-
- /**
- * Sets the starting node for this scene.
- * @param id The name of the node
- */
- void setStartingNode(String id);
-}
diff --git a/src/api/java/com/gildedgames/aether/api/dialog/IDialogSlide.java b/src/api/java/com/gildedgames/aether/api/dialog/IDialogSlide.java
deleted file mode 100644
index 57ef6fdf87..0000000000
--- a/src/api/java/com/gildedgames/aether/api/dialog/IDialogSlide.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.gildedgames.aether.api.dialog;
-
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * Represents a Slide which will be rendered in a scene.
- * Currently, {@link IDialogSpeaker} objects define what Slides
- * a {@link IDialogScene} can utilize.
- */
-public interface IDialogSlide
-{
- /**
- * The returned String represents an implementation that is used to draw
- * the {@link #getSlideData()} defined by this Slide.
- * @return An {@link Optional} object containing a String which represents
- * a renderer implementation
- */
- Optional getRenderer();
-
- /**
- * Slide data that will eventually be interpreted by this Slide's
- * Renderer and drawn on screen.
- * @return An {@link Optional} object containing a map of String data.
- */
- Optional