diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..d5e375a0e
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+#
+#Thu Sep 13 12:26:41 EDT 2018
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
diff --git a/CustomNPC.iml b/CustomNPC.iml
new file mode 100644
index 000000000..797656b98
--- /dev/null
+++ b/CustomNPC.iml
@@ -0,0 +1,699 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MCP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 000000000..b3ab280d8
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,63 @@
+buildscript {
+ repositories {
+ mavenCentral()
+ maven {
+ name = "forge"
+ url = "http://files.minecraftforge.net/maven"
+ }
+ maven {
+ name = "sonatype"
+ url = "https://oss.sonatype.org/content/repositories/snapshots/"
+ }
+ }
+ dependencies {
+ classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
+ }
+}
+
+apply plugin: 'forge'
+
+version = "1.0"
+group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
+archivesBaseName = "modid"
+
+minecraft {
+ version = "1.7.10-10.13.4.1614-1.7.10"
+ runDir = "eclipse"
+}
+
+dependencies {
+ // 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
+
+ // for more info...
+ // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
+ // http://www.gradle.org/docs/current/userguide/dependency_management.html
+
+}
+
+processResources
+{
+ // this will ensure that this task is redone when the versions change.
+ inputs.property "version", project.version
+ inputs.property "mcversion", project.minecraft.version
+
+ // replace stuff in mcmod.info, nothing else
+ from(sourceSets.main.resources.srcDirs) {
+ include 'mcmod.info'
+
+ // replace version and mcversion
+ expand 'version':project.version, 'mcversion':project.minecraft.version
+ }
+
+ // copy everything else, thats not the mcmod.info
+ from(sourceSets.main.resources.srcDirs) {
+ exclude 'mcmod.info'
+ }
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..b76121670
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 000000000..830c5ccee
--- /dev/null
+++ b/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-3.0-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 000000000..91a7e269e
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# 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\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+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" ] ; 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"`
+
+ # 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
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 000000000..8a0b282aa
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@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
+
+@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=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@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 Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_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=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+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/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java
index 423963949..836d85f6e 100644
--- a/src/main/java/noppes/npcs/CommonProxy.java
+++ b/src/main/java/noppes/npcs/CommonProxy.java
@@ -32,9 +32,9 @@ import noppes.npcs.entity.EntityNPCInterface;
import cpw.mods.fml.common.network.IGuiHandler;
public class CommonProxy implements IGuiHandler {
-
+
public boolean newVersionAvailable = false;
- public int revision = 4;
+ public int revision = 1;
public void load() {
CustomNpcs.Channel.register(new PacketHandlerServer());
diff --git a/src/main/java/noppes/npcs/CustomItems.java b/src/main/java/noppes/npcs/CustomItems.java
index ec44b0ab9..ffbd8da27 100644
--- a/src/main/java/noppes/npcs/CustomItems.java
+++ b/src/main/java/noppes/npcs/CustomItems.java
@@ -749,7 +749,7 @@ public class CustomItems {
armor = new ItemNpcArmor(26922, armorEmerald,1,"fullemerald").setUnlocalizedName("npcFullEmeraldChest").setMaxStackSize(1).setTextureName("customnpcs:npcFullEmeraldChest");
armor = new ItemNpcArmor(26923, armorEmerald,2,"fullemerald").setUnlocalizedName("npcFullEmeraldLeggings").setMaxStackSize(1).setTextureName("customnpcs:npcFullEmeraldLeggings");
armor = new ItemNpcArmor(26924, armorEmerald,3,"fullemerald").setUnlocalizedName("npcFullEmeraldBoots").setMaxStackSize(1).setTextureName("customnpcs:npcFullEmeraldBoots");
-
+
armor = new ItemNpcArmor(26880,ArmorMaterial.CLOTH,0,"fullwood").setUnlocalizedName("npcFullWoodenHead").setMaxStackSize(1).setTextureName("customnpcs:npcFullWoodenHead");
armor = new ItemNpcArmor(26881,ArmorMaterial.CLOTH,1,"fullwood").setUnlocalizedName("npcFullWoodenChest").setMaxStackSize(1).setTextureName("customnpcs:npcFullWoodenChest");
armor = new ItemNpcArmor(26882,ArmorMaterial.CLOTH,2,"fullwood").setUnlocalizedName("npcFullWoodenLeggings").setMaxStackSize(1).setTextureName("customnpcs:npcFullWoodenLeggings");
diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java
index e17cdc72c..84382b862 100644
--- a/src/main/java/noppes/npcs/CustomNpcs.java
+++ b/src/main/java/noppes/npcs/CustomNpcs.java
@@ -43,15 +43,7 @@ import noppes.npcs.controllers.ServerCloneController;
import noppes.npcs.controllers.SpawnController;
import noppes.npcs.controllers.TransportController;
import noppes.npcs.enchants.EnchantInterface;
-import noppes.npcs.entity.EntityChairMount;
-import noppes.npcs.entity.EntityCustomNpc;
-import noppes.npcs.entity.EntityMagicProjectile;
-import noppes.npcs.entity.EntityNPCGolem;
-import noppes.npcs.entity.EntityNpcCrystal;
-import noppes.npcs.entity.EntityNpcDragon;
-import noppes.npcs.entity.EntityNpcPony;
-import noppes.npcs.entity.EntityNpcSlime;
-import noppes.npcs.entity.EntityProjectile;
+import noppes.npcs.entity.*;
import noppes.npcs.entity.old.EntityNPCDwarfFemale;
import noppes.npcs.entity.old.EntityNPCDwarfMale;
import noppes.npcs.entity.old.EntityNPCElfFemale;
@@ -210,6 +202,8 @@ public class CustomNpcs {
registerNpc(EntityNPCEnderman.class, "npcEnderman");
registerNpc(EntityNPCGolem.class, "npcGolem");
registerNpc(EntityCustomNpc.class, "CustomNpc");
+ registerNpc(EntityNPC64x64.class, "CustomNpc64");
+
registerNewEntity(EntityChairMount.class, "CustomNpcChairMount", 64, 10, false);
registerNewEntity(EntityProjectile.class, "throwableitem", 64, 3, true);
diff --git a/src/main/java/noppes/npcs/DataDisplay.java b/src/main/java/noppes/npcs/DataDisplay.java
index 15780845a..97a52f765 100644
--- a/src/main/java/noppes/npcs/DataDisplay.java
+++ b/src/main/java/noppes/npcs/DataDisplay.java
@@ -152,4 +152,18 @@ public class DataDisplay {
return false;
return showName == 0 || (showName == 2 && npc.isAttacking());
}
+
+ public String getSkinTexture(){
+ return texture;
+ }
+
+ public void setSkinTexture(String texture){
+ if(this.texture.equals(texture))
+ return;
+ this.texture = texture;
+ npc.textureLocation = null;
+ skinType = 0;
+ npc.updateClient = true;
+ }
+
}
diff --git a/src/main/java/noppes/npcs/DataScript.java b/src/main/java/noppes/npcs/DataScript.java
index d36b0be7c..7699db313 100644
--- a/src/main/java/noppes/npcs/DataScript.java
+++ b/src/main/java/noppes/npcs/DataScript.java
@@ -14,6 +14,7 @@ import noppes.npcs.constants.EnumScriptType;
import noppes.npcs.controllers.ScriptContainer;
import noppes.npcs.controllers.ScriptController;
import noppes.npcs.entity.EntityCustomNpc;
+import noppes.npcs.entity.EntityNPC64x64;
import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.ScriptEvent;
import noppes.npcs.scripted.ScriptNpc;
diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java
index ed09acadb..e6454a6a2 100644
--- a/src/main/java/noppes/npcs/client/ClientProxy.java
+++ b/src/main/java/noppes/npcs/client/ClientProxy.java
@@ -105,19 +105,8 @@ import noppes.npcs.client.gui.roles.GuiNpcFollowerSetup;
import noppes.npcs.client.gui.roles.GuiNpcItemGiver;
import noppes.npcs.client.gui.roles.GuiNpcTraderSetup;
import noppes.npcs.client.gui.roles.GuiNpcTransporter;
-import noppes.npcs.client.model.ModelNPCGolem;
-import noppes.npcs.client.model.ModelNpcCrystal;
-import noppes.npcs.client.model.ModelNpcDragon;
-import noppes.npcs.client.model.ModelNpcSlime;
-import noppes.npcs.client.model.ModelSkirtArmor;
-import noppes.npcs.client.renderer.NpcItemRenderer;
-import noppes.npcs.client.renderer.RenderCustomNpc;
-import noppes.npcs.client.renderer.RenderNPCHumanMale;
-import noppes.npcs.client.renderer.RenderNPCPony;
-import noppes.npcs.client.renderer.RenderNpcCrystal;
-import noppes.npcs.client.renderer.RenderNpcDragon;
-import noppes.npcs.client.renderer.RenderNpcSlime;
-import noppes.npcs.client.renderer.RenderProjectile;
+import noppes.npcs.client.model.*;
+import noppes.npcs.client.renderer.*;
import noppes.npcs.client.renderer.blocks.BlockBannerRenderer;
import noppes.npcs.client.renderer.blocks.BlockBarrelRenderer;
import noppes.npcs.client.renderer.blocks.BlockBeamRenderer;
@@ -161,14 +150,7 @@ import noppes.npcs.containers.ContainerNPCTraderSetup;
import noppes.npcs.containers.ContainerNpcItemGiver;
import noppes.npcs.containers.ContainerNpcQuestReward;
import noppes.npcs.containers.ContainerNpcQuestTypeItem;
-import noppes.npcs.entity.EntityCustomNpc;
-import noppes.npcs.entity.EntityNPCGolem;
-import noppes.npcs.entity.EntityNPCInterface;
-import noppes.npcs.entity.EntityNpcCrystal;
-import noppes.npcs.entity.EntityNpcDragon;
-import noppes.npcs.entity.EntityNpcPony;
-import noppes.npcs.entity.EntityNpcSlime;
-import noppes.npcs.entity.EntityProjectile;
+import noppes.npcs.entity.*;
import org.lwjgl.input.Keyboard;
@@ -199,6 +181,7 @@ public class ClientProxy extends CommonProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityNpcSlime.class, new RenderNpcSlime(new ModelNpcSlime(16), new ModelNpcSlime(0), 0.25F));
RenderingRegistry.registerEntityRenderingHandler(EntityProjectile.class, new RenderProjectile());
RenderingRegistry.registerEntityRenderingHandler(EntityCustomNpc.class, new RenderCustomNpc());
+ RenderingRegistry.registerEntityRenderingHandler(EntityNPC64x64.class, new RenderCustomNpc(1));
RenderingRegistry.registerEntityRenderingHandler(EntityNPCGolem.class, new RenderNPCHumanMale(
new ModelNPCGolem(0), new ModelNPCGolem(1F), new ModelNPCGolem(0.5F)));
FMLCommonHandler.instance().bus().register(new ClientTickHandler());
diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java
index 85817887b..e4e2dbfe1 100644
--- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java
+++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawner.java
@@ -39,7 +39,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
public GuiNpcMobSpawner(int i, int j, int k) {
super();
- xSize = 256;
+ xSize = 384;
posX = i;
posY = j;
@@ -56,7 +56,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
if(scroll == null){
scroll = new GuiCustomScroll(this,0);
- scroll.setSize(165, 188);
+ scroll.setSize(293, 188);
}
else
scroll.clear();
@@ -64,7 +64,7 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
scroll.guiTop = guiTop + 26;
addScroll(scroll);
- addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 165, 20, search));
+ addTextField(new GuiNpcTextField(1, this, fontRendererObj, guiLeft + 4, guiTop + 4, 293, 20, search));
GuiMenuTopButton button;
addTopButton(button = new GuiMenuTopButton(3,guiLeft + 4, guiTop - 17, "spawner.clones"));
@@ -74,28 +74,38 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
addTopButton(button = new GuiMenuTopButton(5, button, "gui.server"));
button.active = showingClones == 2;
- addButton(new GuiNpcButton(1, guiLeft + 170, guiTop + 6, 82, 20, "item.monsterPlacer.name"));
+ addButton(new GuiNpcButton(1, guiLeft + 298, guiTop + 6, 82, 20, "item.monsterPlacer.name"));
- addButton(new GuiNpcButton(2, guiLeft + 170, guiTop + 100, 82, 20, "spawner.mobspawner"));
+ addButton(new GuiNpcButton(2, guiLeft + 298, guiTop + 100, 82, 20, "spawner.mobspawner"));
if(showingClones == 0 || showingClones == 2){
- addSideButton(new GuiMenuSideButton(21,guiLeft - 69, this.guiTop + 2, 70,22, "Tab 1"));
- addSideButton(new GuiMenuSideButton(22,guiLeft - 69, this.guiTop + 23, 70,22, "Tab 2"));
- addSideButton(new GuiMenuSideButton(23,guiLeft - 69, this.guiTop + 44, 70,22, "Tab 3"));
- addSideButton(new GuiMenuSideButton(24,guiLeft - 69, this.guiTop + 65, 70,22, "Tab 4"));
- addSideButton(new GuiMenuSideButton(25,guiLeft - 69, this.guiTop + 86, 70,22, "Tab 5"));
- addSideButton(new GuiMenuSideButton(26,guiLeft - 69, this.guiTop + 107, 70,22, "Tab 6"));
- addSideButton(new GuiMenuSideButton(27,guiLeft - 69, this.guiTop + 128, 70,22, "Tab 7"));
- addSideButton(new GuiMenuSideButton(28,guiLeft - 69, this.guiTop + 149, 70,22, "Tab 8"));
- addSideButton(new GuiMenuSideButton(29,guiLeft - 69, this.guiTop + 170, 70,22, "Tab 9"));
-
- addButton(new GuiNpcButton(6, guiLeft + 170, guiTop + 30, 82, 20, "gui.remove"));
-
+
+ addSideButton(new GuiMenuSideButton(21,guiLeft - 90, this.guiTop + 2, 90,22, "1"));
+ addSideButton(new GuiMenuSideButton(22,guiLeft - 90, this.guiTop + 23, 90,22, "2"));
+ addSideButton(new GuiMenuSideButton(23,guiLeft - 90, this.guiTop + 44, 90,22, "3"));
+ addSideButton(new GuiMenuSideButton(24,guiLeft - 90, this.guiTop + 65, 90,22, "4"));
+ addSideButton(new GuiMenuSideButton(25,guiLeft - 90, this.guiTop + 86, 90,22, "5"));
+ addSideButton(new GuiMenuSideButton(26,guiLeft - 90, this.guiTop + 107, 45,22, "6"));
+ addSideButton(new GuiMenuSideButton(27,guiLeft - 45, this.guiTop + 107, 45,22, "7"));
+ addSideButton(new GuiMenuSideButton(28,guiLeft - 90, this.guiTop + 128, 45,22, "8"));
+ addSideButton(new GuiMenuSideButton(29,guiLeft - 45, this.guiTop + 128, 45,22, "9"));
+ addSideButton(new GuiMenuSideButton(30,guiLeft - 90, this.guiTop + 149, 45,22, "10"));
+ addSideButton(new GuiMenuSideButton(31,guiLeft - 45, this.guiTop + 149, 45,22, "11"));
+ addSideButton(new GuiMenuSideButton(32,guiLeft - 90, this.guiTop + 170, 45,22, "12"));
+ addSideButton(new GuiMenuSideButton(33,guiLeft - 45, this.guiTop + 170, 45,22, "13"));
+ addSideButton(new GuiMenuSideButton(34,guiLeft - 90, this.guiTop + 191, 45,22, "14"));
+ addSideButton(new GuiMenuSideButton(35,guiLeft - 45, this.guiTop + 191, 45,22, "15"));
+
+
+
+ addButton(new GuiNpcButton(6, guiLeft + 298, guiTop + 190, 82, 20, "gui.remove"));
+
getSideButton(20 + activeTab).active = true;
showClones();
}
- else
+ else{
showEntities();
+ }
}
private void showEntities() {
@@ -119,7 +129,6 @@ public class GuiNpcMobSpawner extends GuiNPCInterface implements IGuiData{
Client.sendData(EnumPacketServer.CloneList, activeTab);
return;
}
-
ArrayList list = new ArrayList();
this.list = ClientCloneController.Instance.getClones(activeTab);
scroll.setList(getSearchList());
diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java
index df6e7da50..9428ae26a 100644
--- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java
+++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerAdd.java
@@ -44,7 +44,7 @@ public class GuiNpcMobSpawnerAdd extends GuiNPCInterface implements GuiYesNoCall
addLabel(new GuiNpcLabel(1, "Tab", guiLeft + 10, guiTop + 50));
- addButton(new GuiNpcButton(2, guiLeft + 40, guiTop + 45, 20, 20, new String[]{"1","2","3","4","5","6","7","8","9"}, tab - 1));
+ addButton(new GuiNpcButton(2, guiLeft + 40, guiTop + 45, 20, 20, new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"}, tab - 1));
addButton(new GuiNpcButton(3, guiLeft + 4, guiTop + 95, new String[]{"Client side", "Server side"}, serverSide?1:0));
diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java
index 42882a792..b3cec0a09 100644
--- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java
+++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerMounter.java
@@ -82,15 +82,21 @@ public class GuiNpcMobSpawnerMounter extends GuiNPCInterface implements IGuiData
addButton(new GuiNpcButton(2, guiLeft + 170, guiTop + 50, 82, 20, "spawner.mountplayer"));
if(showingClones == 0 || showingClones == 2){
- addSideButton(new GuiMenuSideButton(21,guiLeft - 69, this.guiTop + 2, 70,22, "Tab 1"));
- addSideButton(new GuiMenuSideButton(22,guiLeft - 69, this.guiTop + 23, 70,22, "Tab 2"));
- addSideButton(new GuiMenuSideButton(23,guiLeft - 69, this.guiTop + 44, 70,22, "Tab 3"));
- addSideButton(new GuiMenuSideButton(24,guiLeft - 69, this.guiTop + 65, 70,22, "Tab 4"));
- addSideButton(new GuiMenuSideButton(25,guiLeft - 69, this.guiTop + 86, 70,22, "Tab 5"));
- addSideButton(new GuiMenuSideButton(26,guiLeft - 69, this.guiTop + 107, 70,22, "Tab 6"));
- addSideButton(new GuiMenuSideButton(27,guiLeft - 69, this.guiTop + 128, 70,22, "Tab 7"));
- addSideButton(new GuiMenuSideButton(28,guiLeft - 69, this.guiTop + 149, 70,22, "Tab 8"));
- addSideButton(new GuiMenuSideButton(29,guiLeft - 69, this.guiTop + 170, 70,22, "Tab 9"));
+ addSideButton(new GuiMenuSideButton(21,guiLeft - 90, this.guiTop + 2, 90,22, "1"));
+ addSideButton(new GuiMenuSideButton(22,guiLeft - 90, this.guiTop + 23, 90,22, "2"));
+ addSideButton(new GuiMenuSideButton(23,guiLeft - 90, this.guiTop + 44, 90,22, "3"));
+ addSideButton(new GuiMenuSideButton(24,guiLeft - 90, this.guiTop + 65, 90,22, "4"));
+ addSideButton(new GuiMenuSideButton(25,guiLeft - 90, this.guiTop + 86, 90,22, "5"));
+ addSideButton(new GuiMenuSideButton(26,guiLeft - 45, this.guiTop + 107, 45,22, "6"));
+ addSideButton(new GuiMenuSideButton(27,guiLeft - 90, this.guiTop + 107, 45,22, "7"));
+ addSideButton(new GuiMenuSideButton(28,guiLeft - 45, this.guiTop + 128, 45,22, "8"));
+ addSideButton(new GuiMenuSideButton(29,guiLeft - 90, this.guiTop + 128, 45,22, "9"));
+ addSideButton(new GuiMenuSideButton(30,guiLeft - 45, this.guiTop + 149, 45,22, "10"));
+ addSideButton(new GuiMenuSideButton(31,guiLeft - 90, this.guiTop + 149, 45,22, "11"));
+ addSideButton(new GuiMenuSideButton(32,guiLeft - 45, this.guiTop + 170, 45,22, "12"));
+ addSideButton(new GuiMenuSideButton(33,guiLeft - 90, this.guiTop + 170, 45,22, "13"));
+ addSideButton(new GuiMenuSideButton(34,guiLeft - 45, this.guiTop + 191, 45,22, "14"));
+ addSideButton(new GuiMenuSideButton(35,guiLeft - 90, this.guiTop + 191, 45,22, "15"));
getSideButton(20 + activeTab).active = true;
showClones();
diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java
index 98acfd5e8..4636347d6 100644
--- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java
+++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerSelector.java
@@ -59,16 +59,22 @@ public class GuiNpcMobSpawnerSelector extends SubGuiInterface implements IGuiDat
addButton(new GuiNpcButton(0, guiLeft + 171, guiTop + 80, 80, 20, "gui.done"));
addButton(new GuiNpcButton(1, guiLeft + 171, guiTop + 103, 80, 20, "gui.cancel"));
-
- addSideButton(new GuiMenuSideButton(21,guiLeft - 69, this.guiTop + 2, 70,22, "Tab 1"));
- addSideButton(new GuiMenuSideButton(22,guiLeft - 69, this.guiTop + 23, 70,22, "Tab 2"));
- addSideButton(new GuiMenuSideButton(23,guiLeft - 69, this.guiTop + 44, 70,22, "Tab 3"));
- addSideButton(new GuiMenuSideButton(24,guiLeft - 69, this.guiTop + 65, 70,22, "Tab 4"));
- addSideButton(new GuiMenuSideButton(25,guiLeft - 69, this.guiTop + 86, 70,22, "Tab 5"));
- addSideButton(new GuiMenuSideButton(26,guiLeft - 69, this.guiTop + 107, 70,22, "Tab 6"));
- addSideButton(new GuiMenuSideButton(27,guiLeft - 69, this.guiTop + 128, 70,22, "Tab 7"));
- addSideButton(new GuiMenuSideButton(28,guiLeft - 69, this.guiTop + 149, 70,22, "Tab 8"));
- addSideButton(new GuiMenuSideButton(29,guiLeft - 69, this.guiTop + 170, 70,22, "Tab 9"));
+
+ addSideButton(new GuiMenuSideButton(21,guiLeft - 90, this.guiTop + 2, 90,22, "1"));
+ addSideButton(new GuiMenuSideButton(22,guiLeft - 90, this.guiTop + 23, 90,22, "2"));
+ addSideButton(new GuiMenuSideButton(23,guiLeft - 90, this.guiTop + 44, 90,22, "3"));
+ addSideButton(new GuiMenuSideButton(24,guiLeft - 90, this.guiTop + 65, 90,22, "4"));
+ addSideButton(new GuiMenuSideButton(25,guiLeft - 90, this.guiTop + 86, 90,22, "5"));
+ addSideButton(new GuiMenuSideButton(26,guiLeft - 45, this.guiTop + 107, 45,22, "6"));
+ addSideButton(new GuiMenuSideButton(27,guiLeft - 90, this.guiTop + 107, 45,22, "7"));
+ addSideButton(new GuiMenuSideButton(28,guiLeft - 45, this.guiTop + 128, 45,22, "8"));
+ addSideButton(new GuiMenuSideButton(29,guiLeft - 90, this.guiTop + 128, 45,22, "9"));
+ addSideButton(new GuiMenuSideButton(30,guiLeft - 45, this.guiTop + 149, 45,22, "10"));
+ addSideButton(new GuiMenuSideButton(31,guiLeft - 90, this.guiTop + 149, 45,22, "11"));
+ addSideButton(new GuiMenuSideButton(32,guiLeft - 45, this.guiTop + 170, 45,22, "12"));
+ addSideButton(new GuiMenuSideButton(33,guiLeft - 90, this.guiTop + 170, 45,22, "13"));
+ addSideButton(new GuiMenuSideButton(34,guiLeft - 45, this.guiTop + 191, 45,22, "14"));
+ addSideButton(new GuiMenuSideButton(35,guiLeft - 90, this.guiTop + 191, 45,22, "15"));
getSideButton(20 + activeTab).active = true;
showClones();
diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java
index 32bce96c3..21097d35f 100644
--- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java
+++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java
@@ -32,6 +32,7 @@ import noppes.npcs.constants.EnumPacketServer;
import noppes.npcs.controllers.PixelmonHelper;
import noppes.npcs.entity.EntityCustomNpc;
import noppes.npcs.entity.EntityFakeLiving;
+import noppes.npcs.entity.EntityNPC64x64;
import noppes.npcs.entity.EntityNPCInterface;
public class GuiCreationScreen extends GuiModelInterface implements ICustomScrollListener{
@@ -61,7 +62,8 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
e.printStackTrace();
} catch (NoSuchMethodException e) {
}
- }
+ }
+ data.put("NPC64", EntityNPC64x64.class);
list = new ArrayList(data.keySet());
Collections.sort(list,String.CASE_INSENSITIVE_ORDER);
}
diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java b/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java
index 77d06f17a..e076289e1 100644
--- a/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java
+++ b/src/main/java/noppes/npcs/client/gui/model/GuiModelBody.java
@@ -11,10 +11,12 @@ import noppes.npcs.entity.EntityCustomNpc;
public class GuiModelBody extends GuiModelInterface{
private GuiScreen parent;
- private final String[] arrWing = new String[]{"gui.no","Player","Type1","Type2","Type3"};
+ private final String[] arrWing = new String[]{"gui.no","Player","Type1","Type2","Type3","Type4","Type5","Type6","Type7","Type8","Type9",
+ "Type10","Type11","Type12","Type13"};
private final String[] arrBreasts = new String[]{"gui.no","Type1","Type2","Type3"};
private final String[] arrParticles = new String[]{"gui.no","Player","Type1","Type2", "Rainbow"};
- private final String[] arrfins = new String[]{"gui.no","Player","Type1"};
+ private final String[] arrfins = new String[]{"gui.no","Player","Type1","Type2","Type3","Type4","Type5","Type6"};
+ private final String[] arrskirt = new String[]{"gui.no","Player","Type1"};
public GuiModelBody(GuiScreen parent, EntityCustomNpc npc){
super(npc);
@@ -47,15 +49,48 @@ public class GuiModelBody extends GuiModelInterface{
if(fin != null)
addButton(new GuiNpcButton(13, guiLeft + 122, y, 40, 20, fin.getColor()));
+ ModelPartData skirt = playerdata.getPartData("skirt");
+ addButton(new GuiNpcButton(4, guiLeft + 50, y += 22, 70, 20, arrskirt, getSkirtindex(skirt)));
+ addLabel(new GuiNpcLabel(4, "Skirt", guiLeft, y + 5, 0xFFFFFF));
+ if(skirt != null)
+ addButton(new GuiNpcButton(14, guiLeft + 122, y, 40, 20, skirt.getColor()));
}
private int getFinIndex(ModelPartData fin) {
- if(fin == null)
- return 0;
- return fin.playerTexture?1:2;
+ if(fin == null)
+ return 0;
+ if(fin.type == 0){
+ if(fin.playerTexture)
+ return 1;
+ if(fin.texture.contains("1"))
+ return 2;
+ if(fin.texture.contains("2"))
+ return 3;
+ if(fin.texture.contains("3"))
+ return 4;
+ if(fin.texture.contains("4"))
+ return 5;
+ if(fin.texture.contains("5"))
+ return 6;
+ if(fin.texture.contains("6"))
+ return 7;
+ }
+ return 0;
}
+ private int getSkirtindex(ModelPartData skirt) {
+ if (skirt == null)
+ return 0;
+ if (skirt.type == 0) {
+ if (skirt.playerTexture)
+ return 1;
+ if (skirt.texture.contains("1"))
+ return 2;
+ }
+ return 0;
+ }
+
private int getParticleIndex(ModelPartData particles) {
if(particles == null)
return 0;
@@ -110,19 +145,44 @@ public class GuiModelBody extends GuiModelInterface{
initGui();
}
if(button.id == 3){
- int value = button.getValue();
- if(value == 0)
- playerdata.removePart("fin");
- else{
- ModelPartData particles = playerdata.getOrCreatePart("fin");
- if(value == 1)
- particles.setTexture("", 0);
- if(value == 2)
- particles.setTexture("fin/fin1", 0);
- }
- initGui();
+ int value = button.getValue();
+ if(value == 0)
+ playerdata.removePart("fin");
+ else{
+ ModelPartData particles = playerdata.getOrCreatePart("fin");
+ if(value == 1)
+ particles.setTexture("", 0);
+ if(value == 2)
+ particles.setTexture("fin/fin1", 0);
+ if(value == 3)
+ particles.setTexture("fin/fin2", 0);
+ if(value == 4)
+ particles.setTexture("fin/fin3", 0);
+ if(value == 5)
+ particles.setTexture("fin/fin4", 0);
+ if(value == 6)
+ particles.setTexture("fin/fin5", 0);
+ if(value == 7)
+ particles.setTexture("fin/fin6", 0);
+
+ }
+ initGui();
}
+ if(button.id == 4){
+ int value = button.getValue();
+ if(value == 0)
+ playerdata.removePart("skirt");
+ else{
+ ModelPartData particles = playerdata.getOrCreatePart("skirt");
+ if(value == 1)
+ particles.setTexture("", 0);
+ if(value == 2)
+ particles.setTexture("skirt/skirt1", 0);
+ }
+ initGui();
+ }
+
if(button.id == 11){
this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("wings"), npc));
}
@@ -132,6 +192,9 @@ public class GuiModelBody extends GuiModelInterface{
if(button.id == 13){
this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("fin"), npc));
}
+ if(button.id == 14){
+ this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("skirt"), npc));
+ }
}
@Override
diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiModelHead.java b/src/main/java/noppes/npcs/client/gui/model/GuiModelHead.java
index 12a795a88..c29a52a0a 100644
--- a/src/main/java/noppes/npcs/client/gui/model/GuiModelHead.java
+++ b/src/main/java/noppes/npcs/client/gui/model/GuiModelHead.java
@@ -15,11 +15,12 @@ public class GuiModelHead extends GuiModelInterface{
private final String[] arrHeadwear = new String[]{"gui.no","gui.yes","Solid"};
private final String[] arrHair = new String[]{"gui.no","Player","Long","Thin","Stylish","Ponytail"};
private final String[] arrBeard = new String[]{"gui.no","Player","Standard","Viking","Long","Short"};
- private final String[] arrMohawk = new String[]{"gui.no","Type1"};
- private final String[] arrSnout = new String[]{"gui.no","Player Small","Player Medium", "Player Large", "Player Bunny",
- "Small1", "Medium1", "Large1", "Bunny1"};
+ private final String[] arrMohawk = new String[]{"gui.no","Type1","Type2","Type3"};
+ private final String[] arrSnout = new String[]{"gui.no","Player Small","Player Medium", "Player Large", "Player Bunny",
+ "Small1", "Medium1", "Large1", "Bunny1", "Beak1"};
private final String[] arrEars = new String[]{"gui.no","Player","Player Bunny","Bunny","Type1"};
-
+ private final String[] arrHorns = new String[]{"gui.no", "Player Bull", "Player Antlers", "Player AntennasB", "Player AntennasF", "Bull", "Antlers", "AntennasB", "AntennasF" };
+
public GuiModelHead(GuiScreen parent, EntityCustomNpc npc){
super(npc);
this.parent = parent;
@@ -28,42 +29,49 @@ public class GuiModelHead extends GuiModelInterface{
@Override
public void initGui() {
- super.initGui();
+ super.initGui();
int y = guiTop + 20;
-
- addButton(new GuiNpcButton(0, guiLeft + 50, y += 22, 70, 20, arrHeadwear, playerdata.headwear));
+
+ addButton(new GuiNpcButton(0, guiLeft + 50, y += 22, 70, 20, arrHeadwear, playerdata.headwear));
addLabel(new GuiNpcLabel(0, "Headwear", guiLeft, y + 5, 0xFFFFFF));
ModelPartData hair = playerdata.getPartData("hair");
- addButton(new GuiNpcButton(1, guiLeft + 50, y += 22, 70, 20, arrHair, hair == null?0:hair.type + 1));
+ addButton(new GuiNpcButton(1, guiLeft + 50, y += 22, 70, 20, arrHair, hair == null ? 0 : hair.type + 1));
addLabel(new GuiNpcLabel(1, "Hair", guiLeft, y + 5, 0xFFFFFF));
- if(hair != null)
+ if (hair != null)
addButton(new GuiNpcButton(11, guiLeft + 122, y, 40, 20, hair.getColor()));
ModelPartData mohawk = playerdata.getPartData("mohawk");
- addButton(new GuiNpcButton(2, guiLeft + 50, y += 22, 70, 20, arrMohawk, mohawk == null?0:mohawk.type));
+ addButton(new GuiNpcButton(2, guiLeft + 50, y += 22, 70, 20, arrMohawk, mohawk == null ? 0 : mohawk.type));
addLabel(new GuiNpcLabel(2, "Mohawk", guiLeft, y + 5, 0xFFFFFF));
- if(mohawk != null)
+ if (mohawk != null)
addButton(new GuiNpcButton(12, guiLeft + 122, y, 40, 20, mohawk.getColor()));
ModelPartData beard = playerdata.getPartData("beard");
- addButton(new GuiNpcButton(3, guiLeft + 50, y += 22, 70, 20, arrBeard, beard == null?0:beard.type + 1));
+ addButton(new GuiNpcButton(3, guiLeft + 50, y += 22, 70, 20, arrBeard, beard == null ? 0 : beard.type + 1));
addLabel(new GuiNpcLabel(3, "Beard", guiLeft, y + 5, 0xFFFFFF));
- if(beard != null)
+ if (beard != null)
addButton(new GuiNpcButton(13, guiLeft + 122, y, 40, 20, beard.getColor()));
ModelPartData snout = playerdata.getPartData("snout");
- addButton(new GuiNpcButton(4, guiLeft + 50, y += 22, 70, 20, arrSnout, snout == null?0:snout.type + (snout.playerTexture?1:5)));
+ addButton(new GuiNpcButton(4, guiLeft + 50, y += 22, 70, 20, arrSnout, snout == null ? 0 : snout.type + (snout.playerTexture ? 1 : 5)));
addLabel(new GuiNpcLabel(4, "Snout", guiLeft, y + 5, 0xFFFFFF));
- if(snout != null)
+ if (snout != null)
addButton(new GuiNpcButton(14, guiLeft + 122, y, 40, 20, snout.getColor()));
ModelPartData ears = playerdata.getPartData("ears");
- addButton(new GuiNpcButton(5, guiLeft + 50, y += 22, 70, 20, arrEars, getEars(ears)));
+ addButton(new GuiNpcButton(5, guiLeft + 50, y += 22, 70, 20, arrEars, getEars(ears)));
addLabel(new GuiNpcLabel(5, "Ears", guiLeft, y + 5, 0xFFFFFF));
- if(ears != null)
+ if (ears != null)
addButton(new GuiNpcButton(15, guiLeft + 122, y, 40, 20, ears.getColor()));
+
+ ModelPartData horns = playerdata.getPartData("horns");
+ y += 22;addButton(new GuiNpcButton(6, guiLeft + 50, y, 70, 20, arrHorns, getHorns(horns)));
+ addLabel(new GuiNpcLabel(6, "Horns", guiLeft, y + 5, 16777215));
+ if (horns != null) {
+ addButton(new GuiNpcButton(16, guiLeft + 122, y, 40, 20, horns.getColor()));
+ }
}
@@ -82,6 +90,15 @@ public class GuiModelHead extends GuiModelInterface{
return 0;
}
+ private int getHorns(ModelPartData data) {
+ if (data == null)
+ return 0;
+ if (data.playerTexture) {
+ return data.type + 1;
+ }
+ return data.type + 5;
+ }
+
@Override
protected void actionPerformed(GuiButton btn) {
super.actionPerformed(btn);
@@ -124,26 +141,28 @@ public class GuiModelHead extends GuiModelInterface{
initGui();
}
- if(button.id == 4){
- if(button.getValue() == 0)
- playerdata.removePart("snout");
- else if(button.getValue() < 5){
- ModelPartData data = playerdata.getOrCreatePart("snout");
- data.type = (byte) (button.getValue() - 1);
- }
- else{
- ModelPartData data = playerdata.getOrCreatePart("snout");
- byte type = 0;
- if(button.displayString.startsWith("Medium"))
- type = 1;
- if(button.displayString.startsWith("Large"))
- type = 2;
- if(button.displayString.startsWith("Bunny"))
- type = 3;
- data.setTexture("snout/" + button.displayString.toLowerCase(), type);
- }
- initGui();
- }
+ if(button.id == 4){
+ if(button.getValue() == 0)
+ playerdata.removePart("snout");
+ else if(button.getValue() < 5){
+ ModelPartData data = playerdata.getOrCreatePart("snout");
+ data.type = (byte) (button.getValue() - 1);
+ }
+ else{
+ ModelPartData data = playerdata.getOrCreatePart("snout");
+ byte type = 0;
+ if(button.displayString.startsWith("Medium"))
+ type = 1;
+ if(button.displayString.startsWith("Large"))
+ type = 2;
+ if(button.displayString.startsWith("Bunny"))
+ type = 3;
+ if(button.displayString.startsWith("Beak"))
+ type = 4;
+ data.setTexture("snout/" + button.displayString.toLowerCase(), type);
+ }
+ initGui();
+ }
if(button.id == 5){
int value = button.getValue();
@@ -163,6 +182,26 @@ public class GuiModelHead extends GuiModelInterface{
initGui();
}
+ if(button.id == 6){
+ int value = button.getValue();
+ if(value == 0)
+ playerdata.removePart("horns");
+ else{
+ ModelPartData data = playerdata.getOrCreatePart("horns");
+ if(value <= 4)
+ data.setTexture("", value - 1);
+ if(value == 5)
+ data.setTexture("horns/bull", 0);
+ if(value == 6)
+ data.setTexture("horns/antlers", 1);
+ if(value == 7)
+ data.setTexture("horns/antennas", 2);
+ if(value == 8)
+ data.setTexture("horns/antennas", 3);
+ }
+ initGui();
+ }
+
if(button.id == 11){
this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("hair"), npc));
}
@@ -178,6 +217,9 @@ public class GuiModelHead extends GuiModelInterface{
if(button.id == 15){
this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("ears"), npc));
}
+ if(button.id == 16){
+ this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.getPartData("horns"), npc));
+ }
}
@Override
diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiModelLegs.java b/src/main/java/noppes/npcs/client/gui/model/GuiModelLegs.java
index 660d005dc..8912683b7 100644
--- a/src/main/java/noppes/npcs/client/gui/model/GuiModelLegs.java
+++ b/src/main/java/noppes/npcs/client/gui/model/GuiModelLegs.java
@@ -12,7 +12,7 @@ public class GuiModelLegs extends GuiModelInterface{
private GuiScreen parent;
private final String[] arrLegs = new String[]{"gui.no","Player","Player Naga","Spider","Horse","Naga", "Mermaid","Digitigrade"};
- private final String[] arrTail = new String[]{"gui.no","Player", "Player Dragon","Cat","Wolf","Horse","Dragon", "Squirrel"};
+ private final String[] arrTail = new String[]{"gui.no","Player", "Player Dragon","Cat","Wolf","Horse","Dragon", "Squirrel", "Fin", "Rodent"};
public GuiModelLegs(GuiScreen parent, EntityCustomNpc npc){
super(npc);
this.parent = parent;
@@ -46,22 +46,26 @@ public class GuiModelLegs extends GuiModelInterface{
}
private int getTailIndex(ModelPartData data){
- if(data == null)
- return 0;
- if(data.playerTexture && data.type == 0)
- return 1;
- if(data.type == 0 && data.texture.contains("tail1"))
- return 3;
- if(data.type == 0 && data.texture.contains("tail2"))
- return 4;
- if(data.playerTexture && data.type == 1)
- return 2;
- if(data.type == 1)
- return 6;
- if(data.type == 2)
- return 5;
- if(data.type == 3)
- return 7;
+ if(data == null)
+ return 0;
+ if(data.playerTexture && data.type == 0)
+ return 1;
+ if(data.type == 0 && data.texture.contains("tail1"))
+ return 3;
+ if(data.type == 0 && data.texture.contains("tail2"))
+ return 4;
+ if(data.playerTexture && data.type == 1)
+ return 2;
+ if(data.type == 1)
+ return 6;
+ if(data.type == 2)
+ return 5;
+ if(data.type == 3)
+ return 7;
+ if(data.type == 4)
+ return 8;
+ if(data.type == 5)
+ return 9;
return 0;
}
@@ -94,30 +98,34 @@ public class GuiModelLegs extends GuiModelInterface{
}
- if(button.id == 2){
+ if(button.id == 2){
int value = button.getValue();
- if(value == 0)
- playerdata.removePart("tail");
- else{
- ModelPartData data = playerdata.getOrCreatePart("tail");
- if(value == 1)
- data.setTexture("", 0);
- if(value == 2)
- data.setTexture("", 1);
- if(value == 3)
- data.setTexture("tail/tail1", 0);
- if(value == 4)
- data.setTexture("tail/tail2", 0);
- if(value == 5)
- data.setTexture("tail/horse1", 2);
- if(value == 6)
- data.setTexture("tail/dragon1", 1);
- if(value == 7)
- data.setTexture("tail/squirrel1", 3);
-
- }
- initGui();
- }
+ if(value == 0)
+ playerdata.removePart("tail");
+ else{
+ ModelPartData data = playerdata.getOrCreatePart("tail");
+ if(value == 1)
+ data.setTexture("", 0);
+ if(value == 2)
+ data.setTexture("", 1);
+ if(value == 3)
+ data.setTexture("tail/tail1", 0);
+ if(value == 4)
+ data.setTexture("tail/tail2", 0);
+ if(value == 5)
+ data.setTexture("tail/horse1", 2);
+ if(value == 6)
+ data.setTexture("tail/dragon1", 1);
+ if(value == 7)
+ data.setTexture("tail/squirrel1", 3);
+ if(value == 8)
+ data.setTexture("tail/fin1", 4);
+ if(value == 9)
+ data.setTexture("tail/rodent1", 5);
+
+ }
+ initGui();
+ }
if(button.id == 11){
this.mc.displayGuiScreen(new GuiModelColor(this, playerdata.legParts, npc));
}
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSlider.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSlider.java
index 6e7751aa6..ccb0ab861 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcSlider.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcSlider.java
@@ -23,6 +23,14 @@ public class GuiNpcSlider extends GuiButton {
if(parent instanceof ISliderListener)
listener = (ISliderListener) parent;
}
+
+ public GuiNpcSlider(GuiScreen parent, int id, int xPos, int yPos, int width, int height, String displayString, float sliderValue) {
+ super(id, xPos, yPos, width, height, NoppesStringUtils.translate(displayString));
+ this.id = id;
+ this.sliderValue = sliderValue;
+ if(parent instanceof ISliderListener)
+ listener = (ISliderListener) parent;
+ }
public GuiNpcSlider(GuiScreen parent, int id, int xPos, int yPos, float sliderValue) {
this(parent, id, xPos, yPos, "", sliderValue);
diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM.java b/src/main/java/noppes/npcs/client/model/ModelMPM.java
index 405a17de2..af2396472 100644
--- a/src/main/java/noppes/npcs/client/model/ModelMPM.java
+++ b/src/main/java/noppes/npcs/client/model/ModelMPM.java
@@ -32,6 +32,8 @@ import noppes.npcs.constants.EnumAnimation;
import noppes.npcs.constants.EnumJobType;
import noppes.npcs.entity.EntityCustomNpc;
import noppes.npcs.roles.JobPuppet;
+import noppes.npcs.client.model.part.ModelHorns;
+import noppes.npcs.client.model.part.ModelSkirt;
import org.lwjgl.opengl.GL11;
@@ -44,6 +46,8 @@ public class ModelMPM extends ModelNPCMale{
private ModelPartInterface snout;
private ModelPartInterface ears;
private ModelPartInterface fin;
+ private ModelPartInterface skirt;
+ private ModelPartInterface horns;
private ModelPartInterface clawsR;
private ModelPartInterface clawsL;
@@ -94,40 +98,26 @@ public class ModelMPM extends ModelNPCMale{
headwear = new ModelHeadwear(this);
legs = new ModelLegs(this, (ModelScaleRenderer)bipedRightLeg, (ModelScaleRenderer)bipedLeftLeg);
-
- breasts = new ModelBreasts(this);
- this.bipedBody.addChild(breasts);
- if(!isArmor){
- ears = new ModelEars(this);
- this.bipedHead.addChild(ears);
-
- mohawk = new ModelMohawk(this);
- this.bipedHead.addChild(mohawk);
-
- hair = new ModelHair(this);
- this.bipedHead.addChild(hair);
-
- beard = new ModelBeard(this);
- this.bipedHead.addChild(beard);
-
- snout = new ModelSnout(this);
- this.bipedHead.addChild(snout);
-
- tail = new ModelTail(this);
-
- wings = new ModelWings(this);
- this.bipedBody.addChild(wings);
-
- fin = new ModelFin(this);
- this.bipedBody.addChild(fin);
-
- clawsL = new ModelClaws(this, false);
- this.bipedLeftArm.addChild(clawsL);
- clawsR = new ModelClaws(this, true);
- this.bipedRightArm.addChild(clawsR);
- }
- }
+ this.bipedBody.addChild(breasts = new ModelBreasts(this));
+ if(!isArmor){
+ this.bipedHead.addChild(ears = new ModelEars(this));
+ this.bipedHead.addChild(mohawk = new ModelMohawk(this));
+ this.bipedHead.addChild(hair = new ModelHair(this));
+ this.bipedHead.addChild(beard = new ModelBeard(this));
+ this.bipedHead.addChild(snout = new ModelSnout(this));
+ this.bipedHead.addChild(horns = new ModelHorns(this));
+
+ tail = new ModelTail(this);
+
+ this.bipedBody.addChild(wings = new ModelWings(this));
+ this.bipedBody.addChild(skirt = new ModelSkirt(this));
+ this.bipedBody.addChild(fin = new ModelFin(this));
+
+ this.bipedLeftArm.addChild(clawsL = new ModelClaws(this, false));
+ this.bipedRightArm.addChild(clawsR = new ModelClaws(this, true));
+ }
+ }
private void setPlayerData(EntityCustomNpc entity){
if(!isArmor){
@@ -141,6 +131,8 @@ public class ModelMPM extends ModelNPCMale{
ears.setData(entity.modelData, entity);
clawsL.setData(entity.modelData, entity);
clawsR.setData(entity.modelData, entity);
+ skirt.setData(entity.modelData, entity);
+ horns.setData(entity.modelData, entity);
}
breasts.setData(entity.modelData, entity);
legs.setData(entity);
@@ -263,6 +255,7 @@ public class ModelMPM extends ModelNPCMale{
beard.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
wings.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
tail.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
+ skirt.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
}
legs.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM64.java b/src/main/java/noppes/npcs/client/model/ModelMPM64.java
new file mode 100644
index 000000000..d518bbaea
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/ModelMPM64.java
@@ -0,0 +1,31 @@
+package noppes.npcs.client.model;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelBiped;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.util.MathHelper;
+import noppes.npcs.ModelPartConfig;
+import noppes.npcs.ModelPartData;
+import noppes.npcs.client.ClientProxy;
+import noppes.npcs.client.model.animation.AniCrawling;
+import noppes.npcs.client.model.animation.AniHug;
+import noppes.npcs.client.model.part.*;
+import noppes.npcs.client.model.util.ModelPartInterface;
+import noppes.npcs.client.model.util.ModelScaleRenderer;
+import noppes.npcs.constants.EnumAnimation;
+import noppes.npcs.constants.EnumJobType;
+import noppes.npcs.entity.EntityCustomNpc;
+import noppes.npcs.roles.JobPuppet;
+import org.lwjgl.opengl.GL11;
+
+import java.util.Random;
+
+public class ModelMPM64 extends ModelMPM{
+
+ public ModelMPM64(float par1) {
+ super(par1);
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelDuckBeak.java b/src/main/java/noppes/npcs/client/model/part/ModelDuckBeak.java
new file mode 100644
index 000000000..58749c6df
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/ModelDuckBeak.java
@@ -0,0 +1,78 @@
+package noppes.npcs.client.model.part;
+
+import org.lwjgl.opengl.GL11;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+import noppes.npcs.client.model.util.ModelPartInterface;
+
+public class ModelDuckBeak extends ModelRenderer {
+ ModelRenderer Top3;
+ ModelRenderer Top2;
+ ModelRenderer Bottom;
+ ModelRenderer Left;
+ ModelRenderer Right;
+ ModelRenderer Middle;
+ ModelRenderer Top;
+
+ public ModelDuckBeak(ModelMPM base) {
+ super(base);
+
+ Top3 = new ModelRenderer(base, 14, 0);
+ Top3.addBox(0F, 0F, 0F, 2, 1, 3);
+ Top3.setRotationPoint(-1F, -2F, -5F);
+ setRotation(Top3, 0.3346075F, 0F, 0F);
+ addChild(Top3);
+
+ Top2 = new ModelRenderer(base, 0, 0);
+ Top2.addBox(0F, 0F, -0.4F, 4, 1, 3);
+ Top2.setRotationPoint(-2F, -3F, -2F);
+ setRotation(Top2, 0.3346075F, 0F, 0F);
+ addChild(Top2);
+
+ Bottom = new ModelRenderer(base, 24, 0);
+ Bottom.addBox(0F, 0F, 0F, 2, 1, 5);
+ Bottom.setRotationPoint(-1F, -1F, -5F);
+ addChild(Bottom);
+
+ Left = new ModelRenderer(base, 0, 4);
+ Left.mirror = true;
+ Left.addBox(0F, 0F, 0F, 1, 3, 2);
+ Left.setRotationPoint(0.98F, -3F, -2F);
+ addChild(Left);
+
+ Right = new ModelRenderer(base, 0, 4);
+ Right.addBox(0F, 0F, 0F, 1, 3, 2);
+ Right.setRotationPoint(-1.98F, -3F, -2F);
+ addChild(Right);
+
+ Middle = new ModelRenderer(base, 3, 0);
+ Middle.addBox(0F, 0F, 0F, 2, 1, 3);
+ Middle.setRotationPoint(-1F, -2F, -5F);
+ addChild(Middle);
+
+ Top = new ModelRenderer(base, 6, 4);
+ Top.addBox(0F, 0F, 0F, 2, 2, 1);
+ Top.setRotationPoint(-1F, -4.4F, -1F);
+ addChild(Top);
+ }
+
+ @Override
+ public void render(float f)
+ {
+ GL11.glPushMatrix();
+ GL11.glTranslatef(0, 0, -1f * f);
+ GL11.glScalef(0.82f, 0.82f, 0.70f);
+ super.render(f);
+ GL11.glPopMatrix();
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelFin.java b/src/main/java/noppes/npcs/client/model/part/ModelFin.java
index e8bbae8fa..c8f79c9fc 100644
--- a/src/main/java/noppes/npcs/client/model/part/ModelFin.java
+++ b/src/main/java/noppes/npcs/client/model/part/ModelFin.java
@@ -13,7 +13,7 @@ public class ModelFin extends ModelPartInterface {
public ModelFin(ModelMPM base) {
super(base);
- model = new Model2DRenderer(base, 56, 20, 8, 12, 64, 32);
+ model = new Model2DRenderer(base, 48, 8, 16, 24, 64, 32);
model.setRotationPoint(-0.5F, 12, 10);
model.setScale(0.74f);
model.rotateAngleY = (float)Math.PI / 2;
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelHorns.java b/src/main/java/noppes/npcs/client/model/part/ModelHorns.java
new file mode 100644
index 000000000..0b7fe1612
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/ModelHorns.java
@@ -0,0 +1,58 @@
+package noppes.npcs.client.model.part;
+
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.ResourceLocation;
+import noppes.npcs.ModelPartData;
+import noppes.npcs.ModelData;
+import noppes.npcs.client.model.ModelMPM;
+import noppes.npcs.client.model.util.ModelPartInterface;
+import noppes.npcs.client.model.part.horns.ModelAntennasBack;
+import noppes.npcs.client.model.part.horns.ModelAntennasFront;
+import noppes.npcs.client.model.part.horns.ModelAntlerHorns;
+import noppes.npcs.client.model.part.horns.ModelBullHorns;
+
+public class ModelHorns extends ModelPartInterface {
+ private ModelRenderer bull;
+ private ModelRenderer antlers;
+ private ModelRenderer antennasBack;
+ private ModelRenderer antennasFront;
+
+ public ModelHorns(ModelMPM base) {
+ super(base);
+
+ this.addChild(bull = new ModelBullHorns(base));
+ this.addChild(antlers = new ModelAntlerHorns(base));
+ this.addChild(antennasBack = new ModelAntennasBack(base));
+ this.addChild(antennasFront = new ModelAntennasFront(base));
+ }
+
+ @Override
+ public void setRotationAngles(float par1, float par2, float par3,
+ float par4, float par5, float par6, Entity entity) {
+
+ }
+
+ @Override
+ public void initData(ModelData data) {
+ ModelPartData config = data.getPartData("horns");
+ if(config == null)
+ {
+ isHidden = true;
+ return;
+ }
+ color = config.color;
+ isHidden = false;
+
+ bull.isHidden = config.type != 0;
+ antlers.isHidden = config.type != 1;
+ antennasBack.isHidden = config.type != 2;
+ antennasFront.isHidden = config.type != 3;
+
+ if(!config.playerTexture){
+ location = config.getResource();
+ }
+ else
+ location = null;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelLegs.java b/src/main/java/noppes/npcs/client/model/part/ModelLegs.java
index a4c834263..a01c6aae2 100644
--- a/src/main/java/noppes/npcs/client/model/part/ModelLegs.java
+++ b/src/main/java/noppes/npcs/client/model/part/ModelLegs.java
@@ -12,6 +12,7 @@ import noppes.npcs.client.ClientProxy;
import noppes.npcs.client.model.ModelMPM;
import noppes.npcs.client.model.part.legs.ModelDigitigradeLegs;
import noppes.npcs.client.model.part.legs.ModelMermaidLegs;
+import noppes.npcs.client.model.part.legs.ModelMermaidLegs2;
import noppes.npcs.client.model.part.legs.ModelNagaLegs;
import noppes.npcs.client.model.util.ModelScaleRenderer;
import noppes.npcs.constants.EnumAnimation;
@@ -27,6 +28,7 @@ public class ModelLegs extends ModelScaleRenderer{
private ModelNagaLegs naga;
private ModelDigitigradeLegs digitigrade;
private ModelMermaidLegs mermaid;
+ private ModelMermaidLegs2 mermaid2;
private ModelRenderer spiderLeg1;
private ModelRenderer spiderLeg2;
@@ -200,7 +202,9 @@ public class ModelLegs extends ModelScaleRenderer{
this.addChild(naga);
mermaid = new ModelMermaidLegs(base);
- this.addChild(mermaid);
+
+ mermaid2 = new ModelMermaidLegs2(base);
+ this.addChild(mermaid2);
digitigrade = new ModelDigitigradeLegs(base);
this.addChild(digitigrade);
@@ -297,8 +301,17 @@ public class ModelLegs extends ModelScaleRenderer{
naga.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
}
else if(part.type == 4){
- mermaid.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
- }
+ mermaid.isRiding = base.isRiding;
+ mermaid.isSleeping = base.isSleeping(entity);
+ mermaid.isCrawling = this.entity.currentAnimation == EnumAnimation.CRAWLING;
+ mermaid.isSneaking = base.isSneak;
+ mermaid2.isRiding = base.isRiding;
+ mermaid2.isSleeping = base.isSleeping(entity);
+ mermaid2.isCrawling = this.entity.currentAnimation == EnumAnimation.CRAWLING;
+ mermaid2.isSneaking = base.isSneak;
+ mermaid.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
+ mermaid2.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
+ }
else if(part.type == 5){
digitigrade.setRotationAngles(par1, par2, par3, par4, par5, par6, entity);
}
@@ -314,7 +327,7 @@ public class ModelLegs extends ModelScaleRenderer{
return;
GL11.glPushMatrix();
if(part.type == 4)
- part.playerTexture = !entity.isInWater();
+ part.playerTexture = false;
if(!base.isArmor){
if(!part.playerTexture){
ClientProxy.bindTexture(part.getResource());
@@ -325,18 +338,19 @@ public class ModelLegs extends ModelScaleRenderer{
base.currentlyPlayerTexture = true;
}
}
- if(part.type == 0 || part.type == 4 && !entity.isInWater()){
- leg1.setConfig(config, x, y, z);
- leg1.render(par1);
- leg2.setConfig(config, -x, y, z);
- leg2.render(par1);
- }
+ if(part.type == 0){
+ leg1.setConfig(config, x, y, z);
+ leg1.render(par1);
+ leg2.setConfig(config, -x, y, z);
+ leg2.render(par1);
+ }
if(!base.isArmor){
naga.isHidden = part.type != 1;
spider.isHidden = part.type != 2;
horse.isHidden = part.type != 3;
- mermaid.isHidden = part.type != 4 || !entity.isInWater();
+ mermaid.isHidden = part.type != 4;
+ mermaid2.isHidden = part.type != 4;
digitigrade.isHidden = part.type != 5;
if(!horse.isHidden){
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelSkirt.java b/src/main/java/noppes/npcs/client/model/part/ModelSkirt.java
new file mode 100644
index 000000000..29bd9d435
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/ModelSkirt.java
@@ -0,0 +1,72 @@
+package noppes.npcs.client.model.part;
+
+import java.util.List;
+
+import org.lwjgl.opengl.GL11;
+
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.ResourceLocation;
+import noppes.npcs.ModelData;
+import noppes.npcs.ModelPartData;
+import noppes.npcs.client.model.ModelMPM;
+import noppes.npcs.client.model.util.ModelPartInterface;
+import noppes.npcs.client.model.util.ModelPlane;
+import noppes.npcs.client.model.util.ModelPlaneRenderer;
+
+public class ModelSkirt extends ModelPartInterface {
+ private ModelPlaneRenderer Shape1;
+ public ModelSkirt(ModelMPM base) {
+ super(base);
+ float pi = (float) (Math.PI / 5);
+
+ Shape1 = new ModelPlaneRenderer(base, 58, 18);
+ Shape1.addSidePlane(0, 0, 0, 9, 2);
+
+ ModelPlaneRenderer part1 = new ModelPlaneRenderer(base, 58, 18);
+ part1.addSidePlane(2, 0, 0, 9, 2);
+ part1.rotateAngleY = -(float) (Math.PI/2);
+ Shape1.addChild(part1);
+
+ Shape1.setRotationPoint(2.4F, 8.8F, 0F);
+ setRotation(Shape1, 0.3F, -0.2f, -0.2F);
+ }
+ public void render(float par1)
+ {
+ if (this.isHidden || !this.showModel)
+ return;
+ GL11.glPushMatrix();
+ GL11.glScalef(1.7f, 1.04f, 1.6f);
+ super.render(par1);
+ GL11.glPopMatrix();
+ }
+ public void renderParts(float par1) {
+ for(int i = 0; i < 10; i++){
+ GL11.glRotatef(36, 0, 1, 0);
+ Shape1.render(par1);
+ }
+ }
+
+ public void setRotationAngles(float par1, float par2, float par3,
+ float par4, float par5, float par6, Entity entity) {
+ setRotation(Shape1, 0.3F, -0.2f, -0.2F);
+ Shape1.rotateAngleX += base.bipedLeftArm.rotateAngleX * 0.04f;
+ Shape1.rotateAngleZ += base.bipedLeftArm.rotateAngleX * 0.06f;
+ //this.Shape1.rotateAngleX -= MathHelper.sin(par3 * 0.067F) * 0.05F;
+ this.Shape1.rotateAngleZ -= MathHelper.cos(par3 * 0.09F) * 0.04F - 0.05F;
+ }
+
+ @Override
+ public void initData(ModelData data) {
+ ModelPartData config = data.getPartData("skirt");
+ if(config == null)
+ {
+ isHidden = true;
+ return;
+ }
+ color = config.color;
+ isHidden = false;
+ location = (ResourceLocation) config.getResource();
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelSnout.java b/src/main/java/noppes/npcs/client/model/part/ModelSnout.java
index 7fbee6551..d44c2c2ec 100644
--- a/src/main/java/noppes/npcs/client/model/part/ModelSnout.java
+++ b/src/main/java/noppes/npcs/client/model/part/ModelSnout.java
@@ -13,6 +13,7 @@ public class ModelSnout extends ModelPartInterface {
private ModelRenderer medium;
private ModelRenderer large;
private ModelRenderer bunny;
+ private ModelRenderer beak;
public ModelSnout(ModelMPM base) {
super(base);
@@ -41,6 +42,10 @@ public class ModelSnout extends ModelPartInterface {
tooth.addBox(2F, 3f, 0F, 2, 1, 1);
tooth.setRotationPoint(0F, 0F, 0F);
bunny.addChild(tooth);
+
+ beak = new ModelDuckBeak(base);
+ beak.setRotationPoint(0, 0, -4F);
+ this.addChild(beak);
}
@Override
@@ -64,6 +69,7 @@ public class ModelSnout extends ModelPartInterface {
medium.isHidden = config.type != 1;
large.isHidden = config.type != 2;
bunny.isHidden = config.type != 3;
+ beak.isHidden = config.type != 4;
if(!config.playerTexture){
location = config.getResource();
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelTail.java b/src/main/java/noppes/npcs/client/model/part/ModelTail.java
index 8456637cd..f2e8f4b2a 100644
--- a/src/main/java/noppes/npcs/client/model/part/ModelTail.java
+++ b/src/main/java/noppes/npcs/client/model/part/ModelTail.java
@@ -15,6 +15,8 @@ import noppes.npcs.client.model.part.tails.ModelSquirrelTail;
import noppes.npcs.client.model.util.ModelScaleRenderer;
import noppes.npcs.constants.EnumAnimation;
import noppes.npcs.entity.EntityCustomNpc;
+import noppes.npcs.client.model.part.tails.ModelRodentTail;
+import noppes.npcs.client.model.part.tails.ModelTailFin;
import org.lwjgl.opengl.GL11;
@@ -26,6 +28,8 @@ public class ModelTail extends ModelScaleRenderer {
private ModelRenderer dragon;
private ModelRenderer squirrel;
private ModelRenderer horse;
+ private ModelRenderer fin;
+ private ModelRenderer rodent;
private int color = 0xFFFFFF;
@@ -68,6 +72,9 @@ public class ModelTail extends ModelScaleRenderer {
this.addChild(dragon = new ModelDragonTail(base));
this.addChild(squirrel = new ModelSquirrelTail(base));
+
+ this.addChild(fin = new ModelTailFin(base));
+ this.addChild(rodent = new ModelRodentTail(base));
}
public void setData(EntityCustomNpc entity) {
@@ -118,6 +125,8 @@ public class ModelTail extends ModelScaleRenderer {
dragon.isHidden = config.type != 1;
horse.isHidden = config.type != 2;
squirrel.isHidden = config.type != 3;
+ fin.isHidden = config.type != 4;
+ rodent.isHidden = config.type != 5;
if(!config.playerTexture){
location = config.getResource();
}
diff --git a/src/main/java/noppes/npcs/client/model/part/ModelWings.java b/src/main/java/noppes/npcs/client/model/part/ModelWings.java
index 511038fba..f9550baa3 100644
--- a/src/main/java/noppes/npcs/client/model/part/ModelWings.java
+++ b/src/main/java/noppes/npcs/client/model/part/ModelWings.java
@@ -17,14 +17,14 @@ public class ModelWings extends ModelPartInterface {
public ModelWings(ModelMPM base) {
super(base);
- lWing = new Model2DRenderer(base, 56, 16, 8, 16, 64, 32);
+ lWing = new Model2DRenderer(base, 48, 32, 16, 32, 64, 32);
lWing.mirror = true;
lWing.setRotationPoint(2F, 4, 2F);
lWing.setRotationOffset(-16, -12);
setRotation(lWing, 0.7141593F, -0.5235988F, -0.5090659F);
this.addChild(lWing);
- rWing = new Model2DRenderer(base, 56, 16, 8, 16, 64, 32);
+ rWing = new Model2DRenderer(base, 48, 32, 16, 32, 64, 32);
rWing.setRotationPoint(-2F, 4F, 2F);
rWing.setRotationOffset(-16, -12);
setRotation(rWing, 0.7141593F, 0.5235988F, 0.5090659F);
diff --git a/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasBack.java b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasBack.java
new file mode 100644
index 000000000..3d5ecb310
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasBack.java
@@ -0,0 +1,44 @@
+package noppes.npcs.client.model.part.horns;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelAntennasBack extends ModelRenderer {
+
+ public ModelAntennasBack(ModelMPM base) {
+ super(base);
+ ModelRenderer rightantenna1 = new ModelRenderer(base, 36, 0);
+ rightantenna1.addBox(-1F, 0F, 0F, 1, 4, 1);
+ rightantenna1.setRotationPoint(3F, -10.9F, 0F);
+ setRotation(rightantenna1, -0.7504916F, 0.0698132F, 0.0698132F);
+ addChild(rightantenna1);
+
+ ModelRenderer leftantenna1 = new ModelRenderer(base, 32, 0);
+ leftantenna1.mirror = true;
+ leftantenna1.addBox(0F, 0F, 0F, 1, 4, 1);
+ leftantenna1.setRotationPoint(-3F, -10.9F, 0F);
+ setRotation(leftantenna1, -0.7504916F, -0.0698132F, -0.0698132F);
+ addChild(leftantenna1);
+
+ ModelRenderer rightantenna2 = new ModelRenderer(base, 36, 0);
+ rightantenna2.addBox(-1F, 0F, 0F, 1, 4, 1);
+ rightantenna2.setRotationPoint(4.6F, -12.2F, 3.4F);
+ setRotation(rightantenna2, -1.22173F, 0.4363323F, 0.0698132F);
+ addChild(rightantenna2);
+
+ ModelRenderer leftantenna2 = new ModelRenderer(base, 32, 0);
+ leftantenna2.mirror = true;
+ leftantenna2.addBox(0F, 0F, 0F, 1, 4, 1);
+ leftantenna2.setRotationPoint(-4.6F, -12.2F, 3.4F);
+ setRotation(leftantenna2, -1.22173F, -0.4363323F, -0.0698132F);
+ addChild(leftantenna2);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasFront.java b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasFront.java
new file mode 100644
index 000000000..4200a1e6f
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntennasFront.java
@@ -0,0 +1,44 @@
+package noppes.npcs.client.model.part.horns;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelAntennasFront extends ModelRenderer {
+
+ public ModelAntennasFront(ModelMPM base) {
+ super(base);
+ ModelRenderer rightantenna1 = new ModelRenderer(base, 36, 0);
+ rightantenna1.addBox(0F, 0F, 0F, 1, 4, 1);
+ rightantenna1.setRotationPoint(2F, -9.4F, -2F);
+ setRotation(rightantenna1, 0.4014257F, 0.0698132F, 0.0698132F);
+ addChild(rightantenna1);
+
+ ModelRenderer leftantenna1 = new ModelRenderer(base, 32, 0);
+ leftantenna1.mirror = true;
+ leftantenna1.addBox(-1F, 0F, 0F, 1, 4, 1);
+ leftantenna1.setRotationPoint(-2F, -9.4F, -2F);
+ setRotation(leftantenna1, 0.4014257F, -0.0698132F, -0.0698132F);
+ addChild(leftantenna1);
+
+ ModelRenderer rightantenna2 = new ModelRenderer(base, 36, 0);
+ rightantenna2.addBox(0F, 0F, 0F, 1, 4, 1);
+ rightantenna2.setRotationPoint(3F, -10.2F, -5.3F);
+ setRotation(rightantenna2, 1.22173F, -0.2094395F, 0.0698132F);
+ addChild(rightantenna2);
+
+ ModelRenderer leftantenna2 = new ModelRenderer(base, 32, 0);
+ leftantenna2.mirror = true;
+ leftantenna2.addBox(-1F, 0F, 0F, 1, 4, 1);
+ leftantenna2.setRotationPoint(-3F, -10.2F, -5.3F);
+ setRotation(leftantenna2, 1.22173F, 0.2094395F, -0.0698132F);
+ addChild(leftantenna2);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/horns/ModelAntlerHorns.java b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntlerHorns.java
new file mode 100644
index 000000000..83cc12118
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/horns/ModelAntlerHorns.java
@@ -0,0 +1,70 @@
+package noppes.npcs.client.model.part.horns;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelAntlerHorns extends ModelRenderer {
+
+ public ModelAntlerHorns(ModelMPM base) {
+ super(base);
+ ModelRenderer right_base_horn = new ModelRenderer(base, 58, 20);
+ right_base_horn.addBox(0F, -5F, 0F, 1, 6, 1);
+ right_base_horn.setRotationPoint(-2.5F, -6F, -1F);
+ setRotation(right_base_horn, 0F, 0F, -0.2F);
+ addChild(right_base_horn);
+ ModelRenderer right_horn1 = new ModelRenderer(base, 58, 20);
+ right_horn1.addBox(0F, -5F, 0F, 1, 5, 1);
+ right_horn1.setRotationPoint(0F, -4F, 0F);
+ setRotation(right_horn1, 1F, 0F, -1F);
+ right_base_horn.addChild(right_horn1);
+ ModelRenderer right_horn2 = new ModelRenderer(base, 58, 20);
+ right_horn2.addBox(0F, -4F, 0F, 1, 5, 1);
+ right_horn2.setRotationPoint(-0F, -6F, -0F);
+ setRotation(right_horn2, -0.5F, -0.5F, 0F);
+ right_base_horn.addChild(right_horn2);
+ ModelRenderer things1 = new ModelRenderer(base, 58, 20);
+ things1.addBox(0F, -5F, 0F, 1, 5, 1);
+ things1.setRotationPoint(0F, -3F, 1F);
+ setRotation(things1, 2F, 0.5f, 0.5f);
+ right_horn2.addChild(things1);
+ ModelRenderer things2 = new ModelRenderer(base, 58, 20);
+ things2.addBox(0F, -5F, 0F, 1, 5, 1);
+ things2.setRotationPoint(0F, -3F, 1F);
+ setRotation(things2, 2F, -0.5f, -0.5f);
+ right_horn2.addChild(things2);
+
+ ModelRenderer left_base_horn = new ModelRenderer(base, 58, 20);
+ left_base_horn.addBox(0F, -5F, 0F, 1, 6, 1);
+ left_base_horn.setRotationPoint(1.5F, -6F, -1F);
+ setRotation(left_base_horn, 0F, 0F, 0.2F);
+ addChild(left_base_horn);
+ ModelRenderer left_horn1 = new ModelRenderer(base, 58, 20);
+ left_horn1.addBox(0F, -5F, 0F, 1, 5, 1);
+ left_horn1.setRotationPoint(0F, -5F, 0F);
+ setRotation(left_horn1, 1F, 0F, 1F);
+ left_base_horn.addChild(left_horn1);
+ ModelRenderer left_horn2 = new ModelRenderer(base, 58, 20);
+ left_horn2.addBox(0F, -4F, 0F, 1, 5, 1);
+ left_horn2.setRotationPoint(0F, -6F, 1F);
+ setRotation(left_horn2, -0.5F, 0.5F, 0F);
+ left_base_horn.addChild(left_horn2);
+ ModelRenderer things8 = new ModelRenderer(base, 58, 20);
+ things8.addBox(0F, -5F, 0F, 1, 5, 1);
+ things8.setRotationPoint(0F, -3F, 1F);
+ setRotation(things8, 2F, -0.5f, -0.5f);
+ left_horn2.addChild(things8);
+ ModelRenderer things4 = new ModelRenderer(base, 58, 20);
+ things4.addBox(0F, -5F, 0F, 1, 5, 1);
+ things4.setRotationPoint(0F, -3F, 1F);
+ setRotation(things4, 2F, 0.5f, 0.5f);
+ left_horn2.addChild(things4);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/horns/ModelBullHorns.java b/src/main/java/noppes/npcs/client/model/part/horns/ModelBullHorns.java
new file mode 100644
index 000000000..a28b5ce11
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/horns/ModelBullHorns.java
@@ -0,0 +1,55 @@
+package noppes.npcs.client.model.part.horns;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelBullHorns extends ModelRenderer {
+
+ public ModelBullHorns(ModelMPM base) {
+ super(base);
+ ModelRenderer Left1 = new ModelRenderer(base, 36, 16);
+ Left1.mirror = true;
+ Left1.addBox(0F, 0F, 0F, 2, 2, 2);
+ Left1.setRotationPoint(4F, -8F, -2F);
+ addChild(Left1);
+
+ ModelRenderer Right1 = new ModelRenderer(base, 36, 16);
+ Right1.addBox(-3F, 0F, 0F, 2, 2, 2);
+ Right1.setRotationPoint(-3F, -8F, -2F);
+ addChild(Right1);
+
+ ModelRenderer Left2 = new ModelRenderer(base, 12, 16);
+ Left2.mirror = true;
+ Left2.addBox(0F, 0F, 0F, 2, 2, 2);
+ Left2.setRotationPoint(5F, -8F, -2F);
+ setRotation(Left2, 0.0371786F, 0.3346075F, -0.2602503F);
+ addChild(Left2);
+
+ ModelRenderer Right2 = new ModelRenderer(base, 12, 16);
+ Right2.addBox(-2F, 0F, 0F, 2, 2, 2);
+ Right2.setRotationPoint(-5F, -8F, -2F);
+ setRotation(Right2, 0.0371786F, -0.3346075F, 0.2602503F);
+ addChild(Right2);
+
+ ModelRenderer Left3 = new ModelRenderer(base, 13, 17);
+ Left3.mirror = true;
+ Left3.addBox(-1F, 0F, 0F, 2, 1, 1);
+ Left3.setRotationPoint(7F, -8F, -2F);
+ setRotation(Left3, 0.2602503F, 0.8551081F, -0.4089647F);
+ addChild(Left3);
+
+ ModelRenderer Right3 = new ModelRenderer(base, 13, 17);
+ Right3.addBox(-1F, 0F, 0F, 2, 1, 1);
+ Right3.setRotationPoint(-7F, -8F, -2F);
+ setRotation(Right3, -0.2602503F, -0.8551081F, 0.4089647F);
+ addChild(Right3);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs.java b/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs.java
index 817709eec..75dd2e915 100644
--- a/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs.java
+++ b/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs.java
@@ -4,6 +4,11 @@ import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
+import noppes.npcs.CustomNpcs;
+import noppes.npcs.ModelData;
+import noppes.npcs.constants.EnumAnimation;
+import noppes.npcs.entity.EntityNPCInterface;
+import noppes.npcs.entity.EntityCustomNpc;
public class ModelMermaidLegs extends ModelRenderer {
@@ -13,42 +18,47 @@ public class ModelMermaidLegs extends ModelRenderer {
ModelRenderer fin1;
ModelRenderer fin2;
+ public boolean isRiding = false;
+ public boolean isSneaking = false;
+ public boolean isSleeping = false;
+ public boolean isCrawling = false;
+
public ModelMermaidLegs(ModelBase base) {
- super(base);
- textureWidth = 64;
- textureHeight = 32;
+ super(base);
+ textureWidth = 64;
+ textureHeight = 32;
- top = new ModelRenderer(base, 0, 16);
- top.addBox(-2F, -2.5F, -2F, 8, 9, 4);
- top.setRotationPoint(-2F, 14F, 1F);
- setRotation(top, 0.26F, 0F, 0F);
+ top = new ModelRenderer(base, 0, 16);
+ top.addBox(-2F, -2.5F, -2F, 8, 9, 4);
+ top.setRotationPoint(-2F, 14F, 1F);
+ setRotation(top, 0.26F, 0F, 0F);
- middle = new ModelRenderer(base, 28, 0);
- middle.addBox(0F, 0F, 0F, 7, 6, 4);
- middle.setRotationPoint(-1.5F, 6.5F, -1F);
- setRotation(middle, 0.86f, 0F, 0F);
- top.addChild(middle);
+ middle = new ModelRenderer(base, 28, 0);
+ middle.addBox(0F, 0F, 0F, 7, 6, 4);
+ middle.setRotationPoint(-1.5F, 6.5F, -1F);
+ setRotation(middle, 0.86f, 0F, 0F);
+ top.addChild(middle);
- bottom = new ModelRenderer(base, 24, 16);
- bottom.addBox(0F, 0F, 0F, 6, 7, 3);
- bottom.setRotationPoint(0.5F, 6F, 0.5f);
- setRotation(bottom, 0.15f, 0F, 0F);
- middle.addChild(bottom);
+ bottom = new ModelRenderer(base, 24, 16);
+ bottom.addBox(0F, 0F, 0F, 6, 7, 3);
+ bottom.setRotationPoint(0.5F, 6F, 0.5f);
+ setRotation(bottom, 0.15f, 0F, 0F);
+ middle.addChild(bottom);
- fin1 = new ModelRenderer(base, 0, 0);
- fin1.addBox(0F, 0F, 0F, 5, 9, 1);
- fin1.setRotationPoint(0F, 4.5F, 1F);
- setRotation(fin1, 0.05f, 0, 0.5911399F);
- bottom.addChild(fin1);
-
- fin2 = new ModelRenderer(base, 0, 0);
- fin2.mirror = true;
- fin2.addBox(-5F, 0F, 0F, 5, 9, 1);
- fin2.setRotationPoint(6F, 4.5F, 1F);
- setRotation(fin2, 0.05f, 0, -0.591143F);
- bottom.addChild(fin2);
+ fin1 = new ModelRenderer(base, 0, 0);
+ fin1.addBox(0F, 0F, 0F, 5, 9, 1);
+ fin1.setRotationPoint(0F, 4.5F, 1F);
+ setRotation(fin1, 0.05f, 0, 0.5911399F);
+ bottom.addChild(fin1);
- }
+ fin2 = new ModelRenderer(base, 0, 0);
+ fin2.mirror = true;
+ fin2.addBox(-5F, 0F, 0F, 5, 9, 1);
+ fin2.setRotationPoint(6F, 4.5F, 1F);
+ setRotation(fin2, 0.05f, 0, -0.591143F);
+ bottom.addChild(fin2);
+
+ }
@Override
public void render(float f5) {
@@ -66,12 +76,21 @@ public class ModelMermaidLegs extends ModelRenderer {
public void setRotationAngles(float par1, float par2, float par3,
float par4, float par5, float par6, Entity entity) {
float ani = MathHelper.sin(par1 * 0.6662F);
+ top.setRotationPoint(-2F, 14F, 1F);
if(ani > 0.2)
ani /= 3f;
- top.rotateAngleX = 0.26F - ani * 0.2F * par2;
- middle.rotateAngleX = 0.86f - ani * 0.24F * par2;
- bottom.rotateAngleX = 0.15f - ani * 0.28F * par2;
- fin2.rotateAngleX = fin1.rotateAngleX = 0.05f - ani * 0.35F * par2;
-
+ if(this.isSleeping || this.isCrawling){
+ top.rotateAngleX = middle.rotateAngleX = bottom.rotateAngleX = fin2.rotateAngleX = 0;
+ }
+ else{
+ top.rotateAngleX = 0.26F - ani * 0.2F * par2;
+ middle.rotateAngleX = 0.86f - ani * 0.24F * par2;
+ bottom.rotateAngleX = 0.15f - ani * 0.28F * par2;
+ fin2.rotateAngleX = fin1.rotateAngleX = 0.05f - ani * 0.35F * par2;
+
+ if(entity.isSneaking()){
+ top.setRotationPoint(-2F, 12F, 6F);
+ }
+ }
}
}
diff --git a/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs2.java b/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs2.java
new file mode 100644
index 000000000..6af4e1fee
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/legs/ModelMermaidLegs2.java
@@ -0,0 +1,114 @@
+package noppes.npcs.client.model.part.legs;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.MathHelper;
+import noppes.npcs.ModelData;
+import noppes.npcs.constants.EnumAnimation;
+
+public class ModelMermaidLegs2 extends ModelRenderer {
+
+ ModelRenderer Tail1;
+ ModelRenderer Tail2;
+ ModelRenderer Tail3;
+ ModelRenderer Tail4;
+ ModelRenderer Tail5;
+ ModelRenderer Tail6;
+ ModelRenderer Tail7;
+ ModelRenderer Tail8;
+
+ public boolean isRiding = false;
+ public boolean isSneaking = false;
+ public boolean isSleeping = false;
+ public boolean isCrawling = false;
+
+ public ModelMermaidLegs2(ModelBase base) {
+ super(base);
+ textureWidth = 64;
+ textureHeight = 32;
+
+ Tail1 = new ModelRenderer(base, 0, 18);
+ Tail1.addBox(0F, 0F, 0F, 8, 6, 4);
+ Tail1.setRotationPoint(-4F, 12F, -2F);
+ setRotation(Tail1, 0.075F, 0F, 0F);
+
+ Tail2 = new ModelRenderer(base, 0, 18);
+ Tail2.addBox(0F, 0F, 0F, 6, 5, 3);
+ Tail2.setRotationPoint(1F, 5.5F, 0.3F);
+ setRotation(Tail2, 0.56F, 0F, 0F);
+ Tail1.addChild(Tail2);
+
+ Tail3 = new ModelRenderer(base, 0, 18);
+ Tail3.addBox(0F, 0F, 0F, 5, 5, 2);
+ Tail3.setRotationPoint(5.5F, 4F, 2.5F);
+ setRotation(Tail3, -0.37818F, 3.141593F, 0F);
+ Tail2.addChild(Tail3);
+
+ Tail4 = new ModelRenderer(base, 0, 20);
+ Tail4.addBox(0F, 0F, 0F, 4, 3, 1);
+ Tail4.setRotationPoint(0.5F, 4.5F, 0.5F);
+ setRotation(Tail4, -0.1f, 0, 0F);
+ Tail3.addChild(Tail4);
+
+ Tail5 = new ModelRenderer(base, 0, 20);
+ Tail5.addBox(0F, 0F, 0F, 1, 3, 1);
+ Tail5.setRotationPoint(-1F, 1.5F, 0F);
+ setRotation(Tail5, 0, 0, 0F);
+ Tail4.addChild(Tail5);
+
+ Tail6 = new ModelRenderer(base, 0, 20);
+ Tail6.addBox(0F, 0F, 0F, 1, 3, 1);
+ Tail6.setRotationPoint(-2F, 3F, 0F);
+ setRotation(Tail6, 0, 0, 0F);
+ Tail4.addChild(Tail6);
+
+ Tail7 = new ModelRenderer(base, 0, 20);
+ Tail7.addBox(0F, 0F, 0F, 1, 3, 1);
+ Tail7.setRotationPoint(4F, 1.5F, 0F);
+ setRotation(Tail7, 0, 0, 0F);
+ Tail4.addChild(Tail7);
+
+ Tail8 = new ModelRenderer(base, 0, 20);
+ Tail8.addBox(0F, 0F, 0F, 1, 3, 1);
+ Tail8.setRotationPoint(5F, 3F, 0F);
+ setRotation(Tail8, 0, 0, 0F);
+ Tail4.addChild(Tail8);
+
+ }
+
+ @Override
+ public void render(float f5) {
+ if (isHidden || !showModel)
+ return;
+ Tail1.render(f5);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+ public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6,
+ Entity entity) {
+ Tail1.setRotationPoint(-4F, 12F, -2F);
+ float ani = MathHelper.sin(par1 * 0.6662F);
+ if (ani > 0.2)
+ ani /= 3f;
+ if(this.isSleeping || this.isCrawling){
+ Tail1.rotateAngleX = Tail2.rotateAngleX = Tail3.rotateAngleX = Tail4.rotateAngleX = 0;
+ }
+ else{
+ Tail1.rotateAngleX = 0.2F - ani * 0.2F * par2;
+ Tail2.rotateAngleX = 0.56F - ani * 0.24F * par2;
+ Tail3.rotateAngleX = -0.4F + ani * 0.24F * par2;
+ Tail4.rotateAngleX = -0.1f + ani * 0.10F * par2;
+
+ if(entity.isSneaking()){
+ Tail1.setRotationPoint(-4F, 10F, 3F);
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/noppes/npcs/client/model/part/tails/ModelRodentTail.java b/src/main/java/noppes/npcs/client/model/part/tails/ModelRodentTail.java
new file mode 100644
index 000000000..98c3a1e3c
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/tails/ModelRodentTail.java
@@ -0,0 +1,32 @@
+package noppes.npcs.client.model.part.tails;
+
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelRodentTail extends ModelRenderer {
+ ModelRenderer Shape1;
+ ModelRenderer Shape2;
+
+ public ModelRodentTail(ModelMPM base) {
+ super(base);
+ Shape1 = new ModelRenderer(base, 0, 0);
+ Shape1.addBox(-0.5333334F, -0.4666667F, -1F, 1, 1, 6);
+ Shape1.setRotationPoint(0F, 0F, 2F);
+ setRotation(Shape1, -0.9294653F, 0F, 0F);
+ addChild(Shape1);
+
+ Shape2 = new ModelRenderer(base, 1, 1);
+ Shape2.addBox(-0.5F, -0.1666667F, 1F, 1, 1, 5);
+ Shape2.setRotationPoint(0F, 3F, 4F);
+ setRotation(Shape2, -0.4833219F, 0F, 0F);
+ addChild(Shape2);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+}
diff --git a/src/main/java/noppes/npcs/client/model/part/tails/ModelTailFin.java b/src/main/java/noppes/npcs/client/model/part/tails/ModelTailFin.java
new file mode 100644
index 000000000..b6d5f7def
--- /dev/null
+++ b/src/main/java/noppes/npcs/client/model/part/tails/ModelTailFin.java
@@ -0,0 +1,44 @@
+package noppes.npcs.client.model.part.tails;
+
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import noppes.npcs.client.model.ModelMPM;
+
+public class ModelTailFin extends ModelRenderer {
+
+ public ModelTailFin(ModelMPM base) {
+ super(base);
+ ModelRenderer Shape1 = new ModelRenderer(base, 0, 0);
+ Shape1.addBox(-2F, -2F, -2F, 3, 3, 8);
+ Shape1.setRotationPoint(0.5F, 0F, 1F);
+ setRotation(Shape1, -0.669215F, 0F, 0F);
+ addChild(Shape1);
+
+ ModelRenderer Shape2 = new ModelRenderer(base, 2, 2);
+ Shape2.addBox(-1F, -1F, 1F, 3, 2, 6);
+ Shape2.setRotationPoint(-0.5F, 3F, 4.5F);
+ setRotation(Shape2, -0.2602503F, 0F, 0F);
+ addChild(Shape2);
+
+ ModelRenderer Shape3 = new ModelRenderer(base, 0, 11);
+ Shape3.addBox(-1F, -1F, -1F, 3, 1, 6);
+ Shape3.setRotationPoint(0.5F, 5F, 12F);
+ setRotation(Shape3, 0F, 1.07818F, 0F);
+ addChild(Shape3);
+
+ ModelRenderer Shape4 = new ModelRenderer(base, 0, 11);
+ Shape4.mirror = true;
+ Shape4.addBox(-2F, 0F, -1F, 3, 1, 6);
+ Shape4.setRotationPoint(-0.5F, 4F, 12F);
+ setRotation(Shape4, 0F, -1.003822F, 0F);
+ addChild(Shape4);
+ }
+
+ private void setRotation(ModelRenderer model, float x, float y, float z) {
+ model.rotateAngleX = x;
+ model.rotateAngleY = y;
+ model.rotateAngleZ = z;
+ }
+
+
+}
diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java
index 3d390b075..87a322c92 100644
--- a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java
+++ b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java
@@ -10,6 +10,7 @@ import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import noppes.npcs.client.model.ModelMPM;
+import noppes.npcs.client.model.ModelMPM64;
import noppes.npcs.client.model.util.ModelRenderPassHelper;
import noppes.npcs.controllers.PixelmonHelper;
import noppes.npcs.entity.EntityCustomNpc;
@@ -23,11 +24,15 @@ public class RenderCustomNpc extends RenderNPCHumanMale{
private EntityLivingBase entity;
private ModelRenderPassHelper renderpass = new ModelRenderPassHelper();
-
+
public RenderCustomNpc() {
super(new ModelMPM(0), new ModelMPM(1), new ModelMPM(0.5f));
}
-
+
+ public RenderCustomNpc(int i) {
+ super(new ModelMPM64(0), new ModelMPM64(1), new ModelMPM64(0.5f));
+ }
+
@Override
public void renderPlayer(EntityNPCInterface npcInterface, double d, double d1, double d2, float f, float f1){
EntityCustomNpc npc = (EntityCustomNpc) npcInterface;
diff --git a/src/main/java/noppes/npcs/entity/EntityNPC64x64.java b/src/main/java/noppes/npcs/entity/EntityNPC64x64.java
new file mode 100644
index 000000000..894871b03
--- /dev/null
+++ b/src/main/java/noppes/npcs/entity/EntityNPC64x64.java
@@ -0,0 +1,18 @@
+package noppes.npcs.entity;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
+import noppes.npcs.CustomNpcs;
+import noppes.npcs.ModelData;
+import noppes.npcs.ModelPartData;
+import noppes.npcs.client.EntityUtil;
+
+public class EntityNPC64x64 extends EntityCustomNpc{
+
+ public EntityNPC64x64(World world) {
+ super(world);
+ display.setSkinTexture("customnpcs:textures/entity/humanmale/Steve64x32.png");
+ }
+}
diff --git a/src/main/java/noppes/npcs/items/ItemNpcWeaponInterface.java b/src/main/java/noppes/npcs/items/ItemNpcWeaponInterface.java
index 06317e83f..07744e9c3 100644
--- a/src/main/java/noppes/npcs/items/ItemNpcWeaponInterface.java
+++ b/src/main/java/noppes/npcs/items/ItemNpcWeaponInterface.java
@@ -21,6 +21,7 @@ public class ItemNpcWeaponInterface extends ItemSword implements ItemRenderInter
CustomNpcs.proxy.registerItem(this);
setCreativeTab(CustomItems.tabWeapon);
}
+
public void renderSpecial(){
GL11.glScalef(0.66f, 0.66f,0.66f);
GL11.glTranslatef(0.16f, 0.26f, 0.06f);
diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang
index bed7f8ecc..56d3a0c7d 100644
--- a/src/main/resources/assets/customnpcs/lang/en_US.lang
+++ b/src/main/resources/assets/customnpcs/lang/en_US.lang
@@ -126,6 +126,9 @@ remote.freeze=Freeze NPCs
spawner.entities=Entities
spawner.clones=Clones
+spawner.clones2=Clones 2
+spawner.clones3=Clones 3
+spawner.clones4=Clones 4
spawner.mobspawner=MobSpawner
spawner.mount=Mount by
spawner.mountplayer=Player mounts
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/BugTracker.png b/src/main/resources/assets/customnpcs/textures/cloak/BugTracker.png
new file mode 100644
index 000000000..ccfaceac9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/BugTracker.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Cobalt.png b/src/main/resources/assets/customnpcs/textures/cloak/Cobalt.png
new file mode 100644
index 000000000..639e6b151
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Cobalt.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png
new file mode 100644
index 000000000..7435f5630
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png
new file mode 100644
index 000000000..36835f010
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png
new file mode 100644
index 000000000..d645c37c9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png
new file mode 100644
index 000000000..473b71e5d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png
new file mode 100644
index 000000000..6fa909df5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png
new file mode 100644
index 000000000..9925678ef
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png
new file mode 100644
index 000000000..964736009
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png
new file mode 100644
index 000000000..26140e6b9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png
new file mode 100644
index 000000000..b471a1106
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png
new file mode 100644
index 000000000..850aadc42
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png
new file mode 100644
index 000000000..c7affa5a8
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png
new file mode 100644
index 000000000..ad415c3e4
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png
new file mode 100644
index 000000000..b05d7d6be
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png
new file mode 100644
index 000000000..40cd6204a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png
new file mode 100644
index 000000000..579d732bc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png
new file mode 100644
index 000000000..837643841
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/CowCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/CowCape.png
new file mode 100644
index 000000000..1b2399996
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/CowCape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/SheepCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/SheepCape.png
new file mode 100644
index 000000000..c8e811970
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/SheepCape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/ShroomCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/ShroomCape.png
new file mode 100644
index 000000000..881572963
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/ShroomCape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/SlimeCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/SlimeCape.png
new file mode 100644
index 000000000..7ac832cd5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/SlimeCape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png
new file mode 100644
index 000000000..94f6c840c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/dragoncape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/dragoncape.png
new file mode 100644
index 000000000..1c8c00ba1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/dragoncape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/eagle.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/eagle.png
new file mode 100644
index 000000000..9583d1d9c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/eagle.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/enchant.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/enchant.png
new file mode 100644
index 000000000..ab0336a01
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/enchant.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/heat.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/heat.png
new file mode 100644
index 000000000..4ab2b0799
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/heat.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/magma_cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/magma_cape.png
new file mode 100644
index 000000000..f6888a153
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/magma_cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/neon.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/neon.png
new file mode 100644
index 000000000..b40a35ba9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/neon.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/ripper.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/ripper.png
new file mode 100644
index 000000000..e56a8a460
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/ripper.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/skeleton.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/skeleton.png
new file mode 100644
index 000000000..181aa95aa
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Created/skeleton.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierI.png b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierI.png
new file mode 100644
index 000000000..72b38e01b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierI.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierII.png b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierII.png
new file mode 100644
index 000000000..95a5d0943
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierII.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIII.png b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIII.png
new file mode 100644
index 000000000..48c892d92
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIII.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIV.png b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIV.png
new file mode 100644
index 000000000..db67bdab6
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIV.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Ender Cloak.png b/src/main/resources/assets/customnpcs/textures/cloak/Ender Cloak.png
new file mode 100644
index 000000000..f78ef5754
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Ender Cloak.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Angel.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Angel.png
new file mode 100644
index 000000000..0bd73c2ec
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Angel.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Black.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Black.png
new file mode 100644
index 000000000..0cd22c2e3
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Black.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Blood.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Blood.png
new file mode 100644
index 000000000..ad579cdc0
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Blood.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Flame.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Flame.png
new file mode 100644
index 000000000..9370eb3d5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Flame.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/GoldSwirl.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/GoldSwirl.png
new file mode 100644
index 000000000..133143b4f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/GoldSwirl.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Key.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Key.png
new file mode 100644
index 000000000..7df45845c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Key.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Moon.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Moon.png
new file mode 100644
index 000000000..d1498700f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Moon.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Nightmare.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Nightmare.png
new file mode 100644
index 000000000..92872b242
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Nightmare.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pain.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pain.png
new file mode 100644
index 000000000..32b5bbad1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pain.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/PinkSwirl.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/PinkSwirl.png
new file mode 100644
index 000000000..5bc9a9f2d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/PinkSwirl.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pool.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pool.png
new file mode 100644
index 000000000..718f9a83f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pool.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pumpkin.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pumpkin.png
new file mode 100644
index 000000000..a16c346f5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Pumpkin.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Purple.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Purple.png
new file mode 100644
index 000000000..77c2cb44f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Rainbow.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Rainbow.png
new file mode 100644
index 000000000..e1a9f63a3
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Rainbow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png
new file mode 100644
index 000000000..c88505278
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/RedSwirl.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/RedSwirl.png
new file mode 100644
index 000000000..9ef6315fc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/RedSwirl.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Redstone.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Redstone.png
new file mode 100644
index 000000000..b03cec6cc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Redstone.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Skull.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Skull.png
new file mode 100644
index 000000000..fed7f0030
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Skull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Slaxer.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Slaxer.png
new file mode 100644
index 000000000..321340571
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Slaxer.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Sunsent.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Sunsent.png
new file mode 100644
index 000000000..5c4a21901
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Sunsent.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Vines.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Vines.png
new file mode 100644
index 000000000..ddc983841
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Vines.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Waves.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Waves.png
new file mode 100644
index 000000000..99972d2c0
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Waves.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Whisperer.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Whisperer.png
new file mode 100644
index 000000000..99dd4d078
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Whisperer.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererBlack.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererBlack.png
new file mode 100644
index 000000000..2a666d61a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererBlack.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererRed.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererRed.png
new file mode 100644
index 000000000..58d2e994a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererRed.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Wolf.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Wolf.png
new file mode 100644
index 000000000..1241688fc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Wolf.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiMaster.png
new file mode 100644
index 000000000..03167a852
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiMaster.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiTrain.png
new file mode 100644
index 000000000..60b419258
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiTrain.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak.png
new file mode 100644
index 000000000..72b38e01b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Markus.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Markus.png
new file mode 100644
index 000000000..a1d7a3f6e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Markus.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelMaster.png
new file mode 100644
index 000000000..b861222e9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelMaster.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelTrain.png
new file mode 100644
index 000000000..fc9c8aa2d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelTrain.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Radiance.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Radiance.png
new file mode 100644
index 000000000..d431209cd
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Radiance.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak.png
new file mode 100644
index 000000000..d32009d5d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2.png
new file mode 100644
index 000000000..d0a5f6356
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2Star.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2Star.png
new file mode 100644
index 000000000..9a1b9cdfa
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2Star.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavMaster.png
new file mode 100644
index 000000000..8e77436d0
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavMaster.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavTrain.png
new file mode 100644
index 000000000..5ba731d22
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavTrain.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/TheTierV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/TheTierV.png
new file mode 100644
index 000000000..00a832a08
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/TheTierV.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Theives.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Theives.png
new file mode 100644
index 000000000..25edf3af5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Theives.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Ultramarine.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Ultramarine.png
new file mode 100644
index 000000000..5f9d8182a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Ultramarine.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererBlack.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererBlack.png
new file mode 100644
index 000000000..7032a67d9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererBlack.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererGrey.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererGrey.png
new file mode 100644
index 000000000..869dbf813
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererGrey.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRed.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRed.png
new file mode 100644
index 000000000..dcd3c2a5d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRed.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRedWhite.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRedWhite.png
new file mode 100644
index 000000000..edd2fcb4e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRedWhite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererV.png
new file mode 100644
index 000000000..7a67bbf93
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererV.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererWhite.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererWhite.png
new file mode 100644
index 000000000..190e0016b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererWhite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Imperial Legion Cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Imperial Legion Cape.png
new file mode 100644
index 000000000..69ab98d6e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Imperial Legion Cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/JulianClark.png b/src/main/resources/assets/customnpcs/textures/cloak/JulianClark.png
new file mode 100644
index 000000000..949a966d5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/JulianClark.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/NewYears.png b/src/main/resources/assets/customnpcs/textures/cloak/NewYears.png
new file mode 100644
index 000000000..e4e42317b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/NewYears.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png
new file mode 100644
index 000000000..fda282903
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png
new file mode 100644
index 000000000..8d674d335
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png
new file mode 100644
index 000000000..128740951
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png
new file mode 100644
index 000000000..7327cfe57
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png
new file mode 100644
index 000000000..f4cc949e1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png
new file mode 100644
index 000000000..5675e0046
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Realms.png b/src/main/resources/assets/customnpcs/textures/cloak/Realms.png
new file mode 100644
index 000000000..0dae4b22d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Realms.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Royal Guard Cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Royal Guard Cape.png
new file mode 100644
index 000000000..d54c9d0ef
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Royal Guard Cape.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Scrolls.png b/src/main/resources/assets/customnpcs/textures/cloak/Scrolls.png
new file mode 100644
index 000000000..775425e76
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Scrolls.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Witches Cloak.png b/src/main/resources/assets/customnpcs/textures/cloak/Witches Cloak.png
new file mode 100644
index 000000000..819646518
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Witches Cloak.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/gui/menubgold.png b/src/main/resources/assets/customnpcs/textures/gui/menubgold.png
new file mode 100644
index 000000000..84a2dd38d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/gui/menubgold.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_Orange.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_Orange.png
new file mode 100644
index 000000000..d7db59eed
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_Orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_eyes.png
new file mode 100644
index 000000000..e99e79eb1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_pink.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_pink.png
new file mode 100644
index 000000000..8d1720631
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_teal.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_teal.png
new file mode 100644
index 000000000..adf184357
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/TecZombie_teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/bluecontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/bluecontrol.png
new file mode 100644
index 000000000..e48e9e99f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/bluecontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/orangecontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/orangecontrol.png
new file mode 100644
index 000000000..90805ccc8
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/orangecontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/pinkcontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/pinkcontrol.png
new file mode 100644
index 000000000..536b3f3b7
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/pinkcontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/redcontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/redcontrol.png
new file mode 100644
index 000000000..7b83108ab
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/redcontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/tealcontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/tealcontrol.png
new file mode 100644
index 000000000..048d6cd87
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/tealcontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/turquiosecontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/turquiosecontrol.png
new file mode 100644
index 000000000..ded3ba0d4
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/turquiosecontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Control/yellowcontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/Control/yellowcontrol.png
new file mode 100644
index 000000000..e5be40cde
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Control/yellowcontrol.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/blue.png
new file mode 100644
index 000000000..b478e8f3c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/darkblue.png
new file mode 100644
index 000000000..1b8609d47
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/ender_eyes.png
new file mode 100644
index 000000000..080440287
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/green.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/green.png
new file mode 100644
index 000000000..cc1f5cfbe
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/lightpurple.png
new file mode 100644
index 000000000..38a056796
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/old_ender_eyes.png
new file mode 100644
index 000000000..6f478110f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/orange.png
new file mode 100644
index 000000000..7a216d3a3
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/pink.png
new file mode 100644
index 000000000..8a6884a08
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purp.png
new file mode 100644
index 000000000..4d014d80c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purple.png
new file mode 100644
index 000000000..405498898
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/red.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/red.png
new file mode 100644
index 000000000..7f1ef04f3
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/teal.png
new file mode 100644
index 000000000..cf868b416
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/turqoise.png
new file mode 100644
index 000000000..0cfdcc1e7
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white.png
new file mode 100644
index 000000000..bb68a1ed3
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white_cry.png
new file mode 100644
index 000000000..6ad8dac17
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Eyes/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/yellow.png
new file mode 100644
index 000000000..0fc8fc0a0
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Eyes/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/blueFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/blueFull.png
new file mode 100644
index 000000000..867606a97
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/blueFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/darkblueFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/darkblueFull.png
new file mode 100644
index 000000000..bfaf2363d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/darkblueFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/greenFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/greenFull.png
new file mode 100644
index 000000000..d5e8e9a19
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/greenFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/orangeFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/orangeFull.png
new file mode 100644
index 000000000..d7ae0532f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/orangeFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/pinkfull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/pinkfull.png
new file mode 100644
index 000000000..582eb51a2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/pinkfull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/purpleFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/purpleFull.png
new file mode 100644
index 000000000..e9320e94d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/purpleFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/redFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/redFull.png
new file mode 100644
index 000000000..d04ea57a2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/redFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/tealFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/tealFull.png
new file mode 100644
index 000000000..aab8ca3b5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/tealFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/turquiseFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/turquiseFull.png
new file mode 100644
index 000000000..822090aeb
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/turquiseFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullControl/yellowFull.png b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/yellowFull.png
new file mode 100644
index 000000000..e0efca221
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullControl/yellowFull.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/blue.png
new file mode 100644
index 000000000..ea03dd29f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/darkblue.png
new file mode 100644
index 000000000..cf982a304
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/ender_eyes.png
new file mode 100644
index 000000000..7229b934f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/green.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/green.png
new file mode 100644
index 000000000..cc75c11ab
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lightpurple.png
new file mode 100644
index 000000000..31d4a3c03
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lime.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lime.png
new file mode 100644
index 000000000..1a9d5532b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/lime.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/old_ender_eyes.png
new file mode 100644
index 000000000..05d9386be
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/orange.png
new file mode 100644
index 000000000..ea69afbdd
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/pink.png
new file mode 100644
index 000000000..8afdba4f7
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purp.png
new file mode 100644
index 000000000..f4aaf9e68
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purple.png
new file mode 100644
index 000000000..71a8f15c1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/red.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/red.png
new file mode 100644
index 000000000..4a4444c18
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/teal.png
new file mode 100644
index 000000000..3dc1be55e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turqoise.png
new file mode 100644
index 000000000..5c702d6f5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turquiose.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turquiose.png
new file mode 100644
index 000000000..858ed9b0e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/turquiose.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white.png
new file mode 100644
index 000000000..2a4e76bfd
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white_cry.png
new file mode 100644
index 000000000..51ad79443
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/yellow.png
new file mode 100644
index 000000000..11639d80d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullEyes/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/blue.png
new file mode 100644
index 000000000..41d9d2835
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/darkblue.png
new file mode 100644
index 000000000..89b360e62
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/ender_eyes.png
new file mode 100644
index 000000000..55a131bd1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/green.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/green.png
new file mode 100644
index 000000000..9d4dd62ae
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/lightpurple.png
new file mode 100644
index 000000000..377404a2a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/old_ender_eyes.png
new file mode 100644
index 000000000..f80f3ccdb
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/orange.png
new file mode 100644
index 000000000..e87e12757
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/pink.png
new file mode 100644
index 000000000..501c43d8c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purp.png
new file mode 100644
index 000000000..8bd888567
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purple.png
new file mode 100644
index 000000000..14366c826
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/red.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/red.png
new file mode 100644
index 000000000..04740b74f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/teal.png
new file mode 100644
index 000000000..01ffd6a95
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/turqoise.png
new file mode 100644
index 000000000..bc51646e5
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white.png
new file mode 100644
index 000000000..70a53b808
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white_cry.png
new file mode 100644
index 000000000..4eedc1a73
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/yellow.png
new file mode 100644
index 000000000..3281349d9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullHigh/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/blue.png
new file mode 100644
index 000000000..fed5caf56
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/darkblue.png
new file mode 100644
index 000000000..81956cc26
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/ender_eyes.png
new file mode 100644
index 000000000..bbc018a12
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/gone.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/gone.png
new file mode 100644
index 000000000..35bf35702
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/gone.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/green.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/green.png
new file mode 100644
index 000000000..c72360429
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lightpurple.png
new file mode 100644
index 000000000..3823e1900
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lime.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lime.png
new file mode 100644
index 000000000..8d0d2ae91
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/lime.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/old_ender_eyes.png
new file mode 100644
index 000000000..ca2c0a521
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/orange.png
new file mode 100644
index 000000000..0b83c2792
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/pink.png
new file mode 100644
index 000000000..1aa00d627
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purp.png
new file mode 100644
index 000000000..a8fea5ec2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purple.png
new file mode 100644
index 000000000..bf2ce8588
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/red.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/red.png
new file mode 100644
index 000000000..681b3255d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/redorange.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/redorange.png
new file mode 100644
index 000000000..ad634dda7
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/redorange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/teal.png
new file mode 100644
index 000000000..7e7c4d934
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turqoise.png
new file mode 100644
index 000000000..0bdf1972d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turquiose.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turquiose.png
new file mode 100644
index 000000000..1dd1f601d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/turquiose.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white.png
new file mode 100644
index 000000000..c716b6b4a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white_cry.png
new file mode 100644
index 000000000..7a86f0619
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/FullLow/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/yellow.png
new file mode 100644
index 000000000..fc7f0e63d
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/FullLow/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/blue.png
new file mode 100644
index 000000000..dee4768a2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/fire.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/fire.png
new file mode 100644
index 000000000..27d42f182
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/fire.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/green.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/green.png
new file mode 100644
index 000000000..a46f3333e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/pink.png
new file mode 100644
index 000000000..e593a531e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/purple.png
new file mode 100644
index 000000000..eec419ba1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/red.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/red.png
new file mode 100644
index 000000000..fc4ed784c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/white.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/white.png
new file mode 100644
index 000000000..3be647529
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/yellow.png
new file mode 100644
index 000000000..495db9f2a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HandOverlay/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/blue.png
new file mode 100644
index 000000000..bc9a16569
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/darkblue.png
new file mode 100644
index 000000000..698805475
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/ender_eyes.png
new file mode 100644
index 000000000..831e1d23b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/green.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/green.png
new file mode 100644
index 000000000..a7055f831
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/lightpurple.png
new file mode 100644
index 000000000..6f18d283c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/old_ender_eyes.png
new file mode 100644
index 000000000..f36edc020
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/orange.png
new file mode 100644
index 000000000..b5ce0f707
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/pink.png
new file mode 100644
index 000000000..a0b5f532e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purp.png
new file mode 100644
index 000000000..6a081c9a6
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purple.png
new file mode 100644
index 000000000..168f31ca8
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/red.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/red.png
new file mode 100644
index 000000000..cf3c7f049
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/teal.png
new file mode 100644
index 000000000..f80b16e45
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/turqoise.png
new file mode 100644
index 000000000..78502ef80
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white.png
new file mode 100644
index 000000000..61966cd6b
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white_cry.png
new file mode 100644
index 000000000..d79cde1fb
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/yellow.png
new file mode 100644
index 000000000..c2d88316e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/HighEyes/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/BlueIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/BlueIgnite.png
new file mode 100644
index 000000000..e61a88fbc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/BlueIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/OrangeIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/OrangeIgnite.png
new file mode 100644
index 000000000..0bc740524
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/OrangeIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PinkIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PinkIgnite.png
new file mode 100644
index 000000000..22fc46f37
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PinkIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PurpleIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PurpleIgnite.png
new file mode 100644
index 000000000..eda8059d4
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/PurpleIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/RedIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/RedIgnite.png
new file mode 100644
index 000000000..67652f8f7
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/RedIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TealIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TealIgnite.png
new file mode 100644
index 000000000..4f1698ef9
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TealIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TurquioseIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TurquioseIgnite.png
new file mode 100644
index 000000000..b555a70e2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/TurquioseIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/WhiteIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/WhiteIgnite.png
new file mode 100644
index 000000000..2290d469a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/WhiteIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Ignite/YellowIgnite.png b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/YellowIgnite.png
new file mode 100644
index 000000000..7361fb132
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Ignite/YellowIgnite.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/blue.png
new file mode 100644
index 000000000..8b5252269
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/darkblue.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/darkblue.png
new file mode 100644
index 000000000..956ca174e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/darkblue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/ender_eyes.png
new file mode 100644
index 000000000..da3831673
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/green.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/green.png
new file mode 100644
index 000000000..9709dcb10
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/lightpurple.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/lightpurple.png
new file mode 100644
index 000000000..6e21506fa
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/lightpurple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/old_ender_eyes.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/old_ender_eyes.png
new file mode 100644
index 000000000..94a415504
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/old_ender_eyes.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/orange.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/orange.png
new file mode 100644
index 000000000..0b1c79801
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/pink.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/pink.png
new file mode 100644
index 000000000..00133aa24
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purp.png
new file mode 100644
index 000000000..56116344f
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purple.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purple.png
new file mode 100644
index 000000000..2ccf87d18
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/red.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/red.png
new file mode 100644
index 000000000..f80c6f67e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/teal.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/teal.png
new file mode 100644
index 000000000..43aec1f29
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/tuquiose.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/tuquiose.png
new file mode 100644
index 000000000..f706aeb46
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/tuquiose.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/turqoise.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/turqoise.png
new file mode 100644
index 000000000..bcdbbb5a2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/turqoise.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white.png
new file mode 100644
index 000000000..3c846eb2c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white_cry.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white_cry.png
new file mode 100644
index 000000000..509d17a6e
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/white_cry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/whitecry.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/whitecry.png
new file mode 100644
index 000000000..a9cd4ad2c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/whitecry.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/yellow.png
new file mode 100644
index 000000000..85ff19dbb
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/LowEyes/yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Blue.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Blue.png
new file mode 100644
index 000000000..e70ad69c2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Green.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Green.png
new file mode 100644
index 000000000..25c42bd31
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Lime.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Lime.png
new file mode 100644
index 000000000..ed0e185ea
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Lime.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Orange.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Orange.png
new file mode 100644
index 000000000..22a9ac883
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Orange.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Pink.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Pink.png
new file mode 100644
index 000000000..5b57a1247
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Pink.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Purple.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Purple.png
new file mode 100644
index 000000000..99e4cf2bc
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Purple.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Red.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Red.png
new file mode 100644
index 000000000..fea5a0ffe
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Red.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Teal.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Teal.png
new file mode 100644
index 000000000..821157f54
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Teal.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/Yellow.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Yellow.png
new file mode 100644
index 000000000..763a47696
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/Yellow.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/transform.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/transform.png
new file mode 100644
index 000000000..c1c2ea91a
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/transform.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/Magic/white.png b/src/main/resources/assets/customnpcs/textures/overlays/Magic/white.png
new file mode 100644
index 000000000..cd3743f46
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/Magic/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/blue.png b/src/main/resources/assets/customnpcs/textures/overlays/blue.png
new file mode 100644
index 000000000..512dd4c0c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/blue.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/gone.png b/src/main/resources/assets/customnpcs/textures/overlays/gone.png
new file mode 100644
index 000000000..35bf35702
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/gone.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/green.png b/src/main/resources/assets/customnpcs/textures/overlays/green.png
new file mode 100644
index 000000000..6725e50c1
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/green.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/purp.png b/src/main/resources/assets/customnpcs/textures/overlays/purp.png
new file mode 100644
index 000000000..4d014d80c
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/purp.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/taken.png b/src/main/resources/assets/customnpcs/textures/overlays/taken.png
new file mode 100644
index 000000000..508a51534
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/taken.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/transform.png b/src/main/resources/assets/customnpcs/textures/overlays/transform.png
new file mode 100644
index 000000000..0bbd0cee2
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/transform.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/white.png b/src/main/resources/assets/customnpcs/textures/overlays/white.png
new file mode 100644
index 000000000..4451d49c4
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/white.png differ
diff --git a/src/main/resources/assets/customnpcs/textures/overlays/yellowcontrol.png b/src/main/resources/assets/customnpcs/textures/overlays/yellowcontrol.png
new file mode 100644
index 000000000..e5be40cde
Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/overlays/yellowcontrol.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin1.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin1.png
index cc5c92c54..580504f45 100644
Binary files a/src/main/resources/assets/moreplayermodels/textures/fin/fin1.png and b/src/main/resources/assets/moreplayermodels/textures/fin/fin1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin2.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin2.png
new file mode 100644
index 000000000..2173a0886
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/fin/fin2.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin3.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin3.png
new file mode 100644
index 000000000..045242495
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/fin/fin3.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin4.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin4.png
new file mode 100644
index 000000000..41ed97bb5
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/fin/fin4.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin5.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin5.png
new file mode 100644
index 000000000..8947cad17
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/fin/fin5.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/fin/fin6.png b/src/main/resources/assets/moreplayermodels/textures/fin/fin6.png
new file mode 100644
index 000000000..288b22a1a
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/fin/fin6.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/hair/mohawk2.png b/src/main/resources/assets/moreplayermodels/textures/hair/mohawk2.png
new file mode 100644
index 000000000..6467016c1
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/hair/mohawk2.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/hair/mohawk3.png b/src/main/resources/assets/moreplayermodels/textures/hair/mohawk3.png
new file mode 100644
index 000000000..19f3c59ba
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/hair/mohawk3.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/horns/antennas.png b/src/main/resources/assets/moreplayermodels/textures/horns/antennas.png
new file mode 100644
index 000000000..87fe86248
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/horns/antennas.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/horns/antlers.png b/src/main/resources/assets/moreplayermodels/textures/horns/antlers.png
new file mode 100644
index 000000000..9f1dc0406
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/horns/antlers.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/horns/bull.png b/src/main/resources/assets/moreplayermodels/textures/horns/bull.png
new file mode 100644
index 000000000..b2bf127de
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/horns/bull.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/skirt/skirt1.png b/src/main/resources/assets/moreplayermodels/textures/skirt/skirt1.png
new file mode 100644
index 000000000..021c6653d
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/skirt/skirt1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/snout/beak1.png b/src/main/resources/assets/moreplayermodels/textures/snout/beak1.png
new file mode 100644
index 000000000..5817706a3
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/snout/beak1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/tail/fin1.png b/src/main/resources/assets/moreplayermodels/textures/tail/fin1.png
new file mode 100644
index 000000000..39eaf3b60
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/tail/fin1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/tail/rodent1.png b/src/main/resources/assets/moreplayermodels/textures/tail/rodent1.png
new file mode 100644
index 000000000..de3b6a289
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/tail/rodent1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing1.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing1.png
index e9bce91ac..2dc8e3cca 100644
Binary files a/src/main/resources/assets/moreplayermodels/textures/wings/wing1.png and b/src/main/resources/assets/moreplayermodels/textures/wings/wing1.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing10.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing10.png
new file mode 100644
index 000000000..561bb7ec9
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing10.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing11.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing11.png
new file mode 100644
index 000000000..eb19442a6
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing11.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing12.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing12.png
new file mode 100644
index 000000000..1278af655
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing12.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing13.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing13.png
new file mode 100644
index 000000000..f95856911
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing13.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing2.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing2.png
index 14f93cb99..3b745b8b7 100644
Binary files a/src/main/resources/assets/moreplayermodels/textures/wings/wing2.png and b/src/main/resources/assets/moreplayermodels/textures/wings/wing2.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing3.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing3.png
index acfc37ffa..4328fc4b9 100644
Binary files a/src/main/resources/assets/moreplayermodels/textures/wings/wing3.png and b/src/main/resources/assets/moreplayermodels/textures/wings/wing3.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing4.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing4.png
new file mode 100644
index 000000000..0df14321e
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing4.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing5.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing5.png
new file mode 100644
index 000000000..0a446584c
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing5.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing6.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing6.png
new file mode 100644
index 000000000..9bbdb6bc7
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing6.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing7.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing7.png
new file mode 100644
index 000000000..ad147a0cf
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing7.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing8.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing8.png
new file mode 100644
index 000000000..b0f39a303
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing8.png differ
diff --git a/src/main/resources/assets/moreplayermodels/textures/wings/wing9.png b/src/main/resources/assets/moreplayermodels/textures/wings/wing9.png
new file mode 100644
index 000000000..64c3193a8
Binary files /dev/null and b/src/main/resources/assets/moreplayermodels/textures/wings/wing9.png differ