diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9338c8e --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run + +*.un~ +libs diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d16746c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic", + "java.compile.nullAnalysis.mode": "automatic", + "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable" +} \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..b671f0b --- /dev/null +++ b/CHANGELOG @@ -0,0 +1 @@ +# Changes diff --git a/README.md b/README.md index 3a3b5b6..80999e2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1 @@ -# faithful-origins - -new origins for celestia \ No newline at end of file +# faithful origins \ No newline at end of file diff --git a/TODO b/TODO new file mode 100644 index 0000000..e69de29 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..937531e --- /dev/null +++ b/build.gradle @@ -0,0 +1,124 @@ +plugins { + id 'fabric-loom' version '1.10.1' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_17 +targetCompatibility = JavaVersion.VERSION_17 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +repositories { + mavenLocal() + maven { + name "cloth config" + url "https://maven.shedaniel.me" + } + maven { + name "mod menu" + url "https://maven.terraformersmc.com" + } + maven { + name "playerabilitylib" + url "https://maven.ladysnake.org/releases" + } + maven { + name "reach entity attributes" + url "https://maven.jamieswhiteshirt.com/libs-release" + } + maven { + name "jitpack" + url "https://jitpack.io" + } + maven { + name = "Up-Mods" + url = "https://maven.uuid.gg/releases" + } + maven { + name = "JourneyMap" + url = "https://jm.gserv.me/repository/maven-public" + } + maven { + name = "TeamResourceful" + url = "https://maven.teamresourceful.com/repository/maven-releases" + } + +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings loom.layered { + // officialMojangMappings() + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + // parchment("org.parchmentmc.data:parchment-${parchment_minecraft}:${parchment_mappings}@zip") + } + + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" + + modImplementation "com.github.apace100:origins-fabric:${project.origins_version}" + modImplementation "com.github.apace100:apoli:${project.apoli_version}" + modImplementation "com.github.apace100:calio:${project.calio_version}" + modApi("com.github.Virtuoel:Pehkui:${pehkui_version}", { + exclude group: "net.fabricmc.fabric-api" + }) + + modCompileOnly "dev.emi:emi-fabric:${emi_version}:api" + modLocalRuntime "dev.emi:emi-fabric:${emi_version}" + + modImplementation "dev.cammiescorner.icarus:Icarus-Fabric:${project.icarus_version}" +} + +processResources { + inputs.property "version", project.version + + filteringCharset = "UTF-8" + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +// ensure that the encoding is set to UTF-8, no matter what the system default is +// this fixes some edge cases with special characters not displaying correctly +// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html +tasks.withType(JavaCompile) { + options.encoding = "UTF-8" +} + +// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task +// if it is present. +// If you remove this task, sources will not be generated. +// task sourcesJar(type: Jar, dependsOn: classes) { +// classifier = "sources" +// from sourceSets.main.allSource +// } + +jar { + from "LICENSE" +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + // add all the jars that should be included when publishing to maven + artifact(remapJar) { + builtBy remapJar + } + // artifact(sourcesJar) { + // builtBy remapSourcesJar + // } + } + } + + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..1b8aa71 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,23 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx2G + +# Fabric Properties +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.10 +loader_version=0.16.10 + +# Mod Properties +mod_version=1.20.1-0.0.1 +maven_group=com.smithy +archives_base_name=FaithfulOrigins + +# Dependencies +fabric_version=0.92.3+1.20.1 +modmenu_version=7.2.2 +pehkui_version=3.7.8 +origins_version=v1.10.0 +apoli_version=2.9.0 +icarus_version=2.11.0 +emi_version=1.1.22+1.20.1 +calio_version=v1.11.0 + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..62d4c05 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..d6e308a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..fbd7c51 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..5093609 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..27e3d10 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + mavenCentral() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/com/smithy/terraoriginum/TerraOriginum.java b/src/main/java/com/smithy/terraoriginum/TerraOriginum.java new file mode 100644 index 0000000..8ff4bb4 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/TerraOriginum.java @@ -0,0 +1,45 @@ +package com.smithy.terraoriginum; + +import com.smithy.terraoriginum.blocks.CottonCropBlock; +import com.smithy.terraoriginum.blocks.Crucifix; +import com.smithy.terraoriginum.items.*; +import com.smithy.terraoriginum.registry.ModEnchantments; +import com.smithy.terraoriginum.registry.ModPowers; +import com.smithy.terraoriginum.util.LootTableModifiers; + +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +// import net.minecraft.item.ItemGroups; +import net.minecraft.item.ItemGroups; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class TerraOriginum implements ModInitializer { + public static final String MOD_ID = "terraoriginum"; + + public static final Logger LOGGER = LogManager.getLogger(MOD_ID); + + @Override + public void onInitialize() { + Umbrella.registerItems(); + IconItems.register(); + ModEnchantments.register(); + Crucifix.register(); + CottonCropBlock.register(); + CottonItems.register(); + SunTotem.register(); + GhostlyItems.register(); + GhostlyArmourItems.register(); + ModPowers.register(); + + LootTableModifiers.modifyLootTables(); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS).register((content) -> content.add(Umbrella.UMBRELLA)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS).register((content) -> content.add(SunTotem.SUN_TOTEM)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.FUNCTIONAL).register((content) -> content.add(Crucifix.CRUCIFIX)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.NATURAL).register((content) -> content.add(CottonItems.COTTON_SEEDS)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register((content) -> content.add(CottonItems.COTTON_BALL)); + LOGGER.info("man this Origins is " + MOD_ID); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/blocks/CottonCropBlock.java b/src/main/java/com/smithy/terraoriginum/blocks/CottonCropBlock.java new file mode 100644 index 0000000..2122c46 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/blocks/CottonCropBlock.java @@ -0,0 +1,49 @@ +package com.smithy.terraoriginum.blocks; + +import com.smithy.terraoriginum.items.CottonItems; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.CropBlock; +import net.minecraft.block.ShapeContext; +import net.minecraft.item.ItemConvertible; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; + +public class CottonCropBlock extends CropBlock{ + + private static final VoxelShape[] AGE_TO_SHAPE = new VoxelShape[]{Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 3.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 4.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 5.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 6.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 7.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 9.0D, 16.0D) + }; + + public CottonCropBlock(AbstractBlock.Settings settings) { + super(settings); + } + + public ItemConvertible getSeedsItem() { + return CottonItems.COTTON_SEEDS; + } + + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return AGE_TO_SHAPE[(Integer)state.get(this.getAgeProperty())]; + } + + public static final CropBlock COTTON_CROP_BLOCK = new CropBlock(AbstractBlock.Settings.create().nonOpaque().noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)); + + public static void register() { + Registry.register(Registries.BLOCK, new Identifier("terraoriginum", "cotton_crop_block"), COTTON_CROP_BLOCK); + } + + +} diff --git a/src/main/java/com/smithy/terraoriginum/blocks/Crucifix.java b/src/main/java/com/smithy/terraoriginum/blocks/Crucifix.java new file mode 100644 index 0000000..926d49e --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/blocks/Crucifix.java @@ -0,0 +1,22 @@ +package com.smithy.terraoriginum.blocks; + +import com.smithy.terraoriginum.TerraOriginum; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class Crucifix { + + public static final Block CRUCIFIX = new CrucifixClass(FabricBlockSettings.create().strength(5.5f, 4.8f).requiresTool()); + + public static void register() { + // Registry.register(Registries.BLOCK, new Identifier(TerraOriginum.MOD_ID, "crucifix"), new BlockItem(CRUCIFIX, new FabricItemSettings())); + // Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "crucifix"), CRUCIFIX); + Registry.register(Registries.BLOCK, new Identifier(TerraOriginum.MOD_ID, "crucifix"), CRUCIFIX); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "crucifix"), new BlockItem(CRUCIFIX, new Item.Settings())); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/blocks/CrucifixClass.java b/src/main/java/com/smithy/terraoriginum/blocks/CrucifixClass.java new file mode 100644 index 0000000..92798de --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/blocks/CrucifixClass.java @@ -0,0 +1,28 @@ +package com.smithy.terraoriginum.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.ShapeContext; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; + +public class CrucifixClass extends Block { + + public CrucifixClass(Settings properties) { + super(properties); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + VoxelShape shape = VoxelShapes.empty(); + shape = VoxelShapes.union(shape, VoxelShapes.cuboid(0.375, 0, 0.375, 0.5625, 0.75, 0.5625)); + shape = VoxelShapes.union(shape, VoxelShapes.cuboid(0.5625, 0.375, 0.375, 0.75, 0.5625, 0.5625)); + shape = VoxelShapes.union(shape, VoxelShapes.cuboid(0.1875, 0.375, 0.375, 0.375, 0.5625, 0.5625)); + + return shape; + } + + +} diff --git a/src/main/java/com/smithy/terraoriginum/client/LayerRenderer.java b/src/main/java/com/smithy/terraoriginum/client/LayerRenderer.java new file mode 100644 index 0000000..cd6c2b3 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/client/LayerRenderer.java @@ -0,0 +1,17 @@ +package com.smithy.terraoriginum.client; + +import com.smithy.terraoriginum.blocks.CottonCropBlock; +import com.smithy.terraoriginum.items.Umbrella; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.minecraft.client.render.RenderLayer; + +public class LayerRenderer implements ClientModInitializer { + + @Override + public void onInitializeClient() { + Umbrella.registerRenderLayers(); + BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), CottonCropBlock.COTTON_CROP_BLOCK); + } + +} diff --git a/src/main/java/com/smithy/terraoriginum/client/TerraKeybinds.java b/src/main/java/com/smithy/terraoriginum/client/TerraKeybinds.java new file mode 100644 index 0000000..e1539d6 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/client/TerraKeybinds.java @@ -0,0 +1,25 @@ +package com.smithy.terraoriginum.client; + +import io.github.apace100.apoli.ApoliClient; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import org.lwjgl.glfw.GLFW; + +import java.util.List; + +public class TerraKeybinds implements ClientModInitializer { + + public List keys = List.of("ternary","quaternary","quinary","senary","septenary","octonary","nonary","denary"); + + @Override + public void onInitializeClient() { + for(String key : keys) { + KeyBinding binding = new KeyBinding("key.origins."+key+"_active", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_UNKNOWN, "category.origins"); + ApoliClient.registerPowerKeybinding(binding.getTranslationKey(), binding); + ApoliClient.registerPowerKeybinding(key, binding); + KeyBindingHelper.registerKeyBinding(binding); + } + } +} diff --git a/src/main/java/com/smithy/terraoriginum/client/TerraOriginumClient.java b/src/main/java/com/smithy/terraoriginum/client/TerraOriginumClient.java new file mode 100644 index 0000000..58764a9 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/client/TerraOriginumClient.java @@ -0,0 +1,13 @@ +package com.smithy.terraoriginum.client; + +import net.fabricmc.api.ClientModInitializer; + +public class TerraOriginumClient implements ClientModInitializer { + + + @Override + public void onInitializeClient() { + + + } +} diff --git a/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourModel.java b/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourModel.java new file mode 100644 index 0000000..1c1cef1 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourModel.java @@ -0,0 +1,23 @@ +package com.smithy.terraoriginum.client.armour; + +import com.smithy.terraoriginum.items.GhostlyArmour; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.model.GeoModel; + +public class GhostlyArmourModel extends GeoModel { + + @Override + public Identifier getModelResource(GhostlyArmour animatable) { + return new Identifier("terraoriginum", "geo/ghostly_armour.geo.json"); + } + + @Override + public Identifier getTextureResource(GhostlyArmour animatable) { + return new Identifier("terraoriginum", "textures/models/armor/ghost_armour_model_texture"); + } + + @Override + public Identifier getAnimationResource(GhostlyArmour animatable) { + return null; + } +} diff --git a/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourRenderer.java b/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourRenderer.java new file mode 100644 index 0000000..bb702da --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/client/armour/GhostlyArmourRenderer.java @@ -0,0 +1,16 @@ +package com.smithy.terraoriginum.client.armour; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.items.GhostlyArmour; +import net.minecraft.util.Identifier; +import software.bernie.geckolib.GeckoLib; +import software.bernie.geckolib.model.DefaultedItemGeoModel; +import software.bernie.geckolib.renderer.GeoArmorRenderer; + +public class GhostlyArmourRenderer extends GeoArmorRenderer { + + public GhostlyArmourRenderer() { + super(new DefaultedItemGeoModel<>(new Identifier(TerraOriginum.MOD_ID, "armor/ghost_armour"))); + } + +} diff --git a/src/main/java/com/smithy/terraoriginum/customMaterials/RobesMaterial.java b/src/main/java/com/smithy/terraoriginum/customMaterials/RobesMaterial.java new file mode 100644 index 0000000..ac45871 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/customMaterials/RobesMaterial.java @@ -0,0 +1,89 @@ +package com.smithy.terraoriginum.customMaterials; + +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.recipe.Ingredient; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; + +import java.util.function.Supplier; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.items.CottonItems; + +public enum RobesMaterial implements ArmorMaterial { + ROBES("robes", 42, new int[] { 4, 9, 7, 4 }, 19, + SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE, 5, 0.1f, () -> Ingredient.ofItems(CottonItems.COTTON_BALL)); + + private final String name; + private final int durabilityMultiplier; + private final int[] protectionAmounts; + private final int enchantability; + private final SoundEvent equipSound; + private final float toughness; + private final float knockbackResistance; + private final Supplier repairIngredient; + + private static final int[] BASE_DURABILITY = { 11, 16, 15, 13 }; + + RobesMaterial( + String name, + int durabilityMultiplier, + int[] protectionAmounts, + int enchantability, + SoundEvent equipSound, + float toughness, + float knockbackResistance, + Supplier repairIngredient + ) { + + this.name = name; + this.durabilityMultiplier = durabilityMultiplier; + this.protectionAmounts = protectionAmounts; + this.enchantability = enchantability; + this.equipSound = equipSound; + this.toughness = toughness; + this.knockbackResistance = knockbackResistance; + this.repairIngredient = repairIngredient; + } + + @Override + public int getDurability(ArmorItem.Type type) { + return BASE_DURABILITY[type.ordinal()] * this.durabilityMultiplier; + } + + @Override + public int getProtection(ArmorItem.Type type) { + return protectionAmounts[type.ordinal()]; + } + + @Override + public int getEnchantability() { + return this.enchantability; + } + + @Override + public SoundEvent getEquipSound() { + return this.equipSound; + } + + @Override + public Ingredient getRepairIngredient() { + return this.repairIngredient.get(); + } + + @Override + public String getName() { + return TerraOriginum.MOD_ID + ":" + this.name; + } + + @Override + public float getToughness() { + return this.toughness; + } + + @Override + public float getKnockbackResistance() { + return this.knockbackResistance; + } +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/enchantment/LightProtectionEnchantment.java b/src/main/java/com/smithy/terraoriginum/enchantment/LightProtectionEnchantment.java new file mode 100644 index 0000000..1be3552 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/enchantment/LightProtectionEnchantment.java @@ -0,0 +1,39 @@ +package com.smithy.terraoriginum.enchantment; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentTarget; +import net.minecraft.enchantment.ProtectionEnchantment; +import net.minecraft.entity.EquipmentSlot; + +public class LightProtectionEnchantment extends Enchantment{ + + public LightProtectionEnchantment(Rarity weight, EnchantmentTarget type, EquipmentSlot[] slotTypes) { + super(weight, type, slotTypes); + } + + public int getMinPower(int level) { + return 8 + level * 5; + } + + public int getMaxPower(int level) { + return this.getMinPower(level) + 8; + } + + public boolean isTreasure() { + return true; + } + + public int getMaxLevel() { + return 1; + } + + @Override + protected boolean canAccept(Enchantment other) { + if(other == this || ((other instanceof ProtectionEnchantment && !(((ProtectionEnchantment)other).protectionType == ProtectionEnchantment.Type.ALL)))) { + return false; + } + return super.canAccept(other); + } + + +} diff --git a/src/main/java/com/smithy/terraoriginum/enchantment/SunProtectionEnchantment.java b/src/main/java/com/smithy/terraoriginum/enchantment/SunProtectionEnchantment.java new file mode 100644 index 0000000..80d6055 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/enchantment/SunProtectionEnchantment.java @@ -0,0 +1,39 @@ +package com.smithy.terraoriginum.enchantment; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentTarget; +import net.minecraft.enchantment.ProtectionEnchantment; +import net.minecraft.entity.EquipmentSlot; + +public class SunProtectionEnchantment extends Enchantment { + + public SunProtectionEnchantment(Rarity weight, EnchantmentTarget type, EquipmentSlot[] slotTypes) { + super(weight, type, slotTypes); + } + + public int getMinPower(int level) { + return 8 + level * 5; + } + + public int getMaxPower(int level) { + return this.getMinPower(level) + 8; + } + + public boolean isTreasure() { + return true; + } + + public int getMaxLevel() { + return 4; + } + + @Override + protected boolean canAccept(Enchantment other) { + if(other == this || ((other instanceof ProtectionEnchantment && !(((ProtectionEnchantment)other).protectionType == ProtectionEnchantment.Type.ALL)))) { + return true; // true because its somehow incompatible with every other protection, except protection + } + return super.canAccept(other); + } + + +} diff --git a/src/main/java/com/smithy/terraoriginum/items/CottonItems.java b/src/main/java/com/smithy/terraoriginum/items/CottonItems.java new file mode 100644 index 0000000..770d003 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/CottonItems.java @@ -0,0 +1,19 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.blocks.CottonCropBlock; +import net.minecraft.item.AliasedBlockItem; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class CottonItems { + + public static final Item COTTON_SEEDS = new AliasedBlockItem(CottonCropBlock.COTTON_CROP_BLOCK, new Item.Settings()); + public static final Item COTTON_BALL = new Item(new Item.Settings()); + + public static void register() { + Registry.register(Registries.ITEM, new Identifier("terraoriginum", "cotton_seeds"), COTTON_SEEDS); + Registry.register(Registries.ITEM, new Identifier("terraoriginum", "cotton_ball"), COTTON_BALL); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/items/GhostlyArmour.java b/src/main/java/com/smithy/terraoriginum/items/GhostlyArmour.java new file mode 100644 index 0000000..532d866 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/GhostlyArmour.java @@ -0,0 +1,108 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.client.armour.GhostlyArmourRenderer; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import net.minecraft.client.render.entity.model.BipedEntityModel; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.decoration.ArmorStandEntity; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import software.bernie.example.client.renderer.armor.GeckoArmorRenderer; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.RenderProvider; +import software.bernie.geckolib.constant.DataTickets; +import software.bernie.geckolib.constant.DefaultAnimations; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.renderer.GeoArmorRenderer; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.Set; +import java.util.function.Consumer; +import java.util.function.Supplier; + +public class GhostlyArmour extends ArmorItem implements GeoItem { + + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + private final Supplier renderProvider = GeoItem.makeRenderer(this); + + public GhostlyArmour(ArmorMaterial armorMaterial, ArmorItem.Type type, Settings properties) { + super(armorMaterial, type, properties); + } + + // Create our armor model/renderer for Fabric and return it + @Override + public void createRenderer(Consumer consumer) { + consumer.accept(new RenderProvider() { + private GeoArmorRenderer renderer; + + @Override + public BipedEntityModel getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, BipedEntityModel original) { + if (this.renderer == null) + this.renderer = new GhostlyArmourRenderer(); + + // This prepares our GeoArmorRenderer for the current render frame. + // These parameters may be null however, so we don't do anything further with them + this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original); + + return this.renderer; + } + }); + } + + @Override + public Supplier getRenderProvider() { + return this.renderProvider; + } + + // Let's add our animation controller + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, 20, state -> { + // Apply our generic idle animation. + // Whether it plays or not is decided down below + + // Let's gather some data from the state to use below + // This is the entity that is currently wearing/holding the item + Entity entity = state.getData(DataTickets.ENTITY); + + // We'll just have ArmorStands always animate, so we can return here + if (entity instanceof ArmorStandEntity) + return PlayState.CONTINUE; + + // For this example, we only want the animation to play if the entity is wearing all pieces of the armor + // Let's collect the armor pieces the entity is currently wearing + Set wornArmor = new ObjectOpenHashSet<>(); + + for (ItemStack stack : entity.getArmorItems()) { + // We can stop immediately if any of the slots are empty + if (stack.isEmpty()) + return PlayState.STOP; + + wornArmor.add(stack.getItem()); + } + + // Check each of the pieces match our set + boolean isFullSet = wornArmor.containsAll(ObjectArrayList.of( + GhostlyArmourItems.GHOSTLY_BOOTS, + GhostlyArmourItems.GHOSTLY_LEGGING, + GhostlyArmourItems.GHOSTLY_CHESTPLATE, + GhostlyArmourItems.GHOSTLY_HELMET)); + + // Play the animation if the full set is being worn, otherwise stop + return isFullSet ? PlayState.CONTINUE : PlayState.STOP; + })); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } +} diff --git a/src/main/java/com/smithy/terraoriginum/items/GhostlyArmourItems.java b/src/main/java/com/smithy/terraoriginum/items/GhostlyArmourItems.java new file mode 100644 index 0000000..c337bd2 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/GhostlyArmourItems.java @@ -0,0 +1,37 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.customMaterials.RobesMaterial; + +import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import net.minecraft.util.Rarity; + +public class GhostlyArmourItems { + + public static final Item GHOSTLY_HELMET = new GhostlyArmour(RobesMaterial.ROBES, ArmorItem.Type.HELMET, new FabricItemSettings().rarity(Rarity.EPIC)); + public static final Item GHOSTLY_CHESTPLATE = new GhostlyArmour(RobesMaterial.ROBES, ArmorItem.Type.CHESTPLATE, new FabricItemSettings().rarity(Rarity.EPIC)); + public static final Item GHOSTLY_LEGGING = new GhostlyArmour(RobesMaterial.ROBES, ArmorItem.Type.LEGGINGS, new FabricItemSettings().rarity(Rarity.EPIC)); + public static final Item GHOSTLY_BOOTS = new GhostlyArmour(RobesMaterial.ROBES, ArmorItem.Type.BOOTS, new FabricItemSettings().rarity(Rarity.EPIC)); + + public static void register() { + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "ghostly_helmet"), GHOSTLY_HELMET); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "ghostly_chestplate"), GHOSTLY_CHESTPLATE); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "ghostly_leggings"), GHOSTLY_LEGGING); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "ghostly_boots"), GHOSTLY_BOOTS); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register((content) -> content.add(GHOSTLY_HELMET)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register((content) -> content.add(GHOSTLY_CHESTPLATE)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register((content) -> content.add(GHOSTLY_LEGGING)); + ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register((content) -> content.add(GHOSTLY_BOOTS)); + } + + + +} diff --git a/src/main/java/com/smithy/terraoriginum/items/GhostlyItems.java b/src/main/java/com/smithy/terraoriginum/items/GhostlyItems.java new file mode 100644 index 0000000..5dd55d8 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/GhostlyItems.java @@ -0,0 +1,24 @@ +package com.smithy.terraoriginum.items; + +import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class GhostlyItems { + + public static final Item GHOSTLY_CLOTH = new Item(new FabricItemSettings()); + + public static void register() { + + Registry.register(Registries.ITEM, new Identifier("terraoriginum", "ghostly_cloth"), GHOSTLY_CLOTH); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register((content) -> content.add(GHOSTLY_CLOTH)); + + } + + +} diff --git a/src/main/java/com/smithy/terraoriginum/items/IconItems.java b/src/main/java/com/smithy/terraoriginum/items/IconItems.java new file mode 100644 index 0000000..7fa7eac --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/IconItems.java @@ -0,0 +1,22 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.TerraOriginum; +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; +import net.minecraft.util.Rarity; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; + +public class IconItems { + + public static final Item MYNC_EYE = new Item(new Item.Settings().maxCount(1).rarity(Rarity.EPIC)); + public static final Item SPIRIT = new Item(new Item.Settings().maxCount(1).rarity(Rarity.EPIC)); + public static final Item TINY = new Item(new Item.Settings().maxCount(1).rarity(Rarity.EPIC)); + + public static void register() { + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "mync_eye"), MYNC_EYE); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "spirit"), SPIRIT); + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "tiny"), TINY); + } + +} diff --git a/src/main/java/com/smithy/terraoriginum/items/SunTotem.java b/src/main/java/com/smithy/terraoriginum/items/SunTotem.java new file mode 100644 index 0000000..38ded2a --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/SunTotem.java @@ -0,0 +1,17 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.TerraOriginum; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import net.minecraft.util.Rarity; + +public class SunTotem { + + public static final Item SUN_TOTEM = new Item(new Item.Settings().maxCount(1).rarity(Rarity.EPIC)); + + public static void register() { + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "sun_totem"), SUN_TOTEM); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/items/Umbrella.java b/src/main/java/com/smithy/terraoriginum/items/Umbrella.java new file mode 100644 index 0000000..785b58f --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/Umbrella.java @@ -0,0 +1,26 @@ +package com.smithy.terraoriginum.items; + +import com.smithy.terraoriginum.TerraOriginum; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; +import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.minecraft.item.DyeableItem; +import net.minecraft.util.Identifier; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; + +public class Umbrella { + public static final UmbrellaDyeTest UMBRELLA = new UmbrellaDyeTest(new FabricItemSettings().maxCount(1).maxDamage(1200)); + + + public static void registerItems() { + Registry.register(Registries.ITEM, new Identifier(TerraOriginum.MOD_ID, "umbrella"), UMBRELLA); + + } + + @Environment(EnvType.CLIENT) + public static void registerRenderLayers() { + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> (tintIndex > 0) ? -1 : ((DyeableItem) stack.getItem()).getColor(stack), UMBRELLA); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/items/UmbrellaDyeTest.java b/src/main/java/com/smithy/terraoriginum/items/UmbrellaDyeTest.java new file mode 100644 index 0000000..ca81d97 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/items/UmbrellaDyeTest.java @@ -0,0 +1,12 @@ +package com.smithy.terraoriginum.items; + +import net.minecraft.item.DyeableItem; +import net.minecraft.item.Item; + +public class UmbrellaDyeTest extends Item implements DyeableItem { + + public UmbrellaDyeTest(Settings settings) { + super(settings); + } + +} diff --git a/src/main/java/com/smithy/terraoriginum/mixin/EntityMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/EntityMixin.java new file mode 100644 index 0000000..02e6dda --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/EntityMixin.java @@ -0,0 +1,52 @@ +package com.smithy.terraoriginum.mixin; + +import com.smithy.terraoriginum.items.Umbrella; +import com.smithy.terraoriginum.power.PreventBlockSlowness; + +import io.github.apace100.apoli.component.PowerHolderComponent; +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +public abstract class EntityMixin { + + + @Shadow World world; + + @Shadow abstract BlockPos getBlockPos(); + + @Shadow abstract Box getBoundingBox(); + + @Shadow abstract Iterable getHandItems(); + + @Inject(method = "isBeingRainedOn", at = @At("HEAD"), cancellable = true) + private void isBeingRainedOn(CallbackInfoReturnable cir) { + Iterable hands = this.getHandItems(); + for (ItemStack stack : hands) { + if (stack.getItem() == Umbrella.UMBRELLA) + cir.setReturnValue(false); + } + } + + @Inject(method = "slowMovement", at = @At("HEAD"), cancellable = true) + private void terraoriginum$preventBlockSlowness(BlockState state, Vec3d multiplier, CallbackInfo ci) { + for (PreventBlockSlowness power : PowerHolderComponent.getPowers((Entity) (Object) this, PreventBlockSlowness.class)) { + if (power.isActive()) { + ci.cancel(); + return; + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/mixin/IcarusHelperMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/IcarusHelperMixin.java new file mode 100644 index 0000000..102d5d7 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/IcarusHelperMixin.java @@ -0,0 +1,47 @@ +package com.smithy.terraoriginum.mixin; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.smithy.terraoriginum.power.WingsPower; +import dev.cammiescorner.icarus.api.IcarusPlayerValues; +import dev.cammiescorner.icarus.util.IcarusHelper; +import io.github.apace100.apoli.component.PowerHolderComponent; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import java.util.function.Function; +import java.util.function.Predicate; + +@Mixin(value = IcarusHelper.class, remap = false) +public class IcarusHelperMixin { + + @ModifyReturnValue(method = "getConfigValues", at = @At("RETURN")) + private static IcarusPlayerValues injectPowerConfigValues(IcarusPlayerValues original, LivingEntity entity) { + var list = PowerHolderComponent.getPowers(entity, WingsPower.class); + if(!list.isEmpty()) { + var power = list.get(0); + power.updateFallback(original); + return power; + } + + return original; + } + + @WrapOperation(method = "hasWings", at = @At(value = "INVOKE", target = "Ljava/util/function/Predicate;test(Ljava/lang/Object;)Z")) + private static boolean originHasWings(Predicate instance, Object entity, Operation original) { + return PowerHolderComponent.hasPower((LivingEntity) entity, WingsPower.class) || original.call(instance, entity); + } + + @WrapOperation(method = "getEquippedWings", at = @At(value = "INVOKE", target = "Ljava/util/function/Function;apply(Ljava/lang/Object;)Ljava/lang/Object;")) + private static Object originGetWings(Function instance, Object entity, Operation original) { + if (PowerHolderComponent.hasPower((LivingEntity) entity, WingsPower.class)) { + // null is special case + return null; + } + + return original.call(instance, entity); + } +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/mixin/PlayerConditionsMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/PlayerConditionsMixin.java new file mode 100644 index 0000000..04a5910 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/PlayerConditionsMixin.java @@ -0,0 +1,35 @@ +package com.smithy.terraoriginum.mixin; + +import io.github.apace100.apoli.power.factory.condition.EntityConditions; +import io.github.apace100.calio.data.SerializableData; +import com.smithy.terraoriginum.items.Umbrella; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(EntityConditions.class) +public class PlayerConditionsMixin { + + @Inject(method = { "lambda$register$10" }, at = { @At("HEAD") }, cancellable = true) + private static void sunDamagePrevention(SerializableData.Instance data, Entity player, CallbackInfoReturnable cir) { + for (ItemStack stack : player.getHandItems()) { + if (stack.getItem().equals(Umbrella.UMBRELLA) && stack.getDamage() < stack.getMaxDamage() - 1) { + cir.setReturnValue(false); + } + } + } + + @Inject(method = { "lambda$register$11" }, at = { @At("HEAD") }, cancellable = true) + private static void umbrellaRainedOn(SerializableData.Instance data, Entity player, CallbackInfoReturnable cir) { + for (ItemStack stack : player.getHandItems()) { + if (stack.getItem().equals(Umbrella.UMBRELLA) && stack.getDamage() < stack.getMaxDamage() - 1) { + cir.setReturnValue(false); + } + } + } + + +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/mixin/PlayerEntityMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/PlayerEntityMixin.java new file mode 100644 index 0000000..8897bce --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/PlayerEntityMixin.java @@ -0,0 +1,73 @@ +package com.smithy.terraoriginum.mixin; + +import io.github.apace100.apoli.mixin.EntityAccessor; +import com.smithy.terraoriginum.items.Umbrella; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntityMixin extends Entity { + @Shadow + public abstract ItemStack getEquippedStack(EquipmentSlot slot); + + @Shadow + public abstract Iterable getHandItems(); + + @Shadow + public abstract PlayerInventory getInventory(); + + protected PlayerEntityMixin(EntityType entityType, World world) { + super(entityType, world); + } + + @Inject(method = "tick", at = @At("HEAD"), cancellable = true) + private void tick(CallbackInfo ci) { + boolean isBeingRainedOn = ((EntityAccessor) this).callIsBeingRainedOn(); + + if (isBeingRainedOn && this.age % 10 == 0) { + for (ItemStack stack : this.getHandItems()) { + if (stack.getItem().equals(Umbrella.UMBRELLA) && stack.getDamage() < stack.getMaxDamage() - 1) { + // Set damage instead of calling stack.damage, otherwise an animation is + // triggered for each damage tick. + stack.setDamage(stack.getDamage() + 1); + } + } + } else if (!isBeingRainedOn && this.age % 20 == 0) { + ItemStack offHand = this.getEquippedStack(EquipmentSlot.OFFHAND); + boolean isHot = getWorld().getBiome(this.getBlockPos()).value().isCold(this.getBlockPos()); + + // Repair off-hand umbrella. + this.repairStack(offHand, isHot, true); + + // Repair any umbrellas in the player's inventory. + for (int i = 0; i < 36; i++) { + this.repairStack(this.getInventory().getStack(i), isHot, this.getInventory().selectedSlot == i); + } + } + } + + private void repairStack(ItemStack stack, boolean isHot, boolean isExposed) { + if (stack.getItem().equals(Umbrella.UMBRELLA) && stack.isDamaged()) { + stack.setDamage(stack.getDamage() - 1); + if (isHot) { + // Umbrellas dry faster in hot climates. + stack.setDamage(stack.getDamage() - 1); + } + if (isExposed) { + // Umbrellas dry faster if they're exposed (not tucked away in inventory). + stack.setDamage(stack.getDamage() - 1); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/mixin/PowderSnowBlockMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/PowderSnowBlockMixin.java new file mode 100644 index 0000000..ccdb415 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/PowderSnowBlockMixin.java @@ -0,0 +1,24 @@ +package com.smithy.terraoriginum.mixin; + +import io.github.apace100.apoli.component.PowerHolderComponent; +import net.minecraft.block.PowderSnowBlock; +import net.minecraft.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.smithy.terraoriginum.power.CanStandOnPowderSnow; + +@Mixin(PowderSnowBlock.class) +public class PowderSnowBlockMixin { + @Inject(method = "canWalkOnPowderSnow", at = @At("HEAD"), cancellable = true) + private static void terraoriginum$canStandOnPowderSnow(Entity entity, CallbackInfoReturnable cir) { + for (CanStandOnPowderSnow canStandOnPowderSnowPower : PowerHolderComponent.getPowers(entity, CanStandOnPowderSnow.class)) { + if (canStandOnPowderSnowPower.isActive()) { + cir.setReturnValue(true); + return; + } + } + } +} diff --git a/src/main/java/com/smithy/terraoriginum/mixin/client/IcarusClientMixin.java b/src/main/java/com/smithy/terraoriginum/mixin/client/IcarusClientMixin.java new file mode 100644 index 0000000..312fc8f --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/mixin/client/IcarusClientMixin.java @@ -0,0 +1,26 @@ +package com.smithy.terraoriginum.mixin.client; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.smithy.terraoriginum.power.WingsPower; +import dev.cammiescorner.icarus.client.IcarusClient; +import io.github.apace100.apoli.component.PowerHolderComponent; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(value = IcarusClient.class, remap = false) +public class IcarusClientMixin { + + @ModifyReturnValue(method = "getWingsForRendering", at = @At(value = "RETURN")) + private static ItemStack injectOriginWings(ItemStack original, LivingEntity entity) { + if(original.isEmpty()) { + var list = PowerHolderComponent.getPowers(entity, WingsPower.class); + if (!list.isEmpty()) { + return list.get(0).getWingsType(); + } + } + + return original; + } +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/power/CanStandOnPowderSnow.java b/src/main/java/com/smithy/terraoriginum/power/CanStandOnPowderSnow.java new file mode 100644 index 0000000..a7a8532 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/power/CanStandOnPowderSnow.java @@ -0,0 +1,11 @@ +package com.smithy.terraoriginum.power; + +import io.github.apace100.apoli.power.Power; +import io.github.apace100.apoli.power.PowerType; +import net.minecraft.entity.LivingEntity; + +public class CanStandOnPowderSnow extends Power { + public CanStandOnPowderSnow(PowerType type, LivingEntity entity) { + super(type, entity); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/power/PreventBlockSlowness.java b/src/main/java/com/smithy/terraoriginum/power/PreventBlockSlowness.java new file mode 100644 index 0000000..f97af59 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/power/PreventBlockSlowness.java @@ -0,0 +1,11 @@ +package com.smithy.terraoriginum.power; + +import io.github.apace100.apoli.power.Power; +import io.github.apace100.apoli.power.PowerType; +import net.minecraft.entity.LivingEntity; + +public class PreventBlockSlowness extends Power { + public PreventBlockSlowness(PowerType type, LivingEntity entity) { + super(type, entity); + } +} \ No newline at end of file diff --git a/src/main/java/com/smithy/terraoriginum/power/WingsPower.java b/src/main/java/com/smithy/terraoriginum/power/WingsPower.java new file mode 100644 index 0000000..3d0f50b --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/power/WingsPower.java @@ -0,0 +1,113 @@ +package com.smithy.terraoriginum.power; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.util.CustomDataTypes; +import com.smithy.terraoriginum.util.OptionalBool; + +import dev.cammiescorner.icarus.api.IcarusPlayerValues; +import dev.cammiescorner.icarus.util.ServerPlayerFallbackValues; +import io.github.apace100.apoli.power.Power; +import io.github.apace100.apoli.power.PowerType; +import io.github.apace100.apoli.power.factory.PowerFactory; +import io.github.apace100.calio.data.SerializableData; +import net.minecraft.util.Identifier; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.ItemStack; + +import java.util.OptionalDouble; +import java.util.OptionalInt; + +public class WingsPower extends Power implements IcarusPlayerValues { + + public static final Identifier POWER_TYPE_ID = new Identifier(TerraOriginum.MOD_ID, "wings"); + + private final ItemStack wingsType; + private final OptionalBool armorSlows; + private final OptionalDouble maxSlowedMultiplier; + private final OptionalDouble wingsSpeed; + private final OptionalDouble exhaustionAmount; + private final OptionalInt maxHeightAboveWorld; + + private IcarusPlayerValues fallback = new ServerPlayerFallbackValues(); + + public WingsPower(PowerType type, LivingEntity entity, ItemStack wingsType, OptionalBool armorSlows, OptionalDouble maxSlowedMultiplier, OptionalDouble wingsSpeed, OptionalDouble exhaustionAmount, OptionalInt maxHeightAboveWorld) { + super(type, entity); + this.wingsType = wingsType; + this.armorSlows = armorSlows; + this.maxSlowedMultiplier = maxSlowedMultiplier; + this.wingsSpeed = wingsSpeed; + this.exhaustionAmount = exhaustionAmount; + this.maxHeightAboveWorld = maxHeightAboveWorld; + } + + public ItemStack getWingsType() { + return wingsType; + } + + public void updateFallback(IcarusPlayerValues fallback) { + this.fallback = fallback; + } + + @Override + public float wingsSpeed() { + return (float) wingsSpeed.orElseGet(fallback::wingsSpeed); + } + + @Override + public float maxSlowedMultiplier() { + return (float) maxSlowedMultiplier.orElseGet(fallback::maxSlowedMultiplier); + } + + @Override + public boolean armorSlows() { + return armorSlows.orElseGet(fallback::armorSlows); + } + + @Override + public boolean canLoopDeLoop() { + return fallback.canLoopDeLoop(); + } + + @Override + public boolean canSlowFall() { + return fallback.canSlowFall(); + } + + @Override + public float exhaustionAmount() { + return (float) exhaustionAmount.orElseGet(fallback::exhaustionAmount); + } + + @Override + public int maxHeightAboveWorld() { + return maxHeightAboveWorld.orElseGet(fallback::maxHeightAboveWorld); + } + + @Override + public boolean maxHeightEnabled() { + return maxHeightAboveWorld.isPresent() || fallback.maxHeightEnabled(); + } + + public static PowerFactory createFactory() { + return new PowerFactory<>(POWER_TYPE_ID, + new SerializableData() + .add("wings_type", CustomDataTypes.STACK_OR_ITEM_NAME) + .add("armor_slows", CustomDataTypes.OPTIONAL_BOOL, OptionalBool.DEFAULT) + .add("max_slowed_multiplier", CustomDataTypes.OPTIONAL_DOUBLE, OptionalDouble.empty()) + .add("wings_speed", CustomDataTypes.OPTIONAL_DOUBLE, OptionalDouble.empty()) + .add("exhaustion_amount", CustomDataTypes.OPTIONAL_DOUBLE, OptionalDouble.empty()) + .add("max_height_above_world", CustomDataTypes.OPTIONAL_INT, OptionalInt.empty()), + data -> (type, owner) -> { + ItemStack wingsType = data.get("wings_type"); + OptionalBool armorSlows = data.get("armor_slows"); + OptionalDouble maxSlowedMultiplier = data.get("max_slowed_multiplier"); + OptionalDouble wingsSpeed = data.get("wings_speed"); + OptionalDouble exhaustionAmount = data.get("exhaustion_amount"); + OptionalInt maxHeightAboveWorld = data.get("max_height_above_world"); + + return new WingsPower(type, owner, wingsType, armorSlows, maxSlowedMultiplier, wingsSpeed, exhaustionAmount, maxHeightAboveWorld); + } + ); + } + +} diff --git a/src/main/java/com/smithy/terraoriginum/registry/ModEnchantments.java b/src/main/java/com/smithy/terraoriginum/registry/ModEnchantments.java new file mode 100644 index 0000000..4ed4b90 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/registry/ModEnchantments.java @@ -0,0 +1,27 @@ +package com.smithy.terraoriginum.registry; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.enchantment.LightProtectionEnchantment; +import com.smithy.terraoriginum.enchantment.SunProtectionEnchantment; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentTarget; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.registry.Registries; +import net.minecraft.util.Identifier; +import net.minecraft.registry.Registry; + +public class ModEnchantments { + + public static final Enchantment SUN_PROTECTION = new SunProtectionEnchantment(Enchantment.Rarity.RARE, EnchantmentTarget.ARMOR, new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}); + public static final Enchantment LIGHT_PROTECTION = new LightProtectionEnchantment(Enchantment.Rarity.RARE, EnchantmentTarget.ARMOR_CHEST, new EquipmentSlot[]{EquipmentSlot.CHEST}); + + public static void register() { + register("sun_protection", SUN_PROTECTION); + register("light_protection", LIGHT_PROTECTION); + } + + private static Enchantment register(String path, Enchantment enchantment) { + Registry.register(Registries.ENCHANTMENT, new Identifier(TerraOriginum.MOD_ID, path), enchantment); + return enchantment; + } +} diff --git a/src/main/java/com/smithy/terraoriginum/registry/ModPowers.java b/src/main/java/com/smithy/terraoriginum/registry/ModPowers.java new file mode 100644 index 0000000..2185822 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/registry/ModPowers.java @@ -0,0 +1,27 @@ +package com.smithy.terraoriginum.registry; + +import com.smithy.terraoriginum.TerraOriginum; +import com.smithy.terraoriginum.power.CanStandOnPowderSnow; +import com.smithy.terraoriginum.power.PreventBlockSlowness; +import com.smithy.terraoriginum.power.WingsPower; + +import io.github.apace100.apoli.power.factory.PowerFactory; +import io.github.apace100.apoli.registry.ApoliRegistries; +import io.github.apace100.calio.data.SerializableData; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class ModPowers { + + public static final PowerFactory CAN_WALK_ON_POWDER_SNOW = new PowerFactory<>( new Identifier(TerraOriginum.MOD_ID, "can_walk_on_powder_snow"), new SerializableData(), data -> (type, entity) -> new CanStandOnPowderSnow(type, entity)).allowCondition(); + public static final PowerFactory PREVENT_BLOCK_SLOWNESS = new PowerFactory<>(new Identifier(TerraOriginum.MOD_ID, "prevent_block_slowness"), new SerializableData(), data -> (type, entity) -> new PreventBlockSlowness(type, entity)).allowCondition(); + public static final PowerFactory WINGS_POWER = WingsPower.createFactory().allowCondition(); + + + public static void register() { + Registry.register(ApoliRegistries.POWER_FACTORY, CAN_WALK_ON_POWDER_SNOW.getSerializerId(), CAN_WALK_ON_POWDER_SNOW); + Registry.register(ApoliRegistries.POWER_FACTORY, PREVENT_BLOCK_SLOWNESS.getSerializerId(), PREVENT_BLOCK_SLOWNESS); + Registry.register(ApoliRegistries.POWER_FACTORY, WingsPower.POWER_TYPE_ID, WINGS_POWER); + + } +} diff --git a/src/main/java/com/smithy/terraoriginum/util/CodecHelper.java b/src/main/java/com/smithy/terraoriginum/util/CodecHelper.java new file mode 100644 index 0000000..22f8941 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/util/CodecHelper.java @@ -0,0 +1,13 @@ +package com.smithy.terraoriginum.util; + +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import net.minecraft.registry.Registries; +import net.minecraft.item.ItemStack; + +import java.util.function.UnaryOperator; + +public class CodecHelper { + + public static final Codec STACK_OR_ITEM_NAME = Codec.either(ItemStack.CODEC, Registries.ITEM.getCodec()).xmap(either -> either.map(UnaryOperator.identity(), ItemStack::new), Either::left); +} diff --git a/src/main/java/com/smithy/terraoriginum/util/CustomDataTypes.java b/src/main/java/com/smithy/terraoriginum/util/CustomDataTypes.java new file mode 100644 index 0000000..a858d8d --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/util/CustomDataTypes.java @@ -0,0 +1,78 @@ +package com.smithy.terraoriginum.util; +import com.google.gson.JsonParseException; +import com.mojang.serialization.JsonOps; +import io.github.apace100.calio.data.SerializableDataType; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; + +import java.util.OptionalDouble; +import java.util.OptionalInt; + +public class CustomDataTypes { + + public static final SerializableDataType STACK_OR_ITEM_NAME = new SerializableDataType<>( + ItemStack.class, + PacketByteBuf::writeItemStack, + PacketByteBuf::readItemStack, + jsonElement -> CodecHelper.STACK_OR_ITEM_NAME.decode(JsonOps.INSTANCE, jsonElement).result().orElseThrow(() -> new JsonParseException("Could not parse ItemStack from JSON.")).getFirst() + ); + + /*new SerializableDataType<>(ItemStack.class, + PacketByteBuf::writeItem, + PacketByteBuf::readItem, + jsonElement -> CodecHelper.STACK_OR_ITEM_NAME.decode(JsonOps.INSTANCE, jsonElement).result().orElseThrow(() -> new JsonParseException("Could not parse ItemStack from JSON.")).getFirst() + );*/ + + public static final SerializableDataType OPTIONAL_BOOL = new SerializableDataType<>(OptionalBool.class, + PacketByteBuf::writeEnumConstant, + buf -> buf.readEnumConstant(OptionalBool.class), + jsonElement -> { + if (jsonElement.isJsonPrimitive() && jsonElement.getAsJsonPrimitive().isBoolean()) { + return OptionalBool.of(jsonElement.getAsBoolean()); + } + return OptionalBool.DEFAULT; + } + ); + + public static final SerializableDataType OPTIONAL_DOUBLE = new SerializableDataType<>(OptionalDouble.class, + (buf, optionalDouble) -> { + buf.writeBoolean(optionalDouble.isPresent()); + if (optionalDouble.isPresent()) { + buf.writeDouble(optionalDouble.getAsDouble()); + } + }, + buf -> { + if (buf.readBoolean()) { + return OptionalDouble.of(buf.readDouble()); + } + return OptionalDouble.empty(); + }, + jsonElement -> { + if (jsonElement.isJsonPrimitive() && jsonElement.getAsJsonPrimitive().isNumber()) { + return OptionalDouble.of(jsonElement.getAsDouble()); + } + return OptionalDouble.empty(); + } + ); + + public static final SerializableDataType OPTIONAL_INT = new SerializableDataType<>(OptionalInt.class, + (buf, optionalInt) -> { + buf.writeBoolean(optionalInt.isPresent()); + if (optionalInt.isPresent()) { + buf.writeInt(optionalInt.getAsInt()); + } + }, + buf -> { + if (buf.readBoolean()) { + return OptionalInt.of(buf.readInt()); + } + return OptionalInt.empty(); + }, + jsonElement -> { + if (jsonElement.isJsonPrimitive() && jsonElement.getAsJsonPrimitive().isNumber()) { + return OptionalInt.of(jsonElement.getAsInt()); + } + return OptionalInt.empty(); + } + ); +} diff --git a/src/main/java/com/smithy/terraoriginum/util/LootTableModifiers.java b/src/main/java/com/smithy/terraoriginum/util/LootTableModifiers.java new file mode 100644 index 0000000..72df4ca --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/util/LootTableModifiers.java @@ -0,0 +1,30 @@ +package com.smithy.terraoriginum.util; + +import com.smithy.terraoriginum.items.CottonItems; +import net.fabricmc.fabric.api.loot.v2.LootTableEvents; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.condition.RandomChanceLootCondition; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.loot.function.SetCountLootFunction; +import net.minecraft.loot.provider.number.ConstantLootNumberProvider; +import net.minecraft.loot.provider.number.UniformLootNumberProvider; +import net.minecraft.util.Identifier; + +public class LootTableModifiers { + private static final Identifier GRASS_ID = + new Identifier("minecraft", "blocks/grass"); + + public static void modifyLootTables() { + LootTableEvents.MODIFY.register((resourceManager, lootManager, id, tableBuilder, source) -> { + if(GRASS_ID.equals(id)) { + LootPool.Builder poolBuilder = LootPool.builder() + .rolls(ConstantLootNumberProvider.create(1)) + .conditionally(RandomChanceLootCondition.builder(0.08f)) + .with(ItemEntry.builder(CottonItems.COTTON_SEEDS)) + .apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(1.0f, 1.0f)).build()); + + tableBuilder.pool(poolBuilder.build()); + } + }); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/util/OptionalBool.java b/src/main/java/com/smithy/terraoriginum/util/OptionalBool.java new file mode 100644 index 0000000..95676f6 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/util/OptionalBool.java @@ -0,0 +1,38 @@ +package com.smithy.terraoriginum.util; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; + +import java.util.Optional; +import java.util.function.BooleanSupplier; + +public enum OptionalBool { + + TRUE, + FALSE, + DEFAULT; + + public static OptionalBool of(Boolean value) { + return value == null ? DEFAULT : value ? TRUE : FALSE; + } + + public boolean isTrue() { + return this == TRUE; + } + + public boolean orElse(boolean defaultValue) { + return this == TRUE || (this == DEFAULT && defaultValue); + } + + public boolean orElseGet(BooleanSupplier defaultValue) { + return this == TRUE || (this == DEFAULT && defaultValue.getAsBoolean()); + } + + public Optional asOptional() { + return this == DEFAULT ? Optional.empty() : Optional.of(isTrue()); + } + + public static MapCodec codecFieldOf(String fieldName) { + return Codec.BOOL.optionalFieldOf(fieldName).xmap(opt -> opt.map(aBoolean -> aBoolean ? TRUE : FALSE).orElse(DEFAULT), OptionalBool::asOptional); + } +} diff --git a/src/main/java/com/smithy/terraoriginum/util/TerraHelper.java b/src/main/java/com/smithy/terraoriginum/util/TerraHelper.java new file mode 100644 index 0000000..0c7e8c4 --- /dev/null +++ b/src/main/java/com/smithy/terraoriginum/util/TerraHelper.java @@ -0,0 +1,10 @@ +package com.smithy.terraoriginum.util; + +import net.minecraft.entity.Entity; + +public class TerraHelper { + + public static boolean isWet(Entity entity) { + return entity.isWet(); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/coconut.jpg b/src/main/resources/assets/coconut.jpg new file mode 100644 index 0000000..e7c2d1b Binary files /dev/null and b/src/main/resources/assets/coconut.jpg differ diff --git a/src/main/resources/assets/dwayne.png b/src/main/resources/assets/dwayne.png new file mode 100644 index 0000000..1b1f492 Binary files /dev/null and b/src/main/resources/assets/dwayne.png differ diff --git a/src/main/resources/assets/terraoriginum.png b/src/main/resources/assets/terraoriginum.png new file mode 100644 index 0000000..d2f1ead Binary files /dev/null and b/src/main/resources/assets/terraoriginum.png differ diff --git a/src/main/resources/assets/terraoriginum/animations/item/armor/ghost_armour.animation.json b/src/main/resources/assets/terraoriginum/animations/item/armor/ghost_armour.animation.json new file mode 100644 index 0000000..1ec2009 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/animations/item/armor/ghost_armour.animation.json @@ -0,0 +1,127 @@ +{ + "format_version": "1.8.0", + "animations": { + "walk": { + "loop": "hold_on_last_frame", + "animation_length": 0.25, + "bones": { + "torsoEnd": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [20, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [0, -2, -3], + "easing": "linear" + } + } + }, + "bandanaEnd": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [20, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [0, -2, 1], + "easing": "linear" + } + } + } + } + }, + "sprint": { + "loop": "hold_on_last_frame", + "animation_length": 0.25, + "bones": { + "bandanaEnd": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [55, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [0, -4, 4], + "easing": "linear" + } + } + }, + "torsoEnd": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [50, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "0.25": { + "vector": [0, -6, -5], + "easing": "linear" + } + } + } + } + }, + "idle": { + "animation_length": 3, + "bones": { + "bandanaEnd": { + "rotation": { + "0.0": { + "vector": [0, 0, 0], + "easing": "linear" + }, + "1.5": { + "vector": [2.5, 0, 0], + "easing": "linear" + }, + "3.0": { + "vector": [0, 0, 0], + "easing": "linear" + } + } + } + } + } + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/blockstates/cotton_crop_block.json b/src/main/resources/assets/terraoriginum/blockstates/cotton_crop_block.json new file mode 100644 index 0000000..90fad72 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/blockstates/cotton_crop_block.json @@ -0,0 +1,29 @@ +{ + "variants": { + "age=0": { + "model": "terraoriginum:block/cotton_crop_stage0" + }, + "age=1": { + "model": "terraoriginum:block/cotton_crop_stage1" + }, + "age=2": { + "model": "terraoriginum:block/cotton_crop_stage1" + }, + "age=3": { + "model": "terraoriginum:block/cotton_crop_stage2" + }, + "age=4": { + "model": "terraoriginum:block/cotton_crop_stage3" + }, + "age=5": { + "model": "terraoriginum:block/cotton_crop_stage3" + }, + "age=6": { + "model": "terraoriginum:block/cotton_crop_stage4" + }, + "age=7": { + "model": "terraoriginum:block/cotton_crop_stage5" + } + } + } + diff --git a/src/main/resources/assets/terraoriginum/blockstates/crucifix.json b/src/main/resources/assets/terraoriginum/blockstates/crucifix.json new file mode 100644 index 0000000..5cfb790 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/blockstates/crucifix.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "terraoriginum:block/crucifix" } + } + } \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/geo/item/armor/ghost_armour.geo.json b/src/main/resources/assets/terraoriginum/geo/item/armor/ghost_armour.geo.json new file mode 100644 index 0000000..6577653 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/geo/item/armor/ghost_armour.geo.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.ghost_armour", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "bipedHead", + "pivot": [0, 24, 0] + }, + { + "name": "armorHead", + "parent": "bipedHead", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [-5, 24, -5], "size": [10, 9, 10], "uv": [0, 16]}, + {"origin": [-4, 24, -4], "size": [8, 8, 8], "uv": [32, 35]} + ] + }, + { + "name": "bandana", + "parent": "armorHead", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [-6, 23, -6], "size": [12, 4, 12], "uv": [0, 0]} + ] + }, + { + "name": "bandanaEnd", + "parent": "armorHead", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [-4, 15, 6], "size": [3, 11, 0], "pivot": [-3, 24, 7], "rotation": [7.5, 0, 0], "uv": [72, 0]} + ] + }, + { + "name": "bipedBody", + "pivot": [0, 24, 0] + }, + { + "name": "armorBody", + "parent": "bipedBody", + "pivot": [0, 24, 0] + }, + { + "name": "torso", + "parent": "armorBody", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [-4, 12, -3], "size": [8, 12, 6], "uv": [40, 16]} + ] + }, + { + "name": "torsoEnd", + "parent": "armorBody", + "pivot": [0, 24, 0], + "cubes": [ + {"origin": [1, 7, 3], "size": [2, 10, 0], "pivot": [2, 15, 2], "rotation": [5, 0, 0], "uv": [76, 65]} + ] + }, + { + "name": "bipedRightArm", + "pivot": [-4, 22, 0] + }, + { + "name": "armorRightArm", + "parent": "bipedRightArm", + "pivot": [-4, 22, 0], + "cubes": [ + {"origin": [-9, 12, -3], "size": [5, 13, 6], "uv": [0, 51]} + ] + }, + { + "name": "bipedLeftArm", + "pivot": [4, 22, 0] + }, + { + "name": "armorLeftArm", + "parent": "bipedLeftArm", + "pivot": [4, 22, 0], + "cubes": [ + {"origin": [4, 12, -3], "size": [5, 13, 6], "uv": [22, 51]} + ] + }, + { + "name": "bipedLeftLeg", + "pivot": [2, 12, 0] + }, + { + "name": "armorLeftLeg", + "parent": "bipedLeftLeg", + "pivot": [2, 12, 0], + "cubes": [ + {"origin": [0, 4, -3], "size": [5, 9, 6], "uv": [44, 51]} + ] + }, + { + "name": "armorLeftBoot", + "parent": "bipedLeftLeg", + "pivot": [2, 12, 0], + "cubes": [ + {"origin": [0, 0, -3], "size": [5, 4, 6], "uv": [0, 70]} + ] + }, + { + "name": "bipedRightLeg", + "pivot": [-2, 12, 0] + }, + { + "name": "armorRightLeg", + "parent": "bipedRightLeg", + "pivot": [-2, 12, 0], + "cubes": [ + {"origin": [-5, 4, -3], "size": [5, 9, 6], "uv": [64, 34]} + ] + }, + { + "name": "armorRightBoot", + "parent": "bipedRightLeg", + "pivot": [-2, 12, 0], + "cubes": [ + {"origin": [-5, 0, -3], "size": [5, 4, 6], "uv": [22, 70]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/lang/en_us.json b/src/main/resources/assets/terraoriginum/lang/en_us.json new file mode 100644 index 0000000..0fc3dcf --- /dev/null +++ b/src/main/resources/assets/terraoriginum/lang/en_us.json @@ -0,0 +1,299 @@ +{ + //-----Icon Items-----// + "item.terraoriginum.mync_eye": "Mync Eye", + "item.terraoriginum.spirit": "Spirit", + + //-----shit i cant be assed to categorise-----/ + "item.terraoriginum.umbrella": "Umbrella", + "item.terraoriginum.cotton_seeds": "Cotton Seeds", + "item.terraoriginum.cotton_ball": "Cotton ball", + "item.terraoriginum.ghostly_cloth": "Ghostly Cloth", + "item.terraoriginum.sun_totem": "Sun Totem", + "death.attack.lack_of_ectoplasm": "%1$s faded away", + "death.attack.lack_of_ectoplasm.player": "%1$s faded away whilst trying to escape %2$s", + "death.attack.lack_of_sun": "%1$s fell apart", + "death.attack.lack_of_sun.player": "%1$s fell apart whilst fighting %2$s", + "death.attack.boiling": "%1$s boiled up", + "death.attack.boiling.player": "%1$s boiled up whilst trying to fight off %2$s", + "enchantment.terraoriginum.sun_protection": "Sun Protection", + "enchantment.terraoriginum.sun_protection.desc": "Protects Latians from the sun temporarily", + "enchantment.terraoriginum.light_protection": "Light Protection", + "enchantment.terraoriginum.light_protection.desc": "Reduces Ectoplasm loss for spirits", + "item.terraoriginum.ghostly_helmet": "Ghostly Hood", + "item.terraoriginum.ghostly_chestplate": "Ghostly Robe", + "item.terraoriginum.ghostly_leggings": "Ghostly Pants", + "item.terraoriginum.ghostly_boots": "Ghostly Socks", + + //-----Immortal Human-----// + "origin.terraoriginum.immortal_human.name": "Immortal Human", + "origin.terraoriginum.immortal_human.description": "You hate life, but out of spite, the gods cursed you with being immortal. How unfortunate.", + "power.terraoriginum.immortal_human-powers/immortal.name": "Immortal", + "power.terraoriginum.immortal_human-powers/immortal.description": "You cannot die, no matter how hard you try.", + "power.terraoriginum.immortal_human-powers/pathetic.name": "Pathetic", + "power.terraoriginum.immortal_human-powers/pathetic.description": "You cannot deal damage to anything.", + + //-----Demon-----// + "origin.terraoriginum.demon.name": "Demon", + "origin.terraoriginum.demon.description": "A powerful ghostly creature, its body is built for one purpose... evil", + "power.terraoriginum.demon-powers/self_transfiguration1.name": "Self Transfiguration", + "power.terraoriginum.demon-powers/self_transfiguration1.description": "A demon has the innate ability to transfigure its own body to temporarily increase its physical capabilities, but beware whilst using it, because it rapidly drains ectoplasm", + "power.terraoriginum.demon-powers/stained.name": "Stained", + "power.terraoriginum.demon-powers/stained.description": "A demon is stained in the blood of its victims", + "power.terraoriginum.demon-powers/extra_health.name": "Extra Health", + "power.terraoriginum.demon-powers/extra_health.description": "A demon's body is exceptionally well built, allowing it to take a bit more punishment than usual before perishing", + "power.terraoriginum.demon-powers/rigid.name": "Rigid", + "power.terraoriginum.demon-powers/regid.description": "A demon's body is exceptionally well built, allowing it to take a bit more punishment than usual before perishing", + + //-----Wraith-----// + "origin.terraoriginum.wraith.name": "Wraith", + "origin.terraoriginum.wraith.description": "A tormented soul brought back to the land of life, hungering to distribute its agony to the living.", + "power.terraoriginum.wraith-powers/soaring1.name": "Soaring", + "power.terraoriginum.wraith-powers/soaring1.description": "A Wraith has the ability to exhert its ectoplasm to reduce its body's response to gravity as well as create a thrust, allowing it to swim through the air.", + "power.terraoriginum.wraith-powers/torment1.name": "Torment", + "power.terraoriginum.wraith-powers/torment1.description": "The Wraith recalls the eons of agony it suffered, causing its body to respond to the trauma by strengthening itself. Expends ectoplasm quickly.", + "power.terraoriginum.wraith-powers/charred.name": "Charred", + "power.terraoriginum.wraith-powers/charred.description": "Wraiths are burned of torment, which gives them a literally charred appearance.", + + //-----Shade-----// + "origin.terraoriginum.shade.name": "Shade", + "origin.terraoriginum.shade.description": "Shades are shy ghostly entities, generally choosing to remain hidden from other non-ghostly entities.", + "power.terraoriginum.shade-powers/invisibility1.name": "Invisibility", + "power.terraoriginum.shade-powers/invisibility1.description": "Shades have the ability to turn their entire bodies, including any armour they are wearing, entirely invisible. The invisibility is counteracted by the glowing effect and expends some ectoplasm", + + //-----Merfolk-----// + "origin.terraoriginum.merfolk.name": "Merfolk", + "origin.terraoriginum.merfolk.description": "A creature well adapted to live in the seas. They are much like humans, if humans were aquatic", + "power.terraoriginum.merfolk-powers/hydration.name": "Hydration", + "power.terraoriginum.merfolk-powers/hydration.description": "A merfolk needs to remain hydrated in order to survive. Being in rain or water will increase hydration, whilst being outside both will dry you out", + "power.terraoriginum.merfolk-powers/waterbreathing.name": "Water Breathing", + "power.terraoriginum.merfolk-powers/waterbreathing.description": "A merfolk has the ability to breath underwater", + "power.terraoriginum.merfolk-powers/webbedfeet.name": "Webbed Feet", + "power.terraoriginum.merfolk-powers/webbedfeet.description": "A merfolk has webbed feet to help it swim under water. however, this makes it walk slower on land and also makes it not be able to jump as high as more land creatures.", + "power.terraoriginum.merfolk-powers/wethands.name": "Wet Hands", + "power.terraoriginum.merfolk-powers/wethands.description": "A merfolk's hands are made for use underwater, making it harder to break blocks on dry land. Also a great song", + + //-----Spirit-----// + "origin.terraoriginum.spirit.name": "Spirit", + "origin.terraoriginum.spirit.description": "A ghostly creature which has not been built for any specific purpose.", + "power.terraoriginum.spirit-powers/ectoplasm.name": "Ectoplasm", + "power.terraoriginum.spirit-powers/ectoplasm.description": "Ectoplasm is the life essence of any ghostly creature, without it, they will slowly start to die.", + "power.terraoriginum.spirit-powers/nightvis.name": "Night Vision", + "power.terraoriginum.spirit-powers/nightvis.description": "A ghost likes the darkness, so they're able to see in the dark.", + "power.terraoriginum.spirit-powers/phasing1.name": "Phasing", + "power.terraoriginum.spirit-powers/phasing1.description": "Ghosts have the ability to phase through blocks, this is because they are incorporeal. toggleable", + "power.terraoriginum.spirit-powers/undead.name": "Undead", + "power.terraoriginum.spirit-powers/undead.description": "Spirits are undead, meaning that health and poison potion effects are swapped and you cannot drown.", + "power.terraoriginum.spirit-powers/ectodiff.name": "Luminophobia", + "power.terraoriginum.spirit-powers/ectodiff.description": "Light gradually decreases the amount of ectoplasm that you have, which causes you to take damage or die if it becomes too low.", + "power.terraoriginum.spirit-powers/skin.name": "Translucent skin", + "power.terraoriginum.spirit-powers/skin.description": "Your skin is slightly translucent, allowing others to see through you.", + + //-----Serpenta-----// + "origin.terraoriginum.serpenta.name": "Serpenta", + "origin.terraoriginum.serpenta.description": "A hybrid between merfolk and sea serpents... don't ask how they managed that.", + "power.terraoriginum.serpenta-powers/boilingshot.name": "Boiling Shot", + "power.terraoriginum.serpenta-powers/boilingshot.description": "You shoot a jet of boiling water, this dehydrates you and has a cooldown of 30 seconds", + "power.terraoriginum.serpenta-powers/scales.name": "Scales", + "power.terraoriginum.serpenta-powers/scales.description": "A serpenta has thick scales, giving it some natural armour", + + //-----Fairy-----// + "origin.terraoriginum.fairy.name": "Fairy", + "origin.terraoriginum.fairy.description": "A tiny humanoid creature that has wings.", + "power.terraoriginum.fairy-powers/smallheight.name": "Small", + "power.terraoriginum.fairy-powers/smallheight.description": "You are only about one block tall", + "power.terraoriginum.fairy-powers/fragile.name": "Fragile", + "power.terraoriginum.fairy-powers/fragile.description": "You only have half the usual health", + "power.terraoriginum.fairy-powers/yummyhoney.name": "Yummy Honey", + "power.terraoriginum.fairy-powers/yummyhoney.description": "Honey is extremely good for you, providing a lot of food and topping up your saturation", + "power.terraoriginum.fairy-powers/nimble.name": "Nimble", + "power.terraoriginum.fairy-powers/nimble.description": "You must remain lightweight to fly, this means you cannot wear armour stronger than chainmail.", + "power.terraoriginum.fairy-powers/pollenation.name": "Pollination", + "power.terraoriginum.fairy-powers/pollenation.description": "You pollinate plants in a 4 block radius to yourself, making them grow faster.", + + //-----Lato-----// + "origin.terraoriginum.lato.name": "Lato", + "origin.terraoriginum.lato.description": "A creature from a faraway world, one with very little sun, one with a very high gravitational pull.", + "power.terraoriginum.lato-powers/sun_damage.name": "Xeroderma Pigmentosum", + "power.terraoriginum.lato-powers/sun_damage.description": "Your skin sizzles up in the sun.", + "power.terraoriginum.lato-powers/teleport.name": "Teleportation", + "power.terraoriginum.lato-powers/teleport.description": "You can teleport some distance away.", + "power.terraoriginum.lato-powers/perfect_vision.name": "Perfect Vision", + "power.terraoriginum.lato-powers/perfect_vision.description": "Carefully constructed eyes that allow for perfect vision, they also are toggleable.", + "power.terraoriginum.lato-powers/rage.name": "Rage", + "power.terraoriginum.lato-powers/rage.description": "Rage gives strength and speed for a short period of time.", + "power.terraoriginum.lato-powers/strong.name": "Strong", + "power.terraoriginum.lato-powers/strong.description": "You do more damage than regular people.", + "power.terraoriginum.lato-powers/twelve_hearts.name": "Healthy", + "power.terraoriginum.lato-powers/twelve_hearts.description": "Being what you are, you have 12 hearts.", + "power.terraoriginum.lato-powers/lato_blooded.name": "Lato Blooded", + "power.terraoriginum.lato-powers/lato_blooded.description": "A Latian's blood can work out most poisoning by itself.", + "power.terraoriginum.lato-powers/tailwind.name": "Tailwind", + "power.terraoriginum.lato-powers/tailwind.description": "You are a little bit quicker on foot than others.", + "power.terraoriginum.lato-powers/natural_armor.name": "Thick Skin", + "power.terraoriginum.lato-powers/natural_armor.description": "Even without wearing armor, your skin provides natural protection.", + "power.terraoriginum.lato-powers/long_arms.name": "Long Arms", + "power.terraoriginum.lato-powers/long_arms.description": "You have slightly longer arms.", + "power.terraoriginum.lato-powers/tall.name": "Tall", + "power.terraoriginum.lato-powers/tall.description": "You are half a block taller.", + + //-----Sylt-----// + "origin.terraoriginum.sylt.name": "Sylt", + "origin.terraoriginum.sylt.description": "A Lato, but shorter and without the extended reach.", + + //-----Mync-----// + "origin.terraoriginum.mync.name": "Mync", + "origin.terraoriginum.mync.description": "Myncs are blind Latos. They can't teleport like regular Latos but are stronger than most Latos.", + "power.terraoriginum.mync-powers/mync_blind.name": "Mushroom Sense", + "power.terraoriginum.mync-powers/mync_blind.description": "Standing by mushrooms or mushroom related blocks allows you to connect to and feel through their roots to better perceive your surroundings.", + "power.terraoriginum.mync-powers/mync_tailwind.name": "Tailwind", + "power.terraoriginum.mync-powers/mync_tailwind.description": "You are a little bit quicker on foot than others.", + "power.terraoriginum.mync-powers/mync_rage.name": "Rage", + "power.terraoriginum.mync-powers/mync_rage.description": "Rage gives strength and speed for a short period of time.", + "power.terraoriginum.mync-powers/mync_natural_armour.name": "Thick Skin", + "power.terraoriginum.mync-powers/mync_natural_armour.description": "Even without wearing armor, your skin provides natural protection.", + "power.terraoriginum.mync-powers/mync_vision.name": "Blind", + "power.terraoriginum.mync-powers/mync_vision.description": "Myncs, being blind Latos, have to perceive their environment through sound.", + "power.terraoriginum.mync-powers/mync_echolocate.name": "Echolocation", + "power.terraoriginum.mync-powers/mync_echolocate.description": "Use your [Tab button] to make a sound to figure out how your surrounding area looks like. Nearby wool will stop this from working, but you can use a night vision potion to get it to work permanently.", + "power.terraoriginum.mync-powers/mync_strong.name": "Strong", + "power.terraoriginum.mync-powers/mync_strong.description": "You do more damage than regular people.", + "death.attack.terraoriginum:burn_in_sun": "%1$s sizzled up in the sun.", + "death.attack.terraoriginum:burn_in_sun.player": "%1$s sizzled up in the sun whilst trying to escape %2$s.", + + //-----Kitsune-----// + "origin.terraoriginum.kitsune.name": "Kitsune", + "origin.terraoriginum.kitsune.description": "This race of Spirit Foxes dwell around settlements waiting for for treasure to be left unguarded. Though weak in terms of vitality they use their spiritual power to hide and strengthen their power.", + "power.terraoriginum.kitsune-powers/armor.name": "Rich Man's Armour", + "power.terraoriginum.kitsune-powers/armor.description": "You cannot use chanimail armor or leather armor because mmm, unfancy", + "power.terraoriginum.kitsune-powers/diet.name": "Vulpine Diet", + "power.terraoriginum.kitsune-powers/diet.description": "Kitsune love berries and therefore they cure 4 hunger points and 14.4 saturation points (like golden carrots) & your diet is restricted to meat, fish, and berries, so you can't really eat vegetables.", + "power.terraoriginum.kitsune-powers/fox_pouch.name": "Mighty Mouth", + "power.terraoriginum.kitsune-powers/fox_pouch.description": "You carry a secret stash that no one but you has acccess to. You can access this pouch by using your load hotbar activator key.", + "power.terraoriginum.kitsune-powers/home.name": "Home Sweet Home", + "power.terraoriginum.kitsune-powers/home.description": "Your natural spawnpoint is in the Taiga biome.", + "power.terraoriginum.kitsune-powers/hungy.name": "Fast Metabolism", + "power.terraoriginum.kitsune-powers/hungy.description": "A small body performing great movements requires a large amount of food!", + "power.terraoriginum.kitsune-powers/paws.name": "Paws", + "power.terraoriginum.kitsune-powers/paws.description": "You are unable to hold a shield and deal less damage with projectiles because of how your paws are built.", + "power.terraoriginum.kitsune-powers/phasing.name": "Phasing", + "power.terraoriginum.kitsune-powers/phasing.description": "You can walk through solid material, except obsidian, crying obsidian, barriers and bedrock, BUT you are unable to phase up or down.", + "power.terraoriginum.kitsune-powers/pounce.name": "Pounce", + "power.terraoriginum.kitsune-powers/pounce.description": "You perform a great leap towards the direction you're facing. You also deal more damage while falling.", + "power.terraoriginum.kitsune-powers/run.name": "Scram!", + "power.terraoriginum.kitsune-powers/run.description": "Whenever your health goes below 4 hearts, you gain a small speed boost", + "power.terraoriginum.kitsune-powers/speed.name": "Small Frame", + "power.terraoriginum.kitsune-powers/speed.description": "Your small frame gives little weight, making it easier to move at the cost of health.", + + //-----Yulde-----// + "origin.terraoriginum.yulde.name": "Yulde", + "origin.terraoriginum.yulde.description": "A Yulde is a Lato with the ability to change the tides of battle, at the cost of their lives.", + "power.terraoriginum.yulde-powers/last_stand.name": "Last Stand", + "power.terraoriginum.yulde-powers/last_stand.description": "You gain strength 4 and speed 2 for 60 seconds, after which you will, without fail, die.", + "death.attack.terraoriginum:last_stand": "%1$s made their last stand.", + "death.attack.terraoriginum:last_stand.player": "%1$s made their last stand before dying to %2$s.", + + //-----florian-----// + "origin.terraoriginum.florian.name": "Florian", + "origin.terraoriginum.florian.description": "Florians are soft-hearted creatures of nature. They rarely pose a threat and stand as keepers of the natural environment.", + "power.terraoriginum.florian-powers/absorbing.name": "Absorbing", + "power.terraoriginum.florian-powers/absorbing.description": "You gain strength when in contact with water.", + "power.terraoriginum.florian-powers/flammable.name": "Flammable", + "power.terraoriginum.florian-powers/flammable.description": "You take twice as much damage from fire", + "power.terraoriginum.florian-powers/photosynthesis.name": "Photosynthesis", + "power.terraoriginum.florian-powers/photosynthesis.description": "You are satiated when in the sun.", + "power.terraoriginum.florian-powers/pocket_sand.name": "Pocket Sand", + "power.terraoriginum.florian-powers/pocket_sand.description": "As a protective measure, you keep sand in your pocket to temporarily blind an attacker.", + "power.terraoriginum.florian-powers/aura_of_growth.name": "Growth Aura", + "power.terraoriginum.florian-powers/aura_of_growth.description": "Crops around you grow at a faster rate.", + "power.terraoriginum.florian-powers/bonemeal.name": "Bonemeal Body", + "power.terraoriginum.florian-powers/bonemeal.description": "When hit, you spread bonemeal into your surrounding area.", + "power.terraoriginum.florian-powers/compost.name": "Compostable", + "power.terraoriginum.florian-powers/compost.description": "When you're in a composter, it gradually fills up", + "power.terraoriginum.florian-powers/green_fingered.name": "Green Fingered", + "power.terraoriginum.florian-powers/green_fingered.description": "Your skin has a slightly green hue to it", + "power.terraoriginum.florian-powers/small.name": "Small", + "power.terraoriginum.florian-powers/small.description": "You are quite small and have 5 hearts because of it.", + "power.terraoriginum.florian-powers/weak.name": "Weak", + "power.terraoriginum.florian-powers/weak.description": "Because you are a creature of nature, you cannot do much damage.", + "power.terraoriginum.munch-powers/passivemobs.name": "Passive Mobs", + "power.terraoriginum.munch-powers/passivemobs.description": "Mobs just don't care enough to attack you.", + + //-----Muckunde-----// + "origin.terraoriginum.muckunde.name": "Muckunde", + "origin.terraoriginum.muckunde.description": "A dirt creature often found borrowing underground.", + "power.terraoriginum.muckunde-powers/toughskin.name": "Tough Skin", + "power.terraoriginum.muckunde-powers/toughskin.description": "A muckunde has hard skin, giving it some natural armour", + "power.terraoriginum.muckunde-powers/likesoil1.name": "Like Soil", + "power.terraoriginum.muckunde-powers/likesoil1.description": "The muckunde has the ability to phase through any dirt-like blocks.", + "power.terraoriginum.muckunde-powers/yummybeets.name": "Yummy Beets", + "power.terraoriginum.muckunde-powers/yummybeets.description": "Your body makes good use of the nutritional composition of beetroot", + "power.terraoriginum.muckunde-powers/hydrophobic.name": "Hydrophobic", + "power.terraoriginum.muckunde-powers/hydrophobic.description": "Your body completely ignores water", + + //-----Monarch-----// + "origin.terraoriginum.monarch.name": "Monarch", + "origin.terraoriginum.monarch.description": "A prideful race that have bioengineered themselves to draw energy directly from the sun.", + "power.terraoriginum.monarch-powers/hyperefficient_blood.name": "Hyperefficient Blood", + "power.terraoriginum.monarch-powers/hyperefficient_blood.description": "Your blood is extremely efficient, destroying any poisons within your bloodstream before they have a chance to do any damage", + "power.terraoriginum.monarch-powers/solar_energy.name": "Solar Energy", + "power.terraoriginum.monarch-powers/solar_energy.description": "You draw energy from the sun and store it within your body, and access it at will to use various abilities. But if you run out, your body will no longer be able to keep itself together", + "power.terraoriginum.monarch-powers/sun_fueled.name": "Sun Fueled", + "power.terraoriginum.monarch-powers/sun_fueled.description": "You have evolved to draw power from the sun, leading you to become more powerful during the day", + "power.terraoriginum.monarch-powers/nuclear_rush.name": "Nuclear Rush", + "power.terraoriginum.monarch-powers/nuclear_rush.description": "using the sun energy stored within your body, you can temporarily start a weak thermonuclear reaction, pushing your body beyond the limitations of living flesh.", + "power.terraoriginum.monarch-powers/instant_transmission.name": "Instant Transmission", + "power.terraoriginum.monarch-powers/instant_transmission.description": "Use the thermonuclear energy stored in your body to erase the space between you and your target", + "power.terraoriginum.monarch-powers/nyctophobia.name": "Nyctophobia", + "power.terraoriginum.monarch-powers/nyctophobia.description": "Your power is derived from the sun, making you weaker during the night", + "power.terraoriginum.monarch-powers/shining.name": "Shining", + "power.terraoriginum.monarch-powers/shining.description": "An entire lifetime of absorbing the sun's energy makes you radiate its light", + "power.terraoriginum.monarch-powers/super_dash.name": "Super Dash", + "power.terraoriginum.monarch-powers/super_dash.description": "release a large portion of the solar energy stored within your body to create a large amount of thrust in whatever direction you are facing", + "power.terraoriginum.monarch-powers/hydropetrification.name": "Hydropetrification", + "power.terraoriginum.monarch-powers/hydropetrification.description": "Your body's cells contain a high concentration of neutrinos to facilitate nuclear processes whithin itself, this causes your entire body to heavily slow down underwater", + "power.terraoriginum.monarch-powers/totem_fueled.name": "Totem Fueled", + "power.terraoriginum.monarch-powers/totem_fueled.description": "Craft a Sun Totem and hold it to get small amounts of sun energy even outside the sun", + + //-----Blight-----// + "origin.terraoriginum.blight.name": "Blight", + "origin.terraoriginum.blight.description": "Blights are foul and disgusting creatures. Created in the depths of the nether, they exist for the purpose of bringing rot and wither to all forms of nature.", + "power.terraoriginum.blight-powers/bane_of_agriculture.name": "Bane of Agriculture", + "power.terraoriginum.blight-powers/bane_of_agriculture.description": "Through a process not very well understood, blights can rapidly reverse the growth of all crops in about a 6 block radius around themselves", + "power.terraoriginum.blight-powers/blighted_feet.name": "Blighted Feet", + "power.terraoriginum.blight-powers/blighted_feet.description": "The Blight's cursed feet destroy life within the soil they touch, turning it to course dirt.", + "power.terraoriginum.blight-powers/nether_spawn.name": "Nether Spawn", + "power.terraoriginum.blight-powers/nether_spawn.description": "Blights were created in the nether, hence you will start there when you spawn. Curiously, they are not immune to fire like most other nether inhabitants", + "power.terraoriginum.blight-powers/foul_flesh.name": "Foul Flesh", + "power.terraoriginum.blight-powers/foul_flesh.description": "The Blight's flesh is foul and rotten, and as such no poison can effect it.", + "power.terraoriginum.blight-powers/florivory.name": "Florvory", + "power.terraoriginum.blight-powers/florivory.description": "The Blight cannot naturally regenerate, and needs to devour flowers to reconstitute its body if damaged.", + "power.terraoriginum.blight-powers/dead_cells.name": "Dead Cells", + "power.terraoriginum.blight-powers/dead_cells.description": "A large portion of a Blight's body is comprised of dead cells, hitting them does not damage its vital functions, essentially acting as a small amount of armour for the blight.", + + //-----Munch-----// + "origin.terraoriginum.munch.name": "Munch", + "origin.terraoriginum.munch.description": "The Munch are a very small species which can.", + "power.terraoriginum.munch-powers/tiny.name": "Tiny", + "power.terraoriginum.munch-powers/tiny.description": "You are very tiny. About 4 pixels tall. Conveniently, this also makes you more difficult to hit.", + "power.terraoriginum.munch-powers/little_health.name": "Little Health", + "power.terraoriginum.munch-powers/little_health.description": "You have very little health due to your tiny size, you little munch.", + "power.terraoriginum.munch-powers/nimble.name": "Too Small to Damage", + "power.terraoriginum.munch-powers/nimble.description": "You are immune to thorns and velocity based damage. You are not slowed by blocks such as sweet berry bushes or cobwebs. You can walk on powder snow.", + "power.terraoriginum.munch-powers/better_health.name": "Better Healing", + "power.terraoriginum.munch-powers/better_health.description": "You heal twice as fast as the average joe, must be compensating for something.", + "power.terraoriginum.munch-powers/short_arms.name": "Short Arms", + "power.terraoriginum.munch-powers/short_arms.description": "You are small, therefore you can't reach as far as the average joe.", + "power.terraoriginum.munch-powers/tiny_motion.name": "Sized Speed", + "power.terraoriginum.munch-powers/tiny_motion.description": "You're about as fast as you are tiny, and you can only jump up a little over half a block.", + "power.terraoriginum.munch-powers/speedy_bastard.name": "Speedy Bastard", + "power.terraoriginum.munch-powers/speedy_bastard.description": "You are a fast little munch, aren't you? Maybe not normally, but now §ocan be§r.", + "power.terraoriginum.munch-powers/climbing.name": "Wall Runner", + "power.terraoriginum.munch-powers/climbing.description": "You have evolved a swift and seamless climbing technique which allows you to glide up vertical terrains with the grace and speed of a wall runner.", + "power.terraoriginum.munch-powers/mounting.name": "Mounting", + "power.terraoriginum.munch-powers/mounting.description": "You can mount and ride other players and entities. Whether seeking a vantage point, or swift transport. Surely you didn't think I meant mounting in §othat§r way, did you?", + "power.terraoriginum.munch-powers/quiet.name": "Quiet", + "power.terraoriginum.munch-powers/quiet.description": "You're too small to make sound, sculk sensors don't even hear you.", + "power.terraoriginum.munch-powers/tiny_appetite.name": "Tiny Appetite", + "power.terraoriginum.munch-powers/tiny_appetite.description": "You don't lose hunger very quickly" + +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage0.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage0.json new file mode 100644 index 0000000..63325ea --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_0" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage1.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage1.json new file mode 100644 index 0000000..e8df0e0 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_1" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage2.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage2.json new file mode 100644 index 0000000..7c2af95 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_2" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage3.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage3.json new file mode 100644 index 0000000..5a0ab03 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage3.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_3" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage4.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage4.json new file mode 100644 index 0000000..5063029 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage4.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_4" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage5.json b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage5.json new file mode 100644 index 0000000..744e9ad --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/cotton_crop_stage5.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "terraoriginum:block/crop_cotton_5" + } + } + diff --git a/src/main/resources/assets/terraoriginum/models/block/crucifix.json b/src/main/resources/assets/terraoriginum/models/block/crucifix.json new file mode 100644 index 0000000..e46610a --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/block/crucifix.json @@ -0,0 +1,53 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/cube_all", + "textures": { + "0": "terraoriginum:block/crucifix", + "1": "terraoriginum:block/crucifix2", + "particle": "terraoriginum:block/crucifix" + }, + "elements": [ + { + "from": [6, 0, 6], + "to": [9, 12, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [6.7, 0, 7]}, + "faces": { + "north": {"uv": [2, 2, 5, 14], "texture": "#0"}, + "east": {"uv": [-1, 2, 2, 14], "texture": "#0"}, + "south": {"uv": [8, 2, 11, 14], "texture": "#0"}, + "west": {"uv": [5, 2, 8, 14], "texture": "#0"}, + "up": {"uv": [5, 2, 2, -1], "texture": "#0"}, + "down": {"uv": [8, -1, 5, 2], "texture": "#0"} + } + }, + { + "from": [9, 6, 6], + "to": [12, 9, 9], + "faces": { + "north": {"uv": [2, 2, 5, 5], "texture": "#1"}, + "east": {"uv": [-1, 2, 2, 5], "texture": "#1"}, + "south": {"uv": [8, 2, 11, 5], "texture": "#1"}, + "west": {"uv": [5, 2, 8, 5], "texture": "#1"}, + "up": {"uv": [5, 2, 2, -1], "texture": "#1"}, + "down": {"uv": [8, -1, 5, 2], "texture": "#1"} + } + }, + { + "from": [3, 6, 6], + "to": [6, 9, 9], + "faces": { + "north": {"uv": [2, 2, 5, 5], "texture": "#1"}, + "east": {"uv": [-1, 2, 2, 5], "texture": "#1"}, + "south": {"uv": [8, 2, 11, 5], "texture": "#1"}, + "west": {"uv": [5, 2, 8, 5], "texture": "#1"}, + "up": {"uv": [5, 2, 2, -1], "texture": "#1"}, + "down": {"uv": [8, -1, 5, 2], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 6, 1] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/cotton_ball.json b/src/main/resources/assets/terraoriginum/models/item/cotton_ball.json new file mode 100644 index 0000000..608bf74 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/cotton_ball.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/cotton_ball" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/cotton_seeds.json b/src/main/resources/assets/terraoriginum/models/item/cotton_seeds.json new file mode 100644 index 0000000..efc5834 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/cotton_seeds.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/cotton_seeds" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/crucifix.json b/src/main/resources/assets/terraoriginum/models/item/crucifix.json new file mode 100644 index 0000000..8ab7d78 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/crucifix.json @@ -0,0 +1,3 @@ +{ + "parent": "terraoriginum:block/crucifix" + } \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/ghostly_boots.json b/src/main/resources/assets/terraoriginum/models/item/ghostly_boots.json new file mode 100644 index 0000000..aa74e93 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/ghostly_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/ghostly_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/ghostly_chestplate.json b/src/main/resources/assets/terraoriginum/models/item/ghostly_chestplate.json new file mode 100644 index 0000000..16f0829 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/ghostly_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/ghostly_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/ghostly_cloth.json b/src/main/resources/assets/terraoriginum/models/item/ghostly_cloth.json new file mode 100644 index 0000000..2936806 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/ghostly_cloth.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/ghostly_cloth" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/ghostly_helmet.json b/src/main/resources/assets/terraoriginum/models/item/ghostly_helmet.json new file mode 100644 index 0000000..72f0f55 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/ghostly_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/ghostly_helmet" + } + } \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/ghostly_leggings.json b/src/main/resources/assets/terraoriginum/models/item/ghostly_leggings.json new file mode 100644 index 0000000..83dd1be --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/ghostly_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/ghostly_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/mync_eye.json b/src/main/resources/assets/terraoriginum/models/item/mync_eye.json new file mode 100644 index 0000000..5f31c4b --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/mync_eye.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/mync_eye" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/spirit.json b/src/main/resources/assets/terraoriginum/models/item/spirit.json new file mode 100644 index 0000000..5f693e2 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/spirit.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/spirit" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/sun_totem.json b/src/main/resources/assets/terraoriginum/models/item/sun_totem.json new file mode 100644 index 0000000..b804745 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/sun_totem.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/sun_totem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/tiny.json b/src/main/resources/assets/terraoriginum/models/item/tiny.json new file mode 100644 index 0000000..345332c --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/tiny.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "terraoriginum:item/tiny" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/models/item/umbrella.json b/src/main/resources/assets/terraoriginum/models/item/umbrella.json new file mode 100644 index 0000000..59bdf60 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/models/item/umbrella.json @@ -0,0 +1,292 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [128, 128], + "textures": { + "layer0": "terraoriginum:item/umbrella", + "layer1": "terraoriginum:item/umbrellaoverlay" + }, + "elements": [ + { + "from": [-7.25, 26.5, -7.25], + "to": [23.25, 27.5, -6.25], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 34.5, 3.75]}, + "faces": { + "north": {"uv": [3.25, 0.125, 6.25, 0.25], "texture": "#layer1", "tintindex": 1}, + "east": {"uv": [3.125, 0.125, 3.25, 0.25], "texture": "#layer1", "tintindex": 1}, + "south": {"uv": [6.375, 0.125, 9.375, 0.25], "texture": "#layer1", "tintindex": 1}, + "west": {"uv": [6.25, 0.125, 6.375, 0.25], "texture": "#layer1", "tintindex": 1}, + "up": {"uv": [6.25, 0.125, 3.25, 0], "texture": "#layer1", "tintindex": 1}, + "down": {"uv": [9.25, 0, 6.25, 0.125], "texture": "#layer1", "tintindex": 1} + } + }, + { + "from": [-7.25, 26.5, -6.25], + "to": [-6.25, 27.5, 22.25], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 34.5, 4.75]}, + "faces": { + "north": {"uv": [2.75, 5.75, 2.875, 5.875], "texture": "#layer1", "tintindex": 1}, + "east": {"uv": [0, 5.75, 2.75, 5.875], "texture": "#layer1", "tintindex": 1}, + "south": {"uv": [5.625, 5.75, 5.75, 5.875], "texture": "#layer1", "tintindex": 1}, + "west": {"uv": [2.875, 5.75, 5.625, 5.875], "texture": "#layer1", "tintindex": 1}, + "up": {"uv": [2.875, 5.75, 2.75, 3], "texture": "#layer1", "tintindex": 1}, + "down": {"uv": [3, 3, 2.875, 5.75], "texture": "#layer1", "tintindex": 1} + } + }, + { + "from": [-7.25, 26.5, 22.25], + "to": [23.25, 27.5, 23.25], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 34.5, 27.25]}, + "faces": { + "north": {"uv": [3.25, 3.25, 6.25, 3.375], "texture": "#layer1", "tintindex": 1}, + "east": {"uv": [3.125, 3.25, 3.25, 3.375], "texture": "#layer1", "tintindex": 1}, + "south": {"uv": [6.375, 3.25, 9.375, 3.375], "texture": "#layer1", "tintindex": 1}, + "west": {"uv": [6.25, 3.25, 6.375, 3.375], "texture": "#layer1", "tintindex": 1}, + "up": {"uv": [6.25, 3.25, 3.25, 3.125], "texture": "#layer1", "tintindex": 1}, + "down": {"uv": [9.25, 3.125, 6.25, 3.25], "texture": "#layer1", "tintindex": 1} + } + }, + { + "from": [22.25, 26.5, -6.25], + "to": [23.25, 27.5, 22.25], + "rotation": {"angle": 0, "axis": "y", "origin": [27.25, 34.5, 4.75]}, + "faces": { + "north": {"uv": [2.75, 2.75, 2.875, 2.875], "texture": "#layer1", "tintindex": 1}, + "east": {"uv": [0, 2.75, 2.75, 2.875], "texture": "#layer1", "tintindex": 1}, + "south": {"uv": [5.625, 2.75, 5.75, 2.875], "texture": "#layer1", "tintindex": 1}, + "west": {"uv": [2.875, 2.75, 5.625, 2.875], "texture": "#layer1", "tintindex": 1}, + "up": {"uv": [2.875, 2.75, 2.75, 0], "texture": "#layer1", "tintindex": 1}, + "down": {"uv": [3, 0, 2.875, 2.75], "texture": "#layer1", "tintindex": 1} + } + }, + { + "from": [7.5, -7, 7.5], + "to": [8.5, 30.5, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [15.5, 8, 15.5]}, + "faces": { + "north": {"uv": [5.875, 6, 6, 9.75], "texture": "#layer1", "tintindex": 1}, + "east": {"uv": [5.75, 6, 5.875, 9.75], "texture": "#layer1", "tintindex": 1}, + "south": {"uv": [6.125, 6, 6.25, 9.75], "texture": "#layer1", "tintindex": 1}, + "west": {"uv": [6, 6, 6.125, 9.75], "texture": "#layer1", "tintindex": 1}, + "up": {"uv": [6, 6, 5.875, 5.875], "texture": "#layer1", "tintindex": 1}, + "down": {"uv": [6.125, 5.875, 6, 6], "texture": "#layer1", "tintindex": 1} + } + }, + { + "from": [-7.25, 27.5, -7.25], + "to": [23.25, 28.5, -3.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 4.5, 3.75]}, + "faces": { + "north": {"uv": [3.25, 0.25, 6.25, 0.375], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 0.25, 3.25, 0.375], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [6.5, 0.25, 9.5, 0.375], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [6.25, 0.25, 6.5, 0.375], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [6.25, 0.25, 3.25, 0], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [9.25, 0, 6.25, 0.25], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-7.25, 27.5, 19.75], + "to": [23.25, 28.5, 23.25], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 4.5, 25.75]}, + "faces": { + "north": {"uv": [3.25, 0.25, 6.25, 0.375], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 0.25, 3.25, 0.375], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [6.5, 0.25, 9.5, 0.375], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [6.25, 0.25, 6.5, 0.375], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [6.25, 0.25, 3.25, 0], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [9.25, 0, 6.25, 0.25], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [19.75, 27.5, -3.75], + "to": [23.25, 28.5, 19.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 4.5, 23.25]}, + "faces": { + "north": {"uv": [2.375, 2.375, 2.625, 2.5], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [0, 2.375, 2.375, 2.5], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [5, 2.375, 5.25, 2.5], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [2.625, 2.375, 5, 2.5], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [2.625, 2.375, 2.375, 0], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [2.875, 0, 2.625, 2.375], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-7.25, 27.5, -3.775], + "to": [-3.75, 28.5, 19.775], + "rotation": {"angle": 0, "axis": "y", "origin": [-18.25, 4.5, 23.25]}, + "faces": { + "north": {"uv": [2.375, 2.375, 2.625, 2.5], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [0, 2.375, 2.375, 2.5], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [5, 2.375, 5.25, 2.5], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [2.625, 2.375, 5, 2.5], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [2.625, 2.375, 2.375, 0], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [2.875, 0, 2.625, 2.375], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-4.25, 28.425, 16.75], + "to": [20.25, 29.5, 20.25], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 5.5, 3.75]}, + "faces": { + "north": {"uv": [3.25, 0.75, 5.75, 0.875], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 0.75, 3.25, 0.875], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [6, 0.75, 8.5, 0.875], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [5.75, 0.75, 6, 0.875], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [5.75, 0.75, 3.25, 0.5], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [8.25, 0.5, 5.75, 0.75], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-4.25, 28.425, -0.775], + "to": [-0.75, 29.5, 16.8], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 5.5, -11.75]}, + "faces": { + "north": {"uv": [1.875, 6.375, 2.125, 6.5], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [0, 6.375, 1.875, 6.5], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [4, 6.375, 4.25, 6.5], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [2.125, 6.375, 4, 6.5], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [2.125, 6.375, 1.875, 4.5], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [2.375, 4.5, 2.125, 6.375], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [16.75, 28.425, -0.8], + "to": [20.25, 29.5, 16.8], + "rotation": {"angle": 0, "axis": "y", "origin": [21.75, 5.5, -11.75]}, + "faces": { + "north": {"uv": [1.875, 6.375, 2.125, 6.5], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [0, 6.375, 1.875, 6.5], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [4, 6.375, 4.25, 6.5], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [2.125, 6.375, 4, 6.5], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [2.125, 6.375, 1.875, 4.5], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [2.375, 4.5, 2.125, 6.375], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-4.25, 28.425, -4.25], + "to": [20.25, 29.5, -0.75], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 5.5, 3.75]}, + "faces": { + "north": {"uv": [3.25, 0.75, 5.75, 0.875], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 0.75, 3.25, 0.875], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [6, 0.75, 8.5, 0.875], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [5.75, 0.75, 6, 0.875], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [5.75, 0.75, 3.25, 0.5], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [8.25, 0.5, 5.75, 0.75], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [-1.25, 29.425, -1.25], + "to": [2.25, 30.5, 17.25], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 6.5, 3.75]}, + "faces": { + "north": {"uv": [6.125, 6.125, 6.375, 6.25], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [4.125, 6.125, 6.125, 6.25], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [8.375, 6.125, 8.625, 6.25], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [6.375, 6.125, 8.375, 6.25], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [6.375, 6.125, 6.125, 4.125], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [6.625, 4.125, 6.375, 6.125], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [13.75, 29.425, -1.25], + "to": [17.25, 30.5, 17.25], + "rotation": {"angle": 0, "axis": "y", "origin": [17.75, 6.5, 3.75]}, + "faces": { + "north": {"uv": [6.125, 6.125, 6.375, 6.25], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [4.125, 6.125, 6.125, 6.25], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [8.375, 6.125, 8.625, 6.25], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [6.375, 6.125, 8.375, 6.25], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [6.375, 6.125, 6.125, 4.125], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [6.625, 4.125, 6.375, 6.125], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [2.2, 29.425, 13.75], + "to": [13.8, 30.5, 17.25], + "rotation": {"angle": 0, "axis": "y", "origin": [15.25, 6.5, 3.75]}, + "faces": { + "north": {"uv": [3.25, 1.25, 4.625, 1.375], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 1.25, 3.25, 1.375], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [4.875, 1.25, 6.25, 1.375], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [4.625, 1.25, 4.875, 1.375], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [4.625, 1.25, 3.25, 1], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [6, 1, 4.625, 1.25], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [2.225, 29.425, -1.25], + "to": [13.775, 30.5, 2.25], + "rotation": {"angle": 0, "axis": "y", "origin": [15.25, 6.5, -10.25]}, + "faces": { + "north": {"uv": [3.25, 1.25, 4.625, 1.375], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [3, 1.25, 3.25, 1.375], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [4.875, 1.25, 6.25, 1.375], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [4.625, 1.25, 4.875, 1.375], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [4.625, 1.25, 3.25, 1], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [6, 1, 4.625, 1.25], "texture": "#layer0", "tintindex": 0} + } + }, + { + "from": [0.75, 30.425, 0.75], + "to": [15.25, 31.5, 15.25], + "rotation": {"angle": 0, "axis": "y", "origin": [3.75, 7.5, 3.75]}, + "faces": { + "north": {"uv": [1.5, 4.125, 3, 4.25], "texture": "#layer0", "tintindex": 0}, + "east": {"uv": [0, 4.125, 1.5, 4.25], "texture": "#layer0", "tintindex": 0}, + "south": {"uv": [4.5, 4.125, 6, 4.25], "texture": "#layer0", "tintindex": 0}, + "west": {"uv": [3, 4.125, 4.5, 4.25], "texture": "#layer0", "tintindex": 0}, + "up": {"uv": [3, 4.125, 1.5, 2.625], "texture": "#layer0", "tintindex": 0}, + "down": {"uv": [4.5, 2.625, 3, 4.125], "texture": "#layer0", "tintindex": 0} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [68, 0, 0], + "translation": [0, 2.25, 7.5] + }, + "thirdperson_lefthand": { + "rotation": [71.25, 0, 0] + }, + "firstperson_righthand": { + "translation": [0, -3.25, 4.75], + "scale": [1.44, 1.44, 1.44] + }, + "firstperson_lefthand": { + "translation": [0, -3.25, 4.75], + "scale": [1.44, 1.44, 1.44] + }, + "ground": { + "rotation": [45, 0, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [0, 0, 45], + "translation": [3.25, -2.75, -1.25], + "scale": [0.45, 0.45, 0.45] + }, + "head": { + "scale": [1.7, 1, 1.7] + }, + "fixed": { + "rotation": [0, 0, -45], + "translation": [-3, -3, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "handle", + "origin": [15.5, 8, 15.5], + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "umbrella", + "origin": [8, 8, 8], + "color": 0, + "children": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/terraoriginum/shaders/post/sobel.json b/src/main/resources/assets/terraoriginum/shaders/post/sobel.json new file mode 100644 index 0000000..5c390a4 --- /dev/null +++ b/src/main/resources/assets/terraoriginum/shaders/post/sobel.json @@ -0,0 +1,17 @@ +{ + "targets": [ + "swap" + ], + "passes": [ + { + "name": "sobel", + "intarget": "minecraft:main", + "outtarget": "swap" + }, + { + "name": "blit", + "intarget": "swap", + "outtarget": "minecraft:main" + } + ] +} diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_0.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_0.png new file mode 100644 index 0000000..9e07042 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_0.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_1.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_1.png new file mode 100644 index 0000000..f0b4bef Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_1.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_2.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_2.png new file mode 100644 index 0000000..bd629d0 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_2.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_3.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_3.png new file mode 100644 index 0000000..2c2d6f9 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_3.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_4.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_4.png new file mode 100644 index 0000000..4b8faec Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_4.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_5.png b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_5.png new file mode 100644 index 0000000..6033edf Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crop_cotton_5.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crucifix.png b/src/main/resources/assets/terraoriginum/textures/block/crucifix.png new file mode 100644 index 0000000..4a2e748 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crucifix.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/block/crucifix2.png b/src/main/resources/assets/terraoriginum/textures/block/crucifix2.png new file mode 100644 index 0000000..91dc57d Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/block/crucifix2.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/gui/ability_bar.png b/src/main/resources/assets/terraoriginum/textures/gui/ability_bar.png new file mode 100644 index 0000000..47afc51 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/gui/ability_bar.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/gui/nothing.png b/src/main/resources/assets/terraoriginum/textures/gui/nothing.png new file mode 100755 index 0000000..d42a75f Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/gui/nothing.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/armor/ghost_armour.png b/src/main/resources/assets/terraoriginum/textures/item/armor/ghost_armour.png new file mode 100644 index 0000000..4fce6db Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/armor/ghost_armour.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/cotton_ball.png b/src/main/resources/assets/terraoriginum/textures/item/cotton_ball.png new file mode 100644 index 0000000..7c5b03c Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/cotton_ball.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/cotton_seeds.png b/src/main/resources/assets/terraoriginum/textures/item/cotton_seeds.png new file mode 100644 index 0000000..b492bee Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/cotton_seeds.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/ghostly_boots.png b/src/main/resources/assets/terraoriginum/textures/item/ghostly_boots.png new file mode 100644 index 0000000..2ee3388 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/ghostly_boots.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/ghostly_chestplate.png b/src/main/resources/assets/terraoriginum/textures/item/ghostly_chestplate.png new file mode 100644 index 0000000..281b7fb Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/ghostly_chestplate.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/ghostly_cloth.png b/src/main/resources/assets/terraoriginum/textures/item/ghostly_cloth.png new file mode 100644 index 0000000..f078fec Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/ghostly_cloth.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/ghostly_helmet.png b/src/main/resources/assets/terraoriginum/textures/item/ghostly_helmet.png new file mode 100644 index 0000000..62ca17f Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/ghostly_helmet.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/ghostly_leggings.png b/src/main/resources/assets/terraoriginum/textures/item/ghostly_leggings.png new file mode 100644 index 0000000..db0c8dc Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/ghostly_leggings.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/mync_eye.png b/src/main/resources/assets/terraoriginum/textures/item/mync_eye.png new file mode 100644 index 0000000..4a54d4d Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/mync_eye.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/spirit.png b/src/main/resources/assets/terraoriginum/textures/item/spirit.png new file mode 100644 index 0000000..1ba29e5 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/spirit.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/sun_totem.png b/src/main/resources/assets/terraoriginum/textures/item/sun_totem.png new file mode 100644 index 0000000..d1bfdf4 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/sun_totem.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/tiny.png b/src/main/resources/assets/terraoriginum/textures/item/tiny.png new file mode 100644 index 0000000..95e6526 Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/tiny.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/umbrella.png b/src/main/resources/assets/terraoriginum/textures/item/umbrella.png new file mode 100644 index 0000000..3bbbd7a Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/umbrella.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/item/umbrellaoverlay.png b/src/main/resources/assets/terraoriginum/textures/item/umbrellaoverlay.png new file mode 100644 index 0000000..cba67bd Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/item/umbrellaoverlay.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_1.png b/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_1.png new file mode 100755 index 0000000..d42a75f Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_1.png differ diff --git a/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_2.png b/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_2.png new file mode 100755 index 0000000..d42a75f Binary files /dev/null and b/src/main/resources/assets/terraoriginum/textures/models/armor/robes_layer_2.png differ diff --git a/src/main/resources/data/c/tags/items/cotton_balls.json b/src/main/resources/data/c/tags/items/cotton_balls.json new file mode 100644 index 0000000..dc4d0bf --- /dev/null +++ b/src/main/resources/data/c/tags/items/cotton_balls.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "terraoriginum:cotton_ball" + ] + } \ No newline at end of file diff --git a/src/main/resources/data/origins/origin_layers/origin.json b/src/main/resources/data/origins/origin_layers/origin.json new file mode 100644 index 0000000..db96363 --- /dev/null +++ b/src/main/resources/data/origins/origin_layers/origin.json @@ -0,0 +1,39 @@ +{ + "replace": false, + "origins": [ + "terraoriginum:lato", + "terraoriginum:mync", + "terraoriginum:yulde", + "terraoriginum:monarch", + "terraoriginum:spirit", + "terraoriginum:shade", + "terraoriginum:wraith", + "terraoriginum:demon", + "terraoriginum:merfolk", + "terraoriginum:serpenta", + "terraoriginum:kitsune", + "terraoriginum:florian", + "terraoriginum:fairy", + "terraoriginum:muckunde", + "terraoriginum:blight", + "terraoriginum:munch", + "terraoriginum:angel", + "terraoriginum:sylt", + { + "condition": { + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "tag": "terraoriginum:unobtainable" + } + } + }, + "origins": [ + "terraoriginum:immortal_human" + + ] + } + ] + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/damage_type/boiling.json b/src/main/resources/data/terraoriginum/damage_type/boiling.json new file mode 100644 index 0000000..930b5b8 --- /dev/null +++ b/src/main/resources/data/terraoriginum/damage_type/boiling.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "boiling", + "scaling": "never" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/damage_type/burn_in_sun.json b/src/main/resources/data/terraoriginum/damage_type/burn_in_sun.json new file mode 100644 index 0000000..485f0bc --- /dev/null +++ b/src/main/resources/data/terraoriginum/damage_type/burn_in_sun.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "burn_in_sun", + "scaling": "never" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/damage_type/lack_of_ectoplasm.json b/src/main/resources/data/terraoriginum/damage_type/lack_of_ectoplasm.json new file mode 100644 index 0000000..975b62f --- /dev/null +++ b/src/main/resources/data/terraoriginum/damage_type/lack_of_ectoplasm.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "lack_of_ectoplasm", + "scaling": "never" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/damage_type/lack_of_sun.json b/src/main/resources/data/terraoriginum/damage_type/lack_of_sun.json new file mode 100644 index 0000000..5d32957 --- /dev/null +++ b/src/main/resources/data/terraoriginum/damage_type/lack_of_sun.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "lack_of_sun", + "scaling": "never" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/damage_type/last_stand.json b/src/main/resources/data/terraoriginum/damage_type/last_stand.json new file mode 100644 index 0000000..321aca1 --- /dev/null +++ b/src/main/resources/data/terraoriginum/damage_type/last_stand.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "last_stand", + "scaling": "never" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/loot_tables/blocks/cotton_crop_block.json b/src/main/resources/data/terraoriginum/loot_tables/blocks/cotton_crop_block.json new file mode 100644 index 0000000..5923d3c --- /dev/null +++ b/src/main/resources/data/terraoriginum/loot_tables/blocks/cotton_crop_block.json @@ -0,0 +1,68 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 3, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "name": "terraoriginum:cotton_ball", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "terraoriginum:cotton_crop_block", + "properties": { + "age": "7" + } + } + ] + }, + { + "type": "minecraft:item", + "name": "terraoriginum:cotton_seeds" + } + ] + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "terraoriginum:cotton_seeds", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ] + } + ], + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "terraoriginum:cotton_crop_block", + "properties": { + "age": "7" + } + } + ] + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/angel.json b/src/main/resources/data/terraoriginum/origins/angel.json new file mode 100644 index 0000000..52087b5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/angel.json @@ -0,0 +1,8 @@ +{ + "powers": [ + "terraoriginum:angel-powers/divine_grace" + ], + "icon": "minecraft:rotten_flesh", + "order": 1011, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/blight.json b/src/main/resources/data/terraoriginum/origins/blight.json new file mode 100644 index 0000000..6a4681e --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/blight.json @@ -0,0 +1,15 @@ +{ + "powers": [ + "terraoriginum:blight-powers/nether_spawn", + "terraoriginum:blight-powers/bane_of_agriculture", + "terraoriginum:blight-powers/florivory", + "terraoriginum:blight-powers/blighted_feet", + "terraoriginum:blight-powers/foul_flesh", + "terraoriginum:blight-powers/dead_cells", + "terraoriginum:blight-powers/foul_skin", + "terraoriginum:blight-powers/noregen" + ], + "icon": "minecraft:rotten_flesh", + "order": 1010, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/demon.json b/src/main/resources/data/terraoriginum/origins/demon.json new file mode 100644 index 0000000..ea89847 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/demon.json @@ -0,0 +1,21 @@ +{ + "powers": [ + "terraoriginum:demon-powers/self_transfiguration1", + "terraoriginum:demon-powers/self_transfiguration2", + "terraoriginum:demon-powers/self_transfiguration3", + "terraoriginum:demon-powers/stained", + "terraoriginum:demon-powers/extra_health", + "terraoriginum:spirit-powers/phasing1", + "terraoriginum:spirit-powers/phasing2", + "terraoriginum:spirit-powers/phasing3", + "terraoriginum:spirit-powers/ectoplasm", + "terraoriginum:spirit-powers/ectodiff", + "terraoriginum:spirit-powers/lackofectodmg", + "terraoriginum:spirit-powers/undead", + "terraoriginum:spirit-powers/nightvis", + "terraoriginum:ectotest" + ], + "icon": "minecraft:bone", + "order": 1002, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/dominion.json b/src/main/resources/data/terraoriginum/origins/dominion.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/origins/fairy.json b/src/main/resources/data/terraoriginum/origins/fairy.json new file mode 100644 index 0000000..5cfb9ce --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/fairy.json @@ -0,0 +1,17 @@ +{ + "powers": [ + "terraoriginum:fairy-powers/smallheight", + "terraoriginum:fairy-powers/smallwidth", + "terraoriginum:fairy-powers/smallhitboxheight", + "terraoriginum:fairy-powers/smallhitboxwidth", + "terraoriginum:fairy-powers/fragile", + "terraoriginum:fairy-powers/yummyhoney", + "terraoriginum:fairy-powers/nimble", + "terraoriginum:fairy-powers/pollenation", + "origins:elytra", + "origins:launch_into_air" + ], + "icon": "minecraft:amethyst_cluster", + "order": 1007, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/florian.json b/src/main/resources/data/terraoriginum/origins/florian.json new file mode 100644 index 0000000..7d507a7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/florian.json @@ -0,0 +1,22 @@ +{ + "powers": [ + "terraoriginum:florian-powers/green_fingered", + "terraoriginum:florian-powers/small", + "terraoriginum:florian-powers/small_width", + "terraoriginum:florian-powers/small_hitbox", + "terraoriginum:florian-powers/small_width_hitbox", + "terraoriginum:florian-powers/flammable", + "terraoriginum:florian-powers/photosynthesis", + "terraoriginum:florian-powers/absorbing", + "terraoriginum:florian-powers/compost", + "terraoriginum:florian-powers/bonemeal", + "terraoriginum:florian-powers/aura_of_growth", + "terraoriginum:florian-powers/pocket_sand", + "terraoriginum:florian-powers/weak", + "terraoriginum:florian-powers/five_hearts", + "terraoriginum:florian-powers/passivemobs" + ], + "icon": "minecraft:rose_bush", + "order": 1000, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/immortal_human.json b/src/main/resources/data/terraoriginum/origins/immortal_human.json new file mode 100644 index 0000000..e8dd057 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/immortal_human.json @@ -0,0 +1,9 @@ +{ + "powers": [ + "terraoriginum:immortal_human-powers/immortal", + "terraoriginum:immortal_human-powers/pathetic" + ], + "icon": "minecraft:air", + "order": 1000, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/kitsune.json b/src/main/resources/data/terraoriginum/origins/kitsune.json new file mode 100644 index 0000000..0b934a7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/kitsune.json @@ -0,0 +1,32 @@ +{ + "powers": [ + "terraoriginum:kitsune-powers/pounce", + "terraoriginum:kitsune-powers/pounce_aerialdamage", + "terraoriginum:kitsune-powers/pounce_falling", + "terraoriginum:kitsune-powers/phantomize", + "terraoriginum:kitsune-powers/phasing", + "terraoriginum:kitsune-powers/phasing_jump", + "terraoriginum:kitsune-powers/invisibility", + "terraoriginum:kitsune-powers/fox_pouch", + "terraoriginum:kitsune-powers/fox_pouch_sound", + "terraoriginum:kitsune-powers/run", + "origins:fall_immunity", + "terraoriginum:kitsune-powers/speed", + "terraoriginum:kitsune-powers/fragilefox", + "terraoriginum:kitsune-powers/smolman", + "terraoriginum:kitsune-powers/yummy_berries", + "terraoriginum:kitsune-powers/zberry_no_hurt", + "terraoriginum:kitsune-powers/armor", + "terraoriginum:kitsune-powers/paws", + "terraoriginum:kitsune-powers/phase_fix", + "terraoriginum:kitsune-powers/paws_shield", + "terraoriginum:kitsune-powers/hungy", + "terraoriginum:kitsune-powers/fox_eyes", + "terraoriginum:kitsune-powers/monch", + "terraoriginum:kitsune-powers/yum", + "terraoriginum:kitsune-powers/startbox" + ], + "icon": "minecraft:sweet_berries", + "order": 1006, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/lato.json b/src/main/resources/data/terraoriginum/origins/lato.json new file mode 100755 index 0000000..a8679db --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/lato.json @@ -0,0 +1,23 @@ +{ + "powers": [ + "terraoriginum:lato-powers/lato_blooded", + "terraoriginum:lato-powers/twelve_hearts", + "terraoriginum:lato-powers/natural_armor", + "terraoriginum:lato-powers/tailwind", + "terraoriginum:lato-powers/rage", + "terraoriginum:lato-powers/rage_addition", + "terraoriginum:lato-powers/perfect_vision", + "terraoriginum:lato-powers/sun_damage", + "terraoriginum:lato-powers/teleport", + "terraoriginum:lato-powers/strong", + "terraoriginum:lato-powers/long_arms", + "terraoriginum:lato-powers/tall", + "terraoriginum:lato-powers/tall_hitbox", + "terraoriginum:lato-powers/tall_width", + "terraoriginum:lato-powers/tall_width_hitbox" + ], + "icon": "netherite_axe", + "order": 998, + "impact": 3 + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/merfolk.json b/src/main/resources/data/terraoriginum/origins/merfolk.json new file mode 100644 index 0000000..4253ca7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/merfolk.json @@ -0,0 +1,18 @@ +{ + "powers": [ + "terraoriginum:merfolk-powers/hydration", + "terraoriginum:merfolk-powers/hydrodiff", + "terraoriginum:merfolk-powers/lackofhydrodamage", + "terraoriginum:merfolk-powers/waterbreathing", + "terraoriginum:merfolk-powers/webbedfeet", + "terraoriginum:merfolk-powers/webbedfeet2", + "terraoriginum:merfolk-powers/wethands", + "origins:swim_speed", + "origins:like_water", + "origins:aqua_affinity", + "origins:water_vision" + ], + "icon": "minecraft:prismarine_shard", + "order": 1005, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/monarch.json b/src/main/resources/data/terraoriginum/origins/monarch.json new file mode 100644 index 0000000..8f3d63c --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/monarch.json @@ -0,0 +1,19 @@ +{ + "powers": [ + "terraoriginum:monarch-powers/solar_energy", + "terraoriginum:monarch-powers/nuclear_rush", + "terraoriginum:monarch-powers/instant_transmission", + "terraoriginum:monarch-powers/super_dash", + "terraoriginum:monarch-powers/hyperefficient_blood", + "terraoriginum:monarch-powers/hydropetrification", + "terraoriginum:monarch-powers/sun_fueled", + "terraoriginum:monarch-powers/totem_fueled", + "terraoriginum:monarch-powers/nyctophobia", + "terraoriginum:monarch-powers/shining", + "terraoriginum:monarch-powers/lackofsundamage" + ], + "icon": "fire_charge", + "order": 999, + "impact": 3 + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/muckunde.json b/src/main/resources/data/terraoriginum/origins/muckunde.json new file mode 100644 index 0000000..db3a55a --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/muckunde.json @@ -0,0 +1,12 @@ +{ + "powers": [ + "terraoriginum:muckunde-powers/toughskin", + "terraoriginum:muckunde-powers/likesoil1", + "terraoriginum:muckunde-powers/likesoil2", + "terraoriginum:muckunde-powers/yummybeets", + "terraoriginum:muckunde-powers/hydrophobic" + ], + "icon": "minecraft:dirt", + "order": 1008, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/munch.json b/src/main/resources/data/terraoriginum/origins/munch.json new file mode 100644 index 0000000..0fb7004 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/munch.json @@ -0,0 +1,22 @@ +{ + "powers": [ + "terraoriginum:munch-powers/tiny", + "terraoriginum:munch-powers/short_arms", + "terraoriginum:munch-powers/tiny_motion", + "terraoriginum:munch-powers/tiny_width", + "terraoriginum:munch-powers/little_health", + "terraoriginum:munch-powers/better_health", + "terraoriginum:munch-powers/tiny_appetite", + "terraoriginum:munch-powers/nimble", + "terraoriginum:munch-powers/quiet", + "terraoriginum:munch-powers/climbing", + "terraoriginum:munch-powers/mounting", + "terraoriginum:munch-powers/speedy_bastard", + "terraoriginum:florian-powers/passivemobs" + ], + "icon": { + "item": "terraoriginum:tiny" + }, + "order": 999, + "impact": 3 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/mync.json b/src/main/resources/data/terraoriginum/origins/mync.json new file mode 100644 index 0000000..39910f4 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/mync.json @@ -0,0 +1,25 @@ +{ + "powers": [ + "terraoriginum:mync-powers/mync_vision", + "terraoriginum:mync-powers/mync_blind", + "terraoriginum:lato-powers/twelve_hearts", + "terraoriginum:mync-powers/mync_natural_armour", + "terraoriginum:lato-powers/lato_blooded", + "terraoriginum:lato-powers/sun_damage", + "terraoriginum:mync-powers/mync_tailwind", + "terraoriginum:mync-powers/mync_strong", + "terraoriginum:mync-powers/mync_rage", + "terraoriginum:mync-powers/mync_rage_addition", + "terraoriginum:mync-powers/mync_echolocate", + "terraoriginum:lato-powers/tall", + "terraoriginum:lato-powers/tall_hitbox", + "terraoriginum:lato-powers/tall_width", + "terraoriginum:lato-powers/tall_width_hitbox", + "terraoriginum:lato-powers/long_arms" + ], + "icon": { + "item": "terraoriginum:mync_eye" + }, + "order": 999, + "impact": 3 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/serpenta.json b/src/main/resources/data/terraoriginum/origins/serpenta.json new file mode 100644 index 0000000..17c87b0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/serpenta.json @@ -0,0 +1,21 @@ +{ + "powers": [ + + "terraoriginum:serpenta-powers/boilingshot", + "terraoriginum:serpenta-powers/scales", + "terraoriginum:merfolk-powers/hydration", + "terraoriginum:merfolk-powers/hydrodiff", + "terraoriginum:merfolk-powers/lackofhydrodamage", + "terraoriginum:merfolk-powers/waterbreathing", + "terraoriginum:merfolk-powers/webbedfeet", + "terraoriginum:merfolk-powers/webbedfeet2", + "terraoriginum:merfolk-powers/wethands", + "origins:swim_speed", + "origins:like_water", + "origins:aqua_affinity", + "origins:water_vision" + ], + "icon": "minecraft:ender_eye", + "order": 1006, + "impact": 3 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/shade.json b/src/main/resources/data/terraoriginum/origins/shade.json new file mode 100644 index 0000000..9c282de --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/shade.json @@ -0,0 +1,20 @@ +{ + "powers": [ + "terraoriginum:shade-powers/invisibility1", + "terraoriginum:shade-powers/invisibility2", + "terraoriginum:shade-powers/invisibility3", + "terraoriginum:spirit-powers/ectoplasm", + "terraoriginum:spirit-powers/ectodiff", + "terraoriginum:spirit-powers/lackofectodmg", + "terraoriginum:spirit-powers/skin", + "terraoriginum:spirit-powers/phasing1", + "terraoriginum:spirit-powers/phasing2", + "terraoriginum:spirit-powers/phasing3", + "terraoriginum:spirit-powers/undead", + "terraoriginum:spirit-powers/nightvis", + "terraoriginum:ectotest" + ], + "icon": "minecraft:black_candle", + "order": 1004, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/spirit.json b/src/main/resources/data/terraoriginum/origins/spirit.json new file mode 100644 index 0000000..2c2ea81 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/spirit.json @@ -0,0 +1,16 @@ +{ + "powers": [ + "terraoriginum:spirit-powers/ectoplasm", + "terraoriginum:spirit-powers/ectodiff", + "terraoriginum:spirit-powers/lackofectodmg", + "terraoriginum:spirit-powers/skin", + "terraoriginum:spirit-powers/phasing1", + "terraoriginum:spirit-powers/phasing2", + "terraoriginum:spirit-powers/phasing3", + "terraoriginum:spirit-powers/undead", + "terraoriginum:spirit-powers/nightvis" + ], + "icon": "terraoriginum:spirit", + "order": 1001, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/sylt.json b/src/main/resources/data/terraoriginum/origins/sylt.json new file mode 100644 index 0000000..c68e3a9 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/sylt.json @@ -0,0 +1,18 @@ +{ + "powers": [ + "terraoriginum:lato-powers/lato_blooded", + "terraoriginum:lato-powers/twelve_hearts", + "terraoriginum:lato-powers/natural_armor", + "terraoriginum:lato-powers/tailwind", + "terraoriginum:lato-powers/rage", + "terraoriginum:lato-powers/rage_addition", + "terraoriginum:lato-powers/perfect_vision", + "terraoriginum:lato-powers/sun_damage", + "terraoriginum:lato-powers/teleport", + "terraoriginum:lato-powers/strong" + ], + "icon": "diamond_axe", + "order": 1011, + "impact": 3 + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/origins/wraith.json b/src/main/resources/data/terraoriginum/origins/wraith.json new file mode 100644 index 0000000..e125027 --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/wraith.json @@ -0,0 +1,23 @@ +{ + "powers": [ + "terraoriginum:wraith-powers/soaring1", + "terraoriginum:wraith-powers/soaring2", + "terraoriginum:wraith-powers/soaring3", + "terraoriginum:wraith-powers/torment1", + "terraoriginum:wraith-powers/torment2", + "terraoriginum:wraith-powers/torment3", + "terraoriginum:wraith-powers/charred", + "terraoriginum:spirit-powers/phasing1", + "terraoriginum:spirit-powers/phasing2", + "terraoriginum:spirit-powers/phasing3", + "terraoriginum:spirit-powers/ectoplasm", + "terraoriginum:spirit-powers/ectodiff", + "terraoriginum:spirit-powers/lackofectodmg", + "terraoriginum:spirit-powers/undead", + "terraoriginum:spirit-powers/nightvis", + "terraoriginum:ectotest" + ], + "icon": "minecraft:phantom_membrane", + "order": 1003, + "impact": 3 +} diff --git a/src/main/resources/data/terraoriginum/origins/yulde.json b/src/main/resources/data/terraoriginum/origins/yulde.json new file mode 100755 index 0000000..45e7cde --- /dev/null +++ b/src/main/resources/data/terraoriginum/origins/yulde.json @@ -0,0 +1,24 @@ +{ + "powers": [ + "terraoriginum:lato-powers/lato_blooded", + "terraoriginum:lato-powers/twelve_hearts", + "terraoriginum:lato-powers/natural_armor", + "terraoriginum:lato-powers/tailwind", + "terraoriginum:yulde-powers/last_stand", + "terraoriginum:yulde-powers/last_stand-effects", + "terraoriginum:yulde-powers/last_stand-death", + "terraoriginum:lato-powers/perfect_vision", + "terraoriginum:lato-powers/sun_damage", + "terraoriginum:lato-powers/teleport", + "terraoriginum:lato-powers/strong", + "terraoriginum:lato-powers/long_arms", + "terraoriginum:lato-powers/tall", + "terraoriginum:lato-powers/tall_hitbox", + "terraoriginum:lato-powers/tall_width", + "terraoriginum:lato-powers/tall_width_hitbox" + ], + "icon": "creeper_head", + "order": 998, + "impact": 3 + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/angel-powers/angel_wings.json b/src/main/resources/data/terraoriginum/powers/angel-powers/angel_wings.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/powers/angel-powers/divine_grace.json b/src/main/resources/data/terraoriginum/powers/angel-powers/divine_grace.json new file mode 100644 index 0000000..fc50261 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/angel-powers/divine_grace.json @@ -0,0 +1,42 @@ +{ + "type": "origins:multiple", + "divine_grace": + { + "type": "origins:resource", + "min": 0, + "max": 22, + "start_value": 11, + "hud_render": { + "should_render": true, + "bar_index": 4, + "sprite_location": "origins:textures/gui/resource_bar.png" + } + }, + "instant_fall_from_grace": + { + "type": "origins:self_action_on_kill", + "target_condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:in_tag", + "tag": "terraoriginum:nomercy" + } + ] + }, + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "*:*_divine_grace", + "change": -22 + } + ] + }, + "cooldown": 0, + "hud_render": { + "should_render": false + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/angel-powers/lesser_heal_ray.json b/src/main/resources/data/terraoriginum/powers/angel-powers/lesser_heal_ray.json new file mode 100644 index 0000000..047760d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/angel-powers/lesser_heal_ray.json @@ -0,0 +1,39 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:delay", + "action": { + "type": "origins:raycast", + "distance": 20, + "block": false, + "entity": true, + "shape_type": "visual", + "fluid_handling": "any", + "miss_action": { + "type": "origins:nothing" + }, + "command_at_hit": "/execute as @e[distance=..2] run effect give @s minecraft:regeneration 0 5", + "command_along_ray": "/particle electric_spark ~ ~ ~ 0 0 0 0 10", + "command_step": 0.3 + }, + "ticks": 0 + }, + { + "type": "origins:play_sound", + "sound": "block.beacon.activate", + "volume": 1, + "pitch": 1 + } + + ] + }, + "cooldown": 100, + "hud_render": { + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": "4" + }, + "key": "secondary" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/bane_of_agriculture.json b/src/main/resources/data/terraoriginum/powers/blight-powers/bane_of_agriculture.json new file mode 100644 index 0000000..bec8b95 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/bane_of_agriculture.json @@ -0,0 +1,26 @@ +{ + "type": "origins:action_over_time", + "interval": 1, + "entity_action": { + "type": "origins:block_action_at", + "block_action": { + "type": "origins:area_of_effect", + "radius": 6, + "shape": "cube", + "block_condition": { + "type": "origins:block_state", + "property": "age" + }, + "block_action": { + "type": "origins:chance", + "chance": 1, + "action": { + "type": "origins:modify_block_state", + "property": "age", + "operation": "add", + "change": -1 + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/blighted_feet.json b/src/main/resources/data/terraoriginum/powers/blight-powers/blighted_feet.json new file mode 100644 index 0000000..a6e9aaf --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/blighted_feet.json @@ -0,0 +1,40 @@ +{ + "type": "origins:action_over_time", + "interval": 1, + "condition": { + "type": "origins:on_block", + "block_condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:block", + "block": "minecraft:grass_block" + }, + { + "type": "origins:block", + "block": "minecraft:moss_block" + }, + { + "type": "origins:block", + "block": "minecraft:dirt" + }, + { + "type": "origins:block", + "block": "minecraft:dirt_path" + }, + { + "type": "origins:block", + "block": "minecraft:mycelium" + }, + { + "type": "origins:block", + "block": "minecraft:farmland" + } + ] + } + }, + "entity_action": { + "type": "origins:execute_command", + "command": "setblock ~ ~-1 ~ minecraft:coarse_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/dead_cells.json b/src/main/resources/data/terraoriginum/powers/blight-powers/dead_cells.json new file mode 100644 index 0000000..def61ac --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/dead_cells.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.armor", + "value": 5.0, + "operation": "addition" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/florivory.json b/src/main/resources/data/terraoriginum/powers/blight-powers/florivory.json new file mode 100644 index 0000000..61c4b0b --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/florivory.json @@ -0,0 +1,277 @@ +{ + "type": "origins:multiple", + "hidden": true, + "res": { + "type": "origins:resource", + "min": 0, + "max": 30, + "start_value": 0, + "hud_render": { + "should_render": false + }, + "max_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:feed", + "food": 4, + "saturation": 0.8 + }, + { + "type": "origins:execute_command", + "command": "playsound minecraft:entity.player.burp player @a ~ ~ ~" + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:regeneration", + "amplifier": 0, + "duration": 100 + } + }, + { + "type": "origins:if_else_list", + "actions": [{ + "condition": { + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + } + }, + "action": { + "type": "origins:equipped_item_action", + "equipment_slot": "mainhand", + "action": { + "type": "origins:consume", + "amount": 1 + } + } + }, + { + "condition": { + "type": "origins:equipped_item", + "equipment_slot": "offhand", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + } + }, + "action": { + "type": "origins:equipped_item_action", + "equipment_slot": "offhand", + "action": { + "type": "origins:consume", + "amount": 1 + } + } + } + ] + }, + { + "type": "origins:change_resource", + "resource": "*:*_res", + "change": 0, + "operation": "set" + } + ] + } + }, + "0": { + "condition": { + "type": "origins:or", + "conditions": [{ + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + }, + { + "type": "origins:equipped_item", + "equipment_slot": "offhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + } + ] + }, + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:change_resource", + "resource": "*:*_res", + "change": 0, + "operation": "set" + }] + }, + "cooldown": 1, + "hud_render": { + "should_render": false + }, + "key": { + "key": "key.use" + } + }, + "grow": { + "condition": { + "type": "origins:or", + "conditions": [{ + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + }, + { + "type": "origins:equipped_item", + "equipment_slot": "offhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + } + ] + }, + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:change_resource", + "resource": "*:*_res", + "change": 1 + }] + }, + "cooldown": 1, + "hud_render": { + "should_render": false + }, + "key": { + "key": "key.use", + "continuous": true + } + }, + "particle": { + "condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:or", + "conditions": [{ + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + }, + { + "type": "origins:equipped_item", + "equipment_slot": "offhand", + "item_condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:flowers" + } + }] + } + } + ] + }, + { + "type": "origins:food_level", + "comparison": "<", + "compare_to": 20 + } + ] + }, + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:execute_command", + "command": "execute positioned ~ ~0.2 ~0.1 rotated as @s run particle minecraft:large_smoke ^ ^ ^0.1 0.1 0.1 0.1 0.055 4" + }, + { + "type": "origins:execute_command", + "command": "playsound minecraft:entity.generic.eat player @s ~ ~ ~" + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:slowness", + "duration": 5, + "show_particles": false, + "amplifier": 1, + "show_icon": false + } + } + ] + }, + "cooldown": 4, + "hud_render": { + "should_render": false + }, + "key": { + "key": "key.use", + "continuous": true + } + }, + "restrict": { + "condition": { + "type": "origins:and", + "conditions": [{ + "type": "origins:food_level", + "comparison": "==", + "compare_to": 20 + }, + { + "inverted": true, + "type": "origins:gamemode", + "gamemode": "creative" + } + ] + }, + "type": "origins:action_over_time", + "interval": 2, + "entity_action": { + "type": "origins:set_resource", + "resource": "*:*_res", + "value": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/foul_flesh.json b/src/main/resources/data/terraoriginum/powers/blight-powers/foul_flesh.json new file mode 100644 index 0000000..a33325a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/foul_flesh.json @@ -0,0 +1,10 @@ +{ + "type": "origins:effect_immunity", + "effects": [ + "minecraft:wither", + "minecraft:poison", + "minecraft:instant_damage", + "minecraft:hunger" + ] + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/foul_skin.json b/src/main/resources/data/terraoriginum/powers/blight-powers/foul_skin.json new file mode 100644 index 0000000..7434012 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/foul_skin.json @@ -0,0 +1,6 @@ +{ + "type": "origins:model_color", + "red": 0.9, + "green": 0.6, + "blue": 0.55 +} diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/nether_spawn.json b/src/main/resources/data/terraoriginum/powers/blight-powers/nether_spawn.json new file mode 100644 index 0000000..9569f2c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/nether_spawn.json @@ -0,0 +1,5 @@ +{ + "type": "origins:modify_player_spawn", + "dimension": "minecraft:the_nether", + "spawn_strategy": "center" + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/blight-powers/noregen.json b/src/main/resources/data/terraoriginum/powers/blight-powers/noregen.json new file mode 100644 index 0000000..49983b8 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/blight-powers/noregen.json @@ -0,0 +1,4 @@ +{ + "type": "origins:disable_regen", + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/demon-powers/extra_health.json b/src/main/resources/data/terraoriginum/powers/demon-powers/extra_health.json new file mode 100644 index 0000000..28fefad --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/demon-powers/extra_health.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "name": "Max health increase", + "attribute": "minecraft:generic.max_health", + "value": 4, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration1.json b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration1.json new file mode 100644 index 0000000..1defc09 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration1.json @@ -0,0 +1,15 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "retain_state": false, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": ">=", + "compare_to": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration2.json b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration2.json new file mode 100644 index 0000000..49f8509 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration2.json @@ -0,0 +1,45 @@ +{ + "type": "origins:action_over_time", + "interval": 5, + "hidden": true, + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 35, + "amplifier": 1, + "show_icon": false + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 35, + "amplifier": 1, + "show_icon": false + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:resistance", + "duration": 35, + "amplifier": 1, + "show_icon": false + } + }, + { + "type": "origins:exhaust", + "amount": 0.5 + } + ] + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:demon-powers/self_transfiguration1" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration3.json b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration3.json new file mode 100644 index 0000000..360ed6f --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/demon-powers/self_transfiguration3.json @@ -0,0 +1,27 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:demon-powers/self_transfiguration1" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -9, + "operation": "add" + } + ] + } + } + ] + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/demon-powers/stained.json b/src/main/resources/data/terraoriginum/powers/demon-powers/stained.json new file mode 100644 index 0000000..81328a0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/demon-powers/stained.json @@ -0,0 +1,6 @@ +{ + "type": "origins:model_color", + "blue": 0.5, + "green": 0.5, + "alpha": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/dominion-powers/greater_heal_ray.json b/src/main/resources/data/terraoriginum/powers/dominion-powers/greater_heal_ray.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/powers/dominion-powers/larger.json b/src/main/resources/data/terraoriginum/powers/dominion-powers/larger.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/powers/dominion-powers/suppression_of_power.json b/src/main/resources/data/terraoriginum/powers/dominion-powers/suppression_of_power.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/powers/ectotest.json b/src/main/resources/data/terraoriginum/powers/ectotest.json new file mode 100644 index 0000000..17857fb --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/ectotest.json @@ -0,0 +1,21 @@ +{ + "hidden": true, + "condition": { + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:mync_eye" + } + } + }, + "type": "origins:action_over_time", + "interval": 10, + "entity_action": { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": 100, + "operation": "add" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/fragile.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/fragile.json new file mode 100644 index 0000000..e4f34e7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/fragile.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.max_health", + "value": -10, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/nimble.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/nimble.json new file mode 100644 index 0000000..46444a0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/nimble.json @@ -0,0 +1,23 @@ +{ + "type": "origins:restrict_armor", + "head": { + "type": "origins:armor_value", + "comparison": ">", + "compare_to": 2 + }, + "chest": { + "type": "origins:armor_value", + "comparison": ">", + "compare_to": 5 + }, + "legs": { + "type": "origins:armor_value", + "comparison": ">", + "compare_to": 4 + }, + "feet": { + "type": "origins:armor_value", + "comparison": ">", + "compare_to": 1 + } +} diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/pollenation.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/pollenation.json new file mode 100644 index 0000000..4f9814e --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/pollenation.json @@ -0,0 +1,26 @@ +{ + "type": "origins:action_over_time", + "interval": 1, + "entity_action": { + "type": "origins:block_action_at", + "block_action": { + "type": "origins:area_of_effect", + "radius": 4, + "shape": "cube", + "block_condition": { + "type": "origins:block_state", + "property": "age" + }, + "block_action": { + "type": "origins:chance", + "chance": 0.005, + "action": { + "type": "origins:modify_block_state", + "property": "age", + "operation": "add", + "change": 1 + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/smallheight.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallheight.json new file mode 100644 index 0000000..3809db5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallheight.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:height 0.5" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxheight.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxheight.json new file mode 100644 index 0000000..722b79d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxheight.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_height 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxwidth.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxwidth.json new file mode 100644 index 0000000..722b79d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallhitboxwidth.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_height 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/smallwidth.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallwidth.json new file mode 100644 index 0000000..0693a89 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/smallwidth.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:width 0.5" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/fairy-powers/yummyhoney.json b/src/main/resources/data/terraoriginum/powers/fairy-powers/yummyhoney.json new file mode 100644 index 0000000..133e52b --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/fairy-powers/yummyhoney.json @@ -0,0 +1,20 @@ +{ + "type": "origins:modify_food", + "item_condition": { + "type": "origins:ingredient", + "ingredient": + { + "item": "minecraft:honey_bottle" + } + }, + "food_modifier": + { + "operation": "addition", + "value": 4.0 + }, + "saturation_modifier": + { + "operation": "addition", + "value": 20 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/absorbing.json b/src/main/resources/data/terraoriginum/powers/florian-powers/absorbing.json new file mode 100644 index 0000000..05f2773 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/absorbing.json @@ -0,0 +1,26 @@ +{ + "type": "origins:stacking_status_effect", + "condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:fluid_height", + "fluid": "minecraft:water", + "comparison": ">", + "compare_to": 0.0 + }, + { + "type": "origins:in_rain" + } + ] + }, + "min_stacks": 0, + "max_stacks": 1, + "duration_per_stack": 30, + "effect": { + "effect": "minecraft:strength", + "is_ambient": true, + "show_particles": false, + "show_icon": true + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/aura_of_growth.json b/src/main/resources/data/terraoriginum/powers/florian-powers/aura_of_growth.json new file mode 100644 index 0000000..e242ff6 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/aura_of_growth.json @@ -0,0 +1,26 @@ +{ + "type": "origins:action_over_time", + "interval": 1, + "entity_action": { + "type": "origins:block_action_at", + "block_action": { + "type": "origins:area_of_effect", + "radius": 7, + "shape": "cube", + "block_condition": { + "type": "origins:block_state", + "property": "age" + }, + "block_action": { + "type": "origins:chance", + "chance": 0.005, + "action": { + "type": "origins:modify_block_state", + "property": "age", + "operation": "add", + "change": 1 + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/bonemeal.json b/src/main/resources/data/terraoriginum/powers/florian-powers/bonemeal.json new file mode 100644 index 0000000..3d6a687 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/bonemeal.json @@ -0,0 +1,22 @@ +{ + "type": "origins:action_when_damage_taken", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:block_action_at", + "block_action": { + "type": "origins:area_of_effect", + "radius": 8, + "shape": "sphere", + "block_action": { + "type": "origins:bonemeal", + "effects": true + } + } + + } + ] + }, + "cooldown": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/compost.json b/src/main/resources/data/terraoriginum/powers/florian-powers/compost.json new file mode 100644 index 0000000..9e1a49a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/compost.json @@ -0,0 +1,87 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": + { + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter unless block ~ ~ ~ minecraft:composter[level=7] unless block ~ ~ ~ minecraft:composter[level=8] run particle minecraft:composter ~ ~.5 ~ .2 .3 .2 1 10" + }, + { + "type": "origins:choice", + "actions": [ + { + "weight": 50, + "element": + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter unless block ~ ~ ~ minecraft:composter[level=7] unless block ~ ~ ~ minecraft:composter[level=8] run playsound minecraft:block.composter.fill block @a[distance=..10] ~ ~ ~ 1 1" + } + }, + { + "weight": 50, + "element": + { + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter unless block ~ ~ ~ minecraft:composter[level=7] unless block ~ ~ ~ minecraft:composter[level=8] run playsound minecraft:block.composter.fill_success block @a[distance=..10] ~ ~ ~ 1 1" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=6] run setblock ~ ~ ~ minecraft:composter[level=7] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=5] run setblock ~ ~ ~ minecraft:composter[level=6] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=4] run setblock ~ ~ ~ minecraft:composter[level=5] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=3] run setblock ~ ~ ~ minecraft:composter[level=4] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=2] run setblock ~ ~ ~ minecraft:composter[level=3] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=1] run setblock ~ ~ ~ minecraft:composter[level=2] replace" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter[level=0] run setblock ~ ~ ~ minecraft:composter[level=1] replace" + } + ] + } + } + ] + } + ] + }, + "condition": + { + "type": "origins:command", + "inverted": false, + "comparison": "==", + "compare_to": 1, + "permission_level": 4, + "command": "execute if block ~ ~ ~ minecraft:composter unless block ~ ~ ~ minecraft:composter[level=7] unless block ~ ~ ~ minecraft:composter[level=8]" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/five_hearts.json b/src/main/resources/data/terraoriginum/powers/florian-powers/five_hearts.json new file mode 100755 index 0000000..f8b3eac --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/five_hearts.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.max_health", + "value": -10.0, + "operation": "addition" + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/flammable.json b/src/main/resources/data/terraoriginum/powers/florian-powers/flammable.json new file mode 100644 index 0000000..f1f86f9 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/flammable.json @@ -0,0 +1,11 @@ +{ + "type": "origins:modify_damage_taken", + "damage_condition": { + "type": "origins:fire" + }, + "modifier": { + "name": "Origin modifier", + "operation": "multiply_base", + "value": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/green_fingered.json b/src/main/resources/data/terraoriginum/powers/florian-powers/green_fingered.json new file mode 100644 index 0000000..8f57e91 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/green_fingered.json @@ -0,0 +1,7 @@ +{ + "type": "origins:model_color", + "red": 0.8, + "blue": 0.8, + "green": 1, + "alpha": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/passivemobs.json b/src/main/resources/data/terraoriginum/powers/florian-powers/passivemobs.json new file mode 100644 index 0000000..0cc7113 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/passivemobs.json @@ -0,0 +1,21 @@ +{ + "type":"origins:action_over_time", + "entity_action":{ + "type":"origins:and", + "actions":[ + { + "type":"origins:execute_command", + "command":"team add aggropassive" + }, + { + "type":"origins:execute_command", + "command":"team join aggropassive @s" + }, + { + "type":"origins:execute_command", + "command":"team join aggropassive @e[type=#terraoriginum:hostiles]" + } + ] + }, + "interval":20 + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/photosynthesis.json b/src/main/resources/data/terraoriginum/powers/florian-powers/photosynthesis.json new file mode 100644 index 0000000..78df087 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/photosynthesis.json @@ -0,0 +1,87 @@ +{ + "type": "origins:multiple", + "regenerate_food": { + "type": "origins:action_over_time", + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:daytime" + }, + { + "type": "origins:exposed_to_sky" + }, + { + "type": "origins:or", + "conditions": [ + { + "type": "origins:food_level", + "comparison": "<", + "compare_to": 20 + }, + { + "type": "origins:saturation_level", + "comparison": "<", + "compare_to": 20 + } + ] + } + ] + }, + "interval": 20, + "entity_action": { + "type": "origins:feed", + "food": 1, + "saturation": 1 + } + }, + "prevent_healing": { + "type": "origins:disable_regen" + }, + "natural_regeneration": { + "type": "origins:action_over_time", + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:relative_health", + "comparison": "<", + "compare_to": 1 + }, + { + "type": "origins:food_level", + "comparison": ">", + "compare_to": 0 + } + ] + }, + "interval": 40, + "entity_action": { + "type": "origins:heal", + "amount": 1 + } + }, + "natural_regeneration_exhaustion": { + "type": "origins:action_over_time", + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:relative_health", + "comparison": "<", + "compare_to": 1 + }, + { + "type": "origins:food_level", + "comparison": ">", + "compare_to": 0 + } + ] + }, + "interval": 40, + "entity_action": { + "type": "origins:exhaust", + "amount": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/pocket_sand.json b/src/main/resources/data/terraoriginum/powers/florian-powers/pocket_sand.json new file mode 100644 index 0000000..2375504 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/pocket_sand.json @@ -0,0 +1,37 @@ +{ + "type": "origins:active_self", + "cooldown": 200, + "key": + { + "key": "key.origins.primary_active", + "continuous": false + }, + "hud_render": + { + "should_render": true, + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": 13 + }, + "entity_action": + { + "type": "origins:and", + "actions": + [ + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute anchored eyes positioned ^ ^ ^2 run effect give @e[distance=..2] minecraft:blindness 10 0 false" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute anchored eyes positioned ^ ^ ^2 run particle minecraft:falling_dust minecraft:sand ~ ~ ~ .5 .5 .5 0 100 normal" + }, + { + "type": "origins:execute_command", + "permission_level": 4, + "command": "execute anchored eyes positioned ^ ^ ^2 run playsound minecraft:block.sand.place player @a[distance=..32] ~ ~ ~ 1 1" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/small.json b/src/main/resources/data/terraoriginum/powers/florian-powers/small.json new file mode 100644 index 0000000..c7f80f5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/small.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:height 0.625" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/small_hitbox.json b/src/main/resources/data/terraoriginum/powers/florian-powers/small_hitbox.json new file mode 100644 index 0000000..722b79d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/small_hitbox.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_height 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/small_width.json b/src/main/resources/data/terraoriginum/powers/florian-powers/small_width.json new file mode 100644 index 0000000..72af2be --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/small_width.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:width 0.625" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/small_width_hitbox.json b/src/main/resources/data/terraoriginum/powers/florian-powers/small_width_hitbox.json new file mode 100644 index 0000000..df0e9f0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/small_width_hitbox.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_width 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/florian-powers/weak.json b/src/main/resources/data/terraoriginum/powers/florian-powers/weak.json new file mode 100644 index 0000000..c1c4077 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/florian-powers/weak.json @@ -0,0 +1,17 @@ +{ + "type": "origins:modify_damage_dealt", + "condition": { + "type": "origins:in_block_anywhere", + "block_condition": { + "type": "origins:block", + "block": "minecraft:water" + }, + "comparison": "<=", + "compare_to": 1 + }, + "modifier": { + "name": "less damage when not submerged", + "operation": "multiply_total", + "value": 0.2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/immortal_human-powers/immortal.json b/src/main/resources/data/terraoriginum/powers/immortal_human-powers/immortal.json new file mode 100644 index 0000000..1e517f5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/immortal_human-powers/immortal.json @@ -0,0 +1,30 @@ +{ + "type": "origins:prevent_death", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:clear_effect" + }, + { + "type": "origins:apply_effect", + "effects": [ + { + "effect": "minecraft:regeneration", + "amplifier": 1, + "duration": 900 + }, + { + "effect": "minecraft:fire_resistance", + "duration": 800 + }, + { + "effect": "minecraft:absorption", + "amplifier": 1, + "duration": 100 + } + ] + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/immortal_human-powers/pathetic.json b/src/main/resources/data/terraoriginum/powers/immortal_human-powers/pathetic.json new file mode 100644 index 0000000..628df25 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/immortal_human-powers/pathetic.json @@ -0,0 +1,14 @@ +{ + "type": "origins:stacking_status_effect", + "min_stacks": 0, + "max_stacks": 1, + "duration_per_stack": 35, + "effect": { + "effect": "weakness", + "duration": 35, + "amplifier": 7, + "is_abient": true, + "show_particles": false, + "show_icon": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/armor.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/armor.json new file mode 100644 index 0000000..4b1f136 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/armor.json @@ -0,0 +1,27 @@ +{ + "type": "origins:restrict_armor", + "head": { + "type": "origins:ingredient", + "ingredient": { + "tag": "terraoriginum:helmet" + } + }, + "chest": { + "type": "origins:ingredient", + "ingredient": { + "tag": "terraoriginum:chestplate" + } + }, + "legs": { + "type": "origins:ingredient", + "ingredient": { + "tag": "terraoriginum:leggings" + } + }, + "feet": { + "type": "origins:ingredient", + "ingredient": { + "tag": "terraoriginum:boots" + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/diet.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/diet.json new file mode 100644 index 0000000..3a84452 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/diet.json @@ -0,0 +1,36 @@ +{ + "type": "origins:prevent_item_use", + "item_condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:food" + }, + { + "type": "origins:ingredient", + "ingredient": { + "tag": "minecraft:fishes" + }, + "inverted": true + }, + { + "type": "origins:meat", + "inverted": true + }, + { + "type": "origins:ingredient", + "ingredient": { + "item": "glow_berries" + }, + "inverted": true + }, + { + "type": "origins:ingredient", + "ingredient": { + "item": "sweet_berries" + }, + "inverted": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_eyes.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_eyes.json new file mode 100644 index 0000000..e7f8119 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_eyes.json @@ -0,0 +1,10 @@ +{ + "type": "origins:night_vision", + "strength": 0.3, + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water", + "inverted": true + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch.json new file mode 100644 index 0000000..e3ae1ef --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch.json @@ -0,0 +1,8 @@ +{ + "type": "origins:inventory", + "drop_on_death": false, + "key": { + "key": "key.origins.ternary_active", + "continuous": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch_sound.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch_sound.json new file mode 100644 index 0000000..d4e8dbb --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fox_pouch_sound.json @@ -0,0 +1,22 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:chance", + "action": + { + "type": "origins:execute_command", + "command": "playsound minecraft:entity.fox.eat player @s ~ ~ ~ 1 1 1", + "permission_level": 4 + }, + "chance": 100.0 + }, + "hidden": true, + "key": { + "key": "key.origins.ternary_active", + "continuous": false + }, + "cooldown": 0, + "hud_render": { + "should_render": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/fragilefox.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fragilefox.json new file mode 100644 index 0000000..711f966 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/fragilefox.json @@ -0,0 +1,10 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.max_health", + "value": -8.0, + "operation": "addition" + }, + "hidden": true, + "tick_rate": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/hungy.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/hungy.json new file mode 100644 index 0000000..e887b3a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/hungy.json @@ -0,0 +1,7 @@ +{ + "type": "origins:modify_exhaustion", + "modifier":{ + "value": 1.5, + "operation": "multiply_base" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/invisibility.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/invisibility.json new file mode 100644 index 0000000..f121e2a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/invisibility.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:invisibility", + "render_armor": true, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:kitsune-powers/phantomize" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/monch.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/monch.json new file mode 100644 index 0000000..8c48618 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/monch.json @@ -0,0 +1,22 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:chance", + "action": + { + "type": "origins:execute_command", + "command": "playsound minecraft:entity.fox.bite player @a ~ ~ ~ 1 1 0", + "permission_level": 4 + }, + "chance": 100.0 + }, + "hidden": true, + "key": { + "key": "key.attack", + "continuous": false + }, + "cooldown": 0, + "hud_render": { + "should_render": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws.json new file mode 100644 index 0000000..7b36be9 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws.json @@ -0,0 +1,7 @@ +{ + "type": "origins:modify_projectile_damage", + "modifier": { + "operation": "multiply_total", + "value": -0.5 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws_shield.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws_shield.json new file mode 100644 index 0000000..1214dba --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/paws_shield.json @@ -0,0 +1,10 @@ +{ + "hidden": true, + "type": "origins:prevent_item_use", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "tag": "origins:shields" + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/phantomize.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phantomize.json new file mode 100644 index 0000000..90b5c04 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phantomize.json @@ -0,0 +1,9 @@ +{ + "type": "origins:toggle", + "active_by_default": "false", + "hidden": true, + "key": { + "key": "key.origins.secondary_active", + "continuous": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/phase_fix.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phase_fix.json new file mode 100644 index 0000000..08d3cf8 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phase_fix.json @@ -0,0 +1,24 @@ +{ + "type": "origins:multiple", + "hidden": true, + "invulnerabilities": { + "type": "origins:invulnerability", + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:kitsune-powers/phantomize" + }, + "damage_condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:name", + "name": "inWall" + }, + { + "type": "origins:name", + "name": "cramming" + } + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing.json new file mode 100644 index 0000000..4c221fe --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing.json @@ -0,0 +1,18 @@ +{ + "type": "origins:phasing", + "blacklist": true, + "render_type": "blindness", + "view_distance": 10, + "block_condition": { + "type": "origins:in_tag", + "tag": "terraoriginum:unphasable" + }, + "phase_down_condition": { + "type": "origins:constant", + "value": false + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:kitsune-powers/phantomize" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing_jump.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing_jump.json new file mode 100644 index 0000000..73a183f --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/phasing_jump.json @@ -0,0 +1,12 @@ +{ + "hidden": true, + "type": "origins:modify_jump", + "modifier": { + "operation": "addition", + "value": -1.0 + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:kitsune-powers/phantomize" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce.json new file mode 100644 index 0000000..171d812 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce.json @@ -0,0 +1,41 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "command": "particle minecraft:cloud ~ ~ ~ 0.5 0 0.5 0.2 20 force", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "playsound minecraft:entity.fox.ambient player @a[distance=..10] ~ ~ ~ 1 1 1", + "permission_level": 4 + }, + { + "type": "origins:add_velocity", + "z": 1, + "space": "local" + }, + { + "type": "origins:add_velocity", + "y": 0.2 + }, + { + "type": "origins:exhaust", + "amount": 0.6 + } + ] + }, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "cooldown": 150, + "hud_render": { + "should_render": true, + "sprite_location": "origins:textures/gui/community/spiderkolo/resource_bar_03.png", + "bar_index": 23 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_aerialdamage.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_aerialdamage.json new file mode 100644 index 0000000..3df047e --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_aerialdamage.json @@ -0,0 +1,54 @@ +{ + "hidden": true, + "type": "origins:multiple", + + "falling_false": { + "type": "origins:action_on_land", + "entity_action": { + "type": "origins:change_resource", + "resource": "terraoriginum:kitsune-powers/pounce_falling", + "change": -1 + } + }, + + "falling_true": { + "type": "origins:active_self", + "entity_action": { + "type": "origins:change_resource", + "resource": "terraoriginum:kitsune-powers/pounce_falling", + "change": 1 + }, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "cooldown": 100, + "hud_render": { + "should_render": false + } + }, + + "deal_damage": { + "type": "origins:modify_damage_dealt", + "modifier": { + "value": 1.1, + "operation": "multiply_base" + }, + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:fall_distance", + "comparison": ">", + "compare_to": 0 + }, + { + "type": "origins:resource", + "resource": "terraoriginum:kitsune-powers/pounce_falling", + "comparison": "==", + "compare_to": 1 + } + ] + } + } +} diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_falling.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_falling.json new file mode 100644 index 0000000..c0ea223 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/pounce_falling.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:resource", + "min": 0, + "max": 1, + "hud_render": { + "should_render": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/run.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/run.json new file mode 100644 index 0000000..0d24c9c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/run.json @@ -0,0 +1,17 @@ +{ + "type":"origins:conditioned_attribute", + "modifier":{ + "attribute": "minecraft:generic.movement_speed", + "value": 0.015, + "operation": "addition" + }, + "condition": + { + "type": "origins:health", + "comparison": "<", + "compare_to": 7 + }, + "tick_rate": 2 +} + + diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/smolman.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/smolman.json new file mode 100644 index 0000000..2d05a38 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/smolman.json @@ -0,0 +1,25 @@ +{ + "type": "origins:action_on_callback", + "entity_action_gained":{ + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "command": "scale set pehkui:height .80 @s", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "scale set pehkui:width .80 @s", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "scale persist set true", + "permission_level": 4 + } + ] + }, + "when_orb": true, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/speed.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/speed.json new file mode 100644 index 0000000..79ffc48 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/speed.json @@ -0,0 +1,11 @@ +{ + "type":"origins:attribute", + "modifier":{ + "attribute": "minecraft:generic.movement_speed", + "value": 0.02, + "operation": "addition" + }, + "tick_rate": 2 +} + + diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/startbox.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/startbox.json new file mode 100644 index 0000000..44766a4 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/startbox.json @@ -0,0 +1,17 @@ +{ + "hidden": true, + "type": "origins:starting_equipment", + "stack": { + "item": "minecraft:book" + }, + "stacks": [ + { + "item": "minecraft:sweet_berries", + "amount": 32 + }, + { + "item": "minecraft:glow_berries", + "amount": 32 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/yum.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/yum.json new file mode 100644 index 0000000..6884c54 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/yum.json @@ -0,0 +1,21 @@ +{ + "type": "origins:modify_food", + "item_condition": { + "type": "origins:ingredient", + "ingredient": + { + "item": "minecraft:glow_berries" + } + }, + "food_modifier": + { + "operation": "addition", + "value": 5.0 + }, + "saturation_modifier": + { + "operation": "addition", + "value": 13 + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/yummy_berries.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/yummy_berries.json new file mode 100644 index 0000000..4a1fe3c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/yummy_berries.json @@ -0,0 +1,21 @@ +{ + "type": "origins:modify_food", + "item_condition": { + "type": "origins:ingredient", + "ingredient": + { + "item": "minecraft:sweet_berries" + } + }, + "food_modifier": + { + "operation": "addition", + "value": 5.0 + }, + "saturation_modifier": + { + "operation": "addition", + "value": 13 + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/kitsune-powers/zberry_no_hurt.json b/src/main/resources/data/terraoriginum/powers/kitsune-powers/zberry_no_hurt.json new file mode 100644 index 0000000..ffdd811 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/kitsune-powers/zberry_no_hurt.json @@ -0,0 +1,8 @@ +{ + "type": "origins:invulnerability", + "damage_condition": { + "type": "origins:name", + "name": "sweetBerryBush" + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/lato_blooded.json b/src/main/resources/data/terraoriginum/powers/lato-powers/lato_blooded.json new file mode 100755 index 0000000..6e76844 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/lato_blooded.json @@ -0,0 +1,9 @@ +{ + "type": "origins:effect_immunity", + "effects": [ + "minecraft:wither", + "minecraft:poison", + "minecraft:instant_damage", + "minecraft:hunger" + ] +} diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/long_arms.json b/src/main/resources/data/terraoriginum/powers/lato-powers/long_arms.json new file mode 100644 index 0000000..1fffcdf --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/long_arms.json @@ -0,0 +1,19 @@ +{ + "type": "origins:attribute", + "modifiers": + [ + { + "name": "Long Arms reach", + "attribute": "reach-entity-attributes:reach", + "value": 2, + "operation": "addition" + }, + { + "name": "Long Arms attack range", + "attribute": "reach-entity-attributes:attack_range", + "value": 2, + "operation": "addition" + } + ] + +} diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/natural_armor.json b/src/main/resources/data/terraoriginum/powers/lato-powers/natural_armor.json new file mode 100644 index 0000000..8ac4238 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/natural_armor.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "name": "Natural Armor health bonus", + "attribute": "minecraft:generic.armor", + "value": 5.0, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/perfect_vision.json b/src/main/resources/data/terraoriginum/powers/lato-powers/perfect_vision.json new file mode 100755 index 0000000..1da60af --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/perfect_vision.json @@ -0,0 +1,6 @@ +{ + "type": "origins:toggle_night_vision", + "active_by_default": "true", + "strength": 0.3, + "key": "ternary" +} diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/rage.json b/src/main/resources/data/terraoriginum/powers/lato-powers/rage.json new file mode 100755 index 0000000..7d91c21 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/rage.json @@ -0,0 +1,25 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 400, + "amplifier": 1 + } + }, + { + "type": "origins:exhaust", + "amount": 3 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/ability_bar.png", + "bar_index": "0" + } +} diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/rage_addition.json b/src/main/resources/data/terraoriginum/powers/lato-powers/rage_addition.json new file mode 100755 index 0000000..9cf33d5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/rage_addition.json @@ -0,0 +1,26 @@ +{ + "type": "origins:active_self", + "hidden": "true", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 400, + "amplifier": 1 + } + }, + { + "type": "origins:heal", + "amount": 8 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/nothing.png", + "bar_index": "0" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/strong.json b/src/main/resources/data/terraoriginum/powers/lato-powers/strong.json new file mode 100644 index 0000000..11a09af --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/strong.json @@ -0,0 +1,13 @@ +{ + "type": "origins:attribute", + "modifiers": + [ + { + "name": "Strong damage", + "attribute": "generic.attack_damage", + "value": 2.0, + "operation": "addition" + } + ] + +} diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/sun_damage.json b/src/main/resources/data/terraoriginum/powers/lato-powers/sun_damage.json new file mode 100644 index 0000000..ebb14ff --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/sun_damage.json @@ -0,0 +1,37 @@ +{ + "condition": { + "type": "origins:and", + "conditions": [ + { + "inverted": true, + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "weapon.mainhand", + "weapon.offhand" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:umbrella" + } + } + }, + { + "type": "origins:exposed_to_sun" + } + ] + }, + "type": "origins:damage_over_time", + "interval": 15, + "onset_delay": 1, + "damage": 3, + "damage_easy": 2, + "damage_source": { + "name": "terraoriginum:burn_in_sun", + "unblockable": true, + "bypasses_armor": true + }, + "protection_enchantment": "terraoriginum:sun_protection", + "protection_effectiveness": 1.2 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/tailwind.json b/src/main/resources/data/terraoriginum/powers/lato-powers/tailwind.json new file mode 100644 index 0000000..a4e9306 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/tailwind.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "name": "Tailwind speed bonus", + "attribute": "minecraft:generic.movement_speed", + "value": 0.15, + "operation": "multiply_base" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/tall.json b/src/main/resources/data/terraoriginum/powers/lato-powers/tall.json new file mode 100644 index 0000000..11b9f49 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/tall.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:height 1.25" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/tall_hitbox.json b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_hitbox.json new file mode 100644 index 0000000..722b79d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_hitbox.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_height 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width.json b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width.json new file mode 100644 index 0000000..903afa7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:width 1.25" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width_hitbox.json b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width_hitbox.json new file mode 100644 index 0000000..df0e9f0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/tall_width_hitbox.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:hitbox_width 1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/teleport.json b/src/main/resources/data/terraoriginum/powers/lato-powers/teleport.json new file mode 100644 index 0000000..ce1adf9 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/teleport.json @@ -0,0 +1,53 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:delay", + "action": { + "type": "origins:raycast", + "distance": 120, + "block": true, + "entity": true, + "shape_type": "visual", + "fluid_handling": "any", + "miss_action": { + "type": "origins:nothing" + }, + "command_at_hit": "tp @s ~ ~ ~", + "command_along_ray": "particle minecraft:dust_color_transition 1.0 0.0 0.0 1.0 0.0 0.0 1.0 ~ ~1 ~", + "command_step": 0.3 + }, + "ticks": 10 + }, + { + "type": "origins:play_sound", + "sound": "entity.illusioner.cast_spell", + "volume": 1, + "pitch": 1 + }, + { + "type": "origins:spawn_particles", + "particle": "dragon_breath", + "count": 800, + "speed": 0.1, + "force": true, + "spread": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "offset_y": 0.5 + } + ] + }, + "cooldown": 3600, + "hud_render": { + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": "19" + }, + "key": { + "key": "secondary" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/lato-powers/twelve_hearts.json b/src/main/resources/data/terraoriginum/powers/lato-powers/twelve_hearts.json new file mode 100755 index 0000000..f57cece --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/lato-powers/twelve_hearts.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.max_health", + "value": 4.0, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydration.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydration.json new file mode 100644 index 0000000..3910a00 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydration.json @@ -0,0 +1,11 @@ +{ + "type": "origins:resource", + "min": 0, + "max": 200, + "start_value": 100, + "hud_render": { + "should_render": true, + "sprite_location": "origins:textures/gui/community/huang/resource_bar_02.png", + "bar_index": 16 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydrodiff.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydrodiff.json new file mode 100644 index 0000000..49b11ca --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/hydrodiff.json @@ -0,0 +1,79 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": + { + "type": "origins:submerged_in", + "fluid": "minecraft:water" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "change": 10, + "operation": "add" + } + ] + } + }, + { + "condition": + { + "type": "origins:in_rain" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "change": 4, + "operation": "add" + } + ] + } + }, + { + "condition": { + "type": "origins:on_fire" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "change": -10, + "operation": "add" + } + ] + } + }, + { + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water", + "inverted": true + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "change": -1, + "operation": "add" + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/lackofhydrodamage.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/lackofhydrodamage.json new file mode 100644 index 0000000..43ddf01 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/lackofhydrodamage.json @@ -0,0 +1,24 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "comparison": "<", + "compare_to": 1 + }, + "action": { + "type": "origins:damage", + "amount": 1, + "damage_type": "minecraft:dry_out" + } + + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/waterbreathing.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/waterbreathing.json new file mode 100644 index 0000000..f40cf63 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/waterbreathing.json @@ -0,0 +1,12 @@ +{ + "type": "origins:action_over_time", + "entity_action": { + "type": "origins:gain_air", + "value": 20 + }, + "interval": 1, + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet.json new file mode 100644 index 0000000..fcb79e9 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet.json @@ -0,0 +1,14 @@ +{ + "type": "origins:conditioned_attribute", + "hidden": true, + "modifier": { + "operation": "addition", + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water", + "inverted": true + }, + "value": -0.035, + "attribute": "generic.movement_speed" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet2.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet2.json new file mode 100644 index 0000000..6eae40f --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/webbedfeet2.json @@ -0,0 +1,12 @@ +{ + "type": "origins:modify_jump", + "hidden": true, + "modifier": { + "operation": "addition", + "value": -0.05 + }, + "entity_action": { + "type": "origins:execute_command", + "command": "particle splash ~ ~ ~ 0.3 0.3 0.3 0.01 16 normal @a" + } +} diff --git a/src/main/resources/data/terraoriginum/powers/merfolk-powers/wethands.json b/src/main/resources/data/terraoriginum/powers/merfolk-powers/wethands.json new file mode 100644 index 0000000..e5f4aab --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/merfolk-powers/wethands.json @@ -0,0 +1,12 @@ +{ + "type": "origins:modify_break_speed", + "modifier": { + "operation": "multiply_base", + "value": -0.5 + }, + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water", + "inverted": true + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/hydropetrification.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/hydropetrification.json new file mode 100644 index 0000000..64ad5cf --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/hydropetrification.json @@ -0,0 +1,29 @@ +{ + "type": "origins:action_over_time", + "interval": 1, + "condition": { + "type": "origins:submerged_in", + "fluid": "minecraft:water" + }, + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:add_velocity", + "x": 0, + "y": 0, + "z": 0, + "set": true + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:mining_fatigue", + "duration": 10, + "amplifier": 2 + } + + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/hyperefficient_blood.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/hyperefficient_blood.json new file mode 100644 index 0000000..a33325a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/hyperefficient_blood.json @@ -0,0 +1,10 @@ +{ + "type": "origins:effect_immunity", + "effects": [ + "minecraft:wither", + "minecraft:poison", + "minecraft:instant_damage", + "minecraft:hunger" + ] + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/instant_transmission.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/instant_transmission.json new file mode 100644 index 0000000..90dc184 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/instant_transmission.json @@ -0,0 +1,66 @@ +{ + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "comparison": ">=", + "compare_to": 50 + }, + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:delay", + "action": { + "type": "origins:raycast", + "distance": 20, + "block": true, + "entity": true, + "shape_type": "visual", + "fluid_handling": "any", + "miss_action": { + "type": "origins:nothing" + }, + "command_at_hit": "tp @s ~ ~ ~", + "command_along_ray": "/particle smoke ~ ~ ~ 0 0 0 0 10", + "command_step": 0.3 + }, + "ticks": 0 + }, + { + "type": "origins:play_sound", + "sound": "entity.illusioner.cast_spell", + "volume": 1, + "pitch": 1 + }, + { + "type": "origins:spawn_particles", + "particle": "instant_effect", + "count": 800, + "speed": 0.1, + "force": true, + "spread": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "offset_y": 0.5 + }, + { + "type": "origins:change_resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "change": -50, + "operation": "add" + } + + ] + }, + "cooldown": 0, + "hud_render": { + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": "19" + }, + "key": { + "key": "secondary" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/lackofsundamage.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/lackofsundamage.json new file mode 100644 index 0000000..88ae6d3 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/lackofsundamage.json @@ -0,0 +1,24 @@ +{ + "type": "origins:action_over_time", + "hidden": true, + "interval": 20, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "comparison": "<", + "compare_to": 50 + }, + "action": { + "type": "origins:damage", + "amount": 6, + "damage_type": "terraoriginum:lack_of_sun" + } + + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/nuclear_rush.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/nuclear_rush.json new file mode 100644 index 0000000..54f9651 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/nuclear_rush.json @@ -0,0 +1,55 @@ +{ + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "comparison": ">=", + "compare_to": 100 + }, + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 120, + "amplifier": 4 + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 200, + "amplifier": 3 + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:resistance", + "duration": 200, + "amplifier": 3 + } + }, + { + "type": "origins:change_resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "change": -100, + "operation": "add" + }, + { + "type": "origins:exhaust", + "amount": 2 + } + ] + + }, + "cooldown": 3000, + "hud_render": { + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": "7" + }, + "key": "primary" + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/nyctophobia.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/nyctophobia.json new file mode 100644 index 0000000..5d738e5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/nyctophobia.json @@ -0,0 +1,51 @@ +{ + "type": "origins:action_over_time", + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:daytime", + "inverted": true + }, + { + "type": "origins:inventory", + "inverted": true, + "process_mode": "items", + "slots": [ + "weapon.mainhand", + "weapon.offhand" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:sun_totem" + } + } + } + ] +}, + "entity_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:apply_effect", + "effects": [{ + "effect": "minecraft:slowness", + "amplifier": 0, + "duration": 35, + "show_particles": false, + "show_icon": false + }, + { + "effect": "minecraft:weakness", + "amplifier": 2, + "duration": 35, + "show_particles": false, + "show_icon": false + } + ] + } + ] + }, + "update_health": true + } + \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/shining.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/shining.json new file mode 100644 index 0000000..5ea6e92 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/shining.json @@ -0,0 +1,6 @@ +{ + "type": "origins:model_color", + "blue": 0.5, + "red": 1, + "green": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/solar_energy.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/solar_energy.json new file mode 100644 index 0000000..29539d3 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/solar_energy.json @@ -0,0 +1,11 @@ +{ + "type": "origins:resource", + "min": 0, + "max": 400, + "start_value": 60, + "hud_render": { + "should_render": true, + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": 14 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/sun_fueled.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/sun_fueled.json new file mode 100644 index 0000000..4e7b837 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/sun_fueled.json @@ -0,0 +1,13 @@ +{ +"condition": { + "type": "origins:exposed_to_sun" + }, + "type": "origins:action_over_time", + "interval": 40, + "entity_action": { + "type": "origins:change_resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "change": 10, + "operation": "add" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/super_dash.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/super_dash.json new file mode 100644 index 0000000..53b6094 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/super_dash.json @@ -0,0 +1,44 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [{ + "type": "origins:play_sound", + "sound": "minecraft:entity.evoker.cast_spell" + }, + { + "type": "origins:add_velocity", + "space": "local", + "z": 20 + }, + { + "type": "origins:execute_command", + "command": "particle dust_color_transition 0.9 0.38 0 1 0.88 0.11 0.14 ~ ~1 ~ 0.5 0 0.5 10 100 force" + }, + { + "type": "origins:execute_command", + "command": "particle explosion ~ ~1 ~ 0 0 0 0 1" + }, + { + "type": "origins:change_resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "change": -300 + } + ] + }, + "key": { + "key": "key.origins.ternary_active" + }, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "comparison": ">=", + "compare_to": 200 + }, +"cooldown": 100, +"hud_render": { +"sprite_location": "origins:textures/gui/community/huang/resource_bar_02.png", +"bar_index": 5, +"should_render": true +} +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/monarch-powers/totem_fueled.json b/src/main/resources/data/terraoriginum/powers/monarch-powers/totem_fueled.json new file mode 100644 index 0000000..114bebd --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/monarch-powers/totem_fueled.json @@ -0,0 +1,24 @@ +{ + "condition": { + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "weapon.mainhand", + "weapon.offhand" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:sun_totem" + } + } + }, + "type": "origins:action_over_time", + "interval": 40, + "entity_action": { + "type": "origins:change_resource", + "resource": "terraoriginum:monarch-powers/solar_energy", + "change": 4, + "operation": "add" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/muckunde-powers/hydrophobic.json b/src/main/resources/data/terraoriginum/powers/muckunde-powers/hydrophobic.json new file mode 100644 index 0000000..db7a044 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/muckunde-powers/hydrophobic.json @@ -0,0 +1,3 @@ +{ + "type": "origins:ignore_water" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil1.json b/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil1.json new file mode 100644 index 0000000..1f72634 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil1.json @@ -0,0 +1,9 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "retain_state": false + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil2.json b/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil2.json new file mode 100644 index 0000000..29704d0 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/muckunde-powers/likesoil2.json @@ -0,0 +1,51 @@ +{ + "type": "origins:phasing", + "render_type": "blindness", + "view_distance": 10, + "hidden": true, + "block_condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:block", + "block": "minecraft:dirt" + }, + { + "type": "origins:block", + "block": "minecraft:grass_block" + }, + { + "type": "origins:block", + "block": "minecraft:podzol" + }, + { + "type": "origins:block", + "block": "minecraft:mycelium" + }, + { + "type": "origins:block", + "block": "minecraft:coarse_dirt" + }, + { + "type": "origins:block", + "block": "minecraft:mud" + } + + ] + }, + "phase_down_condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:sneaking" + }, + { + "type": "origins:on_block" + } + ] + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:muckunde-powers/likesoil1" + } +} diff --git a/src/main/resources/data/terraoriginum/powers/muckunde-powers/toughskin.json b/src/main/resources/data/terraoriginum/powers/muckunde-powers/toughskin.json new file mode 100644 index 0000000..cd22fe7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/muckunde-powers/toughskin.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.armor", + "value": 4.0, + "operation": "addition" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/muckunde-powers/yummybeets.json b/src/main/resources/data/terraoriginum/powers/muckunde-powers/yummybeets.json new file mode 100644 index 0000000..e6de023 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/muckunde-powers/yummybeets.json @@ -0,0 +1,19 @@ +{ + "type": "origins:modify_food", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "minecraft:beetroot" + } + }, + "food_modifier": { + "name": "Increased food points", + "operation": "addition", + "value": 3.0 + }, + "saturation_modifier": { + "name": "Increased saturation points", + "operation": "addition", + "value": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/better_health.json b/src/main/resources/data/terraoriginum/powers/munch-powers/better_health.json new file mode 100644 index 0000000..27b6cc4 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/better_health.json @@ -0,0 +1,7 @@ +{ + "type": "origins:modify_healing", + "modifier":{ + "operation": "multiply_total", + "value": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/climbing.json b/src/main/resources/data/terraoriginum/powers/munch-powers/climbing.json new file mode 100644 index 0000000..9435767 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/climbing.json @@ -0,0 +1,79 @@ +{ + "type": "origins:multiple", + "toggle": { + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.primary_active" + }, + "retain_state": true + }, + "wall_run": { + "type": "origins:action_over_time", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type":"origins:apply_effect", + "effect":{ + "effect":"minecraft:levitation", + "duration":2, + "amplifier":-1, + "is_ambient":false, + "show_particles":false, + "show_icon":false + } + }, + { + "type":"origins:add_velocity", + "x": 0.0, + "y": 0.0, + "z":0.05, + "space":"local", + "client": true, + "server": true, + "set":false + } + ] + }, + "falling_action": { + "type":"origins:clear_effect", + "effect":"minecraft:levitation" + }, + "interval": 1, + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:power_active", + "power": "terraoriginum:munch-powers/climbing_toggle" + }, + { + "type":"origins:on_block", + "inverted":true + }, + { + "type": "origins:or", + "conditions": [ + { + "type":"origins:block_collision", + "offset_x":0.1, + "offset_z":0.1, + "offset_y":0, + "inverted":false + }, + { + "type":"origins:block_collision", + "offset_x":-0.1, + "offset_z":-0.1, + "offset_y":0, + "inverted":false + } + ], + "inverted": false + } + ] + } + } + +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/little_health.json b/src/main/resources/data/terraoriginum/powers/munch-powers/little_health.json new file mode 100755 index 0000000..c862687 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/little_health.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.max_health", + "value": -12.0, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/mounting.json b/src/main/resources/data/terraoriginum/powers/munch-powers/mounting.json new file mode 100644 index 0000000..fb2471b --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/mounting.json @@ -0,0 +1,56 @@ +{ + "type":"origins:multiple", + "mount":{ + "type":"origins:active_self", + "entity_action":{ + "type":"origins:raycast", + "distance":10.00, + "block":false, + "entity":true, + "shape_type":"collider", + "fluid_handling":"none", + "bientity_condition":{ + "type":"origins:target_condition", + "condition":{ + "type":"origins:living" + } + }, + "bientity_action":{ + "type":"origins:mount" + }, + "entity_distance":3.00, + "command_step":1.00, + "command_along_ray_only_on_hit":false + }, + "cooldown":1, + "hud_render":{ + "should_render":false + }, + "key":{ + "key":"key.origins.secondary_active", + "continuous":false + }, + "condition":{ + "type":"origins:riding", + "inverted":true + } + }, + "dismount":{ + "type":"origins:active_self", + "entity_action":{ + "type":"origins:dismount" + }, + "cooldown":1, + "hud_render":{ + "should_render":false + }, + "key":{ + "key":"key.sneak", + "continuous":false + }, + "condition":{ + "type":"origins:riding", + "inverted":false + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/nimble.json b/src/main/resources/data/terraoriginum/powers/munch-powers/nimble.json new file mode 100644 index 0000000..308ee18 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/nimble.json @@ -0,0 +1,37 @@ +{ + "type": "origins:multiple", + "damage_immunity": { + "type": "origins:invulnerability", + "damage_condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:name", + "name": "fall" + }, + { + "type": "origins:name", + "name": "flyIntoWall" + }, + { + "type": "origins:name", + "name": "cactus" + }, + { + "type": "origins:name", + "name": "sweetBerryBush" + }, + { + "type": "origins:name", + "name": "thorns" + } + ] + } + }, + "prevent_block_slowness": { + "type": "terraoriginum:prevent_block_slowness" + }, + "can_walk_on_powder_snow": { + "type": "terraoriginum:can_walk_on_powder_snow" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/quiet.json b/src/main/resources/data/terraoriginum/powers/munch-powers/quiet.json new file mode 100644 index 0000000..22991e4 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/quiet.json @@ -0,0 +1,7 @@ +{ + "type": "origins:prevent_game_event", + "events":[ + "minecraft:step", + "minecraft:hit_ground" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/short_arms.json b/src/main/resources/data/terraoriginum/powers/munch-powers/short_arms.json new file mode 100644 index 0000000..d9a6f2c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/short_arms.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:reach 0.5" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/speedy_bastard.json b/src/main/resources/data/terraoriginum/powers/munch-powers/speedy_bastard.json new file mode 100644 index 0000000..460bcca --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/speedy_bastard.json @@ -0,0 +1,22 @@ +{ + "type": "origins:active_self", + "key": "key.origins.ternary_active", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 600, + "amplifier": 4 + } + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "origins:textures/gui/resource_bar.png", + "bar_index": "2" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/tiny.json b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny.json new file mode 100644 index 0000000..3d8c644 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:height 0.13" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_appetite.json b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_appetite.json new file mode 100644 index 0000000..a34ba42 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_appetite.json @@ -0,0 +1,8 @@ +{ + "type": "origins:modify_exhaustion", + "modifier": { + "name": "Origin modifier", + "operation": "multiply_base", + "value": -0.75 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_motion.json b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_motion.json new file mode 100644 index 0000000..61b66fb --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_motion.json @@ -0,0 +1,8 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:motion 0.55" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_width.json b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_width.json new file mode 100644 index 0000000..27b72ec --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/munch-powers/tiny_width.json @@ -0,0 +1,9 @@ +{ + "type": "origins:action_over_time", + "hidden": true, + "interval": 20, + "entity_action": { + "type": "origins:execute_command", + "command": "/scale set pehkui:width 0.13" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_blind.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_blind.json new file mode 100644 index 0000000..860e0bb --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_blind.json @@ -0,0 +1,34 @@ +{ + "type": "origins:stacking_status_effect", + "min_stacks": 0, + "max_stacks": 1, + "duration_per_stack": 35, + "effect": { + "effect": "blindness", + "duration": 35, + "amplifier": 2, + "is_abient": true, + "show_particles": false, + "show_icon": false + }, + "interval": 60, + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:block_in_radius", + "radius": 1, + "inverted": true, + "block_condition": { + "type": "origins:in_tag", + "tag": "terraoriginum:mushrooms" + } + }, + { + "type": "origins:status_effect", + "effect": "minecraft:night_vision", + "inverted": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_echolocate.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_echolocate.json new file mode 100644 index 0000000..4ab98ae --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_echolocate.json @@ -0,0 +1,94 @@ +{ + "type": "origins:active_self", + "cooldown": 800, + "hud_render": { + "should_render":true, + "sprite_location":"origins:textures/gui/community/spiderkolo/resource_bar_02.png", + "bar_index": 7 + }, + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:if_else", + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:equipped_item", + "equipment_slot": "mainhand", + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "minecraft:fermented_spider_eye" + } + } + } + ] + }, + + "if_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "command": "effect give @s minecraft:night_vision 60 0 true", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "clear @s minecraft:fermented_spider_eye 1", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "playsound block.block.conduit.attack.target master @e[distance=..15] ~ ~ ~ 10 1 1", + "permission_level": 4 + } + ] + }, + + "else_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:execute_command", + "command": "playsound block.conduit.attack.target master @p[distance=..15] ~ ~ ~ 10 1 1", + "permission_level": 4 + }, + { + "type": "origins:execute_command", + "command": "effect give @p minecraft:night_vision 5 1 true", + "permission_level": 4 + } + ], + "cooldown": 20, + "hud_render": { + "should_render": false, + "sprite_location": "origins:textures/gui/resource_bar.png", + "bar_index": 4 + } + } + + } + ] + }, + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:block_in_radius", + "radius": 4, + "inverted": true, + "block_condition": { + "type": "origins:in_tag", + "tag": "terraoriginum:wool" + } + } + ] + }, + "key": { + "key":"key.playerlist", + "continuous": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_natural_armour.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_natural_armour.json new file mode 100644 index 0000000..5009146 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_natural_armour.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "name": "Natural Armor health bonus", + "attribute": "minecraft:generic.armor", + "value": 6.0, + "operation": "addition" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage.json new file mode 100755 index 0000000..da60b34 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage.json @@ -0,0 +1,25 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 400, + "amplifier": 1 + } + }, + { + "type": "origins:exhaust", + "amount": 2 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/ability_bar.png", + "bar_index": "0" + } +} diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage_addition.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage_addition.json new file mode 100755 index 0000000..40ae8ba --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_rage_addition.json @@ -0,0 +1,26 @@ +{ + "type": "origins:active_self", + "hidden": "true", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 400, + "amplifier": 1 + } + }, + { + "type": "origins:heal", + "amount": 12 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/nothing.png", + "bar_index": "0" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_strong.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_strong.json new file mode 100644 index 0000000..260b411 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_strong.json @@ -0,0 +1,13 @@ +{ + "type": "origins:attribute", + "modifiers": + [ + { + "name": "Strong damage", + "attribute": "generic.attack_damage", + "value": 3.0, + "operation": "addition" + } + ] + +} diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_tailwind.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_tailwind.json new file mode 100644 index 0000000..65353cf --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_tailwind.json @@ -0,0 +1,9 @@ +{ + "type": "origins:attribute", + "modifier": { + "name": "Tailwind speed bonus", + "attribute": "minecraft:generic.movement_speed", + "value": 0.05, + "operation": "multiply_base" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/mync-powers/mync_vision.json b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_vision.json new file mode 100644 index 0000000..9fb1953 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/mync-powers/mync_vision.json @@ -0,0 +1,5 @@ +{ + "type": "origins:shader", + "shader": "terraoriginum:shaders/post/sobel.json", + "toggleable": false +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/serpenta-powers/boilingshot.json b/src/main/resources/data/terraoriginum/powers/serpenta-powers/boilingshot.json new file mode 100644 index 0000000..01e90d6 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/serpenta-powers/boilingshot.json @@ -0,0 +1,45 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:delay", + "action": { + "type": "origins:raycast", + "distance": 20, + "block": false, + "entity": true, + "shape_type": "visual", + "fluid_handling": "any", + "miss_action": { + "type": "origins:nothing" + }, + "command_at_hit": "/execute as @e[distance=..2] run damage @s 10 terraoriginum:boiling", + "command_along_ray": "/particle splash ~ ~ ~ 0 0 0 0 10", + "command_step": 0.3 + }, + "ticks": 0 + }, + { + "type": "origins:play_sound", + "sound": "entity.dolphin.splash", + "volume": 1, + "pitch": 1 + }, + { + "type": "origins:change_resource", + "resource": "terraoriginum:merfolk-powers/hydration", + "change": -50, + "operation": "add" + } + + ] + }, + "cooldown": 600, + "hud_render": { + "sprite_location": "origins:textures/gui/community/spiderkolo/resource_bar_02.png", + "bar_index": "15" + }, + "key": "secondary" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/serpenta-powers/scales.json b/src/main/resources/data/terraoriginum/powers/serpenta-powers/scales.json new file mode 100644 index 0000000..cd22fe7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/serpenta-powers/scales.json @@ -0,0 +1,8 @@ +{ + "type": "origins:attribute", + "modifier": { + "attribute": "minecraft:generic.armor", + "value": 4.0, + "operation": "addition" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility1.json b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility1.json new file mode 100644 index 0000000..1defc09 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility1.json @@ -0,0 +1,15 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "retain_state": false, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": ">=", + "compare_to": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility2.json b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility2.json new file mode 100644 index 0000000..42c1c06 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility2.json @@ -0,0 +1,10 @@ +{ + "type": "origins:invisibility", + "render_armor": true, + "render_outline": true, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:shade-powers/invisibility1" + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility3.json b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility3.json new file mode 100644 index 0000000..a9ad461 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/shade-powers/invisibility3.json @@ -0,0 +1,27 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:shade-powers/invisibility1" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -5, + "operation": "add" + } + ] + } + } + ] + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/ectodiff.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/ectodiff.json new file mode 100644 index 0000000..9c2b4ef --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/ectodiff.json @@ -0,0 +1,140 @@ +{ + "type": "origins:action_over_time", + "interval": 40, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:or", + "conditions": [ + { + "type": "origins:brightness", + "comparison": "<=", + "compare_to": 0.17948718 + } + ] + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": 4, + "operation": "add" + } + ] + } + }, + { + "condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "armor.head" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:ghostly_helmet" + } + } + }, + { + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "armor.chest" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:ghostly_chestplate" + } + } + }, + { + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "armor.legs" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:ghostly_leggings" + } + } + }, + { + "type": "origins:inventory", + "process_mode": "items", + "slots": [ + "armor.feet" + ], + "item_condition": { + "type": "origins:ingredient", + "ingredient": { + "item": "terraoriginum:ghostly_boots" + } + } + } + ] + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": 4, + "operation": "add" + } + ] + } + }, + { + "condition": { + "type": "origins:enchantment", + "enchantment": "terraoriginum:light_protection", + "calculation": "sum", + "comparison": ">=", + "compare_to": 1 + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -1, + "operation": "add" + } + ] + } + }, + { + "condition": { + "type": "origins:brightness", + "comparison": ">", + "compare_to": 0.17948718 + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -2, + "operation": "add" + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/ectoplasm.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/ectoplasm.json new file mode 100644 index 0000000..d5bb72d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/ectoplasm.json @@ -0,0 +1,11 @@ +{ + "type": "origins:resource", + "min": 0, + "max": 200, + "start_value": 100, + "hud_render": { + "should_render": true, + "sprite_location": "origins:textures/gui/community/huang/resource_bar_01.png", + "bar_index": 5 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/lackofectodmg.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/lackofectodmg.json new file mode 100644 index 0000000..f259fa6 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/lackofectodmg.json @@ -0,0 +1,24 @@ +{ + "type": "origins:action_over_time", + "hidden": true, + "interval": 20, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": "<", + "compare_to": 13 + }, + "action": { + "type": "origins:damage", + "amount": 1, + "damage_type": "terraoriginum:lack_of_ectoplasm" + } + + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/nightvis.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/nightvis.json new file mode 100644 index 0000000..0c5794e --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/nightvis.json @@ -0,0 +1,4 @@ +{ + "type": "origins:night_vision", + "strength": 0.2 +} diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing1.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing1.json new file mode 100644 index 0000000..0fc6abf --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing1.json @@ -0,0 +1,15 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "secondary", + "continuous": false + }, + "retain_state": false, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": ">=", + "compare_to": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing2.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing2.json new file mode 100644 index 0000000..7862d1c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing2.json @@ -0,0 +1,26 @@ +{ + "type": "origins:phasing", + "hidden": true, + "blacklist": true, + "render_type": "blindness", + "view_distance": 10, + "block_condition": { + "type": "origins:in_tag", + "tag": "origins:unphasable" + }, + "phase_down_condition": { + "type": "origins:and", + "conditions": [ + { + "type": "origins:sneaking" + }, + { + "type": "origins:on_block" + } + ] + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:spirit-powers/phasing1" + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing3.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing3.json new file mode 100644 index 0000000..e0e088d --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/phasing3.json @@ -0,0 +1,27 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:spirit-powers/phasing1" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -7, + "operation": "add" + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/pure_ghost.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/pure_ghost.json new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/skin.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/skin.json new file mode 100644 index 0000000..f25b38b --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/skin.json @@ -0,0 +1,5 @@ +{ + "type": "origins:model_color", + "alpha": 0.7 + +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/spirit-powers/undead.json b/src/main/resources/data/terraoriginum/powers/spirit-powers/undead.json new file mode 100644 index 0000000..c11041a --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/spirit-powers/undead.json @@ -0,0 +1,4 @@ +{ + "type": "origins:entity_group", + "group": "undead" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wings.json b/src/main/resources/data/terraoriginum/powers/wings.json new file mode 100644 index 0000000..fbc63f2 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wings.json @@ -0,0 +1,4 @@ +{ + "type": "terraoriginum:wings", + "wings_type": "icarus:white_feathered_wings" +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/charred.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/charred.json new file mode 100644 index 0000000..c6d658c --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/charred.json @@ -0,0 +1,7 @@ +{ + "type": "origins:model_color", + "blue": 0.2, + "green": 0.2, + "red": 0.2, + "alpha": 0.9 +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring1.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring1.json new file mode 100644 index 0000000..728af96 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring1.json @@ -0,0 +1,15 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.ternary_active", + "continuous": false + }, + "retain_state": false, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": ">=", + "compare_to": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring2.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring2.json new file mode 100644 index 0000000..0437531 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring2.json @@ -0,0 +1,9 @@ +{ + "hidden": true, + "type": "origins:swimming", + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:wraith-powers/soaring1", + "inverted": false + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring3.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring3.json new file mode 100644 index 0000000..30b90b8 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/soaring3.json @@ -0,0 +1,27 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:wraith-powers/soaring1" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -6, + "operation": "add" + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/torment1.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment1.json new file mode 100644 index 0000000..1defc09 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment1.json @@ -0,0 +1,15 @@ +{ + "type": "origins:toggle", + "active_by_default": false, + "key": { + "key": "key.origins.primary_active", + "continuous": false + }, + "retain_state": false, + "condition": { + "type": "origins:resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "comparison": ">=", + "compare_to": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/torment2.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment2.json new file mode 100644 index 0000000..58bf729 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment2.json @@ -0,0 +1,45 @@ +{ + "type": "origins:action_over_time", + "interval": 5, + "hidden": true, + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 35, + "amplifier": 0, + "show_icon": false + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 35, + "amplifier": 1, + "show_icon": false + } + }, + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:resistance", + "duration": 35, + "amplifier": 0, + "show_icon": false + } + }, + { + "type": "origins:exhaust", + "amount": 0.5 + } + ] + }, + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:wraith-powers/torment1" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/wraith-powers/torment3.json b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment3.json new file mode 100644 index 0000000..6590af3 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/wraith-powers/torment3.json @@ -0,0 +1,27 @@ +{ + "type": "origins:action_over_time", + "interval": 20, + "hidden": true, + "entity_action": { + "type": "origins:if_else_list", + "actions": [ + { + "condition": { + "type": "origins:power_active", + "power": "terraoriginum:wraith-powers/torment1" + }, + "action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:change_resource", + "resource": "terraoriginum:spirit-powers/ectoplasm", + "change": -9, + "operation": "add" + } + ] + } + } + ] + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-death.json b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-death.json new file mode 100644 index 0000000..ac7a357 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-death.json @@ -0,0 +1,20 @@ +{ + + "type": "origins:damage_over_time", + "interval": 40, + "onset_delay": 1200, + "damage": 500, + "damage_easy": 2, + "damage_source": { + "name": "terraoriginum:last_stand", + "unblockable": true, + "bypasses_armor": true + }, + "condition": { + "type": "origins:status_effect", + "effect": "minecraft:strength", + "min_amplifier": 3, + "min_duration": 0 + }, + "hidden": true +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-effects.json b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-effects.json new file mode 100755 index 0000000..f47cee1 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand-effects.json @@ -0,0 +1,26 @@ +{ + "type": "origins:active_self", + "hidden": "true", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:speed", + "duration": 1400, + "amplifier": 1 + } + }, + { + "type": "origins:heal", + "amount": 8 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/nothing.png", + "bar_index": "0" + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand.json b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand.json new file mode 100755 index 0000000..6aa0365 --- /dev/null +++ b/src/main/resources/data/terraoriginum/powers/yulde-powers/last_stand.json @@ -0,0 +1,25 @@ +{ + "type": "origins:active_self", + "entity_action": { + "type": "origins:and", + "actions": [ + { + "type": "origins:apply_effect", + "effect": { + "effect": "minecraft:strength", + "duration": 1400, + "amplifier": 3 + } + }, + { + "type": "origins:exhaust", + "amount": 5 + } + ] + }, + "cooldown": 2400, + "hud_render": { + "sprite_location": "terraoriginum:textures/gui/ability_bar.png", + "bar_index": "0" + } +} diff --git a/src/main/resources/data/terraoriginum/recipes/ghostly_boots.json b/src/main/resources/data/terraoriginum/recipes/ghostly_boots.json new file mode 100644 index 0000000..d094863 --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/ghostly_boots.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#E#", + " # " + ], + "key": { + "#": { + "item": "terraoriginum:ghostly_cloth" + }, + "E": { + "item": "minecraft:netherite_boots" + } + }, + "result": { + "item": "terraoriginum:ghostly_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/ghostly_chestplate.json b/src/main/resources/data/terraoriginum/recipes/ghostly_chestplate.json new file mode 100644 index 0000000..ad08bdd --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/ghostly_chestplate.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#E#", + " # " + ], + "key": { + "#": { + "item": "terraoriginum:ghostly_cloth" + }, + "E": { + "item": "minecraft:netherite_chestplate" + } + }, + "result": { + "item": "terraoriginum:ghostly_chestplate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/ghostly_cloth.json b/src/main/resources/data/terraoriginum/recipes/ghostly_cloth.json new file mode 100644 index 0000000..617b5ac --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/ghostly_cloth.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#E#", + " # " + ], + "key": { + "#": { + "item": "terraoriginum:cotton_ball" + }, + "E": { + "item": "minecraft:echo_shard" + } + }, + "result": { + "item": "terraoriginum:ghostly_cloth", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/ghostly_helmet.json b/src/main/resources/data/terraoriginum/recipes/ghostly_helmet.json new file mode 100644 index 0000000..fbd246d --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/ghostly_helmet.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#E#", + " # " + ], + "key": { + "#": { + "item": "terraoriginum:ghostly_cloth" + }, + "E": { + "item": "minecraft:netherite_helmet" + } + }, + "result": { + "item": "terraoriginum:ghostly_helmet", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/ghostly_leggings.json b/src/main/resources/data/terraoriginum/recipes/ghostly_leggings.json new file mode 100644 index 0000000..c5a4d96 --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/ghostly_leggings.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#E#", + " # " + ], + "key": { + "#": { + "item": "terraoriginum:ghostly_cloth" + }, + "E": { + "item": "minecraft:netherite_leggings" + } + }, + "result": { + "item": "terraoriginum:ghostly_leggings", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/sun_totem.json b/src/main/resources/data/terraoriginum/recipes/sun_totem.json new file mode 100644 index 0000000..7134f7c --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/sun_totem.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " D ", + "#P#", + " / " + ], + "key": { + "#": { + "item": "minecraft:redstone" + }, + "/": { + "item": "minecraft:fire_charge" + }, + "P": { + "item": "minecraft:totem_of_undying" + }, + "D": { + "item": "minecraft:nether_star" + } + }, + "result": { + "item": "terraoriginum:sun_totem", + "count": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/recipes/umbrella.json b/src/main/resources/data/terraoriginum/recipes/umbrella.json new file mode 100644 index 0000000..5828188 --- /dev/null +++ b/src/main/resources/data/terraoriginum/recipes/umbrella.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " # ", + "#P#", + " / " + ], + "key": { + "#": { + "item": "minecraft:leather" + }, + "/": { + "item": "minecraft:stick" + }, + "P": { + "item": "minecraft:netherite_scrap" + } + }, + "result": { + "item": "terraoriginum:umbrella", + "count": 1 + } + } \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/bees.json b/src/main/resources/data/terraoriginum/tags/blocks/bees.json new file mode 100644 index 0000000..d73dac5 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/bees.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": + [ + "minecraft:bee_nest", + "minecraft:beehive", + "minecraft:honeycomb_block", + "minecraft:honey_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/hexblade_unphaseable.json b/src/main/resources/data/terraoriginum/tags/blocks/hexblade_unphaseable.json new file mode 100644 index 0000000..97fb5ed --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/hexblade_unphaseable.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": + [ + "minecraft:soul_sand", + "minecraft:soul_soil", + "minecraft:bedrock", + "minecraft:barrier" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/hot_blocks.json b/src/main/resources/data/terraoriginum/tags/blocks/hot_blocks.json new file mode 100644 index 0000000..33beb94 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/hot_blocks.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": + [ + "minecraft:campfire", + "minecraft:soul_campfire", + "minecraft:lava", + "minecraft:magma_block", + "minecraft:fire", + "minecraft:soul_fire" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/mushrooms.json b/src/main/resources/data/terraoriginum/tags/blocks/mushrooms.json new file mode 100644 index 0000000..efd53dd --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/mushrooms.json @@ -0,0 +1,19 @@ +{ + "replace": false, + "values": + [ + "minecraft:mycelium", + "minecraft:crimson_nylium", + "minecraft:warped_nylium", + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:brown_mushroom_block", + "minecraft:red_mushroom_block", + "minecraft:mushroom_stem", + "minecraft:crimson_fungus", + "minecraft:warped_fungus", + "minecraft:nether_wart", + "minecraft:nether_wart_block", + "minecraft:warped_wart_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/myceliums.json b/src/main/resources/data/terraoriginum/tags/blocks/myceliums.json new file mode 100644 index 0000000..4073d7e --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/myceliums.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": + [ + "minecraft:mycelium", + "minecraft:crimson_nylium", + "minecraft:warped_nylium" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/nature.json b/src/main/resources/data/terraoriginum/tags/blocks/nature.json new file mode 100644 index 0000000..ca2703f --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/nature.json @@ -0,0 +1,35 @@ +{ + "replace": false, + "values": + [ + "minecraft:oak_log", + "minecraft:spruce_log", + "minecraft:birch_log", + "minecraft:jungle_log", + "minecraft:acacia_log", + "minecraft:dark_oak_log", + "minecraft:stripped_oak_log", + "minecraft:stripped_spruce_log", + "minecraft:stripped_birch_log", + "minecraft:stripped_jungle_log", + "minecraft:stripped_acacia_log", + "minecraft:stripped_dark_oak_log", + "minecraft:oak_sapling", + "minecraft:spruce_sapling", + "minecraft:birch_sapling", + "minecraft:jungle_sapling", + "minecraft:acacia_sapling", + "minecraft:dark_oak_sapling", + "minecraft:oak_leaves", + "minecraft:spruce_leaves", + "minecraft:birch_leaves", + "minecraft:jungle_leaves", + "minecraft:acacia_leaves", + "minecraft:dark_oak_leaves", + "minecraft:bamboo", + "minecraft:grass_block", + "minecraft:lily_pad", + "minecraft:vine", + "minecraft:cactus" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/non_solid.json b/src/main/resources/data/terraoriginum/tags/blocks/non_solid.json new file mode 100644 index 0000000..bc37559 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/non_solid.json @@ -0,0 +1,62 @@ +{ + "replace": false, + "values": [ + "#minecraft:saplings", + "#minecraft:flowers", + "#minecraft:climbable", + "#minecraft:bee_growables", + "#minecraft:fire", + "#minecraft:rails", + "#minecraft:wool_carpets", + "#minecraft:underwater_bonemeals", + "#minecraft:buttons", + "minecraft:air", + "minecraft:water", + "minecraft:lava", + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:sugar_cane", + "minecraft:nether_wart", + "minecraft:crimson_fungus", + "minecraft:warped_fungus", + "minecraft:grass", + "minecraft:tall_grass", + "minecraft:fern", + "minecraft:large_fern", + "minecraft:dead_bush", + "minecraft:crimson_roots", + "minecraft:warped_roots", + "minecraft:nether_sprouts", + "minecraft:tall_seagrass", + "minecraft:kelp_plant", + "minecraft:sea_pickle", + "minecraft:torch", + "minecraft:soul_torch", + "minecraft:wall_torch", + "minecraft:soul_wall_torch", + "minecraft:redstone_wire", + "minecraft:repeater", + "minecraft:comparator", + "minecraft:lever", + "minecraft:tripwire_hook", + "minecraft:tripwire", + "minecraft:snow", + "minecraft:dead_tube_coral", + "minecraft:dead_brain_coral", + "minecraft:dead_bubble_coral", + "minecraft:dead_fire_coral", + "minecraft:dead_horn_coral", + "minecraft:dead_tube_coral_fan", + "minecraft:dead_brain_coral_fan", + "minecraft:dead_bubble_coral_fan", + "minecraft:dead_fire_coral_fan", + "minecraft:dead_horn_coral_fan", + "minecraft:dead_tube_coral_wall_fan", + "minecraft:dead_brain_coral_wall_fan", + "minecraft:dead_bubble_coral_wall_fan", + "minecraft:dead_fire_coral_wall_fan", + "minecraft:dead_horn_coral_wall_fan", + "minecraft:bamboo_sapling", + "minecraft:moss_carpet" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/ocean_monument.json b/src/main/resources/data/terraoriginum/tags/blocks/ocean_monument.json new file mode 100644 index 0000000..a08e3ec --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/ocean_monument.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": + [ + "minecraft:prismarine", + "minecraft:dark_prismarine", + "minecraft:prismarine_bricks", + "minecraft:sea_lantern", + "minecraft:prismarine_bricks", + "minecraft:prismarine_stairs", + "minecraft:prismarine_brick_stairs", + "minecraft:dark_prismarine_stairs", + "minecraft:prismarine_wall", + "minecraft:prismarine_slab", + "minecraft:prismarine_brick_slab", + "minecraft:dark_prismarine_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/path_blocks.json b/src/main/resources/data/terraoriginum/tags/blocks/path_blocks.json new file mode 100644 index 0000000..d72689c --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/path_blocks.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": + [ + "minecraft:dirt_path", + "minecraft:cobblestone", + "minecraft:gravel", + "minecraft:sandstone", + "minecraft:red_sandstone", + "minecraft:coarse_dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/stone_types.json b/src/main/resources/data/terraoriginum/tags/blocks/stone_types.json new file mode 100644 index 0000000..4ea11b3 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/stone_types.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": + [ + "minecraft:stone", + "minecraft:granite", + "minecraft:diorite", + "minecraft:andesite", + "minecraft:netherrack" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/unphasable.json b/src/main/resources/data/terraoriginum/tags/blocks/unphasable.json new file mode 100644 index 0000000..702ea38 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/unphasable.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:barrier", + "minecraft:bedrock", + "minecraft:crying_obsidian", + "minecraft:respawn_anchor", + "minecraft:obsidian", + "minecraft:enchanting_table", + "minecraft:ender_chest", + "minecraft:beacon" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/valuores.json b/src/main/resources/data/terraoriginum/tags/blocks/valuores.json new file mode 100644 index 0000000..f7d5389 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/valuores.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": + [ + "minecraft:diamond_ore", + "minecraft:ancient_debris", + "minecraft:emerald_ore", + "minecraft:gold_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/blocks/wool.json b/src/main/resources/data/terraoriginum/tags/blocks/wool.json new file mode 100644 index 0000000..f1e3e3e --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/blocks/wool.json @@ -0,0 +1,22 @@ +{ + "replace": false, + "values": + [ + "minecraft:white_wool", + "minecraft:orange_wool", + "minecraft:magenta_wool", + "minecraft:light_blue_wool", + "minecraft:yellow_wool", + "minecraft:lime_wool", + "minecraft:pink_wool", + "minecraft:gray_wool", + "minecraft:light_gray_wool", + "minecraft:cyan_wool", + "minecraft:purple_wool", + "minecraft:blue_wool", + "minecraft:brown_wool", + "minecraft:green_wool", + "minecraft:red_wool", + "minecraft:black_wool" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/entity_types/hostiles.json b/src/main/resources/data/terraoriginum/tags/entity_types/hostiles.json new file mode 100644 index 0000000..6b8870a --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/entity_types/hostiles.json @@ -0,0 +1,33 @@ +{ + "replace": false, + "values": [ + "minecraft:blaze", + "minecraft:cave_spider", + "minecraft:spider", + "minecraft:piglin", + "minecraft:drowned", + "minecraft:enderman", + "minecraft:zombified_piglin", + "minecraft:creeper", + "minecraft:elder_guardian", + "minecraft:endermite", + "minecraft:ghast", + "minecraft:guardian", + "minecraft:hoglin", + "minecraft:husk", + "minecraft:magma_cube", + "minecraft:phantom", + "minecraft:piglin_brute", + "minecraft:pillager", + "minecraft:ravager", + "minecraft:skeleton", + "minecraft:slime", + "minecraft:stray", + "minecraft:vindicator", + "minecraft:witch", + "minecraft:wither_skeleton", + "minecraft:zoglin", + "minecraft:zombie", + "minecraft:zombie_villager" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/entity_types/innocent.json b/src/main/resources/data/terraoriginum/tags/entity_types/innocent.json new file mode 100644 index 0000000..1e65577 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/entity_types/innocent.json @@ -0,0 +1,22 @@ +{ + "replace": false, + "values": [ + "minecraft:ocelot", + "minecraft:rabbit", + "minecraft:fox", + "minecraft:tropical_fish", + "minecraft:mule", + "minecraft:donkey", + "minecraft:horse", + "minecraft:turtle", + "minecraft:skeleton_horse", + "minecraft:squid", + "minecraft:strider", + "minecraft:wandering_trader", + "minecraft:zombie_horse", + "minecraft:cod", + "minecraft:frog", + "minecraft:glow_squid", + "minecraft:villager" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/entity_types/nomercy.json b/src/main/resources/data/terraoriginum/tags/entity_types/nomercy.json new file mode 100644 index 0000000..8773748 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/entity_types/nomercy.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "minecraft:cat", + "minecraft:wolf", + "minecraft:parrot", + "minecraft:allay", + "minecraft:panda", + "minecraft:axolotl", + "minecraft:bee" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/entity_types/unholy.json b/src/main/resources/data/terraoriginum/tags/entity_types/unholy.json new file mode 100644 index 0000000..eda223b --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/entity_types/unholy.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "minecraft:drowned", + "minecraft:husk", + "minecraft:zombie", + "minecraft:zombie_horse", + "minecraft:zombie_villager", + "minecraft:zombified_piglin", + "#minecraft:skeletons", + "minecraft:phantoms" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/blades.json b/src/main/resources/data/terraoriginum/tags/items/blades.json new file mode 100644 index 0000000..ebe8b87 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/blades.json @@ -0,0 +1,10 @@ +{ + "values": [ + "diamond_sword", + "netherite_sword", + "iron_sword", + "golden_sword", + "stone_sword", + "wooden_sword" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/boots.json b/src/main/resources/data/terraoriginum/tags/items/boots.json new file mode 100644 index 0000000..5fa16c7 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/boots.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:leather_boots", + "minecraft:chainmail_boots" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/break.json b/src/main/resources/data/terraoriginum/tags/items/break.json new file mode 100644 index 0000000..b99c982 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/break.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "minecraft:wooden_sword", + "minecraft:wooden_pickaxe", + "minecraft:wooden_axe", + "minecraft:wooden_shovel", + "minecraft:wooden_hoe", + "minecraft:stone_sword", + "minecraft:stone_pickaxe", + "minecraft:stone_axe", + "minecraft:stone_shovel", + "minecraft:stone_hoe", + "minecraft:bow", + "minecraft:crossbow", + "minecraft:fishing_rod", + "minecraft:carrot_on_a_stick", + "minecraft:warped_fungus_on_a_stick" + ] +} diff --git a/src/main/resources/data/terraoriginum/tags/items/chestplate.json b/src/main/resources/data/terraoriginum/tags/items/chestplate.json new file mode 100644 index 0000000..5224a80 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/chestplate.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:leather_chestplate", + "minecraft:chainmail_chestplate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/giweapons.json b/src/main/resources/data/terraoriginum/tags/items/giweapons.json new file mode 100644 index 0000000..5630de3 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/giweapons.json @@ -0,0 +1,12 @@ +{ + "values": [ + "gameritems:omnium_sword", + "gameritems:orium_sword", + "gameritems:jeremium_sword", + "gameritems:stupidium_sword", + "gameritems:omnium_axe", + "gameritems:orium_axe", + "gameritems:jeremium_axe", + "gameritems:stupidium_axe" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/helmet.json b/src/main/resources/data/terraoriginum/tags/items/helmet.json new file mode 100644 index 0000000..9a9effd --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/helmet.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:leather_helmet", + "minecraft:chainmail_helmet" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/leggings.json b/src/main/resources/data/terraoriginum/tags/items/leggings.json new file mode 100644 index 0000000..a2f51ba --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/leggings.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:leather_leggings", + "minecraft:chainmail_leggings" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/terraoriginum/tags/items/unobtainable.json b/src/main/resources/data/terraoriginum/tags/items/unobtainable.json new file mode 100755 index 0000000..6e01781 --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/unobtainable.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "origins:orb_of_origin" + ] +} diff --git a/src/main/resources/data/terraoriginum/tags/items/weapons.json b/src/main/resources/data/terraoriginum/tags/items/weapons.json new file mode 100644 index 0000000..bbaebaa --- /dev/null +++ b/src/main/resources/data/terraoriginum/tags/items/weapons.json @@ -0,0 +1,16 @@ +{ + "values": [ + "minecraft:wooden_sword", + "minecraft:stone_sword", + "minecraft:iron_sword", + "minecraft:golden_sword", + "minecraft:diamond_sword", + "minecraft:netherite_sword", + "minecraft:wooden_axe", + "minecraft:stone_axe", + "minecraft:iron_axe", + "minecraft:golden_axe", + "minecraft:diamond_axe", + "minecraft:netherite_axe" + ] +} \ 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..1e7c55b --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,42 @@ +{ + "schemaVersion": 1, + "id": "terraoriginum", + "provides": [ + "extrakeybinds" + ], + "version": "${version}", + "name": "Terra Originum", + "description": "Origins for Celestia SMP", + "authors": [ + "Gæmer", + "CosmoOrSth(or sth)" + ], + "contact": { + "issues": "https://github.com/BigGaemer/terra-originum/issues", + "repo": "https://github.com/BigGaemer/terra-originum" + }, + "license": "Custom License", + "icon": "assets/terraoriginum.png", + "environment": "*", + "entrypoints": { + "main": [ + "com.smithy.terraoriginum.TerraOriginum" + ], + "client": [ + "com.smithy.terraoriginum.client.TerraKeybinds", + "com.smithy.terraoriginum.client.LayerRenderer" + ] + }, + "mixins": [ + "terra.mixins.json" + ], + "depends": { + "origins": ">=1.10.0", + "fabricloader": ">=0.14.0", + "fabric": "*", + "minecraft": "1.20.1", + "pehkui": ">=3.7.8", + "icarus": ">=2.11.0" + }, + "conflicts": {} +} \ No newline at end of file diff --git a/src/main/resources/terra.mixins.json b/src/main/resources/terra.mixins.json new file mode 100644 index 0000000..9ac065d --- /dev/null +++ b/src/main/resources/terra.mixins.json @@ -0,0 +1,19 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.smithy.terraoriginum.mixin", + "compatibilityLevel": "JAVA_16", + "mixins": [ + "PlayerConditionsMixin", + "PlayerEntityMixin", + "EntityMixin", + "PowderSnowBlockMixin", + "IcarusHelperMixin" + ], + "client": [ + "client.IcarusClientMixin" + ], + "injectors": { + "defaultRequire": 1 + } +}