From 1d90f6f23c5222ecaaa900b1908a68e2926c03cf Mon Sep 17 00:00:00 2001 From: Una Thompson Date: Sat, 10 Oct 2020 03:14:29 -0700 Subject: [PATCH] Add Forge 1.16 port, root README, common, unify versions, etc --- .gitignore | 1 + README.md | 4 + build-all.sh | 12 ++ common/.gitignore | 4 + common/README.md | 1 + common/build.gradle | 3 + common/settings.gradle | 1 + fabric-1.14/README.md | 29 --- fabric-1.14/build.gradle | 2 +- fabric-1.14/gradle.properties | 3 +- fabric-1.14/settings.gradle | 2 + fabric-1.16/README.md | 29 --- fabric-1.16/build.gradle | 2 +- fabric-1.16/gradle.properties | 3 +- fabric-1.16/settings.gradle | 2 + forge-1.12/README.md | 29 --- forge-1.12/project.gradle | 4 +- forge-1.12/settings.gradle | 1 + forge-1.14/.gitignore | 28 +++ forge-1.14/LICENSE | 21 +++ forge-1.14/build.gradle | 140 ++++++++++++++ forge-1.14/gradle.properties | 4 + forge-1.14/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58910 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + forge-1.14/gradlew | 172 ++++++++++++++++++ forge-1.14/gradlew.bat | 84 +++++++++ forge-1.14/settings.gradle | 1 + .../com/unascribed/ears/EarsAwareTexture.java | 7 + .../unascribed/ears/EarsFeatureRenderer.java | 69 +++++++ .../java/com/unascribed/ears/EarsMod.java | 7 + .../ears/mixin/MixinPlayerEntityRenderer.java | 28 +++ .../ears/mixin/MixinPlayerSkinTexture.java | 68 +++++++ .../src/main/resources/META-INF/MANIFEST.MF | 1 + .../src/main/resources/META-INF/mods.toml | 16 ++ forge-1.14/src/main/resources/ears-icon.png | Bin 0 -> 30060 bytes .../src/main/resources/ears.mixins.json | 16 ++ forge-1.14/src/main/resources/pack.mcmeta | 7 + forge-1.16/.gitignore | 29 +++ forge-1.16/LICENSE | 21 +++ forge-1.16/build.gradle | 141 ++++++++++++++ forge-1.16/gradle.properties | 4 + forge-1.16/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58910 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + forge-1.16/gradlew | 172 ++++++++++++++++++ forge-1.16/gradlew.bat | 84 +++++++++ forge-1.16/settings.gradle | 1 + .../com/unascribed/ears/EarsAwareTexture.java | 7 + .../unascribed/ears/EarsFeatureRenderer.java | 69 +++++++ .../java/com/unascribed/ears/EarsMod.java | 7 + .../ears/mixin/MixinPlayerEntityRenderer.java | 28 +++ .../ears/mixin/MixinPlayerSkinTexture.java | 68 +++++++ .../src/main/resources/META-INF/MANIFEST.MF | 1 + .../src/main/resources/META-INF/mods.toml | 12 ++ forge-1.16/src/main/resources/ears-icon.png | Bin 0 -> 30060 bytes .../src/main/resources/ears.mixins.json | 16 ++ forge-1.16/src/main/resources/pack.mcmeta | 7 + version.txt | 1 + 57 files changed, 1384 insertions(+), 95 deletions(-) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 build-all.sh create mode 100644 common/.gitignore create mode 100644 common/README.md create mode 100644 common/build.gradle create mode 100644 common/settings.gradle delete mode 100644 fabric-1.14/README.md delete mode 100644 fabric-1.16/README.md delete mode 100644 forge-1.12/README.md create mode 100644 forge-1.12/settings.gradle create mode 100644 forge-1.14/.gitignore create mode 100644 forge-1.14/LICENSE create mode 100644 forge-1.14/build.gradle create mode 100644 forge-1.14/gradle.properties create mode 100644 forge-1.14/gradle/wrapper/gradle-wrapper.jar create mode 100644 forge-1.14/gradle/wrapper/gradle-wrapper.properties create mode 100755 forge-1.14/gradlew create mode 100644 forge-1.14/gradlew.bat create mode 100644 forge-1.14/settings.gradle create mode 100644 forge-1.14/src/main/java/com/unascribed/ears/EarsAwareTexture.java create mode 100644 forge-1.14/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java create mode 100644 forge-1.14/src/main/java/com/unascribed/ears/EarsMod.java create mode 100644 forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java create mode 100644 forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java create mode 100644 forge-1.14/src/main/resources/META-INF/MANIFEST.MF create mode 100644 forge-1.14/src/main/resources/META-INF/mods.toml create mode 100644 forge-1.14/src/main/resources/ears-icon.png create mode 100644 forge-1.14/src/main/resources/ears.mixins.json create mode 100644 forge-1.14/src/main/resources/pack.mcmeta create mode 100644 forge-1.16/.gitignore create mode 100644 forge-1.16/LICENSE create mode 100644 forge-1.16/build.gradle create mode 100644 forge-1.16/gradle.properties create mode 100644 forge-1.16/gradle/wrapper/gradle-wrapper.jar create mode 100644 forge-1.16/gradle/wrapper/gradle-wrapper.properties create mode 100755 forge-1.16/gradlew create mode 100644 forge-1.16/gradlew.bat create mode 100644 forge-1.16/settings.gradle create mode 100644 forge-1.16/src/main/java/com/unascribed/ears/EarsAwareTexture.java create mode 100644 forge-1.16/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java create mode 100644 forge-1.16/src/main/java/com/unascribed/ears/EarsMod.java create mode 100644 forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java create mode 100644 forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java create mode 100644 forge-1.16/src/main/resources/META-INF/MANIFEST.MF create mode 100644 forge-1.16/src/main/resources/META-INF/mods.toml create mode 100644 forge-1.16/src/main/resources/ears-icon.png create mode 100644 forge-1.16/src/main/resources/ears.mixins.json create mode 100644 forge-1.16/src/main/resources/pack.mcmeta create mode 100644 version.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..de153db3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +artifacts diff --git a/README.md b/README.md new file mode 100644 index 00000000..1366ca18 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Ears +***Faithful fancy fashion features for fuzzy folk.*** + +Check out [the wiki](https://github.com/unascribed/Ears/wiki) for more info. diff --git a/build-all.sh b/build-all.sh new file mode 100755 index 00000000..38f2713f --- /dev/null +++ b/build-all.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +for proj in fabric-1.14 fabric-1.16 forge-1.12 forge-1.16; do + ( + cd $proj + TERM=dumb chronic ./gradlew clean build + ) & +done +wait +mkdir -p artifacts +cp */build/libs/* artifacts +rm artifacts/*-sources{,-dev}.jar diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 00000000..e5d05209 --- /dev/null +++ b/common/.gitignore @@ -0,0 +1,4 @@ +.project +.classpath +.gradle +.settings diff --git a/common/README.md b/common/README.md new file mode 100644 index 00000000..39c178a2 --- /dev/null +++ b/common/README.md @@ -0,0 +1 @@ +TODO: Refactor all the mods to share some amount of code. diff --git a/common/build.gradle b/common/build.gradle new file mode 100644 index 00000000..f77b1839 --- /dev/null +++ b/common/build.gradle @@ -0,0 +1,3 @@ +apply plugin: 'java-library' + +sourceCompatibility = targetCompatibility = '1.8' diff --git a/common/settings.gradle b/common/settings.gradle new file mode 100644 index 00000000..e7a78266 --- /dev/null +++ b/common/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "ears-common" diff --git a/fabric-1.14/README.md b/fabric-1.14/README.md deleted file mode 100644 index 4f0c8ea6..00000000 --- a/fabric-1.14/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Ears -***Faithful fancy fashion features for fuzzy folk.*** - - - -Created due to a lack of the [Tails](https://www.curseforge.com/minecraft/mc-mods/tails/) mod for 1.16, Ears is a simple mod that adds three additional regions to the player skin. Ears Front, Ears Back, and Tail. - -The Ears areas are 16x8 and render flat centered above the player's head, and the Tail renders rotated near the base of the back of the player's torso. Unlike Tails, all these regions are purely 2D, and have a somewhat more vanilla-faithful appearance as a result. - - - -Here's a skin template: -![](https://unascribed.com/f/a6ebdbd5_test_skin_ears.png) - - - -The Ears Back area is rotated 90° due to limited space in the skin texture. The blue square on the middle left indicates to the mod your skin is intended to use Ears. The blue square is at 0, 32 and needs to be the exact color #3F23D8 and 4x4. - - - - - -Better documentation or maybe videos coming soon. Be happy I'm even releasing this. - - -![](https://unascribed.com/f/c8d2dd16_2020-10-08_20.59.28.png) - - -(I'm a robot, I'm allowed to be naked.) diff --git a/fabric-1.14/build.gradle b/fabric-1.14/build.gradle index f96d6fa7..fa963ca6 100644 --- a/fabric-1.14/build.gradle +++ b/fabric-1.14/build.gradle @@ -7,7 +7,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name -version = project.mod_version +version = file('../version.txt').text.trim() group = project.maven_group dependencies { diff --git a/fabric-1.14/gradle.properties b/fabric-1.14/gradle.properties index fe7e8f81..da7c14f2 100644 --- a/fabric-1.14/gradle.properties +++ b/fabric-1.14/gradle.properties @@ -7,7 +7,6 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.10.0+build.208 # Mod Properties - mod_version = 1.0.1 maven_group = com.unascribed - archives_base_name = ears-legacy + archives_base_name = ears-fabric-1.14 diff --git a/fabric-1.14/settings.gradle b/fabric-1.14/settings.gradle index 5b60df3d..0358114d 100644 --- a/fabric-1.14/settings.gradle +++ b/fabric-1.14/settings.gradle @@ -8,3 +8,5 @@ pluginManagement { gradlePluginPortal() } } + +rootProject.name = "ears-fabric-1.14" diff --git a/fabric-1.16/README.md b/fabric-1.16/README.md deleted file mode 100644 index 4f0c8ea6..00000000 --- a/fabric-1.16/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Ears -***Faithful fancy fashion features for fuzzy folk.*** - - - -Created due to a lack of the [Tails](https://www.curseforge.com/minecraft/mc-mods/tails/) mod for 1.16, Ears is a simple mod that adds three additional regions to the player skin. Ears Front, Ears Back, and Tail. - -The Ears areas are 16x8 and render flat centered above the player's head, and the Tail renders rotated near the base of the back of the player's torso. Unlike Tails, all these regions are purely 2D, and have a somewhat more vanilla-faithful appearance as a result. - - - -Here's a skin template: -![](https://unascribed.com/f/a6ebdbd5_test_skin_ears.png) - - - -The Ears Back area is rotated 90° due to limited space in the skin texture. The blue square on the middle left indicates to the mod your skin is intended to use Ears. The blue square is at 0, 32 and needs to be the exact color #3F23D8 and 4x4. - - - - - -Better documentation or maybe videos coming soon. Be happy I'm even releasing this. - - -![](https://unascribed.com/f/c8d2dd16_2020-10-08_20.59.28.png) - - -(I'm a robot, I'm allowed to be naked.) diff --git a/fabric-1.16/build.gradle b/fabric-1.16/build.gradle index fc34cb82..b0b3ba2d 100644 --- a/fabric-1.16/build.gradle +++ b/fabric-1.16/build.gradle @@ -7,7 +7,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name -version = project.mod_version +version = file('../version.txt').text.trim() group = project.maven_group dependencies { diff --git a/fabric-1.16/gradle.properties b/fabric-1.16/gradle.properties index d1545cc6..eb95ccd5 100644 --- a/fabric-1.16/gradle.properties +++ b/fabric-1.16/gradle.properties @@ -8,9 +8,8 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.10.0+build.208 # Mod Properties - mod_version = 1.0.1 maven_group = com.unascribed - archives_base_name = ears + archives_base_name = ears-fabric-1.16 # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api diff --git a/fabric-1.16/settings.gradle b/fabric-1.16/settings.gradle index 5b60df3d..a3a09990 100644 --- a/fabric-1.16/settings.gradle +++ b/fabric-1.16/settings.gradle @@ -8,3 +8,5 @@ pluginManagement { gradlePluginPortal() } } + +rootProject.name = "ears-fabric-1.16" diff --git a/forge-1.12/README.md b/forge-1.12/README.md deleted file mode 100644 index 4f0c8ea6..00000000 --- a/forge-1.12/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Ears -***Faithful fancy fashion features for fuzzy folk.*** - - - -Created due to a lack of the [Tails](https://www.curseforge.com/minecraft/mc-mods/tails/) mod for 1.16, Ears is a simple mod that adds three additional regions to the player skin. Ears Front, Ears Back, and Tail. - -The Ears areas are 16x8 and render flat centered above the player's head, and the Tail renders rotated near the base of the back of the player's torso. Unlike Tails, all these regions are purely 2D, and have a somewhat more vanilla-faithful appearance as a result. - - - -Here's a skin template: -![](https://unascribed.com/f/a6ebdbd5_test_skin_ears.png) - - - -The Ears Back area is rotated 90° due to limited space in the skin texture. The blue square on the middle left indicates to the mod your skin is intended to use Ears. The blue square is at 0, 32 and needs to be the exact color #3F23D8 and 4x4. - - - - - -Better documentation or maybe videos coming soon. Be happy I'm even releasing this. - - -![](https://unascribed.com/f/c8d2dd16_2020-10-08_20.59.28.png) - - -(I'm a robot, I'm allowed to be naked.) diff --git a/forge-1.12/project.gradle b/forge-1.12/project.gradle index b3f50a7d..c95ae07e 100644 --- a/forge-1.12/project.gradle +++ b/forge-1.12/project.gradle @@ -5,7 +5,7 @@ ext { projectName = 'Ears' useElytraVersionFormat = false - version = '1.0.1' + version = file('../version.txt').text.trim() concreteVersion = '' concreteModules = [ ] @@ -24,7 +24,7 @@ ext { } if (!ext.early) { -archivesBaseName = 'ears-forge' +archivesBaseName = 'ears-forge-1.12' repositories { // the skeleton already defines mavenCentral, jcenter, and the Elytra repo diff --git a/forge-1.12/settings.gradle b/forge-1.12/settings.gradle new file mode 100644 index 00000000..d8c4c4af --- /dev/null +++ b/forge-1.12/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "ears-forge-1.12" diff --git a/forge-1.14/.gitignore b/forge-1.14/.gitignore new file mode 100644 index 00000000..0fb4a1ed --- /dev/null +++ b/forge-1.14/.gitignore @@ -0,0 +1,28 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +run/ +MixinBootstrap.jar diff --git a/forge-1.14/LICENSE b/forge-1.14/LICENSE new file mode 100644 index 00000000..317762a4 --- /dev/null +++ b/forge-1.14/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Una Thompson (unascribed) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/forge-1.14/build.gradle b/forge-1.14/build.gradle new file mode 100644 index 00000000..bfa45481 --- /dev/null +++ b/forge-1.14/build.gradle @@ -0,0 +1,140 @@ +buildscript { + repositories { + maven { url = 'https://files.minecraftforge.net/maven' } + maven { url='https://dist.creeper.host/Sponge/maven' } + jcenter() + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT' + } +} +apply plugin: 'net.minecraftforge.gradle' +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'eclipse' +apply plugin: 'maven-publish' +apply plugin: 'org.spongepowered.mixin' + +version = file('../version.txt').text.trim() +group = 'com.unascribed.ears' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = 'ears-forge-1.14' + +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. + +mixin { + add sourceSets.main, 'ears.refmap.json' +} + +println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) +minecraft { + // The mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD Snapshot are built nightly. + // stable_# Stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'stable', version: "58-1.14.4" + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + mods { + ears { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + mods { + ears { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + args '--mod', 'ears', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + + mods { + ears { + source sourceSets.main + } + } + } + } +} + +dependencies { + // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed + // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. + minecraft 'net.minecraftforge:forge:1.14.4-28.1.92' + + // You may put jars on which you depend on in ./libs or you may define them like so.. + // compile "some.group:artifact:version:classifier" + // compile "some.group:artifact:version" + + // Real examples + // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // These dependencies get remapped to your current MCP mappings + // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // For more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + + compile files('MixinBootstrap.jar') + +} +// Example configuration to allow publishing using the maven-publish task +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') + +jar { + manifest { + attributes(["Specification-Title": "ears", + "Specification-Vendor": "unascribed", + "Specification-Version": "1", + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor": "unascribed", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + "MixinConfigs": "ears.mixins.json" + ]) + } +} diff --git a/forge-1.14/gradle.properties b/forge-1.14/gradle.properties new file mode 100644 index 00000000..878bf1f7 --- /dev/null +++ b/forge-1.14/gradle.properties @@ -0,0 +1,4 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false \ No newline at end of file diff --git a/forge-1.14/gradle/wrapper/gradle-wrapper.jar b/forge-1.14/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..62d4c053550b91381bbd28b1afc82d634bf73a8a GIT binary patch literal 58910 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 literal 0 HcmV?d00001 diff --git a/forge-1.14/gradle/wrapper/gradle-wrapper.properties b/forge-1.14/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..1d5b29fb --- /dev/null +++ b/forge-1.14/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip diff --git a/forge-1.14/gradlew b/forge-1.14/gradlew new file mode 100755 index 00000000..cccdd3d5 --- /dev/null +++ b/forge-1.14/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## 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="" + +# 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, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((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" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/forge-1.14/gradlew.bat b/forge-1.14/gradlew.bat new file mode 100644 index 00000000..e95643d6 --- /dev/null +++ b/forge-1.14/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/forge-1.14/settings.gradle b/forge-1.14/settings.gradle new file mode 100644 index 00000000..124206f7 --- /dev/null +++ b/forge-1.14/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "ears-forge-1.15" diff --git a/forge-1.14/src/main/java/com/unascribed/ears/EarsAwareTexture.java b/forge-1.14/src/main/java/com/unascribed/ears/EarsAwareTexture.java new file mode 100644 index 00000000..f631a22f --- /dev/null +++ b/forge-1.14/src/main/java/com/unascribed/ears/EarsAwareTexture.java @@ -0,0 +1,7 @@ +package com.unascribed.ears; + +public interface EarsAwareTexture { + + boolean isEarsEnabled(); + +} diff --git a/forge-1.14/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java b/forge-1.14/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java new file mode 100644 index 00000000..659ed6ad --- /dev/null +++ b/forge-1.14/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java @@ -0,0 +1,69 @@ +package com.unascribed.ears; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.IEntityRenderer; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.entity.model.PlayerModel; +import net.minecraft.client.renderer.texture.Texture; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.vector.Matrix3f; +import net.minecraft.util.math.vector.Matrix4f; +import net.minecraft.util.math.vector.Vector3f; + +public class EarsFeatureRenderer extends LayerRenderer> { + + public EarsFeatureRenderer(IEntityRenderer> context) { + super(context); + } + + @Override + public void render(MatrixStack m, IRenderTypeBuffer vertexConsumers, int light, AbstractClientPlayerEntity entity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch) { + ResourceLocation skin = getEntityTexture(entity); + Texture tex = Minecraft.getInstance().getTextureManager().getTexture(skin); + if (tex instanceof EarsAwareTexture && !entity.isInvisible()) { + if (((EarsAwareTexture)tex).isEarsEnabled()) { + m.push(); + int overlay = LivingRenderer.getPackedOverlay(entity, 0); + IVertexBuilder vc = vertexConsumers.getBuffer(RenderType.getEntityCutout(skin)); + getEntityModel().bipedHead.translateRotate(m); + m.translate(-0.5, -1, 0); + Matrix4f mv = m.getLast().getMatrix(); + Matrix3f mn = m.getLast().getNormal(); + vc.pos(mv, 0, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(24/64f, 8/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 1, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(40/64f, 8/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 1, 0, 0).color(1f, 1f, 1f, 1f).tex(40/64f, 0/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(24/64f, 0/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 44/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 1, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 1, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 44/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + m.pop(); + + m.push(); + getEntityModel().bipedBody.translateRotate(m); + m.translate(-0.25, 0.625, 0.15); + m.rotate(Vector3f.XP.rotation(((float)Math.toRadians(30+(limbDistance*40))))); + mv = m.getLast().getMatrix(); + mn = m.getLast().getNormal(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0.5f, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0.5f, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + + vc.pos(mv, 0, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0.5f, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0.5f, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + m.pop(); + } + } + } +} diff --git a/forge-1.14/src/main/java/com/unascribed/ears/EarsMod.java b/forge-1.14/src/main/java/com/unascribed/ears/EarsMod.java new file mode 100644 index 00000000..dbf370f3 --- /dev/null +++ b/forge-1.14/src/main/java/com/unascribed/ears/EarsMod.java @@ -0,0 +1,7 @@ +package com.unascribed.ears; + +import net.minecraftforge.fml.common.Mod; + +@Mod("ears") +public class EarsMod { +} diff --git a/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java b/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java new file mode 100644 index 00000000..d17e6541 --- /dev/null +++ b/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java @@ -0,0 +1,28 @@ +package com.unascribed.ears.mixin; + +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.PlayerRenderer; +import net.minecraft.client.renderer.entity.model.PlayerModel; + +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.CallbackInfo; + +import com.unascribed.ears.EarsFeatureRenderer; + +@Mixin(PlayerRenderer.class) +public abstract class MixinPlayerEntityRenderer extends LivingRenderer> { + + public MixinPlayerEntityRenderer(EntityRendererManager dispatcher, PlayerModel model, float shadowRadius) { + super(dispatcher, model, shadowRadius); + } + + @Inject(at = @At("TAIL"), method = "(Lnet/minecraft/client/renderer/entity/EntityRendererManager;Z)V") + private void init(EntityRendererManager erd, boolean b, CallbackInfo ci) { + this.addLayer(new EarsFeatureRenderer(this)); + } + +} diff --git a/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java b/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java new file mode 100644 index 00000000..55afea79 --- /dev/null +++ b/forge-1.14/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java @@ -0,0 +1,68 @@ +package com.unascribed.ears.mixin; + +import java.io.InputStream; +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; + +import com.unascribed.ears.EarsAwareTexture; + +import net.minecraft.client.renderer.texture.DownloadingTexture; +import net.minecraft.client.renderer.texture.NativeImage; +import net.minecraft.client.renderer.texture.SimpleTexture; +import net.minecraft.util.ResourceLocation; + +@Mixin(DownloadingTexture.class) +public abstract class MixinPlayerSkinTexture extends SimpleTexture implements EarsAwareTexture { + + public MixinPlayerSkinTexture(ResourceLocation location) { + super(location); + } + + private boolean earsEnabled = false; + + @Inject(at=@At("RETURN"), method = "loadTexture(Ljava/io/InputStream;)Lnet/minecraft/client/renderer/texture/NativeImage;") + private void loadTexture(InputStream stream, CallbackInfoReturnable ci) { + NativeImage cur = ci.getReturnValue(); + if (cur.getHeight() == 64) { + boolean allMatch = true; + out: for (int x = 0; x < 4; x++) { + for (int y = 32; y < 36; y++) { + if ((cur.getPixelRGBA(x, y)&0x00FFFFFF) != 0xD8233F) { + allMatch = false; + break out; + } + } + } + earsEnabled = allMatch; + } + } + + @Inject(at = @At("HEAD"), method = "setAreaOpaque(Lnet/minecraft/client/renderer/texture/NativeImage;IIII)V", cancellable = true) + private static void setAreaOpaque(NativeImage image, int x, int y, int width, int height, CallbackInfo ci) { + if (x == 0 && y == 0 && width == 32 && height == 16) { + // Leave the unused corners of the head texture transparent-capable for ears. + ci.cancel(); + setAreaOpaque(image, 8, 0, 16, 8); + setAreaOpaque(image, 0, 8, 32, 8); + } + if (x == 0 && y == 16 && width == 64 && height == 32) { + // Leave the unused space to the right of the body texture transparent-capable for ears. + ci.cancel(); + setAreaOpaque(image, 0, 16, 56, 32); + } + } + + @Shadow + private static void setAreaOpaque(NativeImage image, int x, int y, int width, int height) {} + + @Override + public boolean isEarsEnabled() { + return earsEnabled; + } + + +} diff --git a/forge-1.14/src/main/resources/META-INF/MANIFEST.MF b/forge-1.14/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..aabec8a0 --- /dev/null +++ b/forge-1.14/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1 @@ +MixinConnector: com.unascribed.ears.MixinConnector \ No newline at end of file diff --git a/forge-1.14/src/main/resources/META-INF/mods.toml b/forge-1.14/src/main/resources/META-INF/mods.toml new file mode 100644 index 00000000..77e7824d --- /dev/null +++ b/forge-1.14/src/main/resources/META-INF/mods.toml @@ -0,0 +1,16 @@ +modLoader="javafml" #mandatory +loaderVersion="[31,)" +license="MIT" +issueTrackerURL="https://github.com/unascribed/Ears/issues" +[[mods]] +modId="ears" +version="${file.jarVersion}" +displayName="Ears" +displayURL="https://www.curseforge.com/minecraft/mc-mods/ears" +logoFile="ears-icon.png" +authors="unascribed" +description="Faithful fancy fashion features for fuzzy folk." +[[dependencies.ears]] +modId="mixinbootstrap" +mandatory=true +versionRange="*" \ No newline at end of file diff --git a/forge-1.14/src/main/resources/ears-icon.png b/forge-1.14/src/main/resources/ears-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc96bbc72756f800336c6e7df3a043887d246f45 GIT binary patch literal 30060 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 TynhWf00000NkvXXu0mjfJ0bSV literal 0 HcmV?d00001 diff --git a/forge-1.14/src/main/resources/ears.mixins.json b/forge-1.14/src/main/resources/ears.mixins.json new file mode 100644 index 00000000..b13d56db --- /dev/null +++ b/forge-1.14/src/main/resources/ears.mixins.json @@ -0,0 +1,16 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.unascribed.ears.mixin", + "compatibilityLevel": "JAVA_8", + "refmap": "ears.refmap.json", + "mixins": [ + ], + "client": [ + "MixinPlayerEntityRenderer", + "MixinPlayerSkinTexture" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/forge-1.14/src/main/resources/pack.mcmeta b/forge-1.14/src/main/resources/pack.mcmeta new file mode 100644 index 00000000..99d6b4d6 --- /dev/null +++ b/forge-1.14/src/main/resources/pack.mcmeta @@ -0,0 +1,7 @@ +{ + "pack": { + "description": "Ears resources", + "pack_format": 6, + "_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." + } +} diff --git a/forge-1.16/.gitignore b/forge-1.16/.gitignore new file mode 100644 index 00000000..550b373c --- /dev/null +++ b/forge-1.16/.gitignore @@ -0,0 +1,29 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# fabric + +run/ diff --git a/forge-1.16/LICENSE b/forge-1.16/LICENSE new file mode 100644 index 00000000..317762a4 --- /dev/null +++ b/forge-1.16/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Una Thompson (unascribed) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/forge-1.16/build.gradle b/forge-1.16/build.gradle new file mode 100644 index 00000000..bf24ae11 --- /dev/null +++ b/forge-1.16/build.gradle @@ -0,0 +1,141 @@ +buildscript { + repositories { + maven { url = 'https://files.minecraftforge.net/maven' } + maven { url='https://dist.creeper.host/Sponge/maven' } + jcenter() + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT' + } +} +apply plugin: 'net.minecraftforge.gradle' +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'eclipse' +apply plugin: 'maven-publish' +apply plugin: 'org.spongepowered.mixin' + +version = file('../version.txt').text.trim() +group = 'com.unascribed.ears' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = 'ears-forge-1.16' + +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. + +mixin { + add sourceSets.main, 'ears.refmap.json' +} + +println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) +minecraft { + // The mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD Snapshot are built nightly. + // stable_# Stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'snapshot', version: '20200514-1.16' + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + mods { + ears { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + mods { + ears { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + args '--mod', 'ears', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + + mods { + ears { + source sourceSets.main + } + } + } + } +} + +// Include resources generated by data generators. +sourceSets.main.resources { srcDir 'src/generated/resources' } + +dependencies { + // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed + // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. + minecraft 'net.minecraftforge:forge:1.16.3-34.1.16' + + // You may put jars on which you depend on in ./libs or you may define them like so.. + // compile "some.group:artifact:version:classifier" + // compile "some.group:artifact:version" + + // Real examples + // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // These dependencies get remapped to your current MCP mappings + // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // For more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + +} +// Example configuration to allow publishing using the maven-publish task +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') + +jar { + manifest { + attributes(["Specification-Title": "ears", + "Specification-Vendor": "unascribed", + "Specification-Version": "1", + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor": "unascribed", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + "MixinConfigs": "ears.mixins.json" + ]) + } +} \ No newline at end of file diff --git a/forge-1.16/gradle.properties b/forge-1.16/gradle.properties new file mode 100644 index 00000000..878bf1f7 --- /dev/null +++ b/forge-1.16/gradle.properties @@ -0,0 +1,4 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false \ No newline at end of file diff --git a/forge-1.16/gradle/wrapper/gradle-wrapper.jar b/forge-1.16/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..62d4c053550b91381bbd28b1afc82d634bf73a8a GIT binary patch literal 58910 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 literal 0 HcmV?d00001 diff --git a/forge-1.16/gradle/wrapper/gradle-wrapper.properties b/forge-1.16/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..1d5b29fb --- /dev/null +++ b/forge-1.16/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip diff --git a/forge-1.16/gradlew b/forge-1.16/gradlew new file mode 100755 index 00000000..cccdd3d5 --- /dev/null +++ b/forge-1.16/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## 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="" + +# 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, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((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" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/forge-1.16/gradlew.bat b/forge-1.16/gradlew.bat new file mode 100644 index 00000000..e95643d6 --- /dev/null +++ b/forge-1.16/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/forge-1.16/settings.gradle b/forge-1.16/settings.gradle new file mode 100644 index 00000000..83adb9e0 --- /dev/null +++ b/forge-1.16/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "ears-forge-1.16" diff --git a/forge-1.16/src/main/java/com/unascribed/ears/EarsAwareTexture.java b/forge-1.16/src/main/java/com/unascribed/ears/EarsAwareTexture.java new file mode 100644 index 00000000..f631a22f --- /dev/null +++ b/forge-1.16/src/main/java/com/unascribed/ears/EarsAwareTexture.java @@ -0,0 +1,7 @@ +package com.unascribed.ears; + +public interface EarsAwareTexture { + + boolean isEarsEnabled(); + +} diff --git a/forge-1.16/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java b/forge-1.16/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java new file mode 100644 index 00000000..659ed6ad --- /dev/null +++ b/forge-1.16/src/main/java/com/unascribed/ears/EarsFeatureRenderer.java @@ -0,0 +1,69 @@ +package com.unascribed.ears; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.IEntityRenderer; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.entity.model.PlayerModel; +import net.minecraft.client.renderer.texture.Texture; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.vector.Matrix3f; +import net.minecraft.util.math.vector.Matrix4f; +import net.minecraft.util.math.vector.Vector3f; + +public class EarsFeatureRenderer extends LayerRenderer> { + + public EarsFeatureRenderer(IEntityRenderer> context) { + super(context); + } + + @Override + public void render(MatrixStack m, IRenderTypeBuffer vertexConsumers, int light, AbstractClientPlayerEntity entity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch) { + ResourceLocation skin = getEntityTexture(entity); + Texture tex = Minecraft.getInstance().getTextureManager().getTexture(skin); + if (tex instanceof EarsAwareTexture && !entity.isInvisible()) { + if (((EarsAwareTexture)tex).isEarsEnabled()) { + m.push(); + int overlay = LivingRenderer.getPackedOverlay(entity, 0); + IVertexBuilder vc = vertexConsumers.getBuffer(RenderType.getEntityCutout(skin)); + getEntityModel().bipedHead.translateRotate(m); + m.translate(-0.5, -1, 0); + Matrix4f mv = m.getLast().getMatrix(); + Matrix3f mn = m.getLast().getNormal(); + vc.pos(mv, 0, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(24/64f, 8/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 1, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(40/64f, 8/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 1, 0, 0).color(1f, 1f, 1f, 1f).tex(40/64f, 0/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(24/64f, 0/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 44/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 1, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 1, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0, 0.5f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 44/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + m.pop(); + + m.push(); + getEntityModel().bipedBody.translateRotate(m); + m.translate(-0.25, 0.625, 0.15); + m.rotate(Vector3f.XP.rotation(((float)Math.toRadians(30+(limbDistance*40))))); + mv = m.getLast().getMatrix(); + mn = m.getLast().getNormal(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0.5f, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0.5f, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + vc.pos(mv, 0, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, 1).endVertex(); + + vc.pos(mv, 0, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0.5f, 0.75f, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 28/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0.5f, 0, 0).color(1f, 1f, 1f, 1f).tex(64/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + vc.pos(mv, 0, 0, 0).color(1f, 1f, 1f, 1f).tex(56/64f, 16/64f).overlay(overlay).lightmap(light).normal(mn, 0, 0, -1).endVertex(); + m.pop(); + } + } + } +} diff --git a/forge-1.16/src/main/java/com/unascribed/ears/EarsMod.java b/forge-1.16/src/main/java/com/unascribed/ears/EarsMod.java new file mode 100644 index 00000000..dbf370f3 --- /dev/null +++ b/forge-1.16/src/main/java/com/unascribed/ears/EarsMod.java @@ -0,0 +1,7 @@ +package com.unascribed.ears; + +import net.minecraftforge.fml.common.Mod; + +@Mod("ears") +public class EarsMod { +} diff --git a/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java b/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java new file mode 100644 index 00000000..d17e6541 --- /dev/null +++ b/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerEntityRenderer.java @@ -0,0 +1,28 @@ +package com.unascribed.ears.mixin; + +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.PlayerRenderer; +import net.minecraft.client.renderer.entity.model.PlayerModel; + +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.CallbackInfo; + +import com.unascribed.ears.EarsFeatureRenderer; + +@Mixin(PlayerRenderer.class) +public abstract class MixinPlayerEntityRenderer extends LivingRenderer> { + + public MixinPlayerEntityRenderer(EntityRendererManager dispatcher, PlayerModel model, float shadowRadius) { + super(dispatcher, model, shadowRadius); + } + + @Inject(at = @At("TAIL"), method = "(Lnet/minecraft/client/renderer/entity/EntityRendererManager;Z)V") + private void init(EntityRendererManager erd, boolean b, CallbackInfo ci) { + this.addLayer(new EarsFeatureRenderer(this)); + } + +} diff --git a/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java b/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java new file mode 100644 index 00000000..55afea79 --- /dev/null +++ b/forge-1.16/src/main/java/com/unascribed/ears/mixin/MixinPlayerSkinTexture.java @@ -0,0 +1,68 @@ +package com.unascribed.ears.mixin; + +import java.io.InputStream; +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; + +import com.unascribed.ears.EarsAwareTexture; + +import net.minecraft.client.renderer.texture.DownloadingTexture; +import net.minecraft.client.renderer.texture.NativeImage; +import net.minecraft.client.renderer.texture.SimpleTexture; +import net.minecraft.util.ResourceLocation; + +@Mixin(DownloadingTexture.class) +public abstract class MixinPlayerSkinTexture extends SimpleTexture implements EarsAwareTexture { + + public MixinPlayerSkinTexture(ResourceLocation location) { + super(location); + } + + private boolean earsEnabled = false; + + @Inject(at=@At("RETURN"), method = "loadTexture(Ljava/io/InputStream;)Lnet/minecraft/client/renderer/texture/NativeImage;") + private void loadTexture(InputStream stream, CallbackInfoReturnable ci) { + NativeImage cur = ci.getReturnValue(); + if (cur.getHeight() == 64) { + boolean allMatch = true; + out: for (int x = 0; x < 4; x++) { + for (int y = 32; y < 36; y++) { + if ((cur.getPixelRGBA(x, y)&0x00FFFFFF) != 0xD8233F) { + allMatch = false; + break out; + } + } + } + earsEnabled = allMatch; + } + } + + @Inject(at = @At("HEAD"), method = "setAreaOpaque(Lnet/minecraft/client/renderer/texture/NativeImage;IIII)V", cancellable = true) + private static void setAreaOpaque(NativeImage image, int x, int y, int width, int height, CallbackInfo ci) { + if (x == 0 && y == 0 && width == 32 && height == 16) { + // Leave the unused corners of the head texture transparent-capable for ears. + ci.cancel(); + setAreaOpaque(image, 8, 0, 16, 8); + setAreaOpaque(image, 0, 8, 32, 8); + } + if (x == 0 && y == 16 && width == 64 && height == 32) { + // Leave the unused space to the right of the body texture transparent-capable for ears. + ci.cancel(); + setAreaOpaque(image, 0, 16, 56, 32); + } + } + + @Shadow + private static void setAreaOpaque(NativeImage image, int x, int y, int width, int height) {} + + @Override + public boolean isEarsEnabled() { + return earsEnabled; + } + + +} diff --git a/forge-1.16/src/main/resources/META-INF/MANIFEST.MF b/forge-1.16/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..aabec8a0 --- /dev/null +++ b/forge-1.16/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1 @@ +MixinConnector: com.unascribed.ears.MixinConnector \ No newline at end of file diff --git a/forge-1.16/src/main/resources/META-INF/mods.toml b/forge-1.16/src/main/resources/META-INF/mods.toml new file mode 100644 index 00000000..27acc69f --- /dev/null +++ b/forge-1.16/src/main/resources/META-INF/mods.toml @@ -0,0 +1,12 @@ +modLoader="javafml" #mandatory +loaderVersion="[34,)" +license="MIT" +issueTrackerURL="https://github.com/unascribed/Ears/issues" +[[mods]] +modId="ears" +version="${file.jarVersion}" +displayName="Ears" +displayURL="https://www.curseforge.com/minecraft/mc-mods/ears" +logoFile="ears-icon.png" +authors="unascribed" +description="Faithful fancy fashion features for fuzzy folk." \ No newline at end of file diff --git a/forge-1.16/src/main/resources/ears-icon.png b/forge-1.16/src/main/resources/ears-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc96bbc72756f800336c6e7df3a043887d246f45 GIT binary patch literal 30060 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 TynhWf00000NkvXXu0mjfJ0bSV literal 0 HcmV?d00001 diff --git a/forge-1.16/src/main/resources/ears.mixins.json b/forge-1.16/src/main/resources/ears.mixins.json new file mode 100644 index 00000000..b13d56db --- /dev/null +++ b/forge-1.16/src/main/resources/ears.mixins.json @@ -0,0 +1,16 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.unascribed.ears.mixin", + "compatibilityLevel": "JAVA_8", + "refmap": "ears.refmap.json", + "mixins": [ + ], + "client": [ + "MixinPlayerEntityRenderer", + "MixinPlayerSkinTexture" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/forge-1.16/src/main/resources/pack.mcmeta b/forge-1.16/src/main/resources/pack.mcmeta new file mode 100644 index 00000000..99d6b4d6 --- /dev/null +++ b/forge-1.16/src/main/resources/pack.mcmeta @@ -0,0 +1,7 @@ +{ + "pack": { + "description": "Ears resources", + "pack_format": 6, + "_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." + } +} diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..6d7de6e6 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +1.0.2