diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..2ca3795 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +# Automatically build the project and run any configured tests for every push +# and submitted pull request. This can help catch issues that only occur on +# certain platforms or Java versions, and provides a first line of defence +# against bad commits. + +name: build +on: [pull_request, push] + +jobs: + build: + strategy: + matrix: + # Use these Java versions + java: [ + 17, # Current Java LTS & minimum supported by Minecraft + ] + # and run on both Linux and Windows + os: [ubuntu-22.04, windows-2022] + runs-on: ${{ matrix.os }} + steps: + - name: checkout repository + uses: actions/checkout@v3 + - name: validate gradle wrapper + uses: gradle/wrapper-validation-action@v1 + - name: setup jdk ${{ matrix.java }} + uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java }} + distribution: 'microsoft' + - name: make gradle wrapper executable + if: ${{ runner.os != 'Windows' }} + run: chmod +x ./gradlew + - name: build + run: ./gradlew build + - name: capture build artifacts + if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS + uses: actions/upload-artifact@v3 + with: + name: Artifacts + path: build/libs/ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11db505 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# macos + +*.DS_Store + +# fabric + +run/ +/src/main/generated/.cache + +# java + +hs_err_*.log +replay_*.log +*.hprof +*.jfr + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cee9c3c --- /dev/null +++ b/LICENSE @@ -0,0 +1,172 @@ +Open Software License ("OSL") v. 3.0 + +This Open Software License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following licensing notice adjacent to the copyright notice for the Original +Work: + + Licensed under the Open Software License version 3.0 + +1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, +non-exclusive, sublicensable license, for the duration of the copyright, to do +the following: + + a) to reproduce the Original Work in copies, either alone or as part of a + collective work; + + b) to translate, adapt, alter, transform, modify, or arrange the Original + Work, thereby creating derivative works ("Derivative Works") based upon the + Original Work; + + c) to distribute or communicate copies of the Original Work and Derivative + Works to the public, with the proviso that copies of Original Work or + Derivative Works that You distribute or communicate shall be licensed under + this Open Software License; + + d) to perform the Original Work publicly; and + + e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, +non-exclusive, sublicensable license, under patent claims owned or controlled +by the Licensor that are embodied in the Original Work as furnished by the +Licensor, for the duration of the patents, to make, use, sell, offer for sale, +have made, and import the Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor agrees to +provide a machine-readable copy of the Source Code of the Original Work along +with each copy of the Original Work that Licensor distributes. Licensor +reserves the right to satisfy this obligation by placing a machine-readable +copy of the Source Code in an information repository reasonably calculated to +permit inexpensive and convenient access by You for as long as Licensor +continues to distribute the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior permission of the Licensor. Except as +expressly stated herein, nothing in this License grants any license to +Licensor's trademarks, copyrights, patents, trade secrets or any other +intellectual property. No patent license is granted to make, use, sell, offer +for sale, have made, or import embodiments of any patent claims other than the +licensed claims defined in Section 2. No license is granted to the trademarks +of Licensor even if such marks are included in the Original Work. Nothing in +this License shall be interpreted to prohibit Licensor from licensing under +terms different from this License any Original Work that Licensor otherwise +would have a right to license. + +5) External Deployment. The term "External Deployment" means the use, +distribution, or communication of the Original Work or Derivative Works in any +way such that the Original Work or Derivative Works may be used by anyone +other than You, whether those works are distributed or communicated to those +persons or made available as an application intended for use over a network. +As an express condition for the grants of license hereunder, You must treat +any External Deployment by You of the Original Work or a Derivative Work as a +distribution under section 1(c). + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent, or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the +terms of this License with the permission of the contributor(s) of those +copyrights and patent rights. Except as expressly stated in the immediately +preceding sentence, the Original Work is provided under this License on an "AS +IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without +limitation, the warranties of non-infringement, merchantability or fitness for +a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK +IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this +License. No license to the Original Work is granted by this License except +under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to anyone for any indirect, special, incidental, or +consequential damages of any character arising as a result of this License or +the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to the extent applicable law prohibits such limitation. + +9) Acceptance and Termination. If, at any time, You expressly assented to this +License, that assent indicates your clear and irrevocable acceptance of this +License and all of its terms and conditions. If You distribute or communicate +copies of the Original Work or a Derivative Work, You must make a reasonable +effort under the circumstances to obtain the express assent of recipients to +the terms of this License. This License conditions your rights to undertake +the activities listed in Section 1, including your right to create Derivative +Works based upon the Original Work, and doing so without honoring these terms +and conditions is prohibited by copyright law and international treaty. +Nothing in this License is intended to affect copyright exceptions and +limitations (including "fair use" or "fair dealing"). This License shall +terminate immediately and You may no longer exercise any of the rights granted +to You by this License upon your failure to honor the conditions in Section +1(c). + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this +License as of the date You commence an action, including a cross-claim or +counterclaim, against Licensor or any licensee alleging that the Original Work +infringes a patent. This termination provision shall not apply for an action +alleging patent infringement by combinations of the Original Work with other +software or hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the +International Sale of Goods is expressly excluded. Any use of the Original +Work outside the scope of this License or after its termination shall be +subject to the requirements and penalties of copyright or patent law in the +appropriate jurisdiction. This section shall survive the termination of this +License. + +12) Attorneys' Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary +to make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, +whether in upper or lower case, means an individual or a legal entity +exercising rights under, and complying with all of the terms of, this License. +For legal entities, "You" includes any entity that controls, is controlled by, +or is under common control with you. For purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the direction or +management of such entity, whether by contract or otherwise, or (ii) ownership +of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial +ownership of such entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +16) Modification of This License. This License is Copyright © 2005 Lawrence +Rosen. Permission is granted to copy, distribute, or communicate this License +without modification. Nothing in this License permits You to modify this +License as applied to the Original Work or to Derivative Works. However, You +may modify the text of this License and copy, distribute or communicate your +modified version (the "Modified License") and apply it to other original works +of authorship subject to the following conditions: (i) You may not indicate in +any way that your Modified License is the "Open Software License" or "OSL" and +you may not use those names in the name of your Modified License; (ii) You +must replace the notice specified in the first paragraph above with the notice +"Licensed under " or with a notice of your own +that is not confusingly similar to the notice in this License; and (iii) You +may not claim that your original works are open source software unless your +Modified License has been approved by Open Source Initiative (OSI) and You +comply with its license review and certification process. \ No newline at end of file diff --git a/PLAN b/PLAN new file mode 100644 index 0000000..b35118f --- /dev/null +++ b/PLAN @@ -0,0 +1,14 @@ +necronomicon from danganronpa v3 +entity transmutation(and have it be configurable with data) +volcanite amulet repairable with blaze powder +mining catalyst (basically destruction catalyst from ee1) +Destruction catalyst (the mining catalyst but bigger ranges and voids all drops) +Black Hole band (magnet, only works in your hand not in your inventory) +Gem of eternal density +angel block +Alchemical Barrel +red matter steak that replenishies hunger by just being in your inventory +pedestal + if using the volcanite amulet consume nearby lava to charge it +make darkmatter based items all have rare coloring +make evertide amulet trick the trident into thinking its raining \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd96346 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Fabric Example Mod + +## Setup + +For setup instructions please see the [fabric wiki page](https://fabricmc.net/wiki/tutorial:setup) that relates to the IDE that you are using. + +## License + +This template is available under the CC0 license. Feel free to learn from it and incorporate it in your own projects. diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..466548f --- /dev/null +++ b/build.gradle @@ -0,0 +1,159 @@ +plugins { + id 'fabric-loom' version '1.3-SNAPSHOT' + id 'maven-publish' +} + +version = project.mod_version +group = project.maven_group + +base { + archivesName = project.archives_base_name +} + +repositories { + maven { + url = "https://repo.repsy.io/mvn/distant/feltmc/" + } + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } + maven { + url = 'https://maven.ladysnake.org/releases' + } + maven { + name = "TerraformersMC" + url = "https://maven.terraformersmc.com/" + } +} + +loom { + splitEnvironmentSourceSets() + + mods { + "modid" { + sourceSet sourceSets.main + sourceSet sourceSets.client + } + } + + runs { + // + // This adds a new gradle task that runs the datagen API: "gradlew runDatagenClient" + // + datagenClient { + inherit client + name "Data Generation" + vmArg "-Dfabric-api.datagen" + vmArg "-Dfabric-api.datagen.output-dir=${file("src/main/generated")}" + vmArg "-Dfabric-api.datagen.modid=${modid}" + + runDir "build/datagen" + } + } +} + +sourceSets { + main { + resources { + srcDirs += [ + 'src/main/generated' + ] + } + } +} + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings loom.layered() { + officialMojangMappings() + //parchment("org.parchmentmc.data:parchment-1.20.1:2023.06.26@zip") + } + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modImplementation "TechReborn:TechReborn-1.20:5.9.1" + include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.2.0-rc.4"))) + include modImplementation("net.feltmc:felt-splash-api:1.0.0-1.20.1"){ + exclude(group: "com.terraformersmc") + } + /*include modImplementation("net.feltmc:felt-tool-api:1.0.0-1.20.1"){ + exclude(group: "com.terraformersmc") + } + include modImplementation("net.feltmc:felt-enchanting-api:1.0.0-1.20.2"){ + exclude(group: "com.terraformersmc") + }*/ + modRuntimeOnly "maven.modrinth:modmenu:${project.modmenu_version}" + modImplementation "io.github.ladysnake:PlayerAbilityLib:1.9.0" + //required for trinkets + modRuntimeOnly "dev.onyxstudios.cardinal-components-api:cardinal-components-base:5.3.0" + modRuntimeOnly "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:5.3.0" + modImplementation "dev.emi:trinkets:3.8.0" + modRuntimeOnly "maven.modrinth:jei:16.0.0.28" + //modRuntimeOnly "maven.modrinth:architectury-api:10.0.7+fabric" + //modRuntimeOnly "maven.modrinth:cloth-config:12.0.107+fabric" + //modRuntimeOnly "maven.modrinth:rei:13.0.654+fabric" + modRuntimeOnly "maven.modrinth:modernfix:${project.modernfix_version}" + //modRuntimeOnly "maven.modrinth:ferrite-core:6.0.0-fabric" + compileOnly 'org.projectlombok:lombok:1.18.24' + annotationProcessor 'org.projectlombok:lombok:1.18.24' + + testCompileOnly 'org.projectlombok:lombok:1.18.24' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.release = 17 +} + +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +jar { + from("LICENSE") { + rename { "${it}_${project.base.archivesName.get()}"} + } +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..58e7190 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,22 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true + +# Fabric Properties +# check these on https://fabricmc.net/develop +minecraft_version=1.20.2 +yarn_mappings=1.20.2+build.1 +loader_version=0.14.22 + +# Mod Properties +mod_version=1.1.0 +modid=alchemist +maven_group=com.example +archives_base_name=alchemist + +# Dependencies +fabric_version=0.89.2+1.20.2 + +#Env +modernfix_version = 5.7.3-beta.1+mc1.20.2-pre3 +modmenu_version = 8.0.0-beta.2 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..033e24c Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..62f495d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..fcb6fca --- /dev/null +++ b/gradlew @@ -0,0 +1,248 @@ +#!/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 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/HEAD/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 +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 + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +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 ;; #( + 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 + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +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" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + 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 + # 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 +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# 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 new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@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=. +@rem This is normally unused +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/settings.gradle b/settings.gradle new file mode 100644 index 0000000..75c4d72 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + mavenCentral() + gradlePluginPortal() + } +} \ No newline at end of file diff --git a/src/client/java/io/github/unix_supremacist/AlchemistClient.java b/src/client/java/io/github/unix_supremacist/AlchemistClient.java new file mode 100644 index 0000000..8e91d38 --- /dev/null +++ b/src/client/java/io/github/unix_supremacist/AlchemistClient.java @@ -0,0 +1,26 @@ +package io.github.unix_supremacist; + +import com.mojang.blaze3d.platform.InputConstants; +import io.github.unix_supremacist.content.AlchemistBlocks; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.renderer.RenderType; +import org.lwjgl.glfw.GLFW; + +public class AlchemistClient implements ClientModInitializer { + static boolean run = true; + @Override + public void onInitializeClient() { + KeyMapping empower = KeyBindingHelper.registerKeyBinding(new KeyMapping("key.alchemist.empower", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_V, "key.categories.alchemist")); + BlockRenderLayerMap.INSTANCE.putBlock(AlchemistBlocks.transmutation_circle.getBlock(), RenderType.cutout()); + + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (empower.consumeClick()) ClientPlayNetworking.send(Alchemist.empower_packet, PacketByteBufs.empty()); + }); + } +} \ No newline at end of file diff --git a/src/main/generated/assets/alchemist/lang/en_us.json b/src/main/generated/assets/alchemist/lang/en_us.json new file mode 100644 index 0000000..b38b78e --- /dev/null +++ b/src/main/generated/assets/alchemist/lang/en_us.json @@ -0,0 +1,21 @@ +{ + "block.alchemist.transmutation_circle": "Transmutation Circle", + "item.alchemist.aeternalis_fuel": "Aeternalis Fuel", + "item.alchemist.alchemical_coal": "Alchemical Coal", + "item.alchemist.catalytic_lens": "Catalytic Lens", + "item.alchemist.chalk": "Chalk", + "item.alchemist.coal_coke": "Coal Coke", + "item.alchemist.dark_matter": "Dark Matter", + "item.alchemist.dark_matter_hammer": "Dark Matter Hammer", + "item.alchemist.destruction_catalyst": "Destruction Catalyst", + "item.alchemist.evertide_amulet": "Evertide Amulet", + "item.alchemist.iron_band": "Iron Band", + "item.alchemist.mobius_fuel": "Mobius Fuel", + "item.alchemist.philosophers_stone": "Philosophers Stone", + "item.alchemist.red_matter": "Red Matter", + "item.alchemist.swiftwolfs_rending_gale": "Swiftwolfs Rending Gale", + "item.alchemist.volcanite_amulet": "Volcanite Amulet", + "itemGroup.alchemist": "Alchemist", + "key.alchemist.empower": "Empower", + "key.categories.alchemist": "Alchemist" +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/aeternalis_fuel_to_mobius_fuel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/aeternalis_fuel_to_mobius_fuel.json new file mode 100644 index 0000000..c4903d0 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/aeternalis_fuel_to_mobius_fuel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:aeternalis_fuel_to_mobius_fuel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:aeternalis_fuel_to_mobius_fuel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_coal_coke.json b/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_coal_coke.json new file mode 100644 index 0000000..11d3bee --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_coal_coke.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:alchemical_coal_to_coal_coke" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:alchemical_coal_to_coal_coke" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_mobius_fuel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_mobius_fuel.json new file mode 100644 index 0000000..cbd28f3 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/alchemical_coal_to_mobius_fuel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:alchemical_coal_to_mobius_fuel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:alchemical_coal_to_mobius_fuel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_iron_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_iron_ingot.json new file mode 100644 index 0000000..ebf07fc --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_iron_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:aluminum_ingot_to_iron_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:aluminum_ingot_to_iron_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_nickel_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_nickel_ingot.json new file mode 100644 index 0000000..dc1ed17 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/aluminum_ingot_to_nickel_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:aluminum_ingot_to_nickel_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:aluminum_ingot_to_nickel_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_ender_pearl.json b/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_ender_pearl.json new file mode 100644 index 0000000..c2c35af --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_ender_pearl.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:blaze_rod_to_ender_pearl" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:blaze_rod_to_ender_pearl" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_gunpowder.json b/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_gunpowder.json new file mode 100644 index 0000000..d0de6f4 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/blaze_rod_to_gunpowder.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:blaze_rod_to_gunpowder" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:blaze_rod_to_gunpowder" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/charcoal_to_coal.json b/src/main/generated/data/alchemist/advancements/recipes/misc/charcoal_to_coal.json new file mode 100644 index 0000000..3198d38 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/charcoal_to_coal.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:charcoal_to_coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:charcoal_to_coal" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/clay_ball_to_stone.json b/src/main/generated/data/alchemist/advancements/recipes/misc/clay_ball_to_stone.json new file mode 100644 index 0000000..240deee --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/clay_ball_to_stone.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:clay_ball_to_stone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:clay_ball_to_stone" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/clay_to_raw_copper.json b/src/main/generated/data/alchemist/advancements/recipes/misc/clay_to_raw_copper.json new file mode 100644 index 0000000..d7cf677 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/clay_to_raw_copper.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:clay_to_raw_copper" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:clay_to_raw_copper" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_alchemical_coal.json b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_alchemical_coal.json new file mode 100644 index 0000000..a63206d --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_alchemical_coal.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:coal_coke_to_alchemical_coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:coal_coke_to_alchemical_coal" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_coal.json b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_coal.json new file mode 100644 index 0000000..68a1c7e --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_coke_to_coal.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:coal_coke_to_coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:coal_coke_to_coal" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/coal_to_charcoal.json b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_to_charcoal.json new file mode 100644 index 0000000..defcee4 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/coal_to_charcoal.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:coal_to_charcoal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:coal_to_charcoal" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone.json b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone.json new file mode 100644 index 0000000..b6422a5 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone.json @@ -0,0 +1,61 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:lava_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:cobblestone" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_water_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:water_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_lava_bucket", + "has_water_bucket", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "minecraft:cobblestone" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_gravel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_gravel.json new file mode 100644 index 0000000..7aa3c79 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_gravel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:cobblestone_to_gravel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:cobblestone_to_gravel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_sand.json b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_sand.json new file mode 100644 index 0000000..658a28a --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/cobblestone_to_sand.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:cobblestone_to_sand" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:cobblestone_to_sand" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_iron_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_iron_ingot.json new file mode 100644 index 0000000..98ece28 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_iron_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:copper_ingot_to_iron_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:copper_ingot_to_iron_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_tin_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_tin_ingot.json new file mode 100644 index 0000000..6d4f64c --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/copper_ingot_to_tin_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:copper_ingot_to_tin_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:copper_ingot_to_tin_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/dark_matter.json b/src/main/generated/data/alchemist/advancements/recipes/misc/dark_matter.json new file mode 100644 index 0000000..9cb2a60 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/dark_matter.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mobius_fuel": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:mobius_fuel" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_netherite_block": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:netherite_block" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:dark_matter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_mobius_fuel", + "has_netherite_block" + ] + ], + "rewards": { + "recipes": [ + "alchemist:dark_matter" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_gold_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_gold_ingot.json new file mode 100644 index 0000000..7f9dcc2 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_gold_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:diamond_to_gold_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:diamond_to_gold_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_netherite_scrap.json b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_netherite_scrap.json new file mode 100644 index 0000000..f8b0eee --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_netherite_scrap.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:diamond_to_netherite_scrap" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:diamond_to_netherite_scrap" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_ruby_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_ruby_gem.json new file mode 100644 index 0000000..0e71664 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/diamond_to_ruby_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:diamond_to_ruby_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:diamond_to_ruby_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_gravel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_gravel.json new file mode 100644 index 0000000..6192d48 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_gravel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:dirt_to_gravel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:dirt_to_gravel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_sand.json b/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_sand.json new file mode 100644 index 0000000..22be564 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/dirt_to_sand.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:dirt_to_sand" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:dirt_to_sand" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/emerald_to_gunpowder.json b/src/main/generated/data/alchemist/advancements/recipes/misc/emerald_to_gunpowder.json new file mode 100644 index 0000000..b488330 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/emerald_to_gunpowder.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:emerald_to_gunpowder" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:emerald_to_gunpowder" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/ender_pearl_to_blaze_rod.json b/src/main/generated/data/alchemist/advancements/recipes/misc/ender_pearl_to_blaze_rod.json new file mode 100644 index 0000000..5f22ede --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/ender_pearl_to_blaze_rod.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:ender_pearl_to_blaze_rod" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:ender_pearl_to_blaze_rod" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/flint_to_gravel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/flint_to_gravel.json new file mode 100644 index 0000000..4916af9 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/flint_to_gravel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:flint_to_gravel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:flint_to_gravel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_diamond.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_diamond.json new file mode 100644 index 0000000..ad32188 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_diamond.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gold_ingot_to_diamond" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gold_ingot_to_diamond" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_silver_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_silver_ingot.json new file mode 100644 index 0000000..f5988c6 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gold_ingot_to_silver_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gold_ingot_to_silver_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gold_ingot_to_silver_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_cobblestone.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_cobblestone.json new file mode 100644 index 0000000..a5c05ea --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_cobblestone.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gravel_to_cobblestone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gravel_to_cobblestone" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_dirt.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_dirt.json new file mode 100644 index 0000000..efba43a --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gravel_to_dirt.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gravel_to_dirt" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gravel_to_dirt" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_blaze_rod.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_blaze_rod.json new file mode 100644 index 0000000..bc61f83 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_blaze_rod.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gunpowder_to_blaze_rod" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gunpowder_to_blaze_rod" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_emerald.json b/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_emerald.json new file mode 100644 index 0000000..30e4f8b --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/gunpowder_to_emerald.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:gunpowder_to_emerald" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:gunpowder_to_emerald" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/iridium_ingot_to_tungsten_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/iridium_ingot_to_tungsten_ingot.json new file mode 100644 index 0000000..b798796 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/iridium_ingot_to_tungsten_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:iridium_ingot_to_tungsten_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:iridium_ingot_to_tungsten_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_aluminum_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_aluminum_ingot.json new file mode 100644 index 0000000..91c084a --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_aluminum_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:iron_ingot_to_aluminum_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:iron_ingot_to_aluminum_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_copper_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_copper_ingot.json new file mode 100644 index 0000000..6a83150 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/iron_ingot_to_copper_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:iron_ingot_to_copper_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:iron_ingot_to_copper_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/lead_ingot_to_silver_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/lead_ingot_to_silver_ingot.json new file mode 100644 index 0000000..676e13e --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/lead_ingot_to_silver_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:lead_ingot_to_silver_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:lead_ingot_to_silver_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_aeternalis_fuel.json b/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_aeternalis_fuel.json new file mode 100644 index 0000000..84f1ea8 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_aeternalis_fuel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:mobius_fuel_to_aeternalis_fuel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:mobius_fuel_to_aeternalis_fuel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_alchemical_coal.json b/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_alchemical_coal.json new file mode 100644 index 0000000..c4d2d2b --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/mobius_fuel_to_alchemical_coal.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:mobius_fuel_to_alchemical_coal" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:mobius_fuel_to_alchemical_coal" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_platinum_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_platinum_ingot.json new file mode 100644 index 0000000..d42e727 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_platinum_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:netherite_ingot_to_platinum_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:netherite_ingot_to_platinum_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_tungsten_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_tungsten_ingot.json new file mode 100644 index 0000000..b2800dc --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_ingot_to_tungsten_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:netherite_ingot_to_tungsten_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:netherite_ingot_to_tungsten_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_scrap_to_diamond.json b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_scrap_to_diamond.json new file mode 100644 index 0000000..42a5e42 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/netherite_scrap_to_diamond.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:netherite_scrap_to_diamond" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:netherite_scrap_to_diamond" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/nickel_ingot_to_aluminum_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/nickel_ingot_to_aluminum_ingot.json new file mode 100644 index 0000000..c0a3414 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/nickel_ingot_to_aluminum_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:nickel_ingot_to_aluminum_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:nickel_ingot_to_aluminum_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/obsidian.json b/src/main/generated/data/alchemist/advancements/recipes/misc/obsidian.json new file mode 100644 index 0000000..fafed4f --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/obsidian.json @@ -0,0 +1,61 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:lava_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:obsidian" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_water_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:water_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_lava_bucket", + "has_water_bucket", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "minecraft:obsidian" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_ruby_gem.json new file mode 100644 index 0000000..5f1d894 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_ruby_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:peridot_gem_to_ruby_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:peridot_gem_to_ruby_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_sapphire_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_sapphire_gem.json new file mode 100644 index 0000000..8346b64 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_sapphire_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:peridot_gem_to_sapphire_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:peridot_gem_to_sapphire_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_yellow_garnet_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_yellow_garnet_gem.json new file mode 100644 index 0000000..8c55879 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/peridot_gem_to_yellow_garnet_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:peridot_gem_to_yellow_garnet_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:peridot_gem_to_yellow_garnet_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_netherite_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_netherite_ingot.json new file mode 100644 index 0000000..8134b69 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_netherite_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:platinum_ingot_to_netherite_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:platinum_ingot_to_netherite_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_titanium_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_titanium_ingot.json new file mode 100644 index 0000000..31088a1 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/platinum_ingot_to_titanium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:platinum_ingot_to_titanium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:platinum_ingot_to_titanium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_clay.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_clay.json new file mode 100644 index 0000000..f301286 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_clay.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_copper_to_clay" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_copper_to_clay" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_iron.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_iron.json new file mode 100644 index 0000000..5e61565 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_iron.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_copper_to_raw_iron" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_copper_to_raw_iron" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_tin.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_tin.json new file mode 100644 index 0000000..9adcb0e --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_copper_to_raw_tin.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_copper_to_raw_tin" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_copper_to_raw_tin" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_iron.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_iron.json new file mode 100644 index 0000000..209206c --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_iron.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_gold_to_raw_iron" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_gold_to_raw_iron" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_silver.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_silver.json new file mode 100644 index 0000000..b02c929 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_gold_to_raw_silver.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_gold_to_raw_silver" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_gold_to_raw_silver" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_copper.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_copper.json new file mode 100644 index 0000000..a92e22d --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_copper.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_iron_to_raw_copper" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_iron_to_raw_copper" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_gold.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_gold.json new file mode 100644 index 0000000..f7b9519 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_iron_to_raw_gold.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_iron_to_raw_gold" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_iron_to_raw_gold" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_lead_to_raw_silver.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_lead_to_raw_silver.json new file mode 100644 index 0000000..e69c346 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_lead_to_raw_silver.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_lead_to_raw_silver" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_lead_to_raw_silver" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_gold.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_gold.json new file mode 100644 index 0000000..3b6e761 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_gold.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_silver_to_raw_gold" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_silver_to_raw_gold" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_lead.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_lead.json new file mode 100644 index 0000000..4a8540c --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_silver_to_raw_lead.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_silver_to_raw_lead" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_silver_to_raw_lead" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/raw_tin_to_raw_copper.json b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_tin_to_raw_copper.json new file mode 100644 index 0000000..45705f2 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/raw_tin_to_raw_copper.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:raw_tin_to_raw_copper" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:raw_tin_to_raw_copper" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/red_garnet_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/red_garnet_gem_to_ruby_gem.json new file mode 100644 index 0000000..b1c42bb --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/red_garnet_gem_to_ruby_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:red_garnet_gem_to_ruby_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:red_garnet_gem_to_ruby_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/red_matter.json b/src/main/generated/data/alchemist/advancements/recipes/misc/red_matter.json new file mode 100644 index 0000000..37ba49a --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/red_matter.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_aeternalis_fuel": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:aeternalis_fuel" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_dark_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:dark_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:red_matter" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dark_matter", + "has_aeternalis_fuel" + ] + ], + "rewards": { + "recipes": [ + "alchemist:red_matter" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_diamond.json b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_diamond.json new file mode 100644 index 0000000..92f6750 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_diamond.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:ruby_gem_to_diamond" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:ruby_gem_to_diamond" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_peridot_gem.json new file mode 100644 index 0000000..015a116 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_peridot_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:ruby_gem_to_peridot_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:ruby_gem_to_peridot_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_red_garnet_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_red_garnet_gem.json new file mode 100644 index 0000000..b80dd48 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_red_garnet_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:ruby_gem_to_red_garnet_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:ruby_gem_to_red_garnet_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_sapphire_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_sapphire_gem.json new file mode 100644 index 0000000..2340b29 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/ruby_gem_to_sapphire_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:ruby_gem_to_sapphire_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:ruby_gem_to_sapphire_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_cobblestone.json b/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_cobblestone.json new file mode 100644 index 0000000..3b9dd92 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_cobblestone.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:sand_to_cobblestone" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:sand_to_cobblestone" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_dirt.json b/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_dirt.json new file mode 100644 index 0000000..e8c6a76 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/sand_to_dirt.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:sand_to_dirt" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:sand_to_dirt" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_peridot_gem.json new file mode 100644 index 0000000..20fe514 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_peridot_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:sapphire_gem_to_peridot_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:sapphire_gem_to_peridot_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_ruby_gem.json new file mode 100644 index 0000000..89e3f00 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/sapphire_gem_to_ruby_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:sapphire_gem_to_ruby_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:sapphire_gem_to_ruby_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_gold_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_gold_ingot.json new file mode 100644 index 0000000..05c7146 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_gold_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:silver_ingot_to_gold_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:silver_ingot_to_gold_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_lead_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_lead_ingot.json new file mode 100644 index 0000000..0a19f11 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/silver_ingot_to_lead_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:silver_ingot_to_lead_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:silver_ingot_to_lead_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/stone.json b/src/main/generated/data/alchemist/advancements/recipes/misc/stone.json new file mode 100644 index 0000000..88574fa --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/stone.json @@ -0,0 +1,61 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:lava_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:stone" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_water_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:water_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_lava_bucket", + "has_water_bucket", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "minecraft:stone" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/stone_to_clay_ball.json b/src/main/generated/data/alchemist/advancements/recipes/misc/stone_to_clay_ball.json new file mode 100644 index 0000000..731ee8d --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/stone_to_clay_ball.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:stone_to_clay_ball" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:stone_to_clay_ball" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/tin_ingot_to_copper_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/tin_ingot_to_copper_ingot.json new file mode 100644 index 0000000..6fa8050 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/tin_ingot_to_copper_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:tin_ingot_to_copper_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:tin_ingot_to_copper_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/titanium_ingot_to_platinum_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/titanium_ingot_to_platinum_ingot.json new file mode 100644 index 0000000..4ac4c2b --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/titanium_ingot_to_platinum_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:titanium_ingot_to_platinum_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:titanium_ingot_to_platinum_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_iridium_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_iridium_ingot.json new file mode 100644 index 0000000..f9bb2b8 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_iridium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:tungsten_ingot_to_iridium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:tungsten_ingot_to_iridium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_netherite_ingot.json b/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_netherite_ingot.json new file mode 100644 index 0000000..411eed5 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/tungsten_ingot_to_netherite_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:tungsten_ingot_to_netherite_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:tungsten_ingot_to_netherite_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/misc/yellow_garnet_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/advancements/recipes/misc/yellow_garnet_gem_to_peridot_gem.json new file mode 100644 index 0000000..16b14aa --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/misc/yellow_garnet_gem_to_peridot_gem.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:yellow_garnet_gem_to_peridot_gem" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_philosophers_stone" + ] + ], + "rewards": { + "recipes": [ + "alchemist:yellow_garnet_gem_to_peridot_gem" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/catalytic_lens.json b/src/main/generated/data/alchemist/advancements/recipes/tools/catalytic_lens.json new file mode 100644 index 0000000..5d149a8 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/catalytic_lens.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_destruction_catalyst": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:destruction_catalyst" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_red_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:red_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:catalytic_lens" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_red_matter", + "has_destruction_catalyst" + ] + ], + "rewards": { + "recipes": [ + "alchemist:catalytic_lens" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/chalk.json b/src/main/generated/data/alchemist/advancements/recipes/tools/chalk.json new file mode 100644 index 0000000..c7f5ace --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/chalk.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_clay_ball": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:clay_ball" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_diorite": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:diorite" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:chalk" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_diorite", + "has_clay_ball" + ] + ], + "rewards": { + "recipes": [ + "alchemist:chalk" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/destruction_catalyst.json b/src/main/generated/data/alchemist/advancements/recipes/tools/destruction_catalyst.json new file mode 100644 index 0000000..c21b5e8 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/destruction_catalyst.json @@ -0,0 +1,74 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_aeternalis_fuel": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:aeternalis_fuel" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_flint_and_steel": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:flint_and_steel" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_philosophers_stone": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:philosophers_stone" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_red_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:red_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:destruction_catalyst" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_flint_and_steel", + "has_aeternalis_fuel", + "has_philosophers_stone", + "has_red_matter" + ] + ], + "rewards": { + "recipes": [ + "alchemist:destruction_catalyst" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/evertide_amulet.json b/src/main/generated/data/alchemist/advancements/recipes/tools/evertide_amulet.json new file mode 100644 index 0000000..1aa72a9 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/evertide_amulet.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_dark_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:dark_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:evertide_amulet" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "has_water_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:water_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dark_matter", + "has_water_bucket" + ] + ], + "rewards": { + "recipes": [ + "alchemist:evertide_amulet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/iron_band.json b/src/main/generated/data/alchemist/advancements/recipes/tools/iron_band.json new file mode 100644 index 0000000..777e50f --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/iron_band.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_iron_ingot": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:iron_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:lava_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:iron_band" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_iron_ingot", + "has_lava_bucket" + ] + ], + "rewards": { + "recipes": [ + "alchemist:iron_band" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/swiftwolfs_rending_gale.json b/src/main/generated/data/alchemist/advancements/recipes/tools/swiftwolfs_rending_gale.json new file mode 100644 index 0000000..40f1747 --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/swiftwolfs_rending_gale.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_dark_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:dark_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_iron_band": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:iron_band" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:swiftwolfs_rending_gale" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dark_matter", + "has_iron_band" + ] + ], + "rewards": { + "recipes": [ + "alchemist:swiftwolfs_rending_gale" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/advancements/recipes/tools/volcanite_amulet.json b/src/main/generated/data/alchemist/advancements/recipes/tools/volcanite_amulet.json new file mode 100644 index 0000000..02b41fa --- /dev/null +++ b/src/main/generated/data/alchemist/advancements/recipes/tools/volcanite_amulet.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_dark_matter": { + "conditions": { + "items": [ + { + "items": [ + "alchemist:dark_matter" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_lava_bucket": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:lava_bucket" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "alchemist:volcanite_amulet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_dark_matter", + "has_lava_bucket" + ] + ], + "rewards": { + "recipes": [ + "alchemist:volcanite_amulet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/aeternalis_fuel_to_mobius_fuel.json b/src/main/generated/data/alchemist/recipes/aeternalis_fuel_to_mobius_fuel.json new file mode 100644 index 0000000..38d40ed --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/aeternalis_fuel_to_mobius_fuel.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + }, + { + "item": "alchemist:mobius_fuel" + } + ], + "result": { + "item": "alchemist:aeternalis_fuel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/alchemical_coal_to_coal_coke.json b/src/main/generated/data/alchemist/recipes/alchemical_coal_to_coal_coke.json new file mode 100644 index 0000000..0ab1c07 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/alchemical_coal_to_coal_coke.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + }, + { + "item": "alchemist:coal_coke" + } + ], + "result": { + "item": "alchemist:alchemical_coal" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/alchemical_coal_to_mobius_fuel.json b/src/main/generated/data/alchemist/recipes/alchemical_coal_to_mobius_fuel.json new file mode 100644 index 0000000..2d69ed0 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/alchemical_coal_to_mobius_fuel.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:mobius_fuel" + } + ], + "result": { + "count": 8, + "item": "alchemist:alchemical_coal" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_iron_ingot.json b/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_iron_ingot.json new file mode 100644 index 0000000..e25ab6f --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_iron_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:iron_ingot" + }, + { + "item": "minecraft:iron_ingot" + } + ], + "result": { + "item": "techreborn:aluminum_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_nickel_ingot.json b/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_nickel_ingot.json new file mode 100644 index 0000000..f5f55c4 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/aluminum_ingot_to_nickel_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:nickel_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:aluminum_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/blaze_rod_to_ender_pearl.json b/src/main/generated/data/alchemist/recipes/blaze_rod_to_ender_pearl.json new file mode 100644 index 0000000..2dc9186 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/blaze_rod_to_ender_pearl.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:ender_pearl" + } + ], + "result": { + "count": 2, + "item": "minecraft:blaze_rod" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/blaze_rod_to_gunpowder.json b/src/main/generated/data/alchemist/recipes/blaze_rod_to_gunpowder.json new file mode 100644 index 0000000..fb37545 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/blaze_rod_to_gunpowder.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gunpowder" + }, + { + "item": "minecraft:gunpowder" + } + ], + "result": { + "item": "minecraft:blaze_rod" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/catalytic_lens.json b/src/main/generated/data/alchemist/recipes/catalytic_lens.json new file mode 100644 index 0000000..d6428e2 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/catalytic_lens.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "C": { + "item": "alchemist:destruction_catalyst" + }, + "D": { + "item": "alchemist:red_matter" + } + }, + "pattern": [ + "DDD", + "CDC", + "DDD" + ], + "result": { + "item": "alchemist:catalytic_lens" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/chalk.json b/src/main/generated/data/alchemist/recipes/chalk.json new file mode 100644 index 0000000..e0ee4b8 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/chalk.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "C": { + "item": "minecraft:clay_ball" + }, + "D": { + "item": "minecraft:diorite" + } + }, + "pattern": [ + "CD", + "D " + ], + "result": { + "item": "alchemist:chalk" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/charcoal_to_coal.json b/src/main/generated/data/alchemist/recipes/charcoal_to_coal.json new file mode 100644 index 0000000..5cf41bf --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/charcoal_to_coal.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:coal" + } + ], + "result": { + "item": "minecraft:charcoal" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/clay_ball_to_stone.json b/src/main/generated/data/alchemist/recipes/clay_ball_to_stone.json new file mode 100644 index 0000000..15ebdf7 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/clay_ball_to_stone.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:stone" + } + ], + "result": { + "item": "minecraft:clay_ball" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/clay_to_raw_copper.json b/src/main/generated/data/alchemist/recipes/clay_to_raw_copper.json new file mode 100644 index 0000000..d58cfa0 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/clay_to_raw_copper.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_copper" + } + ], + "result": { + "count": 4, + "item": "minecraft:clay" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/coal_coke_to_alchemical_coal.json b/src/main/generated/data/alchemist/recipes/coal_coke_to_alchemical_coal.json new file mode 100644 index 0000000..a26e147 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/coal_coke_to_alchemical_coal.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:alchemical_coal" + } + ], + "result": { + "count": 8, + "item": "alchemist:coal_coke" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/coal_coke_to_coal.json b/src/main/generated/data/alchemist/recipes/coal_coke_to_coal.json new file mode 100644 index 0000000..bec58ce --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/coal_coke_to_coal.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:coal" + } + ], + "result": { + "count": 2, + "item": "alchemist:coal_coke" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/coal_to_charcoal.json b/src/main/generated/data/alchemist/recipes/coal_to_charcoal.json new file mode 100644 index 0000000..74dc314 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/coal_to_charcoal.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:charcoal" + } + ], + "result": { + "item": "minecraft:coal" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/cobblestone.json b/src/main/generated/data/alchemist/recipes/cobblestone.json new file mode 100644 index 0000000..c46870d --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/cobblestone.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "L": { + "tag": "c:lava_buckets" + }, + "P": { + "item": "alchemist:philosophers_stone" + }, + "W": { + "tag": "c:water_buckets" + } + }, + "pattern": [ + "WPL" + ], + "result": { + "item": "minecraft:cobblestone" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/cobblestone_to_gravel.json b/src/main/generated/data/alchemist/recipes/cobblestone_to_gravel.json new file mode 100644 index 0000000..3ceeccd --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/cobblestone_to_gravel.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + } + ], + "result": { + "count": 4, + "item": "minecraft:cobblestone" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/cobblestone_to_sand.json b/src/main/generated/data/alchemist/recipes/cobblestone_to_sand.json new file mode 100644 index 0000000..af9e2b1 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/cobblestone_to_sand.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + } + ], + "result": { + "count": 8, + "item": "minecraft:cobblestone" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/copper_ingot_to_iron_ingot.json b/src/main/generated/data/alchemist/recipes/copper_ingot_to_iron_ingot.json new file mode 100644 index 0000000..c2fd6f3 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/copper_ingot_to_iron_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:iron_ingot" + } + ], + "result": { + "count": 8, + "item": "minecraft:copper_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/copper_ingot_to_tin_ingot.json b/src/main/generated/data/alchemist/recipes/copper_ingot_to_tin_ingot.json new file mode 100644 index 0000000..a4a14a0 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/copper_ingot_to_tin_ingot.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:tin_ingot" + } + ], + "result": { + "item": "minecraft:copper_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/dark_matter.json b/src/main/generated/data/alchemist/recipes/dark_matter.json new file mode 100644 index 0000000..fcd23fb --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/dark_matter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "M": { + "item": "alchemist:mobius_fuel" + }, + "N": { + "item": "minecraft:netherite_block" + } + }, + "pattern": [ + "MMM", + "MNM", + "MMM" + ], + "result": { + "item": "alchemist:dark_matter" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/destruction_catalyst.json b/src/main/generated/data/alchemist/recipes/destruction_catalyst.json new file mode 100644 index 0000000..d19f76a --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/destruction_catalyst.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "A": { + "item": "alchemist:aeternalis_fuel" + }, + "F": { + "item": "minecraft:flint_and_steel" + }, + "R": { + "item": "alchemist:red_matter" + }, + "S": { + "item": "alchemist:philosophers_stone" + } + }, + "pattern": [ + "FRF", + "ASA", + "FRF" + ], + "result": { + "item": "alchemist:destruction_catalyst" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/diamond_to_gold_ingot.json b/src/main/generated/data/alchemist/recipes/diamond_to_gold_ingot.json new file mode 100644 index 0000000..72ab6f9 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/diamond_to_gold_ingot.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gold_ingot" + }, + { + "item": "minecraft:gold_ingot" + }, + { + "item": "minecraft:gold_ingot" + }, + { + "item": "minecraft:gold_ingot" + } + ], + "result": { + "item": "minecraft:diamond" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/diamond_to_netherite_scrap.json b/src/main/generated/data/alchemist/recipes/diamond_to_netherite_scrap.json new file mode 100644 index 0000000..2b73cf7 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/diamond_to_netherite_scrap.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:netherite_scrap" + } + ], + "result": { + "count": 4, + "item": "minecraft:diamond" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/diamond_to_ruby_gem.json b/src/main/generated/data/alchemist/recipes/diamond_to_ruby_gem.json new file mode 100644 index 0000000..ebd0805 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/diamond_to_ruby_gem.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + } + ], + "result": { + "count": 2, + "item": "minecraft:diamond" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/dirt_to_gravel.json b/src/main/generated/data/alchemist/recipes/dirt_to_gravel.json new file mode 100644 index 0000000..f852114 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/dirt_to_gravel.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + } + ], + "result": { + "count": 8, + "item": "minecraft:dirt" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/dirt_to_sand.json b/src/main/generated/data/alchemist/recipes/dirt_to_sand.json new file mode 100644 index 0000000..2e22f4c --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/dirt_to_sand.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:sand" + } + ], + "result": { + "count": 4, + "item": "minecraft:dirt" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/emerald_to_gunpowder.json b/src/main/generated/data/alchemist/recipes/emerald_to_gunpowder.json new file mode 100644 index 0000000..6a557b9 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/emerald_to_gunpowder.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gunpowder" + } + ], + "result": { + "item": "minecraft:emerald" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/ender_pearl_to_blaze_rod.json b/src/main/generated/data/alchemist/recipes/ender_pearl_to_blaze_rod.json new file mode 100644 index 0000000..2f80777 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/ender_pearl_to_blaze_rod.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:blaze_rod" + }, + { + "item": "minecraft:blaze_rod" + } + ], + "result": { + "item": "minecraft:ender_pearl" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/evertide_amulet.json b/src/main/generated/data/alchemist/recipes/evertide_amulet.json new file mode 100644 index 0000000..628b6cc --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/evertide_amulet.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "D": { + "item": "alchemist:dark_matter" + }, + "W": { + "tag": "c:water_buckets" + } + }, + "pattern": [ + "WWW", + "DDD", + "WWW" + ], + "result": { + "item": "alchemist:evertide_amulet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/flint_to_gravel.json b/src/main/generated/data/alchemist/recipes/flint_to_gravel.json new file mode 100644 index 0000000..588ff02 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/flint_to_gravel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + }, + { + "item": "minecraft:gravel" + } + ], + "result": { + "count": 3, + "item": "minecraft:flint" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gold_ingot_to_diamond.json b/src/main/generated/data/alchemist/recipes/gold_ingot_to_diamond.json new file mode 100644 index 0000000..2704511 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gold_ingot_to_diamond.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:diamond" + } + ], + "result": { + "count": 4, + "item": "minecraft:gold_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gold_ingot_to_silver_ingot.json b/src/main/generated/data/alchemist/recipes/gold_ingot_to_silver_ingot.json new file mode 100644 index 0000000..af61bae --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gold_ingot_to_silver_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:silver_ingot" + }, + { + "item": "techreborn:silver_ingot" + } + ], + "result": { + "item": "minecraft:gold_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gravel_to_cobblestone.json b/src/main/generated/data/alchemist/recipes/gravel_to_cobblestone.json new file mode 100644 index 0000000..d6ed14f --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gravel_to_cobblestone.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + } + ], + "result": { + "count": 4, + "item": "minecraft:gravel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gravel_to_dirt.json b/src/main/generated/data/alchemist/recipes/gravel_to_dirt.json new file mode 100644 index 0000000..167288c --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gravel_to_dirt.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + } + ], + "result": { + "count": 8, + "item": "minecraft:gravel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gunpowder_to_blaze_rod.json b/src/main/generated/data/alchemist/recipes/gunpowder_to_blaze_rod.json new file mode 100644 index 0000000..54f123b --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gunpowder_to_blaze_rod.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:blaze_rod" + } + ], + "result": { + "count": 2, + "item": "minecraft:gunpowder" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/gunpowder_to_emerald.json b/src/main/generated/data/alchemist/recipes/gunpowder_to_emerald.json new file mode 100644 index 0000000..7e46ebe --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/gunpowder_to_emerald.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:emerald" + } + ], + "result": { + "item": "minecraft:gunpowder" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/iridium_ingot_to_tungsten_ingot.json b/src/main/generated/data/alchemist/recipes/iridium_ingot_to_tungsten_ingot.json new file mode 100644 index 0000000..24c0d4c --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/iridium_ingot_to_tungsten_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:tungsten_ingot" + }, + { + "item": "techreborn:tungsten_ingot" + } + ], + "result": { + "item": "techreborn:iridium_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/iron_band.json b/src/main/generated/data/alchemist/recipes/iron_band.json new file mode 100644 index 0000000..763b596 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/iron_band.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "L": { + "tag": "c:lava_buckets" + } + }, + "pattern": [ + "III", + "ILI", + "III" + ], + "result": { + "item": "alchemist:iron_band" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/iron_ingot_to_aluminum_ingot.json b/src/main/generated/data/alchemist/recipes/iron_ingot_to_aluminum_ingot.json new file mode 100644 index 0000000..c9ac82e --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/iron_ingot_to_aluminum_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:aluminum_ingot" + } + ], + "result": { + "count": 2, + "item": "minecraft:iron_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/iron_ingot_to_copper_ingot.json b/src/main/generated/data/alchemist/recipes/iron_ingot_to_copper_ingot.json new file mode 100644 index 0000000..d1e8ab5 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/iron_ingot_to_copper_ingot.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + }, + { + "item": "minecraft:copper_ingot" + } + ], + "result": { + "item": "minecraft:iron_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/lead_ingot_to_silver_ingot.json b/src/main/generated/data/alchemist/recipes/lead_ingot_to_silver_ingot.json new file mode 100644 index 0000000..13a9fcb --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/lead_ingot_to_silver_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:silver_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:lead_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/mobius_fuel_to_aeternalis_fuel.json b/src/main/generated/data/alchemist/recipes/mobius_fuel_to_aeternalis_fuel.json new file mode 100644 index 0000000..1c460bc --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/mobius_fuel_to_aeternalis_fuel.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:aeternalis_fuel" + } + ], + "result": { + "count": 8, + "item": "alchemist:mobius_fuel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/mobius_fuel_to_alchemical_coal.json b/src/main/generated/data/alchemist/recipes/mobius_fuel_to_alchemical_coal.json new file mode 100644 index 0000000..c25b210 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/mobius_fuel_to_alchemical_coal.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + }, + { + "item": "alchemist:alchemical_coal" + } + ], + "result": { + "item": "alchemist:mobius_fuel" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/netherite_ingot_to_platinum_ingot.json b/src/main/generated/data/alchemist/recipes/netherite_ingot_to_platinum_ingot.json new file mode 100644 index 0000000..28a7eb2 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/netherite_ingot_to_platinum_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:platinum_ingot" + }, + { + "item": "techreborn:platinum_ingot" + } + ], + "result": { + "item": "minecraft:netherite_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/netherite_ingot_to_tungsten_ingot.json b/src/main/generated/data/alchemist/recipes/netherite_ingot_to_tungsten_ingot.json new file mode 100644 index 0000000..f33e3c6 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/netherite_ingot_to_tungsten_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:tungsten_ingot" + } + ], + "result": { + "count": 2, + "item": "minecraft:netherite_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/netherite_scrap_to_diamond.json b/src/main/generated/data/alchemist/recipes/netherite_scrap_to_diamond.json new file mode 100644 index 0000000..cedc42d --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/netherite_scrap_to_diamond.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond" + } + ], + "result": { + "item": "minecraft:netherite_scrap" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/nickel_ingot_to_aluminum_ingot.json b/src/main/generated/data/alchemist/recipes/nickel_ingot_to_aluminum_ingot.json new file mode 100644 index 0000000..5d369c3 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/nickel_ingot_to_aluminum_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:aluminum_ingot" + }, + { + "item": "techreborn:aluminum_ingot" + } + ], + "result": { + "item": "techreborn:nickel_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/obsidian.json b/src/main/generated/data/alchemist/recipes/obsidian.json new file mode 100644 index 0000000..267103d --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/obsidian.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "L": { + "tag": "c:lava_buckets" + }, + "P": { + "item": "alchemist:philosophers_stone" + }, + "W": { + "tag": "c:water_buckets" + } + }, + "pattern": [ + "PWL" + ], + "result": { + "item": "minecraft:obsidian" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/peridot_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/recipes/peridot_gem_to_ruby_gem.json new file mode 100644 index 0000000..7191d26 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/peridot_gem_to_ruby_gem.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + } + ], + "result": { + "count": 6, + "item": "techreborn:peridot_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/peridot_gem_to_sapphire_gem.json b/src/main/generated/data/alchemist/recipes/peridot_gem_to_sapphire_gem.json new file mode 100644 index 0000000..28619a6 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/peridot_gem_to_sapphire_gem.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + } + ], + "result": { + "count": 8, + "item": "techreborn:peridot_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/peridot_gem_to_yellow_garnet_gem.json b/src/main/generated/data/alchemist/recipes/peridot_gem_to_yellow_garnet_gem.json new file mode 100644 index 0000000..91c38a0 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/peridot_gem_to_yellow_garnet_gem.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:yellow_garnet_gem" + }, + { + "item": "techreborn:yellow_garnet_gem" + } + ], + "result": { + "item": "techreborn:peridot_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/platinum_ingot_to_netherite_ingot.json b/src/main/generated/data/alchemist/recipes/platinum_ingot_to_netherite_ingot.json new file mode 100644 index 0000000..8fef2ef --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/platinum_ingot_to_netherite_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:netherite_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:platinum_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/platinum_ingot_to_titanium_ingot.json b/src/main/generated/data/alchemist/recipes/platinum_ingot_to_titanium_ingot.json new file mode 100644 index 0000000..789fee2 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/platinum_ingot_to_titanium_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:titanium_ingot" + }, + { + "item": "techreborn:titanium_ingot" + } + ], + "result": { + "item": "techreborn:platinum_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_copper_to_clay.json b/src/main/generated/data/alchemist/recipes/raw_copper_to_clay.json new file mode 100644 index 0000000..d1b7836 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_copper_to_clay.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:clay" + }, + { + "item": "minecraft:clay" + }, + { + "item": "minecraft:clay" + }, + { + "item": "minecraft:clay" + } + ], + "result": { + "item": "minecraft:raw_copper" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_iron.json b/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_iron.json new file mode 100644 index 0000000..4d10f23 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_iron.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_iron" + } + ], + "result": { + "count": 8, + "item": "minecraft:raw_copper" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_tin.json b/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_tin.json new file mode 100644 index 0000000..489314f --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_copper_to_raw_tin.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:raw_tin" + }, + { + "item": "techreborn:raw_tin" + } + ], + "result": { + "count": 2, + "item": "minecraft:raw_copper" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_iron.json b/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_iron.json new file mode 100644 index 0000000..d8ed902 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_iron.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + }, + { + "item": "minecraft:raw_iron" + } + ], + "result": { + "item": "minecraft:raw_gold" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_silver.json b/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_silver.json new file mode 100644 index 0000000..a40c128 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_gold_to_raw_silver.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:raw_silver" + }, + { + "item": "techreborn:raw_silver" + }, + { + "item": "techreborn:raw_silver" + }, + { + "item": "techreborn:raw_silver" + } + ], + "result": { + "count": 2, + "item": "minecraft:raw_gold" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_copper.json b/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_copper.json new file mode 100644 index 0000000..079635e --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_copper.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + } + ], + "result": { + "item": "minecraft:raw_iron" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_gold.json b/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_gold.json new file mode 100644 index 0000000..c93bf46 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_iron_to_raw_gold.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_gold" + } + ], + "result": { + "count": 8, + "item": "minecraft:raw_iron" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_lead_to_raw_silver.json b/src/main/generated/data/alchemist/recipes/raw_lead_to_raw_silver.json new file mode 100644 index 0000000..8ebd136 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_lead_to_raw_silver.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:raw_silver" + } + ], + "result": { + "count": 2, + "item": "techreborn:raw_lead" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_gold.json b/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_gold.json new file mode 100644 index 0000000..4d9abd4 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_gold.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_gold" + }, + { + "item": "minecraft:raw_gold" + } + ], + "result": { + "count": 4, + "item": "techreborn:raw_silver" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_lead.json b/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_lead.json new file mode 100644 index 0000000..a43b51e --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_silver_to_raw_lead.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:raw_lead" + }, + { + "item": "techreborn:raw_lead" + } + ], + "result": { + "item": "techreborn:raw_silver" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/raw_tin_to_raw_copper.json b/src/main/generated/data/alchemist/recipes/raw_tin_to_raw_copper.json new file mode 100644 index 0000000..3baaa29 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/raw_tin_to_raw_copper.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:raw_copper" + }, + { + "item": "minecraft:raw_copper" + } + ], + "result": { + "count": 2, + "item": "techreborn:raw_tin" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/red_garnet_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/recipes/red_garnet_gem_to_ruby_gem.json new file mode 100644 index 0000000..3c99652 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/red_garnet_gem_to_ruby_gem.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:ruby_gem" + } + ], + "result": { + "count": 2, + "item": "techreborn:red_garnet_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/red_matter.json b/src/main/generated/data/alchemist/recipes/red_matter.json new file mode 100644 index 0000000..607dfca --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/red_matter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "A": { + "item": "alchemist:aeternalis_fuel" + }, + "D": { + "item": "alchemist:dark_matter" + } + }, + "pattern": [ + "AAA", + "DDD", + "AAA" + ], + "result": { + "item": "alchemist:red_matter" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/ruby_gem_to_diamond.json b/src/main/generated/data/alchemist/recipes/ruby_gem_to_diamond.json new file mode 100644 index 0000000..a89b79a --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/ruby_gem_to_diamond.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:diamond" + }, + { + "item": "minecraft:diamond" + } + ], + "result": { + "count": 8, + "item": "techreborn:ruby_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/ruby_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/recipes/ruby_gem_to_peridot_gem.json new file mode 100644 index 0000000..b975060 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/ruby_gem_to_peridot_gem.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + } + ], + "result": { + "count": 6, + "item": "techreborn:ruby_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/ruby_gem_to_red_garnet_gem.json b/src/main/generated/data/alchemist/recipes/ruby_gem_to_red_garnet_gem.json new file mode 100644 index 0000000..fbf8859 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/ruby_gem_to_red_garnet_gem.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:red_garnet_gem" + }, + { + "item": "techreborn:red_garnet_gem" + } + ], + "result": { + "item": "techreborn:ruby_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/ruby_gem_to_sapphire_gem.json b/src/main/generated/data/alchemist/recipes/ruby_gem_to_sapphire_gem.json new file mode 100644 index 0000000..9330d98 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/ruby_gem_to_sapphire_gem.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + }, + { + "item": "techreborn:sapphire_gem" + } + ], + "result": { + "count": 4, + "item": "techreborn:ruby_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/sand_to_cobblestone.json b/src/main/generated/data/alchemist/recipes/sand_to_cobblestone.json new file mode 100644 index 0000000..93bccd3 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/sand_to_cobblestone.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:cobblestone" + } + ], + "result": { + "count": 8, + "item": "minecraft:sand" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/sand_to_dirt.json b/src/main/generated/data/alchemist/recipes/sand_to_dirt.json new file mode 100644 index 0000000..fea52d1 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/sand_to_dirt.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + }, + { + "item": "minecraft:dirt" + } + ], + "result": { + "count": 4, + "item": "minecraft:sand" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/sapphire_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/recipes/sapphire_gem_to_peridot_gem.json new file mode 100644 index 0000000..97590d3 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/sapphire_gem_to_peridot_gem.json @@ -0,0 +1,37 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + }, + { + "item": "techreborn:peridot_gem" + } + ], + "result": { + "count": 8, + "item": "techreborn:sapphire_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/sapphire_gem_to_ruby_gem.json b/src/main/generated/data/alchemist/recipes/sapphire_gem_to_ruby_gem.json new file mode 100644 index 0000000..97ac343 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/sapphire_gem_to_ruby_gem.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + }, + { + "item": "techreborn:ruby_gem" + } + ], + "result": { + "count": 4, + "item": "techreborn:sapphire_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/silver_ingot_to_gold_ingot.json b/src/main/generated/data/alchemist/recipes/silver_ingot_to_gold_ingot.json new file mode 100644 index 0000000..6bd22b3 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/silver_ingot_to_gold_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:gold_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:silver_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/silver_ingot_to_lead_ingot.json b/src/main/generated/data/alchemist/recipes/silver_ingot_to_lead_ingot.json new file mode 100644 index 0000000..5a0c356 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/silver_ingot_to_lead_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:lead_ingot" + }, + { + "item": "techreborn:lead_ingot" + } + ], + "result": { + "item": "techreborn:silver_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/stone.json b/src/main/generated/data/alchemist/recipes/stone.json new file mode 100644 index 0000000..4f64873 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/stone.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "L": { + "tag": "c:lava_buckets" + }, + "P": { + "item": "alchemist:philosophers_stone" + }, + "W": { + "tag": "c:water_buckets" + } + }, + "pattern": [ + "PLW" + ], + "result": { + "item": "minecraft:stone" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/stone_to_clay_ball.json b/src/main/generated/data/alchemist/recipes/stone_to_clay_ball.json new file mode 100644 index 0000000..472ffe0 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/stone_to_clay_ball.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:clay_ball" + } + ], + "result": { + "count": 4, + "item": "minecraft:stone" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/swiftwolfs_rending_gale.json b/src/main/generated/data/alchemist/recipes/swiftwolfs_rending_gale.json new file mode 100644 index 0000000..65c0b1b --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/swiftwolfs_rending_gale.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "B": { + "item": "alchemist:iron_band" + }, + "D": { + "item": "alchemist:dark_matter" + } + }, + "pattern": [ + "D", + "B" + ], + "result": { + "item": "alchemist:swiftwolfs_rending_gale" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/tin_ingot_to_copper_ingot.json b/src/main/generated/data/alchemist/recipes/tin_ingot_to_copper_ingot.json new file mode 100644 index 0000000..d96796d --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/tin_ingot_to_copper_ingot.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:copper_ingot" + } + ], + "result": { + "item": "techreborn:tin_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/titanium_ingot_to_platinum_ingot.json b/src/main/generated/data/alchemist/recipes/titanium_ingot_to_platinum_ingot.json new file mode 100644 index 0000000..dfef92b --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/titanium_ingot_to_platinum_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:platinum_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:titanium_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_iridium_ingot.json b/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_iridium_ingot.json new file mode 100644 index 0000000..f7f2a45 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_iridium_ingot.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:iridium_ingot" + } + ], + "result": { + "count": 2, + "item": "techreborn:tungsten_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_netherite_ingot.json b/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_netherite_ingot.json new file mode 100644 index 0000000..5e441f1 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/tungsten_ingot_to_netherite_ingot.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "minecraft:netherite_ingot" + }, + { + "item": "minecraft:netherite_ingot" + } + ], + "result": { + "item": "techreborn:tungsten_ingot" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/volcanite_amulet.json b/src/main/generated/data/alchemist/recipes/volcanite_amulet.json new file mode 100644 index 0000000..a4d63fc --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/volcanite_amulet.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "key": { + "D": { + "item": "alchemist:dark_matter" + }, + "L": { + "tag": "c:lava_buckets" + } + }, + "pattern": [ + "LLL", + "DDD", + "LLL" + ], + "result": { + "item": "alchemist:volcanite_amulet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/recipes/yellow_garnet_gem_to_peridot_gem.json b/src/main/generated/data/alchemist/recipes/yellow_garnet_gem_to_peridot_gem.json new file mode 100644 index 0000000..1588a62 --- /dev/null +++ b/src/main/generated/data/alchemist/recipes/yellow_garnet_gem_to_peridot_gem.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "alchemist:philosophers_stone" + }, + { + "item": "techreborn:peridot_gem" + } + ], + "result": { + "count": 2, + "item": "techreborn:yellow_garnet_gem" + } +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/leave.json b/src/main/generated/data/alchemist/tags/blocks/leave.json new file mode 100644 index 0000000..90cf134 --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/leave.json @@ -0,0 +1,15 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_leaves", + "minecraft:acacia_leaves", + "minecraft:birch_leaves", + "minecraft:cherry_leaves", + "minecraft:jungle_leaves", + "minecraft:dark_oak_leaves", + "minecraft:mangrove_leaves", + "minecraft:spruce_leaves", + "minecraft:nether_wart_block", + "minecraft:warped_wart_block" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/netherwood.json b/src/main/generated/data/alchemist/tags/blocks/netherwood.json new file mode 100644 index 0000000..7b8d1ab --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/netherwood.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "minecraft:crimson_stem", + "minecraft:warped_stem", + "minecraft:stripped_crimson_stem", + "minecraft:stripped_warped_stem" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/obsidian.json b/src/main/generated/data/alchemist/tags/blocks/obsidian.json new file mode 100644 index 0000000..a14881d --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/obsidian.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:obsidian", + "minecraft:crying_obsidian" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/stone.json b/src/main/generated/data/alchemist/tags/blocks/stone.json new file mode 100644 index 0000000..43f2801 --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/stone.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "minecraft:andesite", + "minecraft:diorite", + "minecraft:granite", + "minecraft:sandstone", + "minecraft:red_sandstone", + "minecraft:clay" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/stonebricks.json b/src/main/generated/data/alchemist/tags/blocks/stonebricks.json new file mode 100644 index 0000000..d844aac --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/stonebricks.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:stone_bricks", + "minecraft:mossy_stone_bricks" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/terra.json b/src/main/generated/data/alchemist/tags/blocks/terra.json new file mode 100644 index 0000000..5791ec0 --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/terra.json @@ -0,0 +1,16 @@ +{ + "replace": false, + "values": [ + "minecraft:grass_block", + "minecraft:dirt", + "minecraft:coarse_dirt", + "minecraft:cobblestone", + "minecraft:mossy_cobblestone", + "minecraft:cobbled_deepslate", + "minecraft:stone", + "minecraft:deepslate", + "minecraft:sand", + "minecraft:red_sand", + "minecraft:gravel" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/alchemist/tags/blocks/wood.json b/src/main/generated/data/alchemist/tags/blocks/wood.json new file mode 100644 index 0000000..79cade3 --- /dev/null +++ b/src/main/generated/data/alchemist/tags/blocks/wood.json @@ -0,0 +1,29 @@ +{ + "replace": false, + "values": [ + "minecraft:oak_log", + "minecraft:acacia_log", + "minecraft:birch_log", + "minecraft:cherry_log", + "minecraft:jungle_log", + "minecraft:dark_oak_log", + "minecraft:mangrove_log", + "minecraft:spruce_log", + "minecraft:stripped_oak_log", + "minecraft:stripped_acacia_log", + "minecraft:stripped_birch_log", + "minecraft:stripped_cherry_log", + "minecraft:stripped_jungle_log", + "minecraft:stripped_dark_oak_log", + "minecraft:stripped_mangrove_log", + "minecraft:stripped_spruce_log", + "minecraft:oak_wood", + "minecraft:acacia_log", + "minecraft:birch_log", + "minecraft:cherry_log", + "minecraft:jungle_log", + "minecraft:dark_oak_log", + "minecraft:mangrove_log", + "minecraft:spruce_log" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/c/tags/items/lava_buckets.json b/src/main/generated/data/c/tags/items/lava_buckets.json new file mode 100644 index 0000000..b6cc42e --- /dev/null +++ b/src/main/generated/data/c/tags/items/lava_buckets.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "alchemist:volcanite_amulet" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/c/tags/items/water_buckets.json b/src/main/generated/data/c/tags/items/water_buckets.json new file mode 100644 index 0000000..e9ebc3a --- /dev/null +++ b/src/main/generated/data/c/tags/items/water_buckets.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "alchemist:evertide_amulet" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/trinkets/tags/items/hand/ring.json b/src/main/generated/data/trinkets/tags/items/hand/ring.json new file mode 100644 index 0000000..b0ab558 --- /dev/null +++ b/src/main/generated/data/trinkets/tags/items/hand/ring.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "alchemist:swiftwolfs_rending_gale" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/trinkets/tags/items/offhand/ring.json b/src/main/generated/data/trinkets/tags/items/offhand/ring.json new file mode 100644 index 0000000..b0ab558 --- /dev/null +++ b/src/main/generated/data/trinkets/tags/items/offhand/ring.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "alchemist:swiftwolfs_rending_gale" + ] +} \ No newline at end of file diff --git a/src/main/java/io/github/unix_supremacist/Alchemist.java b/src/main/java/io/github/unix_supremacist/Alchemist.java new file mode 100644 index 0000000..1c3169a --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/Alchemist.java @@ -0,0 +1,47 @@ +package io.github.unix_supremacist; + +import io.github.unix_supremacist.content.AlchemistBlocks; +import io.github.unix_supremacist.content.AlchemistItems; +import io.github.unix_supremacist.content.AlchemistSplashes; +import io.github.unix_supremacist.data.BlockTag; +import io.github.unix_supremacist.item.AbstractEmpowerableItem; +import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Alchemist { + public static final String MODID = "alchemist"; + public static final Logger LOGGER = LoggerFactory.getLogger(MODID); + public static final ResourceLocation empower_packet = new ResourceLocation(Alchemist.MODID, "empower_packet"); + public static final CreativeModeTab tab = FabricItemGroup.builder() + .icon(() -> new ItemStack(AlchemistItems.philosophers_stone.getItem())) + .title(Component.translatable("itemGroup."+MODID)) + .build(); + + + + public static void Init(){ + LOGGER.info("Welcome to the World of Alchemy!"); + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, new ResourceLocation(MODID, "tab"), tab); + AlchemistSplashes.init(); + AlchemistBlocks.values(); //force the enum to load + AlchemistItems.values(); //force the enum to load + CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> { + BlockTag.init(); + }); + ServerPlayNetworking.registerGlobalReceiver(empower_packet, (server, player, handler, buf, responseSender) -> { + ItemStack item = player.getMainHandItem(); + if(item.getItem() instanceof AbstractEmpowerableItem){ + ((AbstractEmpowerableItem) item.getItem()).empower(item, player); + } + }); + } +} diff --git a/src/main/java/io/github/unix_supremacist/Entrypoint.java b/src/main/java/io/github/unix_supremacist/Entrypoint.java new file mode 100644 index 0000000..d955a5e --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/Entrypoint.java @@ -0,0 +1,12 @@ +package io.github.unix_supremacist; + +import net.fabricmc.api.ModInitializer; + +public class Entrypoint implements ModInitializer { + + + @Override + public void onInitialize() { + Alchemist.Init(); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/unix_supremacist/block/TransmutionCircleBlock.java b/src/main/java/io/github/unix_supremacist/block/TransmutionCircleBlock.java new file mode 100644 index 0000000..42b9c7a --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/block/TransmutionCircleBlock.java @@ -0,0 +1,55 @@ +package io.github.unix_supremacist.block; + +import io.github.unix_supremacist.interfaces.TransmuteEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.List; + +public class TransmutionCircleBlock extends Block implements TransmuteEntity { + public TransmutionCircleBlock(Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + if (!level.isClientSide()) { + AABB aABB = new AABB(pos); + List villagerList = level.getEntitiesOfClass(Villager.class, aABB); + if(!villagerList.isEmpty()){ + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 3); + return transmuteEntity(villagerList.get(0), level); + } + } + + return InteractionResult.PASS; + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Shapes.box(0f, 0f, 0f, 1f, 0.02f, 1f); + } + + @Override + public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { + return Shapes.empty(); + } + + @Override + public VoxelShape getOcclusionShape(BlockState state, BlockGetter level, BlockPos pos) { + return Shapes.empty(); + } +} diff --git a/src/main/java/io/github/unix_supremacist/content/AlchemistBlocks.java b/src/main/java/io/github/unix_supremacist/content/AlchemistBlocks.java new file mode 100644 index 0000000..25feda2 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/content/AlchemistBlocks.java @@ -0,0 +1,20 @@ +package io.github.unix_supremacist.content; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.block.TransmutionCircleBlock; +import lombok.Getter; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; + +public enum AlchemistBlocks { + transmutation_circle(new TransmutionCircleBlock(FabricBlockSettings.create())); + @Getter Block block; + + AlchemistBlocks(Block block){ + this.block = block; + Registry.register(BuiltInRegistries.BLOCK, new ResourceLocation(Alchemist.MODID, this.name()), block); + } +} diff --git a/src/main/java/io/github/unix_supremacist/content/AlchemistItems.java b/src/main/java/io/github/unix_supremacist/content/AlchemistItems.java new file mode 100644 index 0000000..319bb28 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/content/AlchemistItems.java @@ -0,0 +1,73 @@ +package io.github.unix_supremacist.content; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.item.*; +import lombok.Getter; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.fabricmc.fabric.api.registry.FuelRegistry; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Item.Properties; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.level.block.Blocks; + +public enum AlchemistItems { + alchemical_coal(25600), + aeternalis_fuel(1638400), + //black_hole_band, + catalytic_lens(new DestructionItem(new Properties().stacksTo(1), 3, 10, 5)), + chalk(new AlchemistBlockItem(AlchemistBlocks.transmutation_circle.getBlock(), new Properties().durability(64))), + coal_coke(3200), + dark_matter, + //dark_matter_pickaxe, + //dark_matter_shovel, + //dark_matter_hoe, + //dark_matter_sword, + //dark_matter_axe, + //dark_matter_shears, + dark_matter_hammer(new AlchemistHammerItem(Tiers.NETHERITE, 1, -2.8f, new Properties())), + destruction_catalyst(new DestructionItem(new Properties().stacksTo(1), 3, 5, 1)), + evertide_amulet(new AlchemistBlockItem(Blocks.WATER, new Properties().stacksTo(1))), + //gem_of_eternal_density, + //harvest_goddess_band, + //hyperkinetic_lens, + iron_band, + mobius_fuel(204800), + philosophers_stone(new PhilosophersStoneItem(new Properties().stacksTo(1))), + red_matter, + swiftwolfs_rending_gale(new GaleItem(new Properties().stacksTo(1))), + volcanite_amulet(new AlchemistBlockItem(Blocks.LAVA, new Properties().durability(64))), + ; + @Getter Item item; + AlchemistItems(){ + this(0); + } + + AlchemistItems(int burntime){ + this(new Properties(), burntime); + } + + AlchemistItems(Properties properties){ + this(new Item(properties), 0); + } + + AlchemistItems(Properties properties, int burntime){ + this(new Item(properties), burntime); + } + + AlchemistItems(Item item){ + this(item, 0); + } + + AlchemistItems(Item item, int burntime){ + this.item = item; + FuelRegistry.INSTANCE.add(item, burntime); + Registry.register(BuiltInRegistries.ITEM, new ResourceLocation(Alchemist.MODID, this.name()), item); + ItemGroupEvents.modifyEntriesEvent(ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), new ResourceLocation(Alchemist.MODID, "tab"))).register(content -> { + content.accept(item); + }); + } +} diff --git a/src/main/java/io/github/unix_supremacist/content/AlchemistSplashes.java b/src/main/java/io/github/unix_supremacist/content/AlchemistSplashes.java new file mode 100644 index 0000000..651afe7 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/content/AlchemistSplashes.java @@ -0,0 +1,13 @@ +package io.github.unix_supremacist.content; + +import net.feltmc.feltapi.api.splash.SplashAPI; + +public class AlchemistSplashes { + public static String[] splashes = { + "Welcome to the World of Alchemy!" + }; + + public static void init(){ + for (String spl : splashes) SplashAPI.addSplash(spl); + } +} diff --git a/src/main/java/io/github/unix_supremacist/data/BlockTag.java b/src/main/java/io/github/unix_supremacist/data/BlockTag.java new file mode 100644 index 0000000..dd1712b --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/data/BlockTag.java @@ -0,0 +1,133 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.concurrent.CompletableFuture; + +public class BlockTag extends FabricTagProvider.BlockTagProvider { + public static HashSet> exchanges = new HashSet<>(); + public static TagKey terratag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "terra")); + public static TagKey woodtag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "wood")); + public static TagKey netherwoodtag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "netherwood")); + public static TagKey leavetag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "leave")); + public static TagKey stonetag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "stone")); + public static TagKey obsidiantag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "obsidian")); + public static TagKey stonebrickstag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "stonebricks")); + + public BlockTag(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + protected static void addExchange(TagKey tag){ + ArrayList arrayList = new ArrayList<>(); + BuiltInRegistries.BLOCK.getTagOrEmpty(tag).iterator().forEachRemaining(t ->arrayList.add(t.value())); + exchanges.add(arrayList); + } + + public static void init(){ + addExchange(terratag); + addExchange(woodtag); + addExchange(netherwoodtag); + addExchange(leavetag); + addExchange(stonetag); + addExchange(obsidiantag); + addExchange(stonebrickstag); + } + + @Override + protected void addTags(HolderLookup.Provider arg) { + FabricTagBuilder terra = getOrCreateTagBuilder(terratag); + terra.add(Blocks.GRASS_BLOCK); + terra.add(Blocks.DIRT); + terra.add(Blocks.COARSE_DIRT); + terra.add(Blocks.COBBLESTONE); + terra.add(Blocks.MOSSY_COBBLESTONE); + terra.add(Blocks.COBBLED_DEEPSLATE); + terra.add(Blocks.STONE); + terra.add(Blocks.DEEPSLATE); + terra.add(Blocks.SAND); + terra.add(Blocks.RED_SAND); + terra.add(Blocks.GRAVEL); + + FabricTagBuilder wood = getOrCreateTagBuilder(woodtag); + wood.add(Blocks.OAK_LOG); + wood.add(Blocks.ACACIA_LOG); + wood.add(Blocks.BIRCH_LOG); + wood.add(Blocks.CHERRY_LOG); + wood.add(Blocks.JUNGLE_LOG); + wood.add(Blocks.DARK_OAK_LOG); + wood.add(Blocks.MANGROVE_LOG); + wood.add(Blocks.SPRUCE_LOG); + wood.add(Blocks.STRIPPED_OAK_LOG); + wood.add(Blocks.STRIPPED_ACACIA_LOG); + wood.add(Blocks.STRIPPED_BIRCH_LOG); + wood.add(Blocks.STRIPPED_CHERRY_LOG); + wood.add(Blocks.STRIPPED_JUNGLE_LOG); + wood.add(Blocks.STRIPPED_DARK_OAK_LOG); + wood.add(Blocks.STRIPPED_MANGROVE_LOG); + wood.add(Blocks.STRIPPED_SPRUCE_LOG); + wood.add(Blocks.OAK_WOOD); + wood.add(Blocks.ACACIA_LOG); + wood.add(Blocks.BIRCH_LOG); + wood.add(Blocks.CHERRY_LOG); + wood.add(Blocks.JUNGLE_LOG); + wood.add(Blocks.DARK_OAK_LOG); + wood.add(Blocks.MANGROVE_LOG); + wood.add(Blocks.SPRUCE_LOG); + + FabricTagBuilder netherwood = getOrCreateTagBuilder(netherwoodtag); + netherwood.add(Blocks.CRIMSON_STEM); + netherwood.add(Blocks.WARPED_STEM); + netherwood.add(Blocks.STRIPPED_CRIMSON_STEM); + netherwood.add(Blocks.STRIPPED_WARPED_STEM); + + FabricTagBuilder leave = getOrCreateTagBuilder(leavetag); + leave.add(Blocks.OAK_LEAVES); + leave.add(Blocks.ACACIA_LEAVES); + leave.add(Blocks.BIRCH_LEAVES); + leave.add(Blocks.CHERRY_LEAVES); + leave.add(Blocks.JUNGLE_LEAVES); + leave.add(Blocks.DARK_OAK_LEAVES); + leave.add(Blocks.MANGROVE_LEAVES); + leave.add(Blocks.SPRUCE_LEAVES); + leave.add(Blocks.NETHER_WART_BLOCK); + leave.add(Blocks.WARPED_WART_BLOCK); + + FabricTagBuilder stone = getOrCreateTagBuilder(stonetag); + stone.add(Blocks.ANDESITE); + stone.add(Blocks.DIORITE); + stone.add(Blocks.GRANITE); + stone.add(Blocks.SANDSTONE); + stone.add(Blocks.RED_SANDSTONE); + stone.add(Blocks.CLAY); + + FabricTagBuilder obsidian = getOrCreateTagBuilder(obsidiantag); + obsidian.add(Blocks.OBSIDIAN); + obsidian.add(Blocks.CRYING_OBSIDIAN); + + FabricTagBuilder stonebricks = getOrCreateTagBuilder(stonebrickstag); + stonebricks.add(Blocks.STONE_BRICKS); + stonebricks.add(Blocks.MOSSY_STONE_BRICKS); + } + + public static Block getBlockWithOffset(Block b, ArrayList exchange, int o){ + int id = exchange.indexOf(b); + int size = exchange.size(); + id += o; + if (id < 0) + id = size + id % size; + else + id %= size; + return exchange.get(id); + } +} diff --git a/src/main/java/io/github/unix_supremacist/data/Datagen.java b/src/main/java/io/github/unix_supremacist/data/Datagen.java new file mode 100644 index 0000000..16f8994 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/data/Datagen.java @@ -0,0 +1,15 @@ +package io.github.unix_supremacist.data; + +import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; + +public class Datagen implements DataGeneratorEntrypoint { + @Override + public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { + FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); + pack.addProvider(ItemTag::new); + pack.addProvider(BlockTag::new); + pack.addProvider(Recipe::new); + pack.addProvider(Language::new); + } +} diff --git a/src/main/java/io/github/unix_supremacist/data/ItemTag.java b/src/main/java/io/github/unix_supremacist/data/ItemTag.java new file mode 100644 index 0000000..448804a --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/data/ItemTag.java @@ -0,0 +1,34 @@ +package io.github.unix_supremacist.data; + +import dev.emi.trinkets.TrinketsMain; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; + +import java.util.concurrent.CompletableFuture; + +import static io.github.unix_supremacist.content.AlchemistItems.*; + +public class ItemTag extends FabricTagProvider.ItemTagProvider { + public static String common = "c"; + public static TagKey handring = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(TrinketsMain.MOD_ID, "hand/ring")); + public static TagKey offhandring = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(TrinketsMain.MOD_ID, "offhand/ring")); + public static TagKey water_bucket = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(common, "water_buckets")); + public static TagKey lava_bucket = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(common, "lava_buckets")); + + public ItemTag(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void addTags(HolderLookup.Provider arg) { + getOrCreateTagBuilder(handring).add(swiftwolfs_rending_gale.getItem()); + getOrCreateTagBuilder(offhandring).add(swiftwolfs_rending_gale.getItem()); + getOrCreateTagBuilder(water_bucket).add(evertide_amulet.getItem()); + getOrCreateTagBuilder(lava_bucket).add(volcanite_amulet.getItem()); + } +} diff --git a/src/main/java/io/github/unix_supremacist/data/Language.java b/src/main/java/io/github/unix_supremacist/data/Language.java new file mode 100644 index 0000000..5c42989 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/data/Language.java @@ -0,0 +1,32 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.content.AlchemistBlocks; +import io.github.unix_supremacist.content.AlchemistItems; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import org.apache.commons.lang3.text.WordUtils; + + +public class Language extends FabricLanguageProvider { + protected Language(FabricDataOutput dataOutput) { + super(dataOutput, "en_us"); + } + + @Override + public void generateTranslations(TranslationBuilder translationBuilder) { + for (AlchemistItems item : AlchemistItems.values()) + translationBuilder.add(item.getItem(), WordUtils.capitalize(item.name().replace("_", " "))); + + for (AlchemistBlocks block : AlchemistBlocks.values()) + translationBuilder.add(block.getBlock(), WordUtils.capitalize(block.name().replace("_", " "))); + + translationBuilder.add(ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), new ResourceLocation(Alchemist.MODID, "tab")), WordUtils.capitalize(Alchemist.MODID.replace("_", " "))); + + translationBuilder.add("key.categories.alchemist", WordUtils.capitalize(Alchemist.MODID.replace("_", " "))); + translationBuilder.add("key.alchemist.empower", "Empower"); + } +} diff --git a/src/main/java/io/github/unix_supremacist/data/Recipe.java b/src/main/java/io/github/unix_supremacist/data/Recipe.java new file mode 100644 index 0000000..3ba6769 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/data/Recipe.java @@ -0,0 +1,192 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.recipes.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; + +import static io.github.unix_supremacist.content.AlchemistItems.*; + +public class Recipe extends FabricRecipeProvider { + public Recipe(FabricDataOutput generator) { + super(generator); + } + + @Override + public void buildRecipes(RecipeOutput recipeoutput) { + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, swiftwolfs_rending_gale.getItem()) + .pattern("D") + .pattern("B") + .define('D', dark_matter.getItem()) + .define('B', iron_band.getItem()) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(iron_band.getItem()), RecipeProvider.has(iron_band.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, iron_band.getItem()) + .pattern("III") + .pattern("ILI") + .pattern("III") + .define('I', Items.IRON_INGOT) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.IRON_INGOT), RecipeProvider.has(Items.IRON_INGOT)) + .unlockedBy(RecipeProvider.getHasName(Items.LAVA_BUCKET), RecipeProvider.has(Items.LAVA_BUCKET)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, catalytic_lens.getItem()) + .pattern("DDD") + .pattern("CDC") + .pattern("DDD") + .define('D', red_matter.getItem()) + .define('C', destruction_catalyst.getItem()) + .unlockedBy(RecipeProvider.getHasName(red_matter.getItem()), RecipeProvider.has(red_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(destruction_catalyst.getItem()), RecipeProvider.has(destruction_catalyst.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, destruction_catalyst.getItem()) + .pattern("FRF") + .pattern("ASA") + .pattern("FRF") + .define('F', Items.FLINT_AND_STEEL) + .define('A', aeternalis_fuel.getItem()) + .define('S', philosophers_stone.getItem()) + .define('R', red_matter.getItem()) + .unlockedBy(RecipeProvider.getHasName(Items.FLINT_AND_STEEL), RecipeProvider.has(Items.FLINT_AND_STEEL)) + .unlockedBy(RecipeProvider.getHasName(aeternalis_fuel.getItem()), RecipeProvider.has(aeternalis_fuel.getItem())) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .unlockedBy(RecipeProvider.getHasName(red_matter.getItem()), RecipeProvider.has(red_matter.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, volcanite_amulet.getItem()) + .pattern("LLL") + .pattern("DDD") + .pattern("LLL") + .define('D', dark_matter.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.LAVA_BUCKET), RecipeProvider.has(Items.LAVA_BUCKET)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, evertide_amulet.getItem()) + .pattern("WWW") + .pattern("DDD") + .pattern("WWW") + .define('D', dark_matter.getItem()) + .define('W', ItemTag.water_bucket) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.WATER_BUCKET), RecipeProvider.has(Items.WATER_BUCKET)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, chalk.getItem()) + .pattern("CD") + .pattern("D ") + .define('D', Items.DIORITE) + .define('C', Items.CLAY_BALL) + .unlockedBy(RecipeProvider.getHasName(Items.DIORITE), RecipeProvider.has(Items.DIORITE)) + .unlockedBy(RecipeProvider.getHasName(Items.CLAY_BALL), RecipeProvider.has(Items.CLAY_BALL)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.COBBLESTONE) + .pattern("WPL") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.LAVA_BUCKET), RecipeProvider.has(Items.LAVA_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(Items.WATER_BUCKET), RecipeProvider.has(Items.WATER_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.OBSIDIAN) + .pattern("PWL") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.LAVA_BUCKET), RecipeProvider.has(Items.LAVA_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(Items.WATER_BUCKET), RecipeProvider.has(Items.WATER_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.STONE) + .pattern("PLW") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.LAVA_BUCKET), RecipeProvider.has(Items.LAVA_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(Items.WATER_BUCKET), RecipeProvider.has(Items.WATER_BUCKET)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, dark_matter.getItem()) + .pattern("MMM") + .pattern("MNM") + .pattern("MMM") + .define('M', mobius_fuel.getItem()) + .define('N', Items.NETHERITE_BLOCK) + .unlockedBy(RecipeProvider.getHasName(mobius_fuel.getItem()), RecipeProvider.has(mobius_fuel.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.NETHERITE_BLOCK), RecipeProvider.has(Items.NETHERITE_BLOCK)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, red_matter.getItem()) + .pattern("AAA") + .pattern("DDD") + .pattern("AAA") + .define('D', dark_matter.getItem()) + .define('A', aeternalis_fuel.getItem()) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(aeternalis_fuel.getItem()), RecipeProvider.has(aeternalis_fuel.getItem())) + .save(recipeoutput); + twoWayPhilStoneRecipe(Items.COAL, Items.CHARCOAL, 1, recipeoutput); + philStoneRecipe(coal_coke.getItem(), 2, Items.COAL, 2, recipeoutput); + twoWayPhilStoneRecipe(alchemical_coal.getItem(), coal_coke.getItem(), 8, recipeoutput); + twoWayPhilStoneRecipe(mobius_fuel.getItem(), alchemical_coal.getItem(), 8, recipeoutput); + twoWayPhilStoneRecipe(aeternalis_fuel.getItem(), mobius_fuel.getItem(), 8, recipeoutput); + + twoWayPhilStoneRecipe(Items.COPPER_INGOT, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tin_ingot")), 1, recipeoutput); + twoWayPhilStoneRecipe(Items.IRON_INGOT, Items.COPPER_INGOT, 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:aluminum_ingot")), Items.IRON_INGOT, 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:nickel_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:aluminum_ingot")), 2, recipeoutput); + + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:silver_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:lead_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.GOLD_INGOT, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:silver_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:yellow_garnet_gem")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:red_garnet_gem")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), 6, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 6, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), 8, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:sapphire_gem")), 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 4, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:sapphire_gem")), 4, recipeoutput); + twoWayPhilStoneRecipe(Items.DIAMOND, Items.GOLD_INGOT, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.DIAMOND,2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 8, recipeoutput); + twoWayPhilStoneRecipe(Items.NETHERITE_SCRAP, Items.DIAMOND, 4, recipeoutput); + + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:platinum_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:titanium_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.NETHERITE_INGOT, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:platinum_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tungsten_ingot")), Items.NETHERITE_INGOT, 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:iridium_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tungsten_ingot")), 2, recipeoutput); + + philStoneRecipe(Items.FLINT, 3, Items.GRAVEL, 3, recipeoutput); + twoWayPhilStoneRecipe(Items.GRAVEL, 4, Items.COBBLESTONE, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.DIRT, 4, Items.SAND, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.GRAVEL, 8, Items.DIRT, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.COBBLESTONE, 8, Items.SAND, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.CLAY_BALL, Items.STONE, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_COPPER, 2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_tin")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_COPPER, Items.CLAY, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_IRON, Items.RAW_COPPER, 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_silver")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_lead")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_GOLD, 2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_silver")), 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_GOLD, Items.RAW_IRON, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.GUNPOWDER, Items.EMERALD, 1, recipeoutput); + twoWayPhilStoneRecipe(Items.BLAZE_ROD, Items.GUNPOWDER, 2, recipeoutput); + twoWayPhilStoneRecipe(Items.ENDER_PEARL, Items.BLAZE_ROD, 2, recipeoutput); + + } + + public void twoWayPhilStoneRecipe(Item first, Item second, int count, RecipeOutput recipeoutput){ + twoWayPhilStoneRecipe(first, 1, second, count, recipeoutput); + } + + public void twoWayPhilStoneRecipe(Item first, int firstcount, Item second, int secondcount, RecipeOutput recipeoutput){ + philStoneRecipe(first, firstcount, second, secondcount, recipeoutput); + philStoneRecipe(second, secondcount, first, firstcount, recipeoutput); + } + + public void philStoneRecipe(Item output, int outputcount, Item input, int inputcount, RecipeOutput recipeoutput){ + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, outputcount) + .requires(philosophers_stone.getItem()) + .requires(input, inputcount) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput, new ResourceLocation(Alchemist.MODID, output +"_to_"+input)); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/unix_supremacist/interfaces/AreaBox.java b/src/main/java/io/github/unix_supremacist/interfaces/AreaBox.java new file mode 100644 index 0000000..1978182 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/interfaces/AreaBox.java @@ -0,0 +1,39 @@ +package io.github.unix_supremacist.interfaces; + +import io.github.unix_supremacist.Alchemist; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; + +import java.util.ArrayList; + +public interface AreaBox { + default ArrayList getArea(Direction dir, BlockPos anchor, BlockPos negative, BlockPos positive){ + ArrayList blocks = new ArrayList<>(); + + for(int x = negative.getX(); x <= positive.getX(); x++) + for (int y = negative.getY(); y <= positive.getY(); y++) + for (int z = negative.getZ(); z <= positive.getZ(); z++) + blocks.add(anchor.offset(x, y, z)); + return blocks; + } + + default ArrayList getAreaFromFacing(Direction dir, BlockPos anchor, int size, int depth){ + switch(dir) { + case SOUTH: + return getArea(dir, anchor, new BlockPos(-size, -size, -depth), new BlockPos(size, size, 0)); + case NORTH: + return getArea(dir, anchor, new BlockPos(-size, -size, 0), new BlockPos(size, size, depth)); + case EAST: + return getArea(dir, anchor, new BlockPos(-depth, -size, -size), new BlockPos(0, size, size)); + case WEST: + return getArea(dir, anchor, new BlockPos(0, -size, -size), new BlockPos(depth, size, size)); + case UP: + return getArea(dir, anchor, new BlockPos(-size, -depth, -size), new BlockPos(size, 0, size)); + case DOWN: + return getArea(dir, anchor, new BlockPos(-size, 0, -size), new BlockPos(size, depth, size)); + default: + Alchemist.LOGGER.error("HOW DID YOU CLICK A DIRECTION THAT ISN'T NORTH SOUTH EAST WEST UP OR DOWN"); + return null; + } + } +} diff --git a/src/main/java/io/github/unix_supremacist/interfaces/Destroyer.java b/src/main/java/io/github/unix_supremacist/interfaces/Destroyer.java new file mode 100644 index 0000000..0ca21a6 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/interfaces/Destroyer.java @@ -0,0 +1,32 @@ +package io.github.unix_supremacist.interfaces; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; + +import java.util.ArrayList; + +public interface Destroyer { + default void destroy(Level level, BlockPos pos, LivingEntity entity){ + if(!level.isClientSide() && !(level.getBlockState(pos).getBlock().defaultDestroyTime() < 0)){ + if (entity instanceof Player) + level.destroyBlock(pos, !((Player) entity).isCreative()); + else + level.destroyBlock(pos, true); + } + } + + default InteractionResult destroyArea(Level level, ArrayList blocks, LivingEntity entity){ + if(!level.isClientSide()){ + if(!blocks.isEmpty()){ + for (BlockPos b : blocks){ + destroy(level, b, entity); + } + return InteractionResult.SUCCESS; + } + } + return InteractionResult.PASS; + } +} diff --git a/src/main/java/io/github/unix_supremacist/interfaces/DurablityBar.java b/src/main/java/io/github/unix_supremacist/interfaces/DurablityBar.java new file mode 100644 index 0000000..8105ef1 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/interfaces/DurablityBar.java @@ -0,0 +1,10 @@ +package io.github.unix_supremacist.interfaces; + +import net.minecraft.util.Mth; + +public interface DurablityBar { + default int getColor(int max, int current) { + float f = Math.max(0.0F, ((float)max - (float)current) / (float)max); + return Mth.hsvToRgb(f / 1.1F, 1.0F, 1.0F); + } +} diff --git a/src/main/java/io/github/unix_supremacist/interfaces/TransmuteEntity.java b/src/main/java/io/github/unix_supremacist/interfaces/TransmuteEntity.java new file mode 100644 index 0000000..6c2c786 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/interfaces/TransmuteEntity.java @@ -0,0 +1,20 @@ +package io.github.unix_supremacist.interfaces; + +import io.github.unix_supremacist.content.AlchemistItems; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public interface TransmuteEntity { + default InteractionResult transmuteEntity(LivingEntity entity, Level level){ + if(entity instanceof Villager){ + level.addFreshEntity(new ItemEntity(level, entity.getPosition(0).x(), entity.getPosition(0).y(), entity.getPosition(0).z(), new ItemStack(AlchemistItems.philosophers_stone.getItem()))); + entity.kill(); + return InteractionResult.SUCCESS; + } + return InteractionResult.PASS; + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/AbstractEmpowerableItem.java b/src/main/java/io/github/unix_supremacist/item/AbstractEmpowerableItem.java new file mode 100644 index 0000000..91e002a --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/AbstractEmpowerableItem.java @@ -0,0 +1,62 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; + +public class AbstractEmpowerableItem extends Item implements DurablityBar { + protected final int maxPower; + public AbstractEmpowerableItem(Properties properties, int maxPower) { + super(properties); + this.maxPower = maxPower; + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(this.maxPower, getPower(item)); + } + + @Override + public boolean isBarVisible(ItemStack item) { + return getPower(item) > 0; + } + + public int getPower(ItemStack item){ + if (item.getTag() != null){ + return item.getTag().getInt("alchemist.empowered"); + } else { + item.setTag(new CompoundTag()); + return 0; + } + } + + public void setPower(ItemStack item, int i){ + if (item.getTag() != null){ + item.getTag().putInt("alchemist.empowered", i); + } else { + CompoundTag tag = new CompoundTag(); + tag.putInt("alchemist.empowered", i); + item.setTag(tag); + } + } + + public void empower(ItemStack item, Player p){ + if(isBarVisible(item)) + setPower(item, getPower(item)-1); + else + setPower(item,maxPower-1); + } + + @Override + public int getBarWidth(ItemStack item) { + return Math.round(13.0F - (float)getPower(item) * 13.0F / (float)this.maxPower); + } + + @Override + public Rarity getRarity(ItemStack s){ + return Rarity.EPIC; + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/AlchemistBlockItem.java b/src/main/java/io/github/unix_supremacist/item/AlchemistBlockItem.java new file mode 100644 index 0000000..0246cd8 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/AlchemistBlockItem.java @@ -0,0 +1,64 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +import static io.github.unix_supremacist.content.AlchemistItems.chalk; + +public class AlchemistBlockItem extends BlockItem implements DurablityBar { + public AlchemistBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult interactionResult; + ItemStack item = context.getItemInHand(); + if(context.getLevel().getBlockState(context.getClickedPos().relative(context.getClickedFace())) == Blocks.LAVA.defaultBlockState() && item.getDamageValue() < this.getMaxDamage()){ + context.getLevel().setBlock(context.getClickedPos().relative(context.getClickedFace()), Blocks.AIR.defaultBlockState(), 0); + context.getItemInHand().setDamageValue(item.getDamageValue()+1); + interactionResult = InteractionResult.SUCCESS; + } else { + context.getItemInHand().grow(1); + interactionResult = this.place(new BlockPlaceContext(context)); + if(interactionResult == InteractionResult.FAIL) context.getItemInHand().shrink(1); + if (this.getMaxDamage() > 0) context.getItemInHand().hurtAndBreak(1, context.getPlayer(), livingEntity -> livingEntity.broadcastBreakEvent(EquipmentSlot.MAINHAND)); + } + + return interactionResult; + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(item.getMaxDamage(), item.getDamageValue()); + } + + public ItemStack getRecipeRemainder(ItemStack stack) { + if (this.getMaxDamage() > 0) stack.setDamageValue(stack.getDamageValue()-1); + if (stack.getDamageValue() == getMaxDamage()) stack = ItemStack.EMPTY; + return stack.copy(); + } + + @Override + public String getDescriptionId() { + return this.getOrCreateDescriptionId(); + } + + /*@Override + public boolean isValidRepairItem(ItemStack itemStack2, ItemStack itemStack) { + return itemStack.getItem() == Items.BLAZE_POWDER || super.isValidRepairItem(itemStack2, itemStack); + }*/ + + @Override + public Rarity getRarity(ItemStack s){ + return s.getItem()==chalk.getItem() ? Rarity.COMMON : Rarity.EPIC; + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/AlchemistDiggerItem.java b/src/main/java/io/github/unix_supremacist/item/AlchemistDiggerItem.java new file mode 100644 index 0000000..58af05f --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/AlchemistDiggerItem.java @@ -0,0 +1,43 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.DiggerItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +import java.util.ArrayList; + +public class AlchemistDiggerItem extends DiggerItem implements AreaBox, Destroyer, DurablityBar { + public AlchemistDiggerItem(float f, float g, Tier tier, TagKey tagKey, Properties properties) { + super(f, g, tier, tagKey, properties); + } + + @Override + public boolean mineBlock(ItemStack itemStack, Level level, BlockState state, BlockPos pos, LivingEntity entity) { + Vec3 look = entity.getLookAngle(); + ArrayList blocks = getAreaFromFacing(Direction.getNearest(look.x(), look.y(), look.z()), pos, 1, 0); + destroyArea(level, blocks, entity); + return super.mineBlock(itemStack, level, state, pos, entity); + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(item.getMaxDamage(), item.getDamageValue()); + } + + @Override + public Rarity getRarity(ItemStack s){ + return Rarity.EPIC; + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/AlchemistHammerItem.java b/src/main/java/io/github/unix_supremacist/item/AlchemistHammerItem.java new file mode 100644 index 0000000..2f9a6d4 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/AlchemistHammerItem.java @@ -0,0 +1,31 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +import java.util.ArrayList; + +public class AlchemistHammerItem extends AlchemistDiggerItem implements AreaBox, Destroyer { + + public AlchemistHammerItem(Tier tier, int i, float f, Properties properties) { + super(i, f, tier, BlockTags.MINEABLE_WITH_PICKAXE, properties); + } + + @Override + public boolean mineBlock(ItemStack itemStack, Level level, BlockState state, BlockPos pos, LivingEntity entity) { + Vec3 look = entity.getLookAngle(); + Direction dir = Direction.getNearest(look.x(), look.y(), look.z()); + ArrayList blocks = getAreaFromFacing(dir, pos, 1, 0); + destroyArea(level, blocks, entity); + return super.mineBlock(itemStack, level, state, pos, entity); + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/DestructionItem.java b/src/main/java/io/github/unix_supremacist/item/DestructionItem.java new file mode 100644 index 0000000..36df38d --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/DestructionItem.java @@ -0,0 +1,44 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; + +import java.util.ArrayList; + +public class DestructionItem extends AbstractEmpowerableItem implements AreaBox, Destroyer { + protected final int[] MODES; + private final int maxWidth; + private final int maxDepth; + private final int mult; + + public DestructionItem(Properties properties, int maxWidth, int maxDepth, int mult) { + super(properties, maxWidth * maxDepth); + this.maxWidth = maxWidth; + this.maxDepth = maxDepth; + this.mult = mult; + + MODES = new int[maxWidth * maxDepth * 2]; + for (int i = 0; i < maxPower; i++) { + MODES[i * 2] = i % maxWidth; + MODES[i * 2 + 1] = i / maxWidth; + } + } + + @Override + public void empower(ItemStack item, Player p){ + super.empower(item, p); + p.displayClientMessage(Component.literal("Width: "+((maxWidth-1)*2-MODES[getPower(item)*2]*2+1)+" and Depth: "+((maxDepth-1-MODES[getPower(item)*2+1])*mult+1)), true); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ArrayList blocks = getAreaFromFacing(context.getClickedFace(), context.getClickedPos(), maxWidth-1-MODES[getPower(context.getItemInHand())*2], (maxDepth-1-MODES[getPower(context.getItemInHand())*2+1])*mult); + return destroyArea(context.getLevel(), blocks, context.getPlayer()); + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/GaleItem.java b/src/main/java/io/github/unix_supremacist/item/GaleItem.java new file mode 100644 index 0000000..5981d51 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/GaleItem.java @@ -0,0 +1,38 @@ +package io.github.unix_supremacist.item; + +import dev.emi.trinkets.api.SlotReference; +import dev.emi.trinkets.api.TrinketItem; +import io.github.ladysnake.pal.AbilitySource; +import io.github.ladysnake.pal.Pal; +import io.github.ladysnake.pal.VanillaAbilities; +import io.github.unix_supremacist.Alchemist; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; + +public class GaleItem extends TrinketItem { + public GaleItem(Properties properties) { + super(properties); + } + public static final AbilitySource gale_ability = Pal.getAbilitySource(Alchemist.MODID, "swiftwolfs_rending_gale"); + + @Override + public void onEquip(ItemStack stack, SlotReference slot, LivingEntity entity) { + if (!entity.level().isClientSide()) + if (entity instanceof Player) + gale_ability.grantTo((Player) entity, VanillaAbilities.ALLOW_FLYING); + } + + @Override + public void onUnequip(ItemStack stack, SlotReference slot, LivingEntity entity) { + if (!entity.level().isClientSide()) + if (entity instanceof Player) + gale_ability.revokeFrom((Player) entity, VanillaAbilities.ALLOW_FLYING); + } + + @Override + public Rarity getRarity(ItemStack s){ + return Rarity.EPIC; + } +} diff --git a/src/main/java/io/github/unix_supremacist/item/PhilosophersStoneItem.java b/src/main/java/io/github/unix_supremacist/item/PhilosophersStoneItem.java new file mode 100644 index 0000000..eb41815 --- /dev/null +++ b/src/main/java/io/github/unix_supremacist/item/PhilosophersStoneItem.java @@ -0,0 +1,61 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.data.BlockTag; +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.TransmuteEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.Block; + +import java.util.ArrayList; + +public class PhilosophersStoneItem extends AbstractEmpowerableItem implements AreaBox, TransmuteEntity { + public PhilosophersStoneItem(Properties properties) { + super(properties, 3); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ArrayList blocks = getAreaFromFacing(context.getClickedFace(), context.getClickedPos(), 2 - getPower(context.getItemInHand()), 0); + ArrayList exchange = new ArrayList<>(); + InteractionResult result = InteractionResult.PASS; + for (ArrayList e : BlockTag.exchanges){ + if (e.contains(context.getLevel().getBlockState(context.getClickedPos()).getBlock())){ + exchange = e; + result = InteractionResult.SUCCESS; + break; + } + } + if(!blocks.isEmpty()){ + if (!context.getLevel().isClientSide()) for (BlockPos b : blocks){ + Block block = context.getLevel().getBlockState(b).getBlock(); + if (exchange.contains(block)) { + Block newBlock; + if(context.getPlayer().isShiftKeyDown()) + newBlock = BlockTag.getBlockWithOffset(block, exchange,-1); + else + newBlock = BlockTag.getBlockWithOffset(block, exchange,+1); + context.getLevel().setBlock(b, newBlock.defaultBlockState(), 3); + ItemStack stack = context.getPlayer().getItemInHand(context.getHand()).copy(); + context.getPlayer().setItemInHand(context.getHand(), stack); + } + } + } + + return result; + } + + public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity entity, InteractionHand hand) { + return transmuteEntity(entity, player.level()); + } + + @Override + public ItemStack getRecipeRemainder(ItemStack stack) { + return stack.copy(); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/Alchemist.java b/src/main/java_remapped/io/github/unix_supremacist/Alchemist.java new file mode 100644 index 0000000..c51c3af --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/Alchemist.java @@ -0,0 +1,46 @@ +package io.github.unix_supremacist; + +import io.github.unix_supremacist.content.AlchemistBlocks; +import io.github.unix_supremacist.content.AlchemistItems; +import io.github.unix_supremacist.content.AlchemistSplashes; +import io.github.unix_supremacist.data.BlockTag; +import io.github.unix_supremacist.item.AbstractEmpowerableItem; +import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.util.IChatComponent; +import net.minecraft.util.ResourceLocation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Alchemist { + public static final String MODID = "alchemist"; + public static final Logger LOGGER = LoggerFactory.getLogger(MODID); + public static final ResourceLocation empower_packet = new ResourceLocation(Alchemist.MODID, "empower_packet"); + public static final CreativeTabs tab = FabricItemGroup.builder() + .icon(() -> new ItemStack(AlchemistItems.philosophers_stone.getItem())) + .title(IChatComponent.translatable("itemGroup."+MODID)) + .build(); + + + + public static void Init(){ + LOGGER.info("Welcome to the World of Alchemy!"); + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, new ResourceLocation(MODID, "tab"), tab); + AlchemistSplashes.init(); + AlchemistBlocks.values(); //force the enum to load + AlchemistItems.values(); //force the enum to load + CommonLifecycleEvents.TAGS_LOADED.register((registries, client) -> { + BlockTag.init(); + }); + ServerPlayNetworking.registerGlobalReceiver(empower_packet, (server, player, handler, buf, responseSender) -> { + ItemStack item = player.getMainHandItem(); + if(item.getItem() instanceof AbstractEmpowerableItem){ + ((AbstractEmpowerableItem) item.getItem()).empower(item, player); + } + }); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/Entrypoint.java b/src/main/java_remapped/io/github/unix_supremacist/Entrypoint.java new file mode 100644 index 0000000..d955a5e --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/Entrypoint.java @@ -0,0 +1,12 @@ +package io.github.unix_supremacist; + +import net.fabricmc.api.ModInitializer; + +public class Entrypoint implements ModInitializer { + + + @Override + public void onInitialize() { + Alchemist.Init(); + } +} \ No newline at end of file diff --git a/src/main/java_remapped/io/github/unix_supremacist/block/TransmutionCircleBlock.java b/src/main/java_remapped/io/github/unix_supremacist/block/TransmutionCircleBlock.java new file mode 100644 index 0000000..8d6d8ff --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/block/TransmutionCircleBlock.java @@ -0,0 +1,55 @@ +package io.github.unix_supremacist.block; + +import io.github.unix_supremacist.interfaces.TransmuteEntity; +import net.minecraft.block.Block; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.World; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.List; + +public class TransmutionCircleBlock extends Block implements TransmuteEntity { + public TransmutionCircleBlock(Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState state, World level, ChunkCoordinates pos, EntityPlayer player, InteractionHand hand, BlockHitResult hit) { + if (!level.isClientSide()) { + AxisAlignedBB aABB = new AxisAlignedBB(pos); + List villagerList = level.getEntitiesOfClass(EntityVillager.class, aABB); + if(!villagerList.isEmpty()){ + level.setBlock(pos, Blocks.air.defaultBlockState(), 3); + return transmuteEntity(villagerList.get(0), level); + } + } + + return InteractionResult.PASS; + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter level, ChunkCoordinates pos, CollisionContext context) { + return Shapes.box(0f, 0f, 0f, 1f, 0.02f, 1f); + } + + @Override + public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGetter, ChunkCoordinates blockPos, CollisionContext collisionContext) { + return Shapes.empty(); + } + + @Override + public VoxelShape getOcclusionShape(BlockState state, BlockGetter level, ChunkCoordinates pos) { + return Shapes.empty(); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistBlocks.java b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistBlocks.java new file mode 100644 index 0000000..df87fb7 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistBlocks.java @@ -0,0 +1,20 @@ +package io.github.unix_supremacist.content; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.block.TransmutionCircleBlock; +import lombok.Getter; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.ResourceLocation; + +public enum AlchemistBlocks { + transmutation_circle(new TransmutionCircleBlock(FabricBlockSettings.create())); + @Getter Block block; + + AlchemistBlocks(Block block){ + this.block = block; + Registry.register(BuiltInRegistries.BLOCK, new ResourceLocation(Alchemist.MODID, this.name()), block); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistItems.java b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistItems.java new file mode 100644 index 0000000..b8e412b --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistItems.java @@ -0,0 +1,73 @@ +package io.github.unix_supremacist.content; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.item.*; +import lombok.Getter; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.fabricmc.fabric.api.registry.FuelRegistry; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.Item.Properties; +import net.minecraft.resources.ResourceKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.item.Tiers; + +public enum AlchemistItems { + alchemical_coal(25600), + aeternalis_fuel(1638400), + //black_hole_band, + catalytic_lens(new DestructionItem(new Properties().stacksTo(1), 3, 10, 5)), + chalk(new AlchemistBlockItem(AlchemistBlocks.transmutation_circle.getBlock(), new Properties().durability(64))), + coal_coke(3200), + dark_matter, + //dark_matter_pickaxe, + //dark_matter_shovel, + //dark_matter_hoe, + //dark_matter_sword, + //dark_matter_axe, + //dark_matter_shears, + dark_matter_hammer(new AlchemistHammerItem(Tiers.NETHERITE, 1, -2.8f, new Properties())), + destruction_catalyst(new DestructionItem(new Properties().stacksTo(1), 3, 5, 1)), + evertide_amulet(new AlchemistBlockItem(Blocks.WATER, new Properties().stacksTo(1))), + //gem_of_eternal_density, + //harvest_goddess_band, + //hyperkinetic_lens, + iron_band, + mobius_fuel(204800), + philosophers_stone(new PhilosophersStoneItem(new Properties().stacksTo(1))), + red_matter, + swiftwolfs_rending_gale(new GaleItem(new Properties().stacksTo(1))), + volcanite_amulet(new AlchemistBlockItem(Blocks.LAVA, new Properties().durability(64))), + ; + @Getter Item item; + AlchemistItems(){ + this(0); + } + + AlchemistItems(int burntime){ + this(new Properties(), burntime); + } + + AlchemistItems(Properties properties){ + this(new Item(properties), 0); + } + + AlchemistItems(Properties properties, int burntime){ + this(new Item(properties), burntime); + } + + AlchemistItems(Item item){ + this(item, 0); + } + + AlchemistItems(Item item, int burntime){ + this.item = item; + FuelRegistry.INSTANCE.add(item, burntime); + Registry.register(BuiltInRegistries.ITEM, new ResourceLocation(Alchemist.MODID, this.name()), item); + ItemGroupEvents.modifyEntriesEvent(ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), new ResourceLocation(Alchemist.MODID, "tab"))).register(content -> { + content.accept(item); + }); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistSplashes.java b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistSplashes.java new file mode 100644 index 0000000..651afe7 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/content/AlchemistSplashes.java @@ -0,0 +1,13 @@ +package io.github.unix_supremacist.content; + +import net.feltmc.feltapi.api.splash.SplashAPI; + +public class AlchemistSplashes { + public static String[] splashes = { + "Welcome to the World of Alchemy!" + }; + + public static void init(){ + for (String spl : splashes) SplashAPI.addSplash(spl); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/data/BlockTag.java b/src/main/java_remapped/io/github/unix_supremacist/data/BlockTag.java new file mode 100644 index 0000000..90c1cff --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/data/BlockTag.java @@ -0,0 +1,132 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.block.Block; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.init.Blocks; +import net.minecraft.tags.TagKey; +import net.minecraft.util.ResourceLocation; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.concurrent.CompletableFuture; + +public class BlockTag extends FabricTagProvider.BlockTagProvider { + public static HashSet> exchanges = new HashSet<>(); + public static TagKey terratag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "terra")); + public static TagKey woodtag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "wood")); + public static TagKey netherwoodtag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "netherwood")); + public static TagKey leavetag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "leave")); + public static TagKey stonetag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "stone")); + public static TagKey obsidiantag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "obsidian")); + public static TagKey stonebrickstag = TagKey.create(BuiltInRegistries.BLOCK.key(), new ResourceLocation(Alchemist.MODID, "stonebricks")); + + public BlockTag(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + protected static void addExchange(TagKey tag){ + ArrayList arrayList = new ArrayList<>(); + BuiltInRegistries.BLOCK.getTagOrEmpty(tag).iterator().forEachRemaining(t ->arrayList.add(t.value())); + exchanges.add(arrayList); + } + + public static void init(){ + addExchange(terratag); + addExchange(woodtag); + addExchange(netherwoodtag); + addExchange(leavetag); + addExchange(stonetag); + addExchange(obsidiantag); + addExchange(stonebrickstag); + } + + @Override + protected void addTags(HolderLookup.Provider arg) { + FabricTagBuilder terra = getOrCreateTagBuilder(terratag); + terra.add(Blocks.GRASS_BLOCK); + terra.add(Blocks.dirt); + terra.add(Blocks.COARSE_DIRT); + terra.add(Blocks.cobblestone); + terra.add(Blocks.mossy_cobblestone); + terra.add(Blocks.COBBLED_DEEPSLATE); + terra.add(Blocks.stone); + terra.add(Blocks.DEEPSLATE); + terra.add(Blocks.sand); + terra.add(Blocks.RED_SAND); + terra.add(Blocks.gravel); + + FabricTagBuilder wood = getOrCreateTagBuilder(woodtag); + wood.add(Blocks.OAK_LOG); + wood.add(Blocks.ACACIA_LOG); + wood.add(Blocks.BIRCH_LOG); + wood.add(Blocks.CHERRY_LOG); + wood.add(Blocks.JUNGLE_LOG); + wood.add(Blocks.DARK_OAK_LOG); + wood.add(Blocks.MANGROVE_LOG); + wood.add(Blocks.SPRUCE_LOG); + wood.add(Blocks.STRIPPED_OAK_LOG); + wood.add(Blocks.STRIPPED_ACACIA_LOG); + wood.add(Blocks.STRIPPED_BIRCH_LOG); + wood.add(Blocks.STRIPPED_CHERRY_LOG); + wood.add(Blocks.STRIPPED_JUNGLE_LOG); + wood.add(Blocks.STRIPPED_DARK_OAK_LOG); + wood.add(Blocks.STRIPPED_MANGROVE_LOG); + wood.add(Blocks.STRIPPED_SPRUCE_LOG); + wood.add(Blocks.OAK_WOOD); + wood.add(Blocks.ACACIA_LOG); + wood.add(Blocks.BIRCH_LOG); + wood.add(Blocks.CHERRY_LOG); + wood.add(Blocks.JUNGLE_LOG); + wood.add(Blocks.DARK_OAK_LOG); + wood.add(Blocks.MANGROVE_LOG); + wood.add(Blocks.SPRUCE_LOG); + + FabricTagBuilder netherwood = getOrCreateTagBuilder(netherwoodtag); + netherwood.add(Blocks.CRIMSON_STEM); + netherwood.add(Blocks.WARPED_STEM); + netherwood.add(Blocks.STRIPPED_CRIMSON_STEM); + netherwood.add(Blocks.STRIPPED_WARPED_STEM); + + FabricTagBuilder leave = getOrCreateTagBuilder(leavetag); + leave.add(Blocks.OAK_LEAVES); + leave.add(Blocks.ACACIA_LEAVES); + leave.add(Blocks.BIRCH_LEAVES); + leave.add(Blocks.CHERRY_LEAVES); + leave.add(Blocks.JUNGLE_LEAVES); + leave.add(Blocks.DARK_OAK_LEAVES); + leave.add(Blocks.MANGROVE_LEAVES); + leave.add(Blocks.SPRUCE_LEAVES); + leave.add(Blocks.NETHER_WART_BLOCK); + leave.add(Blocks.WARPED_WART_BLOCK); + + FabricTagBuilder stone = getOrCreateTagBuilder(stonetag); + stone.add(Blocks.ANDESITE); + stone.add(Blocks.DIORITE); + stone.add(Blocks.GRANITE); + stone.add(Blocks.sandstone); + stone.add(Blocks.RED_SANDSTONE); + stone.add(Blocks.clay); + + FabricTagBuilder obsidian = getOrCreateTagBuilder(obsidiantag); + obsidian.add(Blocks.obsidian); + obsidian.add(Blocks.CRYING_OBSIDIAN); + + FabricTagBuilder stonebricks = getOrCreateTagBuilder(stonebrickstag); + stonebricks.add(Blocks.stonebrick); + stonebricks.add(Blocks.MOSSY_STONE_BRICKS); + } + + public static Block getBlockWithOffset(Block b, ArrayList exchange, int o){ + int id = exchange.indexOf(b); + int size = exchange.size(); + id += o; + if (id < 0) + id = size + id % size; + else + id %= size; + return exchange.get(id); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/data/Datagen.java b/src/main/java_remapped/io/github/unix_supremacist/data/Datagen.java new file mode 100644 index 0000000..16f8994 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/data/Datagen.java @@ -0,0 +1,15 @@ +package io.github.unix_supremacist.data; + +import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; + +public class Datagen implements DataGeneratorEntrypoint { + @Override + public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { + FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); + pack.addProvider(ItemTag::new); + pack.addProvider(BlockTag::new); + pack.addProvider(Recipe::new); + pack.addProvider(Language::new); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/data/ItemTag.java b/src/main/java_remapped/io/github/unix_supremacist/data/ItemTag.java new file mode 100644 index 0000000..1077ddf --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/data/ItemTag.java @@ -0,0 +1,33 @@ +package io.github.unix_supremacist.data; + +import dev.emi.trinkets.TrinketsMain; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.item.Item; +import net.minecraft.tags.TagKey; +import net.minecraft.util.ResourceLocation; +import java.util.concurrent.CompletableFuture; + +import static io.github.unix_supremacist.content.AlchemistItems.*; + +public class ItemTag extends FabricTagProvider.ItemTagProvider { + public static String common = "c"; + public static TagKey handring = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(TrinketsMain.MOD_ID, "hand/ring")); + public static TagKey offhandring = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(TrinketsMain.MOD_ID, "offhand/ring")); + public static TagKey water_bucket = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(common, "water_buckets")); + public static TagKey lava_bucket = TagKey.create(BuiltInRegistries.ITEM.key(), new ResourceLocation(common, "lava_buckets")); + + public ItemTag(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void addTags(HolderLookup.Provider arg) { + getOrCreateTagBuilder(handring).add(swiftwolfs_rending_gale.getItem()); + getOrCreateTagBuilder(offhandring).add(swiftwolfs_rending_gale.getItem()); + getOrCreateTagBuilder(water_bucket).add(evertide_amulet.getItem()); + getOrCreateTagBuilder(lava_bucket).add(volcanite_amulet.getItem()); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/data/Language.java b/src/main/java_remapped/io/github/unix_supremacist/data/Language.java new file mode 100644 index 0000000..080f265 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/data/Language.java @@ -0,0 +1,32 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import io.github.unix_supremacist.content.AlchemistBlocks; +import io.github.unix_supremacist.content.AlchemistItems; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.util.ResourceLocation; +import org.apache.commons.lang3.text.WordUtils; + + +public class Language extends FabricLanguageProvider { + protected Language(FabricDataOutput dataOutput) { + super(dataOutput, "en_us"); + } + + @Override + public void generateTranslations(TranslationBuilder translationBuilder) { + for (AlchemistItems item : AlchemistItems.values()) + translationBuilder.add(item.getItem(), WordUtils.capitalize(item.name().replace("_", " "))); + + for (AlchemistBlocks block : AlchemistBlocks.values()) + translationBuilder.add(block.getBlock(), WordUtils.capitalize(block.name().replace("_", " "))); + + translationBuilder.add(ResourceKey.create(BuiltInRegistries.CREATIVE_MODE_TAB.key(), new ResourceLocation(Alchemist.MODID, "tab")), WordUtils.capitalize(Alchemist.MODID.replace("_", " "))); + + translationBuilder.add("key.categories.alchemist", WordUtils.capitalize(Alchemist.MODID.replace("_", " "))); + translationBuilder.add("key.alchemist.empower", "Empower"); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/data/Recipe.java b/src/main/java_remapped/io/github/unix_supremacist/data/Recipe.java new file mode 100644 index 0000000..707a9f4 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/data/Recipe.java @@ -0,0 +1,192 @@ +package io.github.unix_supremacist.data; + +import io.github.unix_supremacist.Alchemist; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.recipes.*; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; + +import static io.github.unix_supremacist.content.AlchemistItems.*; + +public class Recipe extends FabricRecipeProvider { + public Recipe(FabricDataOutput generator) { + super(generator); + } + + @Override + public void buildRecipes(RecipeOutput recipeoutput) { + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, swiftwolfs_rending_gale.getItem()) + .pattern("D") + .pattern("B") + .define('D', dark_matter.getItem()) + .define('B', iron_band.getItem()) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(iron_band.getItem()), RecipeProvider.has(iron_band.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, iron_band.getItem()) + .pattern("III") + .pattern("ILI") + .pattern("III") + .define('I', Items.iron_ingot) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.iron_ingot), RecipeProvider.has(Items.iron_ingot)) + .unlockedBy(RecipeProvider.getHasName(Items.lava_bucket), RecipeProvider.has(Items.lava_bucket)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, catalytic_lens.getItem()) + .pattern("DDD") + .pattern("CDC") + .pattern("DDD") + .define('D', red_matter.getItem()) + .define('C', destruction_catalyst.getItem()) + .unlockedBy(RecipeProvider.getHasName(red_matter.getItem()), RecipeProvider.has(red_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(destruction_catalyst.getItem()), RecipeProvider.has(destruction_catalyst.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, destruction_catalyst.getItem()) + .pattern("FRF") + .pattern("ASA") + .pattern("FRF") + .define('F', Items.flint_and_steel) + .define('A', aeternalis_fuel.getItem()) + .define('S', philosophers_stone.getItem()) + .define('R', red_matter.getItem()) + .unlockedBy(RecipeProvider.getHasName(Items.flint_and_steel), RecipeProvider.has(Items.flint_and_steel)) + .unlockedBy(RecipeProvider.getHasName(aeternalis_fuel.getItem()), RecipeProvider.has(aeternalis_fuel.getItem())) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .unlockedBy(RecipeProvider.getHasName(red_matter.getItem()), RecipeProvider.has(red_matter.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, volcanite_amulet.getItem()) + .pattern("LLL") + .pattern("DDD") + .pattern("LLL") + .define('D', dark_matter.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.lava_bucket), RecipeProvider.has(Items.lava_bucket)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, evertide_amulet.getItem()) + .pattern("WWW") + .pattern("DDD") + .pattern("WWW") + .define('D', dark_matter.getItem()) + .define('W', ItemTag.water_bucket) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.water_bucket), RecipeProvider.has(Items.water_bucket)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, chalk.getItem()) + .pattern("CD") + .pattern("D ") + .define('D', Items.DIORITE) + .define('C', Items.clay_ball) + .unlockedBy(RecipeProvider.getHasName(Items.DIORITE), RecipeProvider.has(Items.DIORITE)) + .unlockedBy(RecipeProvider.getHasName(Items.clay_ball), RecipeProvider.has(Items.clay_ball)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.COBBLESTONE) + .pattern("WPL") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.lava_bucket), RecipeProvider.has(Items.lava_bucket)) + .unlockedBy(RecipeProvider.getHasName(Items.water_bucket), RecipeProvider.has(Items.water_bucket)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.OBSIDIAN) + .pattern("PWL") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.lava_bucket), RecipeProvider.has(Items.lava_bucket)) + .unlockedBy(RecipeProvider.getHasName(Items.water_bucket), RecipeProvider.has(Items.water_bucket)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, Items.STONE) + .pattern("PLW") + .define('W', ItemTag.water_bucket) + .define('P', philosophers_stone.getItem()) + .define('L', ItemTag.lava_bucket) + .unlockedBy(RecipeProvider.getHasName(Items.lava_bucket), RecipeProvider.has(Items.lava_bucket)) + .unlockedBy(RecipeProvider.getHasName(Items.water_bucket), RecipeProvider.has(Items.water_bucket)) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, dark_matter.getItem()) + .pattern("MMM") + .pattern("MNM") + .pattern("MMM") + .define('M', mobius_fuel.getItem()) + .define('N', Items.NETHERITE_BLOCK) + .unlockedBy(RecipeProvider.getHasName(mobius_fuel.getItem()), RecipeProvider.has(mobius_fuel.getItem())) + .unlockedBy(RecipeProvider.getHasName(Items.NETHERITE_BLOCK), RecipeProvider.has(Items.NETHERITE_BLOCK)) + .save(recipeoutput); + ShapedRecipeBuilder.shaped(RecipeCategory.MISC, red_matter.getItem()) + .pattern("AAA") + .pattern("DDD") + .pattern("AAA") + .define('D', dark_matter.getItem()) + .define('A', aeternalis_fuel.getItem()) + .unlockedBy(RecipeProvider.getHasName(dark_matter.getItem()), RecipeProvider.has(dark_matter.getItem())) + .unlockedBy(RecipeProvider.getHasName(aeternalis_fuel.getItem()), RecipeProvider.has(aeternalis_fuel.getItem())) + .save(recipeoutput); + twoWayPhilStoneRecipe(Items.coal, Items.CHARCOAL, 1, recipeoutput); + philStoneRecipe(coal_coke.getItem(), 2, Items.coal, 2, recipeoutput); + twoWayPhilStoneRecipe(alchemical_coal.getItem(), coal_coke.getItem(), 8, recipeoutput); + twoWayPhilStoneRecipe(mobius_fuel.getItem(), alchemical_coal.getItem(), 8, recipeoutput); + twoWayPhilStoneRecipe(aeternalis_fuel.getItem(), mobius_fuel.getItem(), 8, recipeoutput); + + twoWayPhilStoneRecipe(Items.COPPER_INGOT, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tin_ingot")), 1, recipeoutput); + twoWayPhilStoneRecipe(Items.iron_ingot, Items.COPPER_INGOT, 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:aluminum_ingot")), Items.iron_ingot, 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:nickel_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:aluminum_ingot")), 2, recipeoutput); + + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:silver_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:lead_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.gold_ingot, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:silver_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:yellow_garnet_gem")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:red_garnet_gem")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), 6, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 6, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:peridot_gem")), 8, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:sapphire_gem")), 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 4, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:sapphire_gem")), 4, recipeoutput); + twoWayPhilStoneRecipe(Items.diamond, Items.gold_ingot, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.diamond,2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:ruby_gem")), 8, recipeoutput); + twoWayPhilStoneRecipe(Items.NETHERITE_SCRAP, Items.diamond, 4, recipeoutput); + + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:platinum_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:titanium_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.NETHERITE_INGOT, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:platinum_ingot")), 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tungsten_ingot")), Items.NETHERITE_INGOT, 2, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:iridium_ingot")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:tungsten_ingot")), 2, recipeoutput); + + philStoneRecipe(Items.flint, 3, Items.GRAVEL, 3, recipeoutput); + twoWayPhilStoneRecipe(Items.GRAVEL, 4, Items.COBBLESTONE, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.DIRT, 4, Items.SAND, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.GRAVEL, 8, Items.DIRT, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.COBBLESTONE, 8, Items.SAND, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.clay_ball, Items.STONE, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_COPPER, 2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_tin")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_COPPER, Items.CLAY, 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_IRON, Items.RAW_COPPER, 8, recipeoutput); + twoWayPhilStoneRecipe(BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_silver")), BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_lead")), 2, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_GOLD, 2, BuiltInRegistries.ITEM.get(new ResourceLocation("techreborn:raw_silver")), 4, recipeoutput); + twoWayPhilStoneRecipe(Items.RAW_GOLD, Items.RAW_IRON, 8, recipeoutput); + twoWayPhilStoneRecipe(Items.gunpowder, Items.emerald, 1, recipeoutput); + twoWayPhilStoneRecipe(Items.blaze_rod, Items.gunpowder, 2, recipeoutput); + twoWayPhilStoneRecipe(Items.ender_pearl, Items.blaze_rod, 2, recipeoutput); + + } + + public void twoWayPhilStoneRecipe(Item first, Item second, int count, RecipeOutput recipeoutput){ + twoWayPhilStoneRecipe(first, 1, second, count, recipeoutput); + } + + public void twoWayPhilStoneRecipe(Item first, int firstcount, Item second, int secondcount, RecipeOutput recipeoutput){ + philStoneRecipe(first, firstcount, second, secondcount, recipeoutput); + philStoneRecipe(second, secondcount, first, firstcount, recipeoutput); + } + + public void philStoneRecipe(Item output, int outputcount, Item input, int inputcount, RecipeOutput recipeoutput){ + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, outputcount) + .requires(philosophers_stone.getItem()) + .requires(input, inputcount) + .unlockedBy(RecipeProvider.getHasName(philosophers_stone.getItem()), RecipeProvider.has(philosophers_stone.getItem())) + .save(recipeoutput, new ResourceLocation(Alchemist.MODID, output +"_to_"+input)); + } +} \ No newline at end of file diff --git a/src/main/java_remapped/io/github/unix_supremacist/interfaces/AreaBox.java b/src/main/java_remapped/io/github/unix_supremacist/interfaces/AreaBox.java new file mode 100644 index 0000000..78b5d18 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/interfaces/AreaBox.java @@ -0,0 +1,38 @@ +package io.github.unix_supremacist.interfaces; + +import io.github.unix_supremacist.Alchemist; +import java.util.ArrayList; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumFacing; + +public interface AreaBox { + default ArrayList getArea(EnumFacing dir, ChunkCoordinates anchor, ChunkCoordinates negative, ChunkCoordinates positive){ + ArrayList blocks = new ArrayList<>(); + + for(int x = negative.getX(); x <= positive.getX(); x++) + for (int y = negative.getY(); y <= positive.getY(); y++) + for (int z = negative.getZ(); z <= positive.getZ(); z++) + blocks.add(anchor.offset(x, y, z)); + return blocks; + } + + default ArrayList getAreaFromFacing(EnumFacing dir, ChunkCoordinates anchor, int size, int depth){ + switch(dir) { + case SOUTH: + return getArea(dir, anchor, new ChunkCoordinates(-size, -size, -depth), new ChunkCoordinates(size, size, 0)); + case NORTH: + return getArea(dir, anchor, new ChunkCoordinates(-size, -size, 0), new ChunkCoordinates(size, size, depth)); + case EAST: + return getArea(dir, anchor, new ChunkCoordinates(-depth, -size, -size), new ChunkCoordinates(0, size, size)); + case WEST: + return getArea(dir, anchor, new ChunkCoordinates(0, -size, -size), new ChunkCoordinates(depth, size, size)); + case UP: + return getArea(dir, anchor, new ChunkCoordinates(-size, -depth, -size), new ChunkCoordinates(size, 0, size)); + case DOWN: + return getArea(dir, anchor, new ChunkCoordinates(-size, 0, -size), new ChunkCoordinates(size, depth, size)); + default: + Alchemist.LOGGER.error("HOW DID YOU CLICK A DIRECTION THAT ISN'T NORTH SOUTH EAST WEST UP OR DOWN"); + return null; + } + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/interfaces/Destroyer.java b/src/main/java_remapped/io/github/unix_supremacist/interfaces/Destroyer.java new file mode 100644 index 0000000..f7fcb65 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/interfaces/Destroyer.java @@ -0,0 +1,31 @@ +package io.github.unix_supremacist.interfaces; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.World; +import java.util.ArrayList; + +public interface Destroyer { + default void destroy(World level, ChunkCoordinates pos, EntityLivingBase entity){ + if(!level.isClientSide() && !(level.getBlockState(pos).getBlock().defaultDestroyTime() < 0)){ + if (entity instanceof EntityPlayer) + level.destroyBlock(pos, !((EntityPlayer) entity).isCreative()); + else + level.destroyBlock(pos, true); + } + } + + default InteractionResult destroyArea(World level, ArrayList blocks, EntityLivingBase entity){ + if(!level.isClientSide()){ + if(!blocks.isEmpty()){ + for (ChunkCoordinates b : blocks){ + destroy(level, b, entity); + } + return InteractionResult.SUCCESS; + } + } + return InteractionResult.PASS; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/interfaces/DurablityBar.java b/src/main/java_remapped/io/github/unix_supremacist/interfaces/DurablityBar.java new file mode 100644 index 0000000..2bb1be4 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/interfaces/DurablityBar.java @@ -0,0 +1,10 @@ +package io.github.unix_supremacist.interfaces; + +import net.minecraft.util.MathHelper; + +public interface DurablityBar { + default int getColor(int max, int current) { + float f = Math.max(0.0F, ((float)max - (float)current) / (float)max); + return MathHelper.hsvToRgb(f / 1.1F, 1.0F, 1.0F); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/interfaces/TransmuteEntity.java b/src/main/java_remapped/io/github/unix_supremacist/interfaces/TransmuteEntity.java new file mode 100644 index 0000000..3a93a5a --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/interfaces/TransmuteEntity.java @@ -0,0 +1,20 @@ +package io.github.unix_supremacist.interfaces; + +import io.github.unix_supremacist.content.AlchemistItems; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.item.ItemStack; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.World; + +public interface TransmuteEntity { + default InteractionResult transmuteEntity(EntityLivingBase entity, World level){ + if(entity instanceof EntityVillager){ + level.addFreshEntity(new EntityItem(level, entity.getPosition(0).getX(), entity.getPosition(0).getY(), entity.getPosition(0).getZ(), new ItemStack(AlchemistItems.philosophers_stone.getItem()))); + entity.kill(); + return InteractionResult.SUCCESS; + } + return InteractionResult.PASS; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/AbstractEmpowerableItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/AbstractEmpowerableItem.java new file mode 100644 index 0000000..578b397 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/AbstractEmpowerableItem.java @@ -0,0 +1,62 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class AbstractEmpowerableItem extends Item implements DurablityBar { + protected final int maxPower; + public AbstractEmpowerableItem(Properties properties, int maxPower) { + super(properties); + this.maxPower = maxPower; + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(this.maxPower, getPower(item)); + } + + @Override + public boolean isBarVisible(ItemStack item) { + return getPower(item) > 0; + } + + public int getPower(ItemStack item){ + if (item.getTagCompound() != null){ + return item.getTagCompound().getInteger("alchemist.empowered"); + } else { + item.setTagCompound(new NBTTagCompound()); + return 0; + } + } + + public void setPower(ItemStack item, int i){ + if (item.getTagCompound() != null){ + item.getTagCompound().setInteger("alchemist.empowered", i); + } else { + NBTTagCompound tag = new NBTTagCompound(); + tag.setInteger("alchemist.empowered", i); + item.setTagCompound(tag); + } + } + + public void empower(ItemStack item, EntityPlayer p){ + if(isBarVisible(item)) + setPower(item, getPower(item)-1); + else + setPower(item,maxPower-1); + } + + @Override + public int getBarWidth(ItemStack item) { + return Math.round(13.0F - (float)getPower(item) * 13.0F / (float)this.maxPower); + } + + @Override + public EnumRarity getRarity(ItemStack s){ + return EnumRarity.EPIC; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistBlockItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistBlockItem.java new file mode 100644 index 0000000..34af9c0 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistBlockItem.java @@ -0,0 +1,63 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.item.context.UseOnContext; + +import static io.github.unix_supremacist.content.AlchemistItems.chalk; + +public class AlchemistBlockItem extends BlockItem implements DurablityBar { + public AlchemistBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + InteractionResult interactionResult; + ItemStack item = context.getItemInHand(); + if(context.getLevel().getBlockState(context.getClickedPos().relative(context.getClickedFace())) == Blocks.LAVA.defaultBlockState() && item.getDamageValue() < this.getMaxDamage()){ + context.getLevel().setBlock(context.getClickedPos().relative(context.getClickedFace()), Blocks.air.defaultBlockState(), 0); + context.getItemInHand().setDamageValue(item.getDamageValue()+1); + interactionResult = InteractionResult.SUCCESS; + } else { + context.getItemInHand().grow(1); + interactionResult = this.place(new BlockPlaceContext(context)); + if(interactionResult == InteractionResult.FAIL) context.getItemInHand().shrink(1); + if (this.getMaxDamage() > 0) context.getItemInHand().hurtAndBreak(1, context.getPlayer(), livingEntity -> livingEntity.broadcastBreakEvent(EquipmentSlot.MAINHAND)); + } + + return interactionResult; + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(item.getMaxDamage(), item.getDamageValue()); + } + + public ItemStack getRecipeRemainder(ItemStack stack) { + if (this.getMaxDamage() > 0) stack.setDamageValue(stack.getDamageValue()-1); + if (stack.getDamageValue() == getMaxDamage()) stack = ItemStack.EMPTY; + return stack.copy(); + } + + @Override + public String getDescriptionId() { + return this.getOrCreateDescriptionId(); + } + + /*@Override + public boolean isValidRepairItem(ItemStack itemStack2, ItemStack itemStack) { + return itemStack.getItem() == Items.BLAZE_POWDER || super.isValidRepairItem(itemStack2, itemStack); + }*/ + + @Override + public EnumRarity getRarity(ItemStack s){ + return s.getItem()==chalk.getItem() ? EnumRarity.COMMON : EnumRarity.EPIC; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistDiggerItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistDiggerItem.java new file mode 100644 index 0000000..f309c73 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistDiggerItem.java @@ -0,0 +1,41 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import io.github.unix_supremacist.interfaces.DurablityBar; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; +import net.minecraft.tags.TagKey; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.block.state.BlockState; +import java.util.ArrayList; + +public class AlchemistDiggerItem extends DiggerItem implements AreaBox, Destroyer, DurablityBar { + public AlchemistDiggerItem(float f, float g, Tier tier, TagKey tagKey, Properties properties) { + super(f, g, tier, tagKey, properties); + } + + @Override + public boolean mineBlock(ItemStack itemStack, World level, BlockState state, ChunkCoordinates pos, EntityLivingBase entity) { + Vec3 look = entity.getLookVec(); + ArrayList blocks = getAreaFromFacing(EnumFacing.getNearest(look.getX(), look.getY(), look.getZ()), pos, 1, 0); + destroyArea(level, blocks, entity); + return super.mineBlock(itemStack, level, state, pos, entity); + } + + @Override + public int getBarColor(ItemStack item) { + return getColor(item.getMaxDamage(), item.getDamageValue()); + } + + @Override + public EnumRarity getRarity(ItemStack s){ + return EnumRarity.EPIC; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistHammerItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistHammerItem.java new file mode 100644 index 0000000..a70d837 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/AlchemistHammerItem.java @@ -0,0 +1,30 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.item.Tier; +import net.minecraft.world.level.block.state.BlockState; +import java.util.ArrayList; + +public class AlchemistHammerItem extends AlchemistDiggerItem implements AreaBox, Destroyer { + + public AlchemistHammerItem(Tier tier, int i, float f, Properties properties) { + super(i, f, tier, BlockTags.MINEABLE_WITH_PICKAXE, properties); + } + + @Override + public boolean mineBlock(ItemStack itemStack, World level, BlockState state, ChunkCoordinates pos, EntityLivingBase entity) { + Vec3 look = entity.getLookVec(); + EnumFacing dir = EnumFacing.getNearest(look.getX(), look.getY(), look.getZ()); + ArrayList blocks = getAreaFromFacing(dir, pos, 1, 0); + destroyArea(level, blocks, entity); + return super.mineBlock(itemStack, level, state, pos, entity); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/DestructionItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/DestructionItem.java new file mode 100644 index 0000000..39c44fc --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/DestructionItem.java @@ -0,0 +1,44 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.Destroyer; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.IChatComponent; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.context.UseOnContext; + +import java.util.ArrayList; + +public class DestructionItem extends AbstractEmpowerableItem implements AreaBox, Destroyer { + protected final int[] MODES; + private final int maxWidth; + private final int maxDepth; + private final int mult; + + public DestructionItem(Properties properties, int maxWidth, int maxDepth, int mult) { + super(properties, maxWidth * maxDepth); + this.maxWidth = maxWidth; + this.maxDepth = maxDepth; + this.mult = mult; + + MODES = new int[maxWidth * maxDepth * 2]; + for (int i = 0; i < maxPower; i++) { + MODES[i * 2] = i % maxWidth; + MODES[i * 2 + 1] = i / maxWidth; + } + } + + @Override + public void empower(ItemStack item, EntityPlayer p){ + super.empower(item, p); + p.displayClientMessage(IChatComponent.literal("Width: "+((maxWidth-1)*2-MODES[getPower(item)*2]*2+1)+" and Depth: "+((maxDepth-1-MODES[getPower(item)*2+1])*mult+1)), true); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ArrayList blocks = getAreaFromFacing(context.getClickedFace(), context.getClickedPos(), maxWidth-1-MODES[getPower(context.getItemInHand())*2], (maxDepth-1-MODES[getPower(context.getItemInHand())*2+1])*mult); + return destroyArea(context.getLevel(), blocks, context.getPlayer()); + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/GaleItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/GaleItem.java new file mode 100644 index 0000000..617e493 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/GaleItem.java @@ -0,0 +1,38 @@ +package io.github.unix_supremacist.item; + +import dev.emi.trinkets.api.SlotReference; +import dev.emi.trinkets.api.TrinketItem; +import io.github.ladysnake.pal.AbilitySource; +import io.github.ladysnake.pal.Pal; +import io.github.ladysnake.pal.VanillaAbilities; +import io.github.unix_supremacist.Alchemist; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; + +public class GaleItem extends TrinketItem { + public GaleItem(Properties properties) { + super(properties); + } + public static final AbilitySource gale_ability = Pal.getAbilitySource(Alchemist.MODID, "swiftwolfs_rending_gale"); + + @Override + public void onEquip(ItemStack stack, SlotReference slot, EntityLivingBase entity) { + if (!entity.level().isClientSide()) + if (entity instanceof EntityPlayer) + gale_ability.grantTo((EntityPlayer) entity, VanillaAbilities.ALLOW_FLYING); + } + + @Override + public void onUnequip(ItemStack stack, SlotReference slot, EntityLivingBase entity) { + if (!entity.level().isClientSide()) + if (entity instanceof EntityPlayer) + gale_ability.revokeFrom((EntityPlayer) entity, VanillaAbilities.ALLOW_FLYING); + } + + @Override + public EnumRarity getRarity(ItemStack s){ + return EnumRarity.EPIC; + } +} diff --git a/src/main/java_remapped/io/github/unix_supremacist/item/PhilosophersStoneItem.java b/src/main/java_remapped/io/github/unix_supremacist/item/PhilosophersStoneItem.java new file mode 100644 index 0000000..5283600 --- /dev/null +++ b/src/main/java_remapped/io/github/unix_supremacist/item/PhilosophersStoneItem.java @@ -0,0 +1,60 @@ +package io.github.unix_supremacist.item; + +import io.github.unix_supremacist.data.BlockTag; +import io.github.unix_supremacist.interfaces.AreaBox; +import io.github.unix_supremacist.interfaces.TransmuteEntity; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.context.UseOnContext; +import java.util.ArrayList; + +public class PhilosophersStoneItem extends AbstractEmpowerableItem implements AreaBox, TransmuteEntity { + public PhilosophersStoneItem(Properties properties) { + super(properties, 3); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ArrayList blocks = getAreaFromFacing(context.getClickedFace(), context.getClickedPos(), 2 - getPower(context.getItemInHand()), 0); + ArrayList exchange = new ArrayList<>(); + InteractionResult result = InteractionResult.PASS; + for (ArrayList e : BlockTag.exchanges){ + if (e.contains(context.getLevel().getBlockState(context.getClickedPos()).getBlock())){ + exchange = e; + result = InteractionResult.SUCCESS; + break; + } + } + if(!blocks.isEmpty()){ + if (!context.getLevel().isClientSide()) for (ChunkCoordinates b : blocks){ + Block block = context.getLevel().getBlockState(b).getBlock(); + if (exchange.contains(block)) { + Block newBlock; + if(context.getPlayer().isSneaking()) + newBlock = BlockTag.getBlockWithOffset(block, exchange,-1); + else + newBlock = BlockTag.getBlockWithOffset(block, exchange,+1); + context.getLevel().setBlock(b, newBlock.defaultBlockState(), 3); + ItemStack stack = context.getPlayer().getItemInHand(context.getHand()).copy(); + context.getPlayer().setItemInHand(context.getHand(), stack); + } + } + } + + return result; + } + + public InteractionResult interactLivingEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, InteractionHand hand) { + return transmuteEntity(entity, player.level()); + } + + @Override + public ItemStack getRecipeRemainder(ItemStack stack) { + return stack.copy(); + } +} diff --git a/src/main/resources/assets/alchemist/blockstates/transmutation_circle.json b/src/main/resources/assets/alchemist/blockstates/transmutation_circle.json new file mode 100644 index 0000000..f82c943 --- /dev/null +++ b/src/main/resources/assets/alchemist/blockstates/transmutation_circle.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "alchemist:block/transmutation_circle" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/icon.png b/src/main/resources/assets/alchemist/icon.png new file mode 100644 index 0000000..eb6723d Binary files /dev/null and b/src/main/resources/assets/alchemist/icon.png differ diff --git a/src/main/resources/assets/alchemist/models/block/transmutation_circle.bbmodel b/src/main/resources/assets/alchemist/models/block/transmutation_circle.bbmodel new file mode 100644 index 0000000..a662353 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/block/transmutation_circle.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.5","model_format":"java_block","box_uv":false},"name":"transmutation_circle","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":48,"height":48},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[0,0.1,0],"to":[16,0.1,16],"autouv":0,"color":7,"origin":[0,0,0],"uv_offset":[0,16],"faces":{"north":{"uv":[72,120,144,120]},"east":{"uv":[0,120,72,120]},"south":{"uv":[216,120,288,120]},"west":{"uv":[144,120,216,120]},"up":{"uv":[48,48,0,0],"texture":0},"down":{"uv":[216,48,144,120]}},"type":"cube","uuid":"97a5efc1-d401-c7ca-f644-8161c0f98515"}],"outliner":["97a5efc1-d401-c7ca-f644-8161c0f98515"],"textures":[{"path":"/home/unix/src/Alchemist/src/main/resources/assets/alchemist/textures/block/transmutation_circle.png","name":"transmutation_circle.png","folder":"block","namespace":"alchemist","id":"0","particle":true,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"c8960306-1d2e-0de1-a324-b731b97907ba","relative_path":"../../../textures/block/transmutation_circle.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAIdJREFUOE+tU0EOgDAIcwc/4dn/v8izn/CgYUlJbWDEuF22lFLKAm0JznFed4Tv29oUfwGcqOQs5gJGsCS9reIo1gWiJOB2sxvlugCIIEQCnAx+txxVYWzEKXvOnOG/XEAtaytIUGfzBKqKWfz/J1a9a8+YCTiaM0jVuHL/zLX3vGXiNf2yzg+pqhqIRbVzBwAAAABJRU5ErkJggg=="}]} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/block/transmutation_circle.json b/src/main/resources/assets/alchemist/models/block/transmutation_circle.json new file mode 100644 index 0000000..e157249 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/block/transmutation_circle.json @@ -0,0 +1,22 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [48, 48], + "textures": { + "0": "alchemist:block/transmutation_circle", + "particle": "alchemist:block/transmutation_circle" + }, + "elements": [ + { + "from": [0, 0.1, 0], + "to": [16, 0.1, 16], + "faces": { + "north": {"uv": [24, 40, 48, 40], "texture": "#missing"}, + "east": {"uv": [0, 40, 24, 40], "texture": "#missing"}, + "south": {"uv": [72, 40, 96, 40], "texture": "#missing"}, + "west": {"uv": [48, 40, 72, 40], "texture": "#missing"}, + "up": {"uv": [16, 16, 0, 0], "texture": "#0"}, + "down": {"uv": [72, 16, 48, 40], "texture": "#missing"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/aeternalis_fuel.json b/src/main/resources/assets/alchemist/models/item/aeternalis_fuel.json new file mode 100644 index 0000000..7773e1b --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/aeternalis_fuel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/aeternalis_fuel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/alchemical_coal.json b/src/main/resources/assets/alchemist/models/item/alchemical_coal.json new file mode 100644 index 0000000..aa98066 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/alchemical_coal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/alchemical_coal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/catalytic_lens.json b/src/main/resources/assets/alchemist/models/item/catalytic_lens.json new file mode 100644 index 0000000..8aab774 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/catalytic_lens.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/catalytic_lens" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/chalk.json b/src/main/resources/assets/alchemist/models/item/chalk.json new file mode 100644 index 0000000..b63c9c7 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/chalk.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/chalk" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/coal_coke.json b/src/main/resources/assets/alchemist/models/item/coal_coke.json new file mode 100644 index 0000000..dd600de --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/coal_coke.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/coal_coke" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/dark_matter.json b/src/main/resources/assets/alchemist/models/item/dark_matter.json new file mode 100644 index 0000000..e592fb0 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/dark_matter.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/dark_matter" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/dark_matter_hammer.json b/src/main/resources/assets/alchemist/models/item/dark_matter_hammer.json new file mode 100644 index 0000000..465c872 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/dark_matter_hammer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/dark_matter_hammer" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/destruction_catalyst.json b/src/main/resources/assets/alchemist/models/item/destruction_catalyst.json new file mode 100644 index 0000000..b04ebf2 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/destruction_catalyst.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/destruction_catalyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/evertide_amulet.json b/src/main/resources/assets/alchemist/models/item/evertide_amulet.json new file mode 100644 index 0000000..5cc80f6 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/evertide_amulet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/evertide_amulet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/iron_band.json b/src/main/resources/assets/alchemist/models/item/iron_band.json new file mode 100644 index 0000000..53a07a0 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/iron_band.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/iron_band" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/mobius_fuel.json b/src/main/resources/assets/alchemist/models/item/mobius_fuel.json new file mode 100644 index 0000000..1c2214a --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/mobius_fuel.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/mobius_fuel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/philosophers_stone.json b/src/main/resources/assets/alchemist/models/item/philosophers_stone.json new file mode 100644 index 0000000..ae81651 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/philosophers_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/philosophers_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/red_matter.json b/src/main/resources/assets/alchemist/models/item/red_matter.json new file mode 100644 index 0000000..b2262ab --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/red_matter.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/red_matter" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/swiftwolfs_rending_gale.json b/src/main/resources/assets/alchemist/models/item/swiftwolfs_rending_gale.json new file mode 100644 index 0000000..c607996 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/swiftwolfs_rending_gale.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/swiftwolfs_rending_gale" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/models/item/volcanite_amulet.json b/src/main/resources/assets/alchemist/models/item/volcanite_amulet.json new file mode 100644 index 0000000..f9437b8 --- /dev/null +++ b/src/main/resources/assets/alchemist/models/item/volcanite_amulet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "alchemist:item/volcanite_amulet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemist/textures/block/transmutation_circle.png b/src/main/resources/assets/alchemist/textures/block/transmutation_circle.png new file mode 100644 index 0000000..6567b73 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/block/transmutation_circle.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/aeternalis_fuel.png b/src/main/resources/assets/alchemist/textures/item/aeternalis_fuel.png new file mode 100644 index 0000000..9188b3e Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/aeternalis_fuel.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/alchemical_coal.png b/src/main/resources/assets/alchemist/textures/item/alchemical_coal.png new file mode 100644 index 0000000..a6a6451 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/alchemical_coal.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/catalytic_lens.png b/src/main/resources/assets/alchemist/textures/item/catalytic_lens.png new file mode 100644 index 0000000..e30c893 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/catalytic_lens.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/chalk.png b/src/main/resources/assets/alchemist/textures/item/chalk.png new file mode 100644 index 0000000..e23d9ce Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/chalk.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/coal_coke.png b/src/main/resources/assets/alchemist/textures/item/coal_coke.png new file mode 100644 index 0000000..dc6b9aa Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/coal_coke.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/dark_matter.png b/src/main/resources/assets/alchemist/textures/item/dark_matter.png new file mode 100644 index 0000000..f8398b2 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/dark_matter.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/dark_matter_hammer.png b/src/main/resources/assets/alchemist/textures/item/dark_matter_hammer.png new file mode 100644 index 0000000..3af012d Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/dark_matter_hammer.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/destruction_catalyst.png b/src/main/resources/assets/alchemist/textures/item/destruction_catalyst.png new file mode 100644 index 0000000..7cfb5dd Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/destruction_catalyst.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/evertide_amulet.png b/src/main/resources/assets/alchemist/textures/item/evertide_amulet.png new file mode 100644 index 0000000..3f6d6b4 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/evertide_amulet.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/iron_band.png b/src/main/resources/assets/alchemist/textures/item/iron_band.png new file mode 100644 index 0000000..06945db Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/iron_band.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/mobius_fuel.png b/src/main/resources/assets/alchemist/textures/item/mobius_fuel.png new file mode 100644 index 0000000..1444d29 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/mobius_fuel.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/philosophers_stone.png b/src/main/resources/assets/alchemist/textures/item/philosophers_stone.png new file mode 100644 index 0000000..1ce336e Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/philosophers_stone.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/red_matter.png b/src/main/resources/assets/alchemist/textures/item/red_matter.png new file mode 100644 index 0000000..eb6723d Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/red_matter.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/swiftwolfs_rending_gale.png b/src/main/resources/assets/alchemist/textures/item/swiftwolfs_rending_gale.png new file mode 100644 index 0000000..c07c078 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/swiftwolfs_rending_gale.png differ diff --git a/src/main/resources/assets/alchemist/textures/item/volcanite_amulet.png b/src/main/resources/assets/alchemist/textures/item/volcanite_amulet.png new file mode 100644 index 0000000..bdba301 Binary files /dev/null and b/src/main/resources/assets/alchemist/textures/item/volcanite_amulet.png differ diff --git a/src/main/resources/assets/spritesheet.ase b/src/main/resources/assets/spritesheet.ase new file mode 100644 index 0000000..f777666 Binary files /dev/null and b/src/main/resources/assets/spritesheet.ase differ diff --git a/src/main/resources/data/trinkets/entities/alchemist.json b/src/main/resources/data/trinkets/entities/alchemist.json new file mode 100644 index 0000000..dbb2108 --- /dev/null +++ b/src/main/resources/data/trinkets/entities/alchemist.json @@ -0,0 +1,9 @@ +{ + "entities": [ + "player" + ], + "slots": [ + "hand/ring", + "offhand/ring" + ] +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..ba681e3 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,39 @@ +{ + "schemaVersion": 1, + "id": "alchemist", + "version": "${version}", + "name": "Alchemist", + "description": "A mod about Alchemy!", + "authors": [ + "unix-supremacist" + ], + "contributors": [ + "Nolij" + ], + "contact": { + "homepage": "https://unix-supremacist.github.io", + "sources": "https://github.com/unix-supremacist/alchemist" + }, + "license": "OSL-3.0", + "icon": "assets/alchemist/icon.png", + "environment": "*", + "entrypoints": { + "main": [ + "io.github.unix_supremacist.Entrypoint" + ], + "client": [ + "io.github.unix_supremacist.AlchemistClient" + ], + "fabric-datagen": [ + "io.github.unix_supremacist.data.Datagen" + ] + }, + "depends": { + "fabricloader": ">=0.15.0", + "minecraft": ">=1.20", + "java": ">=17", + "fabric-api": "*", + "trinkets": "*", + "playerabilitylib": "*" + } +} \ No newline at end of file diff --git a/transmutation_circle.png b/transmutation_circle.png new file mode 100644 index 0000000..72d10c0 Binary files /dev/null and b/transmutation_circle.png differ