Add initial implementation of the Armory Armor mod with custom military armor sets, rendering logic, and Gradle build scripts.
45
.gitignore
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Gradle
|
||||||
|
.gradle/
|
||||||
|
build/
|
||||||
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
# IDE - IntelliJ IDEA
|
||||||
|
.idea/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
out/
|
||||||
|
!**/src/main/**/out/
|
||||||
|
!**/src/test/**/out/
|
||||||
|
|
||||||
|
# IDE - Eclipse
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
bin/
|
||||||
|
!**/src/main/**/bin/
|
||||||
|
!**/src/test/**/bin/
|
||||||
|
|
||||||
|
# IDE - VS Code
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# OS specific
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Runtime
|
||||||
|
run/
|
||||||
|
run-server/
|
||||||
|
run-client/
|
||||||
|
|
||||||
|
# Local configuration
|
||||||
|
local.properties
|
||||||
35
README.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Armory Armor
|
||||||
|
|
||||||
|
Мод для Minecraft с военной броней.
|
||||||
|
|
||||||
|
## Добавленные сеты брони
|
||||||
|
|
||||||
|
- **SEAL** — экипировка спецназа
|
||||||
|
- **USMC** — броня морской пехоты
|
||||||
|
- **Chicom** — китайская броня
|
||||||
|
- **Al Quaida** — террористический сет
|
||||||
|
- **Chechen** — чеченская броня
|
||||||
|
- **Islamic** — исламская броня
|
||||||
|
|
||||||
|
## Сборка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew build
|
||||||
|
```
|
||||||
|
|
||||||
|
Готовый мод будет в `build/libs/`.
|
||||||
|
|
||||||
|
## Рендер
|
||||||
|
Реализован собственный рендер для брони, которая наслаивается на скин.
|
||||||
|
|
||||||
|
`top.azimkin.armoryarmor.procedures.RenderEventProcedure#computeArmorItems` - добавление новых сетов
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
- [ ] Почистить мусорные файлы
|
||||||
|
- [ ] Поудалять говно-код из mcreator'а
|
||||||
|
- [ ] Система паков
|
||||||
|
- [ ] Более чистое создание новых сетов
|
||||||
|
- [ ] Удобные классы конфигурации
|
||||||
|
|
||||||
|
Думаю шанс на реализацию этих дел крайне мал :)
|
||||||
40
armory_armor.gradle
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = "https://cursemaven.com"
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
url = 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// проверка работы на женских скинах
|
||||||
|
implementation fg.deobf("curse.maven:in-game-account-switcher-232676:5457030")
|
||||||
|
// вроде были какие-то баги
|
||||||
|
implementation fg.deobf("curse.maven:immediatelyfast-686911:6312293")
|
||||||
|
// рендер ишуес
|
||||||
|
implementation fg.deobf("curse.maven:embeddium-908741:5681725")
|
||||||
|
implementation fg.deobf("curse.maven:oculus-581495:6020952")
|
||||||
|
|
||||||
|
// 3д-броня
|
||||||
|
implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.20.1:4.4.9')
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft {
|
||||||
|
runs {
|
||||||
|
client {
|
||||||
|
property 'mixin.env.remapRefMap', 'true'
|
||||||
|
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
property 'mixin.env.remapRefMap', 'true'
|
||||||
|
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
|
||||||
|
}
|
||||||
|
data {
|
||||||
|
property 'mixin.env.remapRefMap', 'true'
|
||||||
|
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
64
build.gradle
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
plugins {
|
||||||
|
id 'eclipse'
|
||||||
|
id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
|
||||||
|
id 'org.spongepowered.mixin' version '0.7.+'
|
||||||
|
}
|
||||||
|
|
||||||
|
version = '1.2.0'
|
||||||
|
group = 'dev.azimkin.armoryarmor'
|
||||||
|
archivesBaseName = 'ArmoryArmor'
|
||||||
|
def mod_id = "armory_armor"
|
||||||
|
|
||||||
|
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
|
||||||
|
|
||||||
|
minecraft {
|
||||||
|
mappings channel: 'official', version: '1.20.1'
|
||||||
|
|
||||||
|
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
|
||||||
|
copyIdeResources = true
|
||||||
|
|
||||||
|
runs {
|
||||||
|
client {
|
||||||
|
def mcreatorJvmOptions = System.getenv('MCREATOR_JVM_OPTIONS')
|
||||||
|
if (mcreatorJvmOptions) {
|
||||||
|
jvmArgs += mcreatorJvmOptions.split("\\s+").findAll { it.trim() }.toList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
}
|
||||||
|
|
||||||
|
configureEach {
|
||||||
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
|
property 'forge.logging.markers', 'REGISTRIES'
|
||||||
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
|
mods {
|
||||||
|
examplemod {
|
||||||
|
source sourceSets.main
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
|
||||||
|
|
||||||
|
minecraft 'net.minecraftforge:forge:1.20.1-47.3.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
mixin {
|
||||||
|
add sourceSets.main, "${mod_id}.refmap.json"
|
||||||
|
|
||||||
|
config "${mod_id}.mixins.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
|
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: 'armory_armor.gradle'
|
||||||
|
|
||||||
2
gradle.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
org.gradle.jvmargs=-Xmx3G
|
||||||
|
org.gradle.daemon=false
|
||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
7
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
244
gradlew
vendored
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
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" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
92
gradlew.bat
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
13
settings.gradle
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
gradlePluginPortal()
|
||||||
|
maven {
|
||||||
|
name = 'MinecraftForge'
|
||||||
|
url = 'https://maven.minecraftforge.net/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
|
||||||
|
}
|
||||||
82
src/main/java/top/azimkin/armoryarmor/ArmoryArmorMod.java
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
package top.azimkin.armoryarmor;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.init.ArmoryArmorModTabs;
|
||||||
|
import top.azimkin.armoryarmor.init.ArmoryArmorModItems;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
|
||||||
|
import net.minecraftforge.network.simple.SimpleChannel;
|
||||||
|
import net.minecraftforge.network.NetworkRegistry;
|
||||||
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
import net.minecraftforge.fml.util.thread.SidedThreadGroups;
|
||||||
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.event.TickEvent;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.AbstractMap;
|
||||||
|
|
||||||
|
@Mod("armory_armor")
|
||||||
|
public class ArmoryArmorMod {
|
||||||
|
public static final Logger LOGGER = LogManager.getLogger(ArmoryArmorMod.class);
|
||||||
|
public static final String MODID = "armory_armor";
|
||||||
|
|
||||||
|
public ArmoryArmorMod() {
|
||||||
|
// Start of user code block mod constructor
|
||||||
|
// End of user code block mod constructor
|
||||||
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
|
||||||
|
ArmoryArmorModItems.REGISTRY.register(bus);
|
||||||
|
|
||||||
|
ArmoryArmorModTabs.REGISTRY.register(bus);
|
||||||
|
|
||||||
|
// Start of user code block mod init
|
||||||
|
// End of user code block mod init
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start of user code block mod methods
|
||||||
|
// End of user code block mod methods
|
||||||
|
private static final String PROTOCOL_VERSION = "1";
|
||||||
|
public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation(MODID, MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
|
||||||
|
private static int messageID = 0;
|
||||||
|
|
||||||
|
public static <T> void addNetworkMessage(Class<T> messageType, BiConsumer<T, FriendlyByteBuf> encoder, Function<FriendlyByteBuf, T> decoder, BiConsumer<T, Supplier<NetworkEvent.Context>> messageConsumer) {
|
||||||
|
PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer);
|
||||||
|
messageID++;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Collection<AbstractMap.SimpleEntry<Runnable, Integer>> workQueue = new ConcurrentLinkedQueue<>();
|
||||||
|
|
||||||
|
public static void queueServerWork(int tick, Runnable action) {
|
||||||
|
if (Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER)
|
||||||
|
workQueue.add(new AbstractMap.SimpleEntry<>(action, tick));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void tick(TickEvent.ServerTickEvent event) {
|
||||||
|
if (event.phase == TickEvent.Phase.END) {
|
||||||
|
List<AbstractMap.SimpleEntry<Runnable, Integer>> actions = new ArrayList<>();
|
||||||
|
workQueue.forEach(work -> {
|
||||||
|
work.setValue(work.getValue() - 1);
|
||||||
|
if (work.getValue() == 0)
|
||||||
|
actions.add(work);
|
||||||
|
});
|
||||||
|
actions.forEach(e -> e.getKey().run());
|
||||||
|
workQueue.removeAll(actions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package top.azimkin.armoryarmor.armor;
|
||||||
|
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class ModernArmorMaterial implements ArmorMaterial {
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public ModernArmorMaterial(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.@NotNull Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.@NotNull Type type) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package top.azimkin.armoryarmor.client;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.platform.NativeImage;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
public class ArmorTextureManager {
|
||||||
|
private final Map<String, PreparableTexture> textures = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
public ResourceLocation getTexture(ResourceLocation playerSkin, ArmorData armorSkin) {
|
||||||
|
//textures.clear();
|
||||||
|
PreparableTexture data = textures.get(getKey(playerSkin, armorSkin.resourceLocation()));
|
||||||
|
return data == null ? prepareTextureInMap(playerSkin, armorSkin) : data.rl();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResourceLocation prepareTextureInMap(ResourceLocation playerSkin, ArmorData armorSkin) {
|
||||||
|
try (NativeImage img = TextureUtil.fromResourceLocation(playerSkin);
|
||||||
|
NativeImage img2 = TextureUtil.fromResourceLocation(armorSkin.resourceLocation());) {
|
||||||
|
if (img == null || img2 == null) return playerSkin;
|
||||||
|
BufferedImage first = TextureUtil.toBufferedImage(img),
|
||||||
|
second = TextureUtil.toBufferedImage(img2);
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.LEFT_FEET);
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.RIGHT_FEET);
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.BODY);
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.LEFT_HAND);
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.RIGHT_HAND);
|
||||||
|
if (armorSkin.hideHat)
|
||||||
|
TextureUtil.clearLayerPart(first, TextureUtil.SkinLayer.HAT);
|
||||||
|
ResourceLocation rl = TextureUtil.toResourceLocation(TextureUtil.combine(first, second));
|
||||||
|
textures.put(getKey(playerSkin, armorSkin.resourceLocation()), new PreparableTexture(rl, false));
|
||||||
|
return rl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getKey(ResourceLocation playerSkin, ResourceLocation armorSkin) {
|
||||||
|
return playerSkin.toString() + "|" + armorSkin.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public record PreparableTexture(ResourceLocation rl, boolean isCompleted) {}
|
||||||
|
public record ArmorData(ResourceLocation resourceLocation, boolean hideHat) {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package top.azimkin.armoryarmor.client;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class InfoHolder {
|
||||||
|
public static ResourceLocation TOP_TEXTURE = null;
|
||||||
|
}
|
||||||
165
src/main/java/top/azimkin/armoryarmor/client/TextureUtil.java
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
package top.azimkin.armoryarmor.client;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
|
import com.mojang.blaze3d.platform.NativeImage;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.texture.AbstractTexture;
|
||||||
|
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||||
|
import net.minecraft.client.renderer.texture.HttpTexture;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.server.packs.resources.Resource;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import org.lwjgl.opengl.GL12;
|
||||||
|
import org.lwjgl.system.MemoryUtil;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.*;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class TextureUtil {
|
||||||
|
public static BufferedImage toBufferedImage(NativeImage image) {
|
||||||
|
try {
|
||||||
|
return ImageIO.read(new ByteArrayInputStream(image.asByteArray()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NativeImage fromResourceLocation(ResourceLocation location) {
|
||||||
|
return getNativeImageFromTexture(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NativeImage getNativeImageFromTexture(ResourceLocation location) {
|
||||||
|
Optional<Resource> r = Minecraft.getInstance().getResourceManager().getResource(location);
|
||||||
|
if (r.isEmpty()) {
|
||||||
|
try {
|
||||||
|
return getNativeImageFromSkin(location);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try (InputStream is = r.get().open()) {
|
||||||
|
return NativeImage.read(is);
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static File getFileFromHttpTexture(HttpTexture texture) {
|
||||||
|
Class<HttpTexture> clazz = HttpTexture.class;
|
||||||
|
Field[] flds = clazz.getDeclaredFields();
|
||||||
|
Field field = Arrays.stream(flds)
|
||||||
|
.filter(f -> f.getType() == File.class)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if (field == null) return null;
|
||||||
|
try {
|
||||||
|
field.setAccessible(true);
|
||||||
|
return (File) field.get(texture);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NativeImage getNativeImageFromSkin(ResourceLocation location) {
|
||||||
|
AbstractTexture texture = Minecraft.getInstance().getTextureManager().getTexture(location);
|
||||||
|
if (texture instanceof HttpTexture httpTexture) {
|
||||||
|
File f = getFileFromHttpTexture(httpTexture);
|
||||||
|
if (f == null) return null;
|
||||||
|
try {
|
||||||
|
return NativeImage.read(Files.newInputStream(f.toPath()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
/*int texId = texture.getId();
|
||||||
|
GlStateManager._bindTexture(texId);
|
||||||
|
|
||||||
|
int width = 64; // standard skin width
|
||||||
|
int height = 64; // standard skin height
|
||||||
|
|
||||||
|
ByteBuffer buffer = MemoryUtil.memAlloc(width * height * 4);
|
||||||
|
GL11.glGetTexImage(GL11.GL_TEXTURE_2D, 0, GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, buffer);
|
||||||
|
|
||||||
|
byte[] bytes = new byte[buffer.remaining()];
|
||||||
|
buffer.get(bytes);
|
||||||
|
MemoryUtil.memFree(buffer);
|
||||||
|
|
||||||
|
// Convert bytes to NativeImage if needed
|
||||||
|
NativeImage image = new NativeImage(width, height, false);
|
||||||
|
for (int y = 0; y < height; y++) {
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
int i = (y * width + x) * 4;
|
||||||
|
|
||||||
|
int b = buffer.get(i) & 0xFF;
|
||||||
|
int g = buffer.get(i+1) & 0xFF;
|
||||||
|
int r = buffer.get(i+2) & 0xFF;
|
||||||
|
int a = buffer.get(i+3) & 0xFF;
|
||||||
|
|
||||||
|
int argb = (a << 24) | (r << 16) | (g << 8) | b;
|
||||||
|
image.setPixelRGBA(x, y, argb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MemoryUtil.memFree(buffer);
|
||||||
|
return image;*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage combine(BufferedImage image1, BufferedImage image2) {
|
||||||
|
Graphics2D g2d = image1.createGraphics();
|
||||||
|
g2d.drawImage(image2, 0, 0, image1.getWidth(), image1.getHeight(), null);
|
||||||
|
g2d.dispose();
|
||||||
|
return image1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void clearLayerPart(BufferedImage image, SkinLayer layer) {
|
||||||
|
//Graphics2D g2d = image.createGraphics();
|
||||||
|
//g2d.setComposite(AlphaComposite.Clear);
|
||||||
|
clearArea(image, layer.firstArea);
|
||||||
|
clearArea(image, layer.secondArea);
|
||||||
|
//g2d.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void clearArea(BufferedImage image, Area area) {
|
||||||
|
for (int x = area.x1; x < area.x2; x++) {
|
||||||
|
for (int y = area.y1; y < area.y2; y++) {
|
||||||
|
image.setRGB(x, y, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//g2d.fillRect(area.x1, area.y1, area.x1-area.x2, area.y1-area.y2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResourceLocation toResourceLocation(BufferedImage image) {
|
||||||
|
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||||
|
try {
|
||||||
|
ImageIO.write(image, "png", stream);
|
||||||
|
return Minecraft.getInstance().getTextureManager()
|
||||||
|
.register("armory_armor_custom", new DynamicTexture(NativeImage.read(stream.toByteArray())));
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SkinLayer {
|
||||||
|
LEFT_HAND(new Area(52, 48, 59, 51), new Area(48, 52, 63, 63)),
|
||||||
|
RIGHT_HAND(new Area(44, 32, 51, 35), new Area(40, 36, 55, 47)),
|
||||||
|
BODY(new Area(20, 32, 35, 35), new Area(16, 36, 39, 47)),
|
||||||
|
LEFT_FEET(new Area(4, 48, 11, 51), new Area(0, 52, 15, 63)),
|
||||||
|
RIGHT_FEET(new Area(4, 32, 11, 35), new Area(0, 36, 15, 47)),
|
||||||
|
HAT(new Area(40, 0, 55, 7), new Area(32, 8, 63, 15));
|
||||||
|
public final Area firstArea, secondArea;
|
||||||
|
SkinLayer(Area firstArea, Area secondArea) {
|
||||||
|
this.firstArea = firstArea;
|
||||||
|
this.secondArea = secondArea;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public record Area(int x1, int y1, int x2, int y2) {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.ChicomModel;
|
||||||
|
import top.azimkin.armoryarmor.item.ChicomItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class ChicomArmorRenderer extends GeoArmorRenderer<ChicomItem> {
|
||||||
|
public ChicomArmorRenderer() {
|
||||||
|
super(new ChicomModel());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||||
|
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||||
|
|
||||||
|
public class FixedPlayerRender extends PlayerRenderer {
|
||||||
|
public FixedPlayerRender(EntityRendererProvider.Context context, boolean p_174558_) {
|
||||||
|
super(context, p_174558_);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.SealarmorModel;
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class SealarmorArmorRenderer extends GeoArmorRenderer<SealarmorItem> {
|
||||||
|
public SealarmorArmorRenderer() {
|
||||||
|
super(new SealarmorModel());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.Sealarmorhelmet2Model;
|
||||||
|
import top.azimkin.armoryarmor.item.Sealarmorhelmet2Item;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class Sealarmorhelmet2ArmorRenderer extends GeoArmorRenderer<Sealarmorhelmet2Item> {
|
||||||
|
public Sealarmorhelmet2ArmorRenderer() {
|
||||||
|
super(new Sealarmorhelmet2Model());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.SealarmorhelmetModel;
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorhelmetItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class SealarmorhelmetArmorRenderer extends GeoArmorRenderer<SealarmorhelmetItem> {
|
||||||
|
public SealarmorhelmetArmorRenderer() {
|
||||||
|
super(new SealarmorhelmetModel());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.UsmcarmorModel;
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class UsmcarmorArmorRenderer extends GeoArmorRenderer<UsmcarmorItem> {
|
||||||
|
public UsmcarmorArmorRenderer() {
|
||||||
|
super(new UsmcarmorModel());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package top.azimkin.armoryarmor.client.renderer;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.model.UsmcarmorhelmetModel;
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorhelmetItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
|
||||||
|
public class UsmcarmorhelmetArmorRenderer extends GeoArmorRenderer<UsmcarmorhelmetItem> {
|
||||||
|
public UsmcarmorhelmetArmorRenderer() {
|
||||||
|
super(new UsmcarmorhelmetModel());
|
||||||
|
this.head = new GeoBone(null, "armorHead", false, (double) 0, false, false);
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
this.rightLeg = new GeoBone(null, "armorRightLeg", false, (double) 0, false, false);
|
||||||
|
this.leftLeg = new GeoBone(null, "armorLeftLeg", false, (double) 0, false, false);
|
||||||
|
this.rightBoot = new GeoBone(null, "armorRightBoot", false, (double) 0, false, false);
|
||||||
|
this.leftBoot = new GeoBone(null, "armorLeftBoot", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package top.azimkin.armoryarmor.init;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorhelmetItem;
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorItem;
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorhelmetItem;
|
||||||
|
import top.azimkin.armoryarmor.item.Sealarmorhelmet2Item;
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorItem;
|
||||||
|
import top.azimkin.armoryarmor.item.ChicomItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.event.TickEvent;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber
|
||||||
|
public class ArmorAnimationFactory {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void animatedArmors(TickEvent.PlayerTickEvent event) {
|
||||||
|
String animation = "";
|
||||||
|
if (event.phase == TickEvent.Phase.END) {
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() != (ItemStack.EMPTY).getItem() && event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof GeoItem) {
|
||||||
|
if (!event.player.getItemBySlot(EquipmentSlot.HEAD).getOrCreateTag().getString("geckoAnim").equals("")) {
|
||||||
|
animation = event.player.getItemBySlot(EquipmentSlot.HEAD).getOrCreateTag().getString("geckoAnim");
|
||||||
|
event.player.getItemBySlot(EquipmentSlot.HEAD).getOrCreateTag().putString("geckoAnim", "");
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof SealarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof SealarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof Sealarmorhelmet2Item animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof UsmcarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof UsmcarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof ChicomItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() != (ItemStack.EMPTY).getItem() && event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof GeoItem) {
|
||||||
|
if (!event.player.getItemBySlot(EquipmentSlot.CHEST).getOrCreateTag().getString("geckoAnim").equals("")) {
|
||||||
|
animation = event.player.getItemBySlot(EquipmentSlot.CHEST).getOrCreateTag().getString("geckoAnim");
|
||||||
|
event.player.getItemBySlot(EquipmentSlot.CHEST).getOrCreateTag().putString("geckoAnim", "");
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof SealarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof SealarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof Sealarmorhelmet2Item animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof UsmcarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof UsmcarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof ChicomItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() != (ItemStack.EMPTY).getItem() && event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof GeoItem) {
|
||||||
|
if (!event.player.getItemBySlot(EquipmentSlot.LEGS).getOrCreateTag().getString("geckoAnim").equals("")) {
|
||||||
|
animation = event.player.getItemBySlot(EquipmentSlot.LEGS).getOrCreateTag().getString("geckoAnim");
|
||||||
|
event.player.getItemBySlot(EquipmentSlot.LEGS).getOrCreateTag().putString("geckoAnim", "");
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof SealarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof SealarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof Sealarmorhelmet2Item animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof UsmcarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof UsmcarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof ChicomItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() != (ItemStack.EMPTY).getItem() && event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof GeoItem) {
|
||||||
|
if (!event.player.getItemBySlot(EquipmentSlot.FEET).getOrCreateTag().getString("geckoAnim").equals("")) {
|
||||||
|
animation = event.player.getItemBySlot(EquipmentSlot.FEET).getOrCreateTag().getString("geckoAnim");
|
||||||
|
event.player.getItemBySlot(EquipmentSlot.FEET).getOrCreateTag().putString("geckoAnim", "");
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof SealarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof SealarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof Sealarmorhelmet2Item animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof UsmcarmorItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof UsmcarmorhelmetItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
if (event.player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof ChicomItem animatable && event.player.level().isClientSide())
|
||||||
|
animatable.animationprocedure = animation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* MCreator note: This file will be REGENERATED on each build.
|
||||||
|
*/
|
||||||
|
package top.azimkin.armoryarmor.init;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.*;
|
||||||
|
import top.azimkin.armoryarmor.ArmoryArmorMod;
|
||||||
|
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ArmoryArmorModItems {
|
||||||
|
public static final DeferredRegister<Item> REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, ArmoryArmorMod.MODID);
|
||||||
|
public static final RegistryObject<SealarmorItem> SEALARMOR_CHESTPLATE = REGISTRY.register("sealarmor_chestplate", () -> new SealarmorItem(ArmorItem.Type.CHESTPLATE, new Item.Properties()));
|
||||||
|
public static final RegistryObject<SealarmorhelmetItem> SEALARMORHELMET_HELMET = REGISTRY.register("sealarmorhelmet_helmet", () -> new SealarmorhelmetItem(ArmorItem.Type.HELMET, new Item.Properties()));
|
||||||
|
public static final RegistryObject<Sealarmorhelmet2Item> SEALARMORHELMET_2_HELMET = REGISTRY.register("sealarmorhelmet_2_helmet", () -> new Sealarmorhelmet2Item(ArmorItem.Type.HELMET, new Item.Properties()));
|
||||||
|
public static final RegistryObject<Item> USMC_LEGGINGS = REGISTRY.register("usmc_leggings", UsmcItem.Leggings::new);
|
||||||
|
public static final RegistryObject<Item> ALQAIDA_LEGGINGS = REGISTRY.register("alqaida_leggings", AlqaidaItem.Leggings::new);
|
||||||
|
public static final RegistryObject<Item> ISLAMIC_LEGGINGS = REGISTRY.register("islamic_leggings", IslamicItem.Leggings::new);
|
||||||
|
public static final RegistryObject<Item> USMC_2_LEGGINGS = REGISTRY.register("usmc_2_leggings", Usmc2Item.Leggings::new);
|
||||||
|
public static final RegistryObject<UsmcarmorItem> USMCARMOR_CHESTPLATE = REGISTRY.register("usmcarmor_chestplate", () -> new UsmcarmorItem(ArmorItem.Type.CHESTPLATE, new Item.Properties()));
|
||||||
|
public static final RegistryObject<UsmcarmorhelmetItem> USMCARMORHELMET_HELMET = REGISTRY.register("usmcarmorhelmet_helmet", () -> new UsmcarmorhelmetItem(ArmorItem.Type.HELMET, new Item.Properties()));
|
||||||
|
public static final RegistryObject<ChicomItem> CHICOM_CHESTPLATE = REGISTRY.register("chicom_chestplate", () -> new ChicomItem(ArmorItem.Type.CHESTPLATE, new Item.Properties()));
|
||||||
|
public static final RegistryObject<Item> SEAL_LEGGINGS = REGISTRY.register("seal_leggings", SealItem.Leggings::new);
|
||||||
|
|
||||||
|
public static final RegistryObject<ModernArmorItem> CHECHEN_1 = REGISTRY.register("chechen_1", () -> new ModernArmorItem("chechen_1", ArmorItem.Type.LEGGINGS, new Item.Properties()));
|
||||||
|
public static final RegistryObject<ModernArmorItem> CHECHEN_2 = REGISTRY.register("chechen_2", () -> new ModernArmorItem("chechen_2", ArmorItem.Type.LEGGINGS, new Item.Properties()));
|
||||||
|
public static final RegistryObject<ModernArmorItem> AL_QUAIDA_3 = REGISTRY.register("al_quaida_3", () -> new ModernArmorItem("al_quaida_3", ArmorItem.Type.LEGGINGS, new Item.Properties()));
|
||||||
|
public static final RegistryObject<ModernArmorItem> AL_QUAIDA_2 = REGISTRY.register("al_quaida_2", () -> new ModernArmorItem("al_quaida_2", ArmorItem.Type.LEGGINGS, new Item.Properties()));
|
||||||
|
|
||||||
|
public static final List<RegistryObject<? extends Item>> ITEMS = new ArrayList<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
registerItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({"unused", "unchecked"})
|
||||||
|
private static void registerItems() {
|
||||||
|
try {
|
||||||
|
for (var f : ArmoryArmorModItems.class.getDeclaredFields()) {
|
||||||
|
if (Modifier.isStatic(f.getModifiers()) && Modifier.isFinal(f.getModifiers()) && f.getType() == RegistryObject.class) {
|
||||||
|
ITEMS.add(((RegistryObject<? extends Item>) f.get(null)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Throwable throwable) {
|
||||||
|
ArmoryArmorMod.LOGGER.error("Error while trying to register items in a tab", throwable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package top.azimkin.armoryarmor.init;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.ArmoryArmorMod;
|
||||||
|
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
|
|
||||||
|
public class ArmoryArmorModTabs {
|
||||||
|
public static final DeferredRegister<CreativeModeTab> REGISTRY = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ArmoryArmorMod.MODID);
|
||||||
|
public static final RegistryObject<CreativeModeTab> ARMORY_ARMOR = REGISTRY.register("armory_armor",
|
||||||
|
() -> CreativeModeTab.builder().title(Component.translatable("item_group.armory_armor.armory_armor")).icon(() -> new ItemStack(ArmoryArmorModItems.SEALARMORHELMET_HELMET.get())).displayItems((parameters, tabData) -> {
|
||||||
|
for (var item : ArmoryArmorModItems.ITEMS) {
|
||||||
|
tabData.accept(item.get());
|
||||||
|
}
|
||||||
|
}).build());
|
||||||
|
}
|
||||||
69
src/main/java/top/azimkin/armoryarmor/item/AlqaidaItem.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
||||||
|
public abstract class AlqaidaItem extends ArmorItem {
|
||||||
|
public AlqaidaItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "alqaida";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Leggings extends AlqaidaItem {
|
||||||
|
public Leggings() {
|
||||||
|
super(ArmorItem.Type.LEGGINGS, new Item.Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
152
src/main/java/top/azimkin/armoryarmor/item/ChicomItem.java
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.ChicomArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ChicomItem extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public ChicomItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "chicom";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new ChicomArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
src/main/java/top/azimkin/armoryarmor/item/IslamicItem.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
||||||
|
public abstract class IslamicItem extends ArmorItem {
|
||||||
|
public IslamicItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "islamic";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Leggings extends IslamicItem {
|
||||||
|
public Leggings() {
|
||||||
|
super(ArmorItem.Type.LEGGINGS, new Item.Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import top.azimkin.armoryarmor.armor.ModernArmorMaterial;
|
||||||
|
|
||||||
|
public class ModernArmorItem extends ArmorItem {
|
||||||
|
public ModernArmorItem(String name, Type type, Properties properties) {
|
||||||
|
super(new ModernArmorMaterial(name), type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
69
src/main/java/top/azimkin/armoryarmor/item/SealItem.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
||||||
|
public abstract class SealItem extends ArmorItem {
|
||||||
|
public SealItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "seal";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Leggings extends SealItem {
|
||||||
|
public Leggings() {
|
||||||
|
super(ArmorItem.Type.LEGGINGS, new Item.Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
152
src/main/java/top/azimkin/armoryarmor/item/SealarmorItem.java
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.SealarmorArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SealarmorItem extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public SealarmorItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "sealarmor";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new SealarmorArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.Sealarmorhelmet2ArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Sealarmorhelmet2Item extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public Sealarmorhelmet2Item(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "sealarmorhelmet_2";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new Sealarmorhelmet2ArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.SealarmorhelmetArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SealarmorhelmetItem extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public SealarmorhelmetItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "sealarmorhelmet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new SealarmorhelmetArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
src/main/java/top/azimkin/armoryarmor/item/Usmc2Item.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
||||||
|
public abstract class Usmc2Item extends ArmorItem {
|
||||||
|
public Usmc2Item(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "usmc_2";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Leggings extends Usmc2Item {
|
||||||
|
public Leggings() {
|
||||||
|
super(ArmorItem.Type.LEGGINGS, new Item.Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
69
src/main/java/top/azimkin/armoryarmor/item/UsmcItem.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
|
||||||
|
public abstract class UsmcItem extends ArmorItem {
|
||||||
|
public UsmcItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "usmc";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Leggings extends UsmcItem {
|
||||||
|
public Leggings() {
|
||||||
|
super(ArmorItem.Type.LEGGINGS, new Item.Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) {
|
||||||
|
return "armory_armor:textures/models/armor/voidarmor_layer_2.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
152
src/main/java/top/azimkin/armoryarmor/item/UsmcarmorItem.java
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.UsmcarmorArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class UsmcarmorItem extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public UsmcarmorItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "usmcarmor";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new UsmcarmorArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
package top.azimkin.armoryarmor.item;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.client.renderer.UsmcarmorhelmetArmorRenderer;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.core.object.PlayState;
|
||||||
|
import software.bernie.geckolib.core.animation.RawAnimation;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationState;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimationController;
|
||||||
|
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.constant.DataTickets;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
|
||||||
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundEvent;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class UsmcarmorhelmetItem extends ArmorItem implements GeoItem {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
public String animationprocedure = "empty";
|
||||||
|
|
||||||
|
public UsmcarmorhelmetItem(ArmorItem.Type type, Item.Properties properties) {
|
||||||
|
super(new ArmorMaterial() {
|
||||||
|
@Override
|
||||||
|
public int getDurabilityForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{13, 15, 16, 11}[type.getSlot().getIndex()] * 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDefenseForType(ArmorItem.Type type) {
|
||||||
|
return new int[]{0, 0, 0, 0}[type.getSlot().getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnchantmentValue() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SoundEvent getEquipSound() {
|
||||||
|
return SoundEvents.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Ingredient getRepairIngredient() {
|
||||||
|
return Ingredient.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "usmcarmorhelmet";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getToughness() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getKnockbackResistance() {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}, type, properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||||
|
consumer.accept(new IClientItemExtensions() {
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = new UsmcarmorhelmetArmorRenderer();
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendHoverText(ItemStack itemstack, Level world, List<Component> list, TooltipFlag flag) {
|
||||||
|
super.appendHoverText(itemstack, world, list, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private PlayState predicate(AnimationState event) {
|
||||||
|
if (this.animationprocedure.equals("empty")) {
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.model.new"));
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
String prevAnim = "empty";
|
||||||
|
|
||||||
|
private PlayState procedurePredicate(AnimationState event) {
|
||||||
|
if (!this.animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED || (!this.animationprocedure.equals(prevAnim) && !this.animationprocedure.equals("empty"))) {
|
||||||
|
if (!this.animationprocedure.equals(prevAnim))
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure));
|
||||||
|
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||||
|
this.animationprocedure = "empty";
|
||||||
|
event.getController().forceAnimationReset();
|
||||||
|
}
|
||||||
|
Entity entity = (Entity) event.getData(DataTickets.ENTITY);
|
||||||
|
if (entity instanceof ArmorStand) {
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
} else if (animationprocedure.equals("empty")) {
|
||||||
|
prevAnim = "empty";
|
||||||
|
return PlayState.STOP;
|
||||||
|
}
|
||||||
|
prevAnim = this.animationprocedure;
|
||||||
|
return PlayState.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
data.add(new AnimationController(this, "controller", 5, this::predicate));
|
||||||
|
data.add(new AnimationController(this, "procedureController", 5, this::procedurePredicate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.ChicomItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class ChicomModel extends GeoModel<ChicomItem> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(ChicomItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/chicom.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(ChicomItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/chicom.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(ChicomItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/chicom_texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class SealarmorModel extends GeoModel<SealarmorItem> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(SealarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/seal-vest.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(SealarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/seal-vest.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(SealarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.Sealarmorhelmet2Item;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class Sealarmorhelmet2Model extends GeoModel<Sealarmorhelmet2Item> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(Sealarmorhelmet2Item object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/seal_healmet2.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(Sealarmorhelmet2Item object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/seal_healmet2.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(Sealarmorhelmet2Item object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/seal_helmet2_texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.SealarmorhelmetItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class SealarmorhelmetModel extends GeoModel<SealarmorhelmetItem> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(SealarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/seal-helmet1.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(SealarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/seal-helmet1.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(SealarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/seal_helmet_texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class UsmcarmorModel extends GeoModel<UsmcarmorItem> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(UsmcarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/usmc_vest.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(UsmcarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/usmc_vest.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(UsmcarmorItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/usmc_vest_texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.azimkin.armoryarmor.item.model;
|
||||||
|
|
||||||
|
import top.azimkin.armoryarmor.item.UsmcarmorhelmetItem;
|
||||||
|
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
|
public class UsmcarmorhelmetModel extends GeoModel<UsmcarmorhelmetItem> {
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(UsmcarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "animations/usmc_helmet.animation.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(UsmcarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "geo/usmc_helmet.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(UsmcarmorhelmetItem object) {
|
||||||
|
return new ResourceLocation("armory_armor", "textures/item/usmc_helmet_texture.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package top.azimkin.armoryarmor.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
|
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import top.azimkin.armoryarmor.client.InfoHolder;
|
||||||
|
|
||||||
|
@Mixin(PlayerRenderer.class)
|
||||||
|
public class PlayerRenderMixin {
|
||||||
|
@Inject(method = "getTextureLocation(Lnet/minecraft/client/player/AbstractClientPlayer;)Lnet/minecraft/resources/ResourceLocation;", at = @At(value = "HEAD"), cancellable = true)
|
||||||
|
public void getTextureLocation(AbstractClientPlayer p_117783_, CallbackInfoReturnable<ResourceLocation> cir) {
|
||||||
|
if (InfoHolder.TOP_TEXTURE == null) return;
|
||||||
|
cir.setReturnValue(InfoHolder.TOP_TEXTURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
package top.azimkin.armoryarmor.procedures;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.EventPriority;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
import top.azimkin.armoryarmor.client.ArmorTextureManager;
|
||||||
|
import top.azimkin.armoryarmor.client.InfoHolder;
|
||||||
|
import top.azimkin.armoryarmor.init.ArmoryArmorModItems;
|
||||||
|
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.client.event.RenderLivingEvent;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(value = {Dist.CLIENT})
|
||||||
|
public class RenderEventProcedure {
|
||||||
|
private static final Map<Item, ArmorTextureManager.ArmorData> armorItems = new LinkedHashMap<>();
|
||||||
|
private static final ResourceLocation DEFAULT_TEXTURE = new ResourceLocation("armory_armor:textures/models/armor/voidarmor_layer_2.png");
|
||||||
|
private static final ArmorTextureManager manager = new ArmorTextureManager();
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@SubscribeEvent(priority = EventPriority.HIGHEST)
|
||||||
|
public static void onEventTriggeredPre(RenderPlayerEvent.Pre event) {
|
||||||
|
computeArmorItems();
|
||||||
|
AbstractClientPlayer player = (AbstractClientPlayer) event.getEntity();
|
||||||
|
Item slotItem = player.getItemBySlot(EquipmentSlot.LEGS).getItem();
|
||||||
|
ArmorTextureManager.ArmorData data = armorItems.get(slotItem);
|
||||||
|
if (data == null) {
|
||||||
|
InfoHolder.TOP_TEXTURE = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
InfoHolder.TOP_TEXTURE = manager.getTexture(player.getSkinTextureLocation(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void fastCmpFunc(RegistryObject<? extends Item> i, String loc, boolean hideHat) {
|
||||||
|
ResourceLocation t = ResourceLocation.tryParse(loc);
|
||||||
|
if (t == null) t = DEFAULT_TEXTURE;
|
||||||
|
RenderEventProcedure.armorItems.put(i.get(), new ArmorTextureManager.ArmorData(t, hideHat));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void computeArmorItems() {
|
||||||
|
if (!armorItems.isEmpty()) return;
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.SEAL_LEGGINGS,"armory_armor:textures/entities/seal.png", false);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.USMC_LEGGINGS,"armory_armor:textures/entities/usmc.png", false);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.ALQAIDA_LEGGINGS,"armory_armor:textures/entities/al-qaida.png", true);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.ISLAMIC_LEGGINGS,"armory_armor:textures/entities/islamic_army.png", true);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.USMC_2_LEGGINGS,"armory_armor:textures/entities/usmc2.png", false);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.CHECHEN_1,"armory_armor:textures/entities/chechen_1.png", true);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.CHECHEN_2,"armory_armor:textures/entities/chechen_2.png", true);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.AL_QUAIDA_2,"armory_armor:textures/entities/al_quaida_2.png", true);
|
||||||
|
fastCmpFunc(ArmoryArmorModItems.AL_QUAIDA_3,"armory_armor:textures/entities/al_quaida_3.png", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
33
src/main/resources/META-INF/mods.toml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
modLoader="javafml"
|
||||||
|
loaderVersion="[47,)"
|
||||||
|
license="All Rights Reserved"
|
||||||
|
|
||||||
|
[[mods]]
|
||||||
|
modId="armory_armor"
|
||||||
|
version="1.1.0"
|
||||||
|
displayName="Armory armor"
|
||||||
|
displayURL="https://azimkin.top"
|
||||||
|
credits="Thx Azimkin Development for this mod"
|
||||||
|
authors="Azimkin"
|
||||||
|
|
||||||
|
# Start of user code block mod configuration
|
||||||
|
# End of user code block mod configuration
|
||||||
|
|
||||||
|
[[dependencies.armory_armor]]
|
||||||
|
modId="minecraft"
|
||||||
|
mandatory=true
|
||||||
|
versionRange="[1.20.1]"
|
||||||
|
ordering="AFTER"
|
||||||
|
side="BOTH"
|
||||||
|
|
||||||
|
|
||||||
|
[[dependencies.armory_armor]]
|
||||||
|
modId="geckolib"
|
||||||
|
mandatory=false
|
||||||
|
versionRange="[0,)"
|
||||||
|
ordering="NONE"
|
||||||
|
side="BOTH"
|
||||||
|
|
||||||
|
|
||||||
|
# Start of user code block dependencies configuration
|
||||||
|
# End of user code block dependencies configuration
|
||||||
17
src/main/resources/armory_armor.mixins.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"package": "top.azimkin.armoryarmor.mixin",
|
||||||
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"compatibilityLevel": "JAVA_17",
|
||||||
|
"refmap": "armory_armor.refmap.json",
|
||||||
|
"mixins": [],
|
||||||
|
"client": [
|
||||||
|
"PlayerRenderMixin"
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
},
|
||||||
|
"overwrites": {
|
||||||
|
"requireAnnotations": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.8.0",
|
||||||
|
"animations": {
|
||||||
|
"animation.model.new": {
|
||||||
|
"loop": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
90
src/main/resources/assets/armory_armor/geo/chicom.geo.json
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 32,
|
||||||
|
"texture_height": 32,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedHead",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorBody",
|
||||||
|
"parent": "bipedHead",
|
||||||
|
"pivot": [0, 24, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone13",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [0, 21, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [-4, 12, -2], "size": [8, 12, 4], "inflate": 0.27, "uv": [0, 0]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone14",
|
||||||
|
"parent": "bone13",
|
||||||
|
"pivot": [1.2, 15, -2.4],
|
||||||
|
"rotation": [7.5, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone15",
|
||||||
|
"parent": "bone14",
|
||||||
|
"pivot": [2.2, 15, -2.3],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [1.22064, 14.96993, -3.20689], "size": [2, 4, 2], "pivot": [2.2, 15, -2.3], "rotation": [5.12076, -12.45167, -1.10693], "uv": [16, 22]},
|
||||||
|
{"origin": [1.22064, 14.96993, -3.20689], "size": [2, 4, 2], "inflate": 0.1, "pivot": [2.2, 15, -2.3], "rotation": [5.12076, -12.45167, -1.10693], "uv": [8, 22]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone16",
|
||||||
|
"parent": "bone14",
|
||||||
|
"pivot": [3.9, 15, -1.6],
|
||||||
|
"rotation": [0, -20, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [2.9, 15, -2.6], "size": [2, 3, 2], "pivot": [3.9, 15, -1.6], "rotation": [5.12076, -12.45167, -1.10693], "uv": [24, 15]},
|
||||||
|
{"origin": [2.9, 15, -2.6], "size": [2, 3, 2], "inflate": 0.1, "pivot": [3.9, 15, -1.6], "rotation": [5.12076, -12.45167, -1.10693], "uv": [24, 10]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone17",
|
||||||
|
"parent": "bone14",
|
||||||
|
"pivot": [-3.9, 15, -1.6],
|
||||||
|
"rotation": [0, 20, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [-4.9, 15, -2.6], "size": [2, 3, 2], "pivot": [-3.9, 15, -1.6], "rotation": [5.12076, 12.45167, 1.10693], "uv": [24, 5]},
|
||||||
|
{"origin": [-4.9, 15, -2.6], "size": [2, 3, 2], "inflate": 0.1, "pivot": [-3.9, 15, -1.6], "rotation": [5.12076, 12.45167, 1.10693], "uv": [24, 0]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone18",
|
||||||
|
"parent": "bone14",
|
||||||
|
"pivot": [-2.2, 15, -2.3],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [-3.22064, 14.96993, -3.20689], "size": [2, 4, 2], "pivot": [-2.2, 15, -2.3], "rotation": [5.12076, 12.45167, 1.10693], "uv": [0, 22]},
|
||||||
|
{"origin": [-3.22064, 14.96993, -3.20689], "size": [2, 4, 2], "inflate": 0.1, "pivot": [-2.2, 15, -2.3], "rotation": [5.12076, 12.45167, 1.10693], "uv": [16, 16]}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone19",
|
||||||
|
"parent": "bone14",
|
||||||
|
"pivot": [2.2, 15, -2.4],
|
||||||
|
"rotation": [5, -2.5, 0],
|
||||||
|
"cubes": [
|
||||||
|
{"origin": [-0.99568, 14.96995, -3.30472], "size": [2, 4, 2], "pivot": [2.2, 15, -2.4], "rotation": [5, 0, 0], "uv": [8, 16]},
|
||||||
|
{"origin": [-0.99568, 14.96995, -3.30472], "size": [2, 4, 2], "inflate": 0.1, "pivot": [2.2, 15, -2.4], "rotation": [5, 0, 0], "uv": [0, 16]}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
264
src/main/resources/assets/armory_armor/geo/seal-helmet1.geo.json
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 64,
|
||||||
|
"texture_height": 64,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedHead",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorHead",
|
||||||
|
"parent": "bipedHead",
|
||||||
|
"pivot": [0, 24, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone14",
|
||||||
|
"parent": "armorHead",
|
||||||
|
"pivot": [0, 29.7, -7.1],
|
||||||
|
"rotation": [9.5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-1, 29.7, -6.1],
|
||||||
|
"size": [2, 2, 2],
|
||||||
|
"pivot": [0, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [4, 48], "uv_size": [2, 2]},
|
||||||
|
"east": {"uv": [48, 7], "uv_size": [2, 2]},
|
||||||
|
"south": {"uv": [8, 48], "uv_size": [2, 2]},
|
||||||
|
"west": {"uv": [48, 9], "uv_size": [2, 2]},
|
||||||
|
"up": {"uv": [10, 48], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [48, 13], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1, 28.7, -6.1],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [2, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 19], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [45, 27], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [20, 45], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [29, 45], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [45, 30], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [31, 47], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 28.7, -6.1],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [-3, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [23, 45], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [45, 32], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [26, 45], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [34, 45], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [0, 46], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [3, 48], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.9, 29.6, -5.1],
|
||||||
|
"size": [9.8, 1, 10.2],
|
||||||
|
"inflate": 0.2,
|
||||||
|
"pivot": [-3, 30.6, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 26], "uv_size": [10, 1]},
|
||||||
|
"east": {"uv": [45, 4], "uv_size": [10, 1]},
|
||||||
|
"south": {"uv": [45, 5], "uv_size": [10, 1]},
|
||||||
|
"west": {"uv": [45, 6], "uv_size": [10, 1]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [10, 10]},
|
||||||
|
"down": {"uv": [0, 20], "uv_size": [10, -10]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone13",
|
||||||
|
"parent": "armorHead",
|
||||||
|
"pivot": [0, 30, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.04,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [10, 0], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [10, 9], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [10, 18], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [19, 0], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [19, 9], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [19, 27], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.5,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 20], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [9, 27], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [18, 27], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [27, 27], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [28, 0], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [28, 18], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1.9, 26, -5],
|
||||||
|
"size": [4, 1, 6],
|
||||||
|
"pivot": [4.9, 26, 0],
|
||||||
|
"rotation": [12.24818, 3.16808, -1.83564],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 35], "uv_size": [4, 1]},
|
||||||
|
"east": {"uv": [45, 22], "uv_size": [6, 1]},
|
||||||
|
"south": {"uv": [47, 24], "uv_size": [4, 1]},
|
||||||
|
"west": {"uv": [45, 23], "uv_size": [6, 1]},
|
||||||
|
"up": {"uv": [44, 36], "uv_size": [4, 6]},
|
||||||
|
"down": {"uv": [44, 48], "uv_size": [4, -6]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [5, 27.3, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [5, 27.3, 0],
|
||||||
|
"rotation": [-2.47864, -0.32621, -7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [9, 25], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [37, 24], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [8, 43], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [42, 24], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [9, 20], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [8, 43], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-6, 27.3, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [-5, 27.3, 0],
|
||||||
|
"rotation": [-2.47864, 0.32621, 7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [24, 48], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [45, 0], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [25, 48], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [45, 2], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [6, 46], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [7, 51], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-1, 29.8, -6],
|
||||||
|
"size": [2, 2, 2],
|
||||||
|
"pivot": [0, 29.8, -6],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [47, 25], "uv_size": [2, 2]},
|
||||||
|
"east": {"uv": [47, 27], "uv_size": [2, 2]},
|
||||||
|
"south": {"uv": [31, 47], "uv_size": [2, 2]},
|
||||||
|
"west": {"uv": [47, 32], "uv_size": [2, 2]},
|
||||||
|
"up": {"uv": [0, 48], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [2, 50], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.18,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [28, 18], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [0, 29], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [9, 36], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [18, 36], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [27, 36], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [36, 36], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 24, -4.1],
|
||||||
|
"size": [8, 8, 8],
|
||||||
|
"inflate": 0.52,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [36, 36], "uv_size": [8, 8]},
|
||||||
|
"east": {"uv": [37, 0], "uv_size": [8, 8]},
|
||||||
|
"south": {"uv": [37, 8], "uv_size": [8, 8]},
|
||||||
|
"west": {"uv": [37, 16], "uv_size": [8, 8]},
|
||||||
|
"up": {"uv": [0, 38], "uv_size": [8, 8]},
|
||||||
|
"down": {"uv": [36, 52], "uv_size": [8, -8]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-5.1, 26, -0.5],
|
||||||
|
"size": [1, 3, 3],
|
||||||
|
"pivot": [-5.1, 27, 1.5],
|
||||||
|
"rotation": [6.76795, 2.12613, 8.36404],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [33, 47], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [45, 7], "uv_size": [3, 3]},
|
||||||
|
"south": {"uv": [12, 48], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [8, 45], "uv_size": [3, 3]},
|
||||||
|
"up": {"uv": [13, 48], "uv_size": [1, 3]},
|
||||||
|
"down": {"uv": [48, 16], "uv_size": [1, -3]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [3.9, 26, -0.5],
|
||||||
|
"size": [1, 3, 3],
|
||||||
|
"pivot": [5.1, 27, 1.5],
|
||||||
|
"rotation": [6.76795, -2.12613, -8.36404],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [14, 48], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [45, 10], "uv_size": [3, 3]},
|
||||||
|
"south": {"uv": [15, 48], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [11, 45], "uv_size": [3, 3]},
|
||||||
|
"up": {"uv": [16, 48], "uv_size": [1, 3]},
|
||||||
|
"down": {"uv": [48, 19], "uv_size": [1, -3]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [4.5, 26, -0.5],
|
||||||
|
"size": [1, 3, 3],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [5.3, 27, 1.5],
|
||||||
|
"rotation": [6.76795, -2.12613, -8.36404],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [17, 48], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [45, 13], "uv_size": [3, 3]},
|
||||||
|
"south": {"uv": [18, 48], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [14, 45], "uv_size": [3, 3]},
|
||||||
|
"up": {"uv": [19, 48], "uv_size": [1, 3]},
|
||||||
|
"down": {"uv": [48, 22], "uv_size": [1, -3]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-5.5, 26, -0.5],
|
||||||
|
"size": [1, 3, 3],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-5.3, 27, 1.5],
|
||||||
|
"rotation": [6.76795, 2.12613, 8.36404],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [20, 48], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [45, 16], "uv_size": [3, 3]},
|
||||||
|
"south": {"uv": [21, 48], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [17, 45], "uv_size": [3, 3]},
|
||||||
|
"up": {"uv": [22, 48], "uv_size": [1, 3]},
|
||||||
|
"down": {"uv": [23, 51], "uv_size": [1, -3]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
604
src/main/resources/assets/armory_armor/geo/seal-vest.geo.json
Normal file
@@ -0,0 +1,604 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 64,
|
||||||
|
"texture_height": 64,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedBody",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorBody",
|
||||||
|
"parent": "bipedBody",
|
||||||
|
"pivot": [0, 24, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.3, 13.9, -2.5],
|
||||||
|
"size": [2, 4.5, 5],
|
||||||
|
"pivot": [-3.3, 14.9, -0.5],
|
||||||
|
"rotation": [0, 0, -6.5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [12, 35], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [5, 27], "uv_size": [5, 4]},
|
||||||
|
"south": {"uv": [35, 17], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [10, 27], "uv_size": [5, 4]},
|
||||||
|
"up": {"uv": [34, 4], "uv_size": [2, 5]},
|
||||||
|
"down": {"uv": [22, 39], "uv_size": [2, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [2.3, 13.9, -2.5],
|
||||||
|
"size": [2, 4.5, 5],
|
||||||
|
"pivot": [3.3, 14.9, -0.5],
|
||||||
|
"rotation": [0, 0, 6.5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [6, 35], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [26, 26], "uv_size": [5, 4]},
|
||||||
|
"south": {"uv": [8, 35], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [0, 27], "uv_size": [5, 4]},
|
||||||
|
"up": {"uv": [10, 33], "uv_size": [2, 5]},
|
||||||
|
"down": {"uv": [33, 37], "uv_size": [2, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.61419, 18.54483, 1.90474],
|
||||||
|
"size": [0.8, 2.1, 1],
|
||||||
|
"pivot": [1.28581, 21.64483, 0.40474],
|
||||||
|
"rotation": [6.9349, -2.8631, 22.3265],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [44, 21], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [22, 44], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [23, 44], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [44, 24], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [44, 31], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [32, 45], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.7, 20.25, 1.7],
|
||||||
|
"size": [5.4, 1.95, 1],
|
||||||
|
"pivot": [0, 23.2, 0.2],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 33], "uv_size": [5, 2]},
|
||||||
|
"east": {"uv": [20, 44], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [5, 33], "uv_size": [5, 2]},
|
||||||
|
"west": {"uv": [21, 44], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [42, 8], "uv_size": [5, 1]},
|
||||||
|
"down": {"uv": [42, 10], "uv_size": [5, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1.81419, 18.54483, 1.90474],
|
||||||
|
"size": [0.8, 2.1, 1],
|
||||||
|
"pivot": [-1.28581, 21.64483, 0.40474],
|
||||||
|
"rotation": [6.9349, 2.8631, -22.3265],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [16, 44], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [17, 44], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [44, 17], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [18, 44], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [44, 30], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [31, 45], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.7, 20.25, 2.725],
|
||||||
|
"size": [7.4, 1.95, 0],
|
||||||
|
"pivot": [0, 23.2, 0.225],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [22, 30], "uv_size": [7, 2]},
|
||||||
|
"east": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"south": {"uv": [29, 30], "uv_size": [7, 2]},
|
||||||
|
"west": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [7, 0]},
|
||||||
|
"down": {"uv": [0, 0], "uv_size": [7, 0]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.49636, 18.28926, 1.76724],
|
||||||
|
"size": [7, 1.975, 1],
|
||||||
|
"pivot": [0.00364, 22.68926, 0.26724],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [30, 2], "uv_size": [7, 2]},
|
||||||
|
"east": {"uv": [14, 44], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [15, 30], "uv_size": [7, 2]},
|
||||||
|
"west": {"uv": [15, 44], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [40, 4], "uv_size": [7, 1]},
|
||||||
|
"down": {"uv": [40, 6], "uv_size": [7, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.49636, 13.53998, 2.13062],
|
||||||
|
"size": [7, 5, 1],
|
||||||
|
"pivot": [0.00364, 22.93998, 0.63062],
|
||||||
|
"rotation": [2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [22, 7], "uv_size": [7, 5]},
|
||||||
|
"east": {"uv": [3, 42], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [22, 12], "uv_size": [7, 5]},
|
||||||
|
"west": {"uv": [4, 42], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [39, 38], "uv_size": [7, 1]},
|
||||||
|
"down": {"uv": [39, 40], "uv_size": [7, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.61419, 18.54483, -2.90474],
|
||||||
|
"size": [0.8, 2.1, 1],
|
||||||
|
"pivot": [1.28581, 21.64483, -0.40474],
|
||||||
|
"rotation": [-6.9349, 2.8631, 22.3265],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [11, 44], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [12, 44], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [44, 12], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [13, 44], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [40, 15], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [30, 45], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1.81419, 18.54483, -2.90474],
|
||||||
|
"size": [0.8, 2.1, 1],
|
||||||
|
"pivot": [-1.28581, 21.64483, -0.40474],
|
||||||
|
"rotation": [-6.9349, -2.8631, -22.3265],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [44, 0], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [44, 2], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [10, 44], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [44, 10], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [14, 35], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [36, 17], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.49636, 18.28926, -2.76724],
|
||||||
|
"size": [7, 1.975, 1],
|
||||||
|
"pivot": [0.00364, 22.68926, -0.26724],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [29, 15], "uv_size": [7, 2]},
|
||||||
|
"east": {"uv": [36, 43], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [30, 0], "uv_size": [7, 2]},
|
||||||
|
"west": {"uv": [43, 42], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [39, 36], "uv_size": [7, 1]},
|
||||||
|
"down": {"uv": [39, 38], "uv_size": [7, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.7, 20.25, -2.725],
|
||||||
|
"size": [7.4, 1.95, 0],
|
||||||
|
"pivot": [0, 23.2, -0.225],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [29, 11], "uv_size": [7, 2]},
|
||||||
|
"east": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"south": {"uv": [29, 13], "uv_size": [7, 2]},
|
||||||
|
"west": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [7, 0]},
|
||||||
|
"down": {"uv": [0, 0], "uv_size": [7, 0]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.7, 20.25, -2.7],
|
||||||
|
"size": [5.4, 1.95, 1],
|
||||||
|
"pivot": [0, 23.2, -0.2],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [24, 5], "uv_size": [5, 2]},
|
||||||
|
"east": {"uv": [36, 30], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [28, 32], "uv_size": [5, 2]},
|
||||||
|
"west": {"uv": [35, 43], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [42, 6], "uv_size": [5, 1]},
|
||||||
|
"down": {"uv": [42, 8], "uv_size": [5, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.49636, 13.53998, -3.13062],
|
||||||
|
"size": [7, 5, 1],
|
||||||
|
"pivot": [0.00364, 22.93998, -0.63062],
|
||||||
|
"rotation": [-2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 22], "uv_size": [7, 5]},
|
||||||
|
"east": {"uv": [1, 42], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [7, 22], "uv_size": [7, 5]},
|
||||||
|
"west": {"uv": [2, 42], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [39, 34], "uv_size": [7, 1]},
|
||||||
|
"down": {"uv": [39, 36], "uv_size": [7, -1]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone20",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [0, 15.6, 5.1],
|
||||||
|
"rotation": [2, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-3, 13.6, 4.1],
|
||||||
|
"size": [6, 5, 2],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [24, 0], "uv_size": [6, 5]},
|
||||||
|
"east": {"uv": [24, 34], "uv_size": [2, 5]},
|
||||||
|
"south": {"uv": [26, 17], "uv_size": [6, 5]},
|
||||||
|
"west": {"uv": [26, 34], "uv_size": [2, 5]},
|
||||||
|
"up": {"uv": [0, 31], "uv_size": [6, 2]},
|
||||||
|
"down": {"uv": [6, 33], "uv_size": [6, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3, 13.6, 3.1],
|
||||||
|
"size": [6, 8.7, 1],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [14, 18], "uv_size": [6, 9]},
|
||||||
|
"east": {"uv": [31, 34], "uv_size": [1, 9]},
|
||||||
|
"south": {"uv": [20, 18], "uv_size": [6, 9]},
|
||||||
|
"west": {"uv": [32, 34], "uv_size": [1, 9]},
|
||||||
|
"up": {"uv": [41, 23], "uv_size": [6, 1]},
|
||||||
|
"down": {"uv": [24, 42], "uv_size": [6, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.1, 14.6, 3.9],
|
||||||
|
"size": [3, 4, 2],
|
||||||
|
"pivot": [0.9, 15.6, 4.9],
|
||||||
|
"rotation": [0, 0, -5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [12, 31], "uv_size": [3, 4]},
|
||||||
|
"east": {"uv": [18, 39], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [31, 26], "uv_size": [3, 4]},
|
||||||
|
"west": {"uv": [20, 39], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [41, 26], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [41, 30], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1.1, 14.6, 3.9],
|
||||||
|
"size": [3, 4, 2],
|
||||||
|
"pivot": [-0.9, 15.6, 4.9],
|
||||||
|
"rotation": [0, 0, 5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [15, 32], "uv_size": [3, 4]},
|
||||||
|
"east": {"uv": [39, 20], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [32, 17], "uv_size": [3, 4]},
|
||||||
|
"west": {"uv": [22, 39], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [41, 30], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [41, 34], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2, 14.6, 5.7],
|
||||||
|
"size": [4, 3, 1],
|
||||||
|
"pivot": [0, 15.6, 4.7],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [18, 32], "uv_size": [4, 3]},
|
||||||
|
"east": {"uv": [43, 17], "uv_size": [1, 3]},
|
||||||
|
"south": {"uv": [32, 21], "uv_size": [4, 3]},
|
||||||
|
"west": {"uv": [19, 43], "uv_size": [1, 3]},
|
||||||
|
"up": {"uv": [22, 17], "uv_size": [4, 1]},
|
||||||
|
"down": {"uv": [30, 5], "uv_size": [4, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2, 21.55236, 3.8475],
|
||||||
|
"size": [4, 2, 1],
|
||||||
|
"pivot": [0, 23.55236, 5.8475],
|
||||||
|
"rotation": [-2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [38, 24], "uv_size": [4, 2]},
|
||||||
|
"east": {"uv": [44, 28], "uv_size": [1, 2]},
|
||||||
|
"south": {"uv": [24, 39], "uv_size": [4, 2]},
|
||||||
|
"west": {"uv": [29, 44], "uv_size": [1, 2]},
|
||||||
|
"up": {"uv": [42, 14], "uv_size": [4, 1]},
|
||||||
|
"down": {"uv": [12, 44], "uv_size": [4, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3, 18.45236, 3.8475],
|
||||||
|
"size": [6, 4, 2],
|
||||||
|
"pivot": [0, 20.45236, 4.8475],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [16, 7], "uv_size": [6, 4]},
|
||||||
|
"east": {"uv": [39, 26], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [26, 22], "uv_size": [6, 4]},
|
||||||
|
"west": {"uv": [39, 30], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [22, 32], "uv_size": [6, 2]},
|
||||||
|
"down": {"uv": [32, 26], "uv_size": [6, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 12.9, -3.9],
|
||||||
|
"size": [8, 11, 7],
|
||||||
|
"pivot": [0, 14.9, 5.1],
|
||||||
|
"rotation": [-5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 0], "uv_size": [8, 11]},
|
||||||
|
"east": {"uv": [0, 11], "uv_size": [7, 11]},
|
||||||
|
"south": {"uv": [8, 0], "uv_size": [8, 11]},
|
||||||
|
"west": {"uv": [7, 11], "uv_size": [7, 11]},
|
||||||
|
"up": {"uv": [14, 11], "uv_size": [8, 7]},
|
||||||
|
"down": {"uv": [16, 7], "uv_size": [8, -7]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [1, 19.3, -3],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [0, 18.3, -4],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [34, 26], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [16, 40], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [28, 34], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [35, 40], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [39, 40], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [41, 2], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [0, 18.3, -4],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 35], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [41, 15], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [3, 35], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [41, 18], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [41, 2], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [41, 23], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone6",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [1.2, 13, -3.2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone9",
|
||||||
|
"parent": "bone6",
|
||||||
|
"pivot": [3.2, 13.05, -2.8],
|
||||||
|
"rotation": [7.67995, -12.39135, -1.6575],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [2.2, 14.05, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [3.2, 13.05, -2.8],
|
||||||
|
"rotation": [5.12076, -12.45167, -1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [18, 35], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [20, 35], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [35, 32], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [36, 4], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [34, 9], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [10, 44], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [2.2, 14.05, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [3.2, 13.05, -2.8],
|
||||||
|
"rotation": [5.12076, -12.45167, -1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [36, 8], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [36, 12], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [14, 36], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [16, 36], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [42, 10], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [42, 14], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone10",
|
||||||
|
"parent": "bone6",
|
||||||
|
"pivot": [-3.4, 13.05, -3.4],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.4, 14.05, -3.4],
|
||||||
|
"size": [2, 4, 1],
|
||||||
|
"pivot": [-3.4, 13.05, -3.4],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [35, 36], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [5, 42], "uv_size": [1, 4]},
|
||||||
|
"south": {"uv": [37, 0], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [24, 42], "uv_size": [1, 4]},
|
||||||
|
"up": {"uv": [44, 19], "uv_size": [2, 1]},
|
||||||
|
"down": {"uv": [44, 27], "uv_size": [2, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.4, 14.05, -3.4],
|
||||||
|
"size": [2, 4, 1],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-3.4, 13.05, -3.4],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 16], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [25, 42], "uv_size": [1, 4]},
|
||||||
|
"south": {"uv": [37, 20], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [26, 42], "uv_size": [1, 4]},
|
||||||
|
"up": {"uv": [27, 44], "uv_size": [2, 1]},
|
||||||
|
"down": {"uv": [44, 28], "uv_size": [2, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.4, 18.05, -2.9],
|
||||||
|
"size": [2, 4, 0],
|
||||||
|
"pivot": [-3.4, 13.05, -3.4],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 26], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [0, 0], "uv_size": [0, 4]},
|
||||||
|
"south": {"uv": [28, 37], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [0, 0], "uv_size": [0, 4]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [2, 0]},
|
||||||
|
"down": {"uv": [0, 0], "uv_size": [2, 0]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone11",
|
||||||
|
"parent": "bone6",
|
||||||
|
"pivot": [1.1, 13, -3.2],
|
||||||
|
"rotation": [7.52136, -4.97856, -0.32745],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [0.1, 14, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [1.1, 13, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 30], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [33, 37], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [37, 34], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [0, 38], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [42, 24], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [27, 44], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [0.1, 14, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [1.1, 13, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [2, 38], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [4, 38], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [38, 4], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [38, 8], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [29, 42], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [37, 44], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone12",
|
||||||
|
"parent": "bone6",
|
||||||
|
"pivot": [-1.1, 13, -3.2],
|
||||||
|
"rotation": [7.52136, 4.97856, 0.32745],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-2.1, 14, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [-1.1, 13, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [10, 38], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [38, 12], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [37, 38], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [39, 0], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [39, 42], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [42, 42], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.1, 14, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-1.1, 13, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [6, 39], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [8, 39], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [12, 39], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [39, 16], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [41, 42], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [6, 45], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone19",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [1.3, 22.74474, -0.83494],
|
||||||
|
"rotation": [0, 0, -10],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-2.73892, 21.91215, -2.8],
|
||||||
|
"size": [1.4, 3.35, 5.2],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [8, 43], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [29, 5], "uv_size": [5, 3]},
|
||||||
|
"south": {"uv": [9, 43], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [29, 8], "uv_size": [5, 3]},
|
||||||
|
"up": {"uv": [34, 41], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [0, 47], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.8, 24.5, -1.7],
|
||||||
|
"size": [1.5, 1, 3],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [22, 43], "uv_size": [2, 1]},
|
||||||
|
"east": {"uv": [16, 43], "uv_size": [3, 1]},
|
||||||
|
"south": {"uv": [31, 43], "uv_size": [2, 1]},
|
||||||
|
"west": {"uv": [43, 16], "uv_size": [3, 1]},
|
||||||
|
"up": {"uv": [40, 12], "uv_size": [2, 3]},
|
||||||
|
"down": {"uv": [14, 43], "uv_size": [2, -3]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone18",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [-1.3, 22.74474, -0.83494],
|
||||||
|
"rotation": [0, 0, 10],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [1.33892, 21.91215, -2.8],
|
||||||
|
"size": [1.4, 3.35, 5.2],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [25, 27], "uv_size": [1, 3]},
|
||||||
|
"east": {"uv": [15, 27], "uv_size": [5, 3]},
|
||||||
|
"south": {"uv": [36, 21], "uv_size": [1, 3]},
|
||||||
|
"west": {"uv": [20, 27], "uv_size": [5, 3]},
|
||||||
|
"up": {"uv": [30, 37], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [33, 46], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1.3, 24.5, -1.7],
|
||||||
|
"size": [1.5, 1, 3],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [20, 43], "uv_size": [2, 1]},
|
||||||
|
"east": {"uv": [34, 29], "uv_size": [3, 1]},
|
||||||
|
"south": {"uv": [43, 20], "uv_size": [2, 1]},
|
||||||
|
"west": {"uv": [43, 15], "uv_size": [3, 1]},
|
||||||
|
"up": {"uv": [40, 6], "uv_size": [2, 3]},
|
||||||
|
"down": {"uv": [40, 12], "uv_size": [2, -3]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 64,
|
||||||
|
"texture_height": 64,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedHead",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorHead",
|
||||||
|
"parent": "bipedHead",
|
||||||
|
"pivot": [0, 24, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone10",
|
||||||
|
"parent": "armorHead",
|
||||||
|
"pivot": [0, 29.7, -7.1],
|
||||||
|
"rotation": [9.5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-1, 29.7, -6.1],
|
||||||
|
"size": [2, 2, 2],
|
||||||
|
"pivot": [0, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 27], "uv_size": [2, 2]},
|
||||||
|
"east": {"uv": [28, 45], "uv_size": [2, 2]},
|
||||||
|
"south": {"uv": [45, 29], "uv_size": [2, 2]},
|
||||||
|
"west": {"uv": [30, 45], "uv_size": [2, 2]},
|
||||||
|
"up": {"uv": [45, 31], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [32, 47], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1, 28.7, -6.1],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [2, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [44, 43], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [8, 45], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [45, 0], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [45, 9], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [10, 45], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [45, 14], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 28.7, -6.1],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [-3, 29.7, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 3], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [13, 45], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [45, 6], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [45, 14], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [15, 45], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [45, 19], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.9, 29.6, -5.1],
|
||||||
|
"size": [9.8, 1, 10.2],
|
||||||
|
"inflate": 0.2,
|
||||||
|
"pivot": [-3, 30.6, -5.1],
|
||||||
|
"rotation": [-10, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 26], "uv_size": [10, 1]},
|
||||||
|
"east": {"uv": [44, 40], "uv_size": [10, 1]},
|
||||||
|
"south": {"uv": [44, 41], "uv_size": [10, 1]},
|
||||||
|
"west": {"uv": [44, 42], "uv_size": [10, 1]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [10, 10]},
|
||||||
|
"down": {"uv": [0, 20], "uv_size": [10, -10]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone9",
|
||||||
|
"parent": "armorHead",
|
||||||
|
"pivot": [0, 30, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [10, 0], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [10, 9], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [10, 18], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [19, 0], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [19, 9], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [19, 27], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 20], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [9, 27], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [18, 27], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [27, 27], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [28, 0], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [28, 18], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.6,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [28, 18], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [0, 29], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [9, 36], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [18, 36], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [27, 36], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [36, 36], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 24, -4.1],
|
||||||
|
"size": [8, 8, 8],
|
||||||
|
"inflate": 0.52,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [36, 36], "uv_size": [8, 8]},
|
||||||
|
"east": {"uv": [37, 0], "uv_size": [8, 8]},
|
||||||
|
"south": {"uv": [37, 8], "uv_size": [8, 8]},
|
||||||
|
"west": {"uv": [37, 16], "uv_size": [8, 8]},
|
||||||
|
"up": {"uv": [0, 38], "uv_size": [8, 8]},
|
||||||
|
"down": {"uv": [36, 52], "uv_size": [8, -8]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [5, 27.5, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [5, 27.5, 0],
|
||||||
|
"rotation": [-2.47864, -0.32621, -7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [9, 25], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [37, 24], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [8, 43], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [42, 24], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [9, 20], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [8, 43], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-6, 27.5, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [-5, 27.5, 0],
|
||||||
|
"rotation": [-2.47864, 0.32621, 7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 33], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [44, 36], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [34, 45], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [44, 38], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [18, 45], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [19, 50], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-1, 29.8, -6],
|
||||||
|
"size": [2, 2, 2],
|
||||||
|
"pivot": [0, 29.8, -6],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 19], "uv_size": [2, 2]},
|
||||||
|
"east": {"uv": [20, 45], "uv_size": [2, 2]},
|
||||||
|
"south": {"uv": [45, 21], "uv_size": [2, 2]},
|
||||||
|
"west": {"uv": [22, 45], "uv_size": [2, 2]},
|
||||||
|
"up": {"uv": [24, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [26, 47], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
127
src/main/resources/assets/armory_armor/geo/usmc_helmet.geo.json
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 64,
|
||||||
|
"texture_height": 64,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedHead",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorHead",
|
||||||
|
"parent": "bipedHead",
|
||||||
|
"pivot": [0, 24, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone11",
|
||||||
|
"parent": "armorHead",
|
||||||
|
"pivot": [0, 30, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 0], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [0, 9], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [9, 0], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [9, 9], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [0, 18], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [18, 9], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [9, 18], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [18, 9], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [18, 18], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [0, 27], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [27, 0], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [9, 36], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.6, 23.4, -4.6],
|
||||||
|
"size": [9.2, 9.2, 9.2],
|
||||||
|
"inflate": 0.6,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [27, 9], "uv_size": [9, 9]},
|
||||||
|
"east": {"uv": [18, 27], "uv_size": [9, 9]},
|
||||||
|
"south": {"uv": [27, 18], "uv_size": [9, 9]},
|
||||||
|
"west": {"uv": [27, 27], "uv_size": [9, 9]},
|
||||||
|
"up": {"uv": [0, 36], "uv_size": [9, 9]},
|
||||||
|
"down": {"uv": [36, 9], "uv_size": [9, -9]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 24, -4.1],
|
||||||
|
"size": [8, 8, 8],
|
||||||
|
"inflate": 0.52,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [9, 36], "uv_size": [8, 8]},
|
||||||
|
"east": {"uv": [36, 9], "uv_size": [8, 8]},
|
||||||
|
"south": {"uv": [17, 36], "uv_size": [8, 8]},
|
||||||
|
"west": {"uv": [36, 17], "uv_size": [8, 8]},
|
||||||
|
"up": {"uv": [25, 36], "uv_size": [8, 8]},
|
||||||
|
"down": {"uv": [36, 33], "uv_size": [8, -8]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [5, 27.5, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [5, 27.5, 0],
|
||||||
|
"rotation": [-2.47864, -0.32621, -7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [37, 40], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [33, 36], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [37, 42], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [36, 33], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [38, 37], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [39, 42], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-6, 27.5, -1],
|
||||||
|
"size": [1, 2, 5],
|
||||||
|
"pivot": [-5, 27.5, 0],
|
||||||
|
"rotation": [-2.47864, 0.32621, 7.49294],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [42, 37], "uv_size": [1, 2]},
|
||||||
|
"east": {"uv": [33, 38], "uv_size": [5, 2]},
|
||||||
|
"south": {"uv": [38, 42], "uv_size": [1, 2]},
|
||||||
|
"west": {"uv": [38, 35], "uv_size": [5, 2]},
|
||||||
|
"up": {"uv": [33, 40], "uv_size": [1, 5]},
|
||||||
|
"down": {"uv": [34, 45], "uv_size": [1, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-1, 29.8, -6],
|
||||||
|
"size": [2, 2, 2],
|
||||||
|
"pivot": [0, 29.8, -6],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [35, 40], "uv_size": [2, 2]},
|
||||||
|
"east": {"uv": [40, 37], "uv_size": [2, 2]},
|
||||||
|
"south": {"uv": [40, 39], "uv_size": [2, 2]},
|
||||||
|
"west": {"uv": [41, 33], "uv_size": [2, 2]},
|
||||||
|
"up": {"uv": [40, 41], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [35, 44], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
512
src/main/resources/assets/armory_armor/geo/usmc_vest.geo.json
Normal file
@@ -0,0 +1,512 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.12.0",
|
||||||
|
"minecraft:geometry": [
|
||||||
|
{
|
||||||
|
"description": {
|
||||||
|
"identifier": "geometry.unknown",
|
||||||
|
"texture_width": 64,
|
||||||
|
"texture_height": 64,
|
||||||
|
"visible_bounds_width": 2,
|
||||||
|
"visible_bounds_height": 3.5,
|
||||||
|
"visible_bounds_offset": [0, 1.25, 0]
|
||||||
|
},
|
||||||
|
"bones": [
|
||||||
|
{
|
||||||
|
"name": "bipedHead",
|
||||||
|
"pivot": [0, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "armorBody",
|
||||||
|
"parent": "bipedHead",
|
||||||
|
"pivot": [0, 24, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-2, 22.2, -2.7],
|
||||||
|
"size": [4, 3, 4],
|
||||||
|
"pivot": [0, 23.2, -0.7],
|
||||||
|
"rotation": [15, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [34, 19], "uv_size": [4, 3]},
|
||||||
|
"east": {"uv": [34, 22], "uv_size": [4, 3]},
|
||||||
|
"south": {"uv": [34, 29], "uv_size": [4, 3]},
|
||||||
|
"west": {"uv": [34, 32], "uv_size": [4, 3]},
|
||||||
|
"up": {"uv": [5, 29], "uv_size": [4, 4]},
|
||||||
|
"down": {"uv": [34, 19], "uv_size": [4, -4]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.5, 8.65, -3.525],
|
||||||
|
"size": [5, 5, 1],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [33, 5], "uv_size": [5, 5]},
|
||||||
|
"east": {"uv": [5, 45], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [33, 10], "uv_size": [5, 5]},
|
||||||
|
"west": {"uv": [6, 45], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [43, 32], "uv_size": [5, 1]},
|
||||||
|
"down": {"uv": [43, 34], "uv_size": [5, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 17.65, -2.525],
|
||||||
|
"size": [8, 6.8, 5.05],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 0], "uv_size": [8, 7]},
|
||||||
|
"east": {"uv": [17, 28], "uv_size": [5, 7]},
|
||||||
|
"south": {"uv": [0, 7], "uv_size": [8, 7]},
|
||||||
|
"west": {"uv": [0, 29], "uv_size": [5, 7]},
|
||||||
|
"up": {"uv": [25, 25], "uv_size": [8, 5]},
|
||||||
|
"down": {"uv": [9, 33], "uv_size": [8, -5]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-5, 13.675, -3],
|
||||||
|
"size": [2, 5, 6],
|
||||||
|
"pivot": [-4, 15.675, -1],
|
||||||
|
"rotation": [0, 0, -3.5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [27, 37], "uv_size": [2, 5]},
|
||||||
|
"east": {"uv": [22, 30], "uv_size": [6, 5]},
|
||||||
|
"south": {"uv": [29, 37], "uv_size": [2, 5]},
|
||||||
|
"west": {"uv": [28, 30], "uv_size": [6, 5]},
|
||||||
|
"up": {"uv": [0, 36], "uv_size": [2, 6]},
|
||||||
|
"down": {"uv": [2, 42], "uv_size": [2, -6]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [3, 13.675, -3],
|
||||||
|
"size": [2, 5, 6],
|
||||||
|
"pivot": [4, 15.675, -1],
|
||||||
|
"rotation": [0, 0, 3.5],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [31, 37], "uv_size": [2, 5]},
|
||||||
|
"east": {"uv": [33, 0], "uv_size": [6, 5]},
|
||||||
|
"south": {"uv": [33, 37], "uv_size": [2, 5]},
|
||||||
|
"west": {"uv": [5, 33], "uv_size": [6, 5]},
|
||||||
|
"up": {"uv": [23, 37], "uv_size": [2, 6]},
|
||||||
|
"down": {"uv": [25, 43], "uv_size": [2, -6]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.49636, 13.53998, 2.13062],
|
||||||
|
"size": [9, 5, 1],
|
||||||
|
"pivot": [0.00364, 22.93998, 0.63062],
|
||||||
|
"rotation": [2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [16, 18], "uv_size": [9, 5]},
|
||||||
|
"east": {"uv": [7, 45], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [16, 23], "uv_size": [9, 5]},
|
||||||
|
"west": {"uv": [8, 45], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [38, 8], "uv_size": [9, 1]},
|
||||||
|
"down": {"uv": [38, 10], "uv_size": [9, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.99636, 18.28926, 1.76724],
|
||||||
|
"size": [8, 5.85, 1],
|
||||||
|
"pivot": [-0.49636, 22.68926, 0.26724],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [8, 0], "uv_size": [8, 6]},
|
||||||
|
"east": {"uv": [26, 43], "uv_size": [1, 6]},
|
||||||
|
"south": {"uv": [8, 6], "uv_size": [8, 6]},
|
||||||
|
"west": {"uv": [43, 41], "uv_size": [1, 6]},
|
||||||
|
"up": {"uv": [41, 36], "uv_size": [8, 1]},
|
||||||
|
"down": {"uv": [42, 38], "uv_size": [8, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.99636, 18.28926, 1.76724],
|
||||||
|
"size": [8, 5.85, 1],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"pivot": [-0.49636, 22.68926, 0.26724],
|
||||||
|
"rotation": [7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [8, 12], "uv_size": [8, 6]},
|
||||||
|
"east": {"uv": [44, 16], "uv_size": [1, 6]},
|
||||||
|
"south": {"uv": [0, 14], "uv_size": [8, 6]},
|
||||||
|
"west": {"uv": [44, 26], "uv_size": [1, 6]},
|
||||||
|
"up": {"uv": [42, 38], "uv_size": [8, 1]},
|
||||||
|
"down": {"uv": [42, 40], "uv_size": [8, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.49636, 13.53998, 2.13062],
|
||||||
|
"size": [9, 5, 1],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"pivot": [0.00364, 22.93998, 0.63062],
|
||||||
|
"rotation": [2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 24], "uv_size": [9, 5]},
|
||||||
|
"east": {"uv": [9, 45], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [24, 0], "uv_size": [9, 5]},
|
||||||
|
"west": {"uv": [10, 45], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [38, 10], "uv_size": [9, 1]},
|
||||||
|
"down": {"uv": [38, 12], "uv_size": [9, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.99636, 18.28926, -2.76724],
|
||||||
|
"size": [8, 5.85, 1],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"pivot": [-0.49636, 22.68926, -0.26724],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [16, 0], "uv_size": [8, 6]},
|
||||||
|
"east": {"uv": [35, 44], "uv_size": [1, 6]},
|
||||||
|
"south": {"uv": [16, 6], "uv_size": [8, 6]},
|
||||||
|
"west": {"uv": [36, 44], "uv_size": [1, 6]},
|
||||||
|
"up": {"uv": [42, 40], "uv_size": [8, 1]},
|
||||||
|
"down": {"uv": [43, 1], "uv_size": [8, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.49636, 13.53998, -3.13062],
|
||||||
|
"size": [9, 5, 1],
|
||||||
|
"inflate": 0.3,
|
||||||
|
"pivot": [0.00364, 22.93998, -0.63062],
|
||||||
|
"rotation": [-2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [24, 5], "uv_size": [9, 5]},
|
||||||
|
"east": {"uv": [11, 45], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [24, 10], "uv_size": [9, 5]},
|
||||||
|
"west": {"uv": [12, 45], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [38, 12], "uv_size": [9, 1]},
|
||||||
|
"down": {"uv": [38, 14], "uv_size": [9, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3.99636, 18.28926, -2.76724],
|
||||||
|
"size": [8, 5.85, 1],
|
||||||
|
"pivot": [-0.49636, 22.68926, -0.26724],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [16, 12], "uv_size": [8, 6]},
|
||||||
|
"east": {"uv": [44, 41], "uv_size": [1, 6]},
|
||||||
|
"south": {"uv": [8, 18], "uv_size": [8, 6]},
|
||||||
|
"west": {"uv": [4, 45], "uv_size": [1, 6]},
|
||||||
|
"up": {"uv": [43, 1], "uv_size": [8, 1]},
|
||||||
|
"down": {"uv": [43, 3], "uv_size": [8, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.49636, 13.53998, -3.13062],
|
||||||
|
"size": [9, 5, 1],
|
||||||
|
"pivot": [0.00364, 22.93998, -0.63062],
|
||||||
|
"rotation": [-2.5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [25, 15], "uv_size": [9, 5]},
|
||||||
|
"east": {"uv": [45, 16], "uv_size": [1, 5]},
|
||||||
|
"south": {"uv": [25, 20], "uv_size": [9, 5]},
|
||||||
|
"west": {"uv": [17, 45], "uv_size": [1, 5]},
|
||||||
|
"up": {"uv": [38, 14], "uv_size": [9, 1]},
|
||||||
|
"down": {"uv": [38, 16], "uv_size": [9, -1]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone14",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [-1, 2.1, 0],
|
||||||
|
"rotation": [-5, 20, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [1, 14.5, 2],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [-1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, 3.98475, -0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [35, 37], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [33, 42], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [4, 38], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [43, 3], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [22, 28], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [38, 35], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [2, 17.5, 2.5],
|
||||||
|
"size": [1, 1, 1],
|
||||||
|
"pivot": [-1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, 3.98475, -0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [15, 24], "uv_size": [1, 1]},
|
||||||
|
"east": {"uv": [24, 15], "uv_size": [1, 1]},
|
||||||
|
"south": {"uv": [24, 16], "uv_size": [1, 1]},
|
||||||
|
"west": {"uv": [24, 17], "uv_size": [1, 1]},
|
||||||
|
"up": {"uv": [15, 25], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [15, 27], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [1, 16.9, 2],
|
||||||
|
"size": [3, 1, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, 3.98475, -0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 5], "uv_size": [3, 1]},
|
||||||
|
"east": {"uv": [39, 4], "uv_size": [2, 1]},
|
||||||
|
"south": {"uv": [45, 21], "uv_size": [3, 1]},
|
||||||
|
"west": {"uv": [45, 45], "uv_size": [2, 1]},
|
||||||
|
"up": {"uv": [43, 6], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [10, 45], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone15",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [1, 2.1, 0],
|
||||||
|
"rotation": [-5, -20, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4, 14.5, 2],
|
||||||
|
"size": [3, 3, 2],
|
||||||
|
"pivot": [1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, -3.98475, 0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [38, 5], "uv_size": [3, 3]},
|
||||||
|
"east": {"uv": [13, 43], "uv_size": [2, 3]},
|
||||||
|
"south": {"uv": [7, 38], "uv_size": [3, 3]},
|
||||||
|
"west": {"uv": [15, 43], "uv_size": [2, 3]},
|
||||||
|
"up": {"uv": [17, 43], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [20, 45], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3, 17.5, 2.5],
|
||||||
|
"size": [1, 1, 1],
|
||||||
|
"pivot": [1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, -3.98475, 0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [15, 27], "uv_size": [1, 1]},
|
||||||
|
"east": {"uv": [33, 29], "uv_size": [1, 1]},
|
||||||
|
"south": {"uv": [4, 36], "uv_size": [1, 1]},
|
||||||
|
"west": {"uv": [4, 37], "uv_size": [1, 1]},
|
||||||
|
"up": {"uv": [10, 38], "uv_size": [1, 1]},
|
||||||
|
"down": {"uv": [38, 25], "uv_size": [1, -1]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4, 16.9, 2],
|
||||||
|
"size": [3, 1, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [1, 2.1, 0],
|
||||||
|
"rotation": [-5.01215, -3.98475, 0.34919],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [45, 43], "uv_size": [3, 1]},
|
||||||
|
"east": {"uv": [0, 46], "uv_size": [2, 1]},
|
||||||
|
"south": {"uv": [45, 44], "uv_size": [3, 1]},
|
||||||
|
"west": {"uv": [2, 46], "uv_size": [2, 1]},
|
||||||
|
"up": {"uv": [23, 43], "uv_size": [3, 2]},
|
||||||
|
"down": {"uv": [43, 26], "uv_size": [3, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone23",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [0, 3.07953, -0.52156],
|
||||||
|
"rotation": [-7.5, 0, 0],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-3, 13.97953, 1.37844],
|
||||||
|
"size": [6, 4, 2.3],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 20], "uv_size": [6, 4]},
|
||||||
|
"east": {"uv": [6, 20], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [9, 24], "uv_size": [6, 4]},
|
||||||
|
"west": {"uv": [38, 16], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [17, 35], "uv_size": [6, 2]},
|
||||||
|
"down": {"uv": [23, 37], "uv_size": [6, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3, 14.07953, 0.17844],
|
||||||
|
"size": [6, 2, 0],
|
||||||
|
"pivot": [0, 25.27953, -0.12156],
|
||||||
|
"rotation": [23, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [29, 35], "uv_size": [6, 2]},
|
||||||
|
"east": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"south": {"uv": [35, 35], "uv_size": [6, 2]},
|
||||||
|
"west": {"uv": [0, 0], "uv_size": [0, 2]},
|
||||||
|
"up": {"uv": [0, 0], "uv_size": [6, 0]},
|
||||||
|
"down": {"uv": [0, 0], "uv_size": [6, 0]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-3, 13.97953, 1.37844],
|
||||||
|
"size": [6, 4, 2.3],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [11, 33], "uv_size": [6, 4]},
|
||||||
|
"east": {"uv": [38, 20], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [33, 25], "uv_size": [6, 4]},
|
||||||
|
"west": {"uv": [38, 29], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [11, 37], "uv_size": [6, 2]},
|
||||||
|
"down": {"uv": [17, 39], "uv_size": [6, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone4",
|
||||||
|
"parent": "armorBody",
|
||||||
|
"pivot": [1.2, 13.3, -3.2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone8",
|
||||||
|
"parent": "bone4",
|
||||||
|
"pivot": [3.2, 13.35, -2.8],
|
||||||
|
"rotation": [7.67995, -12.39135, -1.6575],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [2.2, 14.35, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [3.2, 13.35, -2.8],
|
||||||
|
"rotation": [5.12076, -12.45167, -1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [38, 37], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [39, 0], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [10, 39], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [12, 39], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [43, 34], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [44, 24], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [2.2, 14.35, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [3.2, 13.35, -2.8],
|
||||||
|
"rotation": [5.12076, -12.45167, -1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [14, 39], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [16, 39], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [18, 39], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [20, 39], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [45, 3], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [18, 47], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone2",
|
||||||
|
"parent": "bone4",
|
||||||
|
"pivot": [-3.2, 13.35, -2.8],
|
||||||
|
"rotation": [7.67995, 12.39135, 1.6575],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-4.2, 14.35, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-3.2, 13.35, -2.8],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [39, 24], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [40, 16], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [40, 20], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [40, 28], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [20, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [22, 47], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-4.2, 14.35, -3.8],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [-3.2, 13.35, -2.8],
|
||||||
|
"rotation": [5.12076, 12.45167, 1.10693],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [35, 40], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [40, 37], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [41, 0], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [4, 41], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [24, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [45, 28], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone7",
|
||||||
|
"parent": "bone4",
|
||||||
|
"pivot": [1.1, 13.3, -3.2],
|
||||||
|
"rotation": [7.52136, -4.97856, -0.32745],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [0.1, 14.3, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [1.1, 13.3, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [41, 4], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [6, 41], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [8, 41], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [41, 24], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [45, 28], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [45, 32], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [0.1, 14.3, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [1.1, 13.3, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [41, 32], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [37, 41], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [39, 41], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [41, 41], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [33, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [45, 36], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bone5",
|
||||||
|
"parent": "bone4",
|
||||||
|
"pivot": [-1.1, 13.3, -3.2],
|
||||||
|
"rotation": [7.52136, 4.97856, 0.32745],
|
||||||
|
"cubes": [
|
||||||
|
{
|
||||||
|
"origin": [-2.1, 14.3, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"pivot": [-1.1, 13.3, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [0, 42], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [2, 42], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [42, 16], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [42, 20], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [37, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [39, 47], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"origin": [-2.1, 14.3, -4.2],
|
||||||
|
"size": [2, 4, 2],
|
||||||
|
"inflate": 0.1,
|
||||||
|
"pivot": [-1.1, 13.3, -3.2],
|
||||||
|
"rotation": [5, 0, 0],
|
||||||
|
"uv": {
|
||||||
|
"north": {"uv": [27, 42], "uv_size": [2, 4]},
|
||||||
|
"east": {"uv": [42, 28], "uv_size": [2, 4]},
|
||||||
|
"south": {"uv": [29, 42], "uv_size": [2, 4]},
|
||||||
|
"west": {"uv": [31, 42], "uv_size": [2, 4]},
|
||||||
|
"up": {"uv": [41, 45], "uv_size": [2, 2]},
|
||||||
|
"down": {"uv": [45, 43], "uv_size": [2, -2]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
36
src/main/resources/assets/armory_armor/lang/en_us.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"item.armory_armor.usmcarmorhelmet_helmet": "USMC защитный шлем",
|
||||||
|
"item.armory_armor.seal_leggings": "Seal униформа",
|
||||||
|
"item.armory_armor.sealarmorhelmet_2_boots": "Sealarmorhelmet 2 Boots",
|
||||||
|
"item.armory_armor.usmcarmor_chestplate": "USMC жилет",
|
||||||
|
"item.armory_armor.sealarmor_chestplate": "SEAL жилет",
|
||||||
|
"item.armory_armor.sealarmor_boots": "Sealarmor Boots",
|
||||||
|
"item.armory_armor.sealarmorhelmet_chestplate": "Sealarmorhelmet Chestplate",
|
||||||
|
"item.armory_armor.chicom_leggings": "Chicom Leggings",
|
||||||
|
"item.armory_armor.sealarmorhelmet_2_leggings": "Sealarmorhelmet 2 Leggings",
|
||||||
|
"item.armory_armor.sealarmorhelmet_2_chestplate": "Sealarmorhelmet 2 Chestplate",
|
||||||
|
"item.armory_armor.usmc_leggings": "USMC унифомра",
|
||||||
|
"item.armory_armor.sealarmor_leggings": "SEAL униформа",
|
||||||
|
"item.armory_armor.alqaida_leggings": "Al quaida униформа",
|
||||||
|
"item.armory_armor.al_quaida_2": "Al quaida униформа 2",
|
||||||
|
"item.armory_armor.al_quaida_3": "Al quaida униформа 3",
|
||||||
|
"item.armory_armor.usmcarmorhelmet_chestplate": "Usmcarmorhelmet Chestplate",
|
||||||
|
"item.armory_armor.chicom_helmet": "Chicom Helmet",
|
||||||
|
"item.armory_armor.sealarmorhelmet_2_helmet": "USMC 2 защитный шлем",
|
||||||
|
"item.armory_armor.sealarmor_helmet": "Sealarmor Helmet",
|
||||||
|
"item.armory_armor.usmc_2_leggings": "USMC 2 униформа",
|
||||||
|
"item.armory_armor.chicom_chestplate": "Разгрузочный пояс",
|
||||||
|
"item.armory_armor.sealarmorhelmet_helmet": "SEAL защитный шлем",
|
||||||
|
"item.armory_armor.chicom_boots": "Chicom Boots",
|
||||||
|
"item.armory_armor.usmcarmorhelmet_boots": "Usmcarmorhelmet Boots",
|
||||||
|
"item.armory_armor.sealarmorhelmet_boots": "Sealarmorhelmet Boots",
|
||||||
|
"item.armory_armor.usmcarmor_leggings": "Usmcarmor Leggings",
|
||||||
|
"item.armory_armor.islamic_leggings": "Islamic униформа",
|
||||||
|
"item.armory_armor.sealarmorhelmet_leggings": "Sealarmorhelmet Leggings",
|
||||||
|
"item.armory_armor.usmcarmorhelmet_leggings": "Usmcarmorhelmet Leggings",
|
||||||
|
"item.armory_armor.usmcarmor_helmet": "Usmcarmor Helmet",
|
||||||
|
"item.armory_armor.usmcarmor_boots": "Usmcarmor Boots",
|
||||||
|
"item_group.armory_armor.armory_armor": "Armory Armor",
|
||||||
|
"item.armory_armor.chechen_1": "Chechen униформа 1",
|
||||||
|
"item.armory_armor.chechen_2": "Chechen униформа 2"
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/al_quaida_2"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/al_quaida_3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka8"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/chechen_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/chechen_2"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka5"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka6"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
newmtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
map_Kd armory_armor:block/
|
||||||
|
newmtl none
|
||||||
@@ -0,0 +1,739 @@
|
|||||||
|
# Made in Blockbench 4.12.6
|
||||||
|
mtllib SEAL helmet.mtl
|
||||||
|
|
||||||
|
o cube
|
||||||
|
v 0.0625 2.0013307826469586 -0.2568758626790386
|
||||||
|
v 0.0625 2.002421599584255 -0.38187110306206007
|
||||||
|
v 0.0625 1.876335542263937 -0.25796667961633535
|
||||||
|
v 0.0625 1.877426359201234 -0.3829619199993568
|
||||||
|
v -0.0625 2.002421599584255 -0.38187110306206007
|
||||||
|
v -0.0625 2.0013307826469586 -0.2568758626790386
|
||||||
|
v -0.0625 1.877426359201234 -0.3829619199993568
|
||||||
|
v -0.0625 1.876335542263937 -0.25796667961633535
|
||||||
|
vt 0.0625 0.25
|
||||||
|
vt 0.09375 0.25
|
||||||
|
vt 0.09375 0.21875
|
||||||
|
vt 0.0625 0.21875
|
||||||
|
vt 0.75 0.890625
|
||||||
|
vt 0.78125 0.890625
|
||||||
|
vt 0.78125 0.859375
|
||||||
|
vt 0.75 0.859375
|
||||||
|
vt 0.125 0.25
|
||||||
|
vt 0.15625 0.25
|
||||||
|
vt 0.15625 0.21875
|
||||||
|
vt 0.125 0.21875
|
||||||
|
vt 0.75 0.859375
|
||||||
|
vt 0.78125 0.859375
|
||||||
|
vt 0.78125 0.828125
|
||||||
|
vt 0.75 0.828125
|
||||||
|
vt 0.1875 0.21875
|
||||||
|
vt 0.15625 0.21875
|
||||||
|
vt 0.15625 0.25
|
||||||
|
vt 0.1875 0.25
|
||||||
|
vt 0.78125 0.828125
|
||||||
|
vt 0.75 0.828125
|
||||||
|
vt 0.75 0.796875
|
||||||
|
vt 0.78125 0.796875
|
||||||
|
vn 0 0.008726535498373933 -0.9999619230641713
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 -0.008726535498373933 0.9999619230641713
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 0.9999619230641713 0.008726535498373933
|
||||||
|
vn 0 -0.9999619230641713 -0.008726535498373933
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 4/4/1 7/3/1 5/2/1 2/1/1
|
||||||
|
f 3/8/2 4/7/2 2/6/2 1/5/2
|
||||||
|
f 8/12/3 3/11/3 1/10/3 6/9/3
|
||||||
|
f 7/16/4 8/15/4 6/14/4 5/13/4
|
||||||
|
f 6/20/5 1/19/5 2/18/5 5/17/5
|
||||||
|
f 7/24/6 4/23/6 3/22/6 8/21/6
|
||||||
|
o cube
|
||||||
|
v -0.0625 2.0013307826469586 -0.2568758626790386
|
||||||
|
v -0.0625 2.002421599584255 -0.38187110306206007
|
||||||
|
v -0.0625 1.8138379220724263 -0.2585120880849837
|
||||||
|
v -0.0625 1.814928739009723 -0.38350732846800517
|
||||||
|
v -0.25 2.002421599584255 -0.38187110306206007
|
||||||
|
v -0.25 2.0013307826469586 -0.2568758626790386
|
||||||
|
v -0.25 1.814928739009723 -0.38350732846800517
|
||||||
|
v -0.25 1.8138379220724263 -0.2585120880849837
|
||||||
|
vt 0.703125 0.703125
|
||||||
|
vt 0.75 0.703125
|
||||||
|
vt 0.75 0.65625
|
||||||
|
vt 0.703125 0.65625
|
||||||
|
vt 0.703125 0.578125
|
||||||
|
vt 0.734375 0.578125
|
||||||
|
vt 0.734375 0.53125
|
||||||
|
vt 0.703125 0.53125
|
||||||
|
vt 0.3125 0.296875
|
||||||
|
vt 0.359375 0.296875
|
||||||
|
vt 0.359375 0.25
|
||||||
|
vt 0.3125 0.25
|
||||||
|
vt 0.453125 0.296875
|
||||||
|
vt 0.484375 0.296875
|
||||||
|
vt 0.484375 0.25
|
||||||
|
vt 0.453125 0.25
|
||||||
|
vt 0.75 0.5
|
||||||
|
vt 0.703125 0.5
|
||||||
|
vt 0.703125 0.53125
|
||||||
|
vt 0.75 0.53125
|
||||||
|
vt 0.53125 0.296875
|
||||||
|
vt 0.484375 0.296875
|
||||||
|
vt 0.484375 0.265625
|
||||||
|
vt 0.53125 0.265625
|
||||||
|
vn 0 0.008726535498373933 -0.9999619230641713
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 -0.008726535498373933 0.9999619230641713
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 0.9999619230641713 0.008726535498373933
|
||||||
|
vn 0 -0.9999619230641713 -0.008726535498373933
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 12/28/7 15/27/7 13/26/7 10/25/7
|
||||||
|
f 11/32/8 12/31/8 10/30/8 9/29/8
|
||||||
|
f 16/36/9 11/35/9 9/34/9 14/33/9
|
||||||
|
f 15/40/10 16/39/10 14/38/10 13/37/10
|
||||||
|
f 14/44/11 9/43/11 10/42/11 13/41/11
|
||||||
|
f 15/48/12 12/47/12 11/46/12 16/45/12
|
||||||
|
o cube
|
||||||
|
v 0.25 2.0013307826469586 -0.2568758626790386
|
||||||
|
v 0.25 2.002421599584255 -0.38187110306206007
|
||||||
|
v 0.25 1.8138379220724263 -0.2585120880849837
|
||||||
|
v 0.25 1.814928739009723 -0.38350732846800517
|
||||||
|
v 0.0625 2.002421599584255 -0.38187110306206007
|
||||||
|
v 0.0625 2.0013307826469586 -0.2568758626790386
|
||||||
|
v 0.0625 1.814928739009723 -0.38350732846800517
|
||||||
|
v 0.0625 1.8138379220724263 -0.2585120880849837
|
||||||
|
vt 0.359375 0.296875
|
||||||
|
vt 0.40625 0.296875
|
||||||
|
vt 0.40625 0.25
|
||||||
|
vt 0.359375 0.25
|
||||||
|
vt 0.703125 0.5
|
||||||
|
vt 0.734375 0.5
|
||||||
|
vt 0.734375 0.453125
|
||||||
|
vt 0.703125 0.453125
|
||||||
|
vt 0.40625 0.296875
|
||||||
|
vt 0.453125 0.296875
|
||||||
|
vt 0.453125 0.25
|
||||||
|
vt 0.40625 0.25
|
||||||
|
vt 0.53125 0.296875
|
||||||
|
vt 0.5625 0.296875
|
||||||
|
vt 0.5625 0.25
|
||||||
|
vt 0.53125 0.25
|
||||||
|
vt 0.046875 0.25
|
||||||
|
vt 0 0.25
|
||||||
|
vt 0 0.28125
|
||||||
|
vt 0.046875 0.28125
|
||||||
|
vt 0.09375 0.28125
|
||||||
|
vt 0.046875 0.28125
|
||||||
|
vt 0.046875 0.25
|
||||||
|
vt 0.09375 0.25
|
||||||
|
vn 0 0.008726535498373933 -0.9999619230641713
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 -0.008726535498373933 0.9999619230641713
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 0.9999619230641713 0.008726535498373933
|
||||||
|
vn 0 -0.9999619230641713 -0.008726535498373933
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 20/52/13 23/51/13 21/50/13 18/49/13
|
||||||
|
f 19/56/14 20/55/14 18/54/14 17/53/14
|
||||||
|
f 24/60/15 19/59/15 17/58/15 22/57/15
|
||||||
|
f 23/64/16 24/63/16 22/62/16 21/61/16
|
||||||
|
f 22/68/17 17/67/17 18/66/17 21/65/17
|
||||||
|
f 23/72/18 20/71/18 19/70/18 24/69/18
|
||||||
|
o cube
|
||||||
|
v 0.3187499999999999 1.9391867917834145 0.32033610404793167
|
||||||
|
v 0.3187499999999999 1.9449681215510872 -0.3421386699820818
|
||||||
|
v 0.3187499999999999 1.8516901235152996 0.3195725321918239
|
||||||
|
v 0.3187499999999999 1.8574714532829724 -0.3429022418381895
|
||||||
|
v -0.31874999999999987 1.9449681215510872 -0.3421386699820818
|
||||||
|
v -0.31874999999999987 1.9391867917834145 0.32033610404793167
|
||||||
|
v -0.31874999999999987 1.8574714532829724 -0.3429022418381895
|
||||||
|
v -0.31874999999999987 1.8516901235152996 0.3195725321918239
|
||||||
|
vt 0.578125 0.59375
|
||||||
|
vt 0.734375 0.59375
|
||||||
|
vt 0.734375 0.578125
|
||||||
|
vt 0.578125 0.578125
|
||||||
|
vt 0.703125 0.9375
|
||||||
|
vt 0.859375 0.9375
|
||||||
|
vt 0.859375 0.921875
|
||||||
|
vt 0.703125 0.921875
|
||||||
|
vt 0.703125 0.921875
|
||||||
|
vt 0.859375 0.921875
|
||||||
|
vt 0.859375 0.90625
|
||||||
|
vt 0.703125 0.90625
|
||||||
|
vt 0.703125 0.90625
|
||||||
|
vt 0.859375 0.90625
|
||||||
|
vt 0.859375 0.890625
|
||||||
|
vt 0.703125 0.890625
|
||||||
|
vt 0.15625 0.84375
|
||||||
|
vt 0 0.84375
|
||||||
|
vt 0 1
|
||||||
|
vt 0.15625 1
|
||||||
|
vt 0.15625 0.84375
|
||||||
|
vt 0 0.84375
|
||||||
|
vt 0 0.6875
|
||||||
|
vt 0.15625 0.6875
|
||||||
|
vn 0 0.008726535498373933 -0.9999619230641713
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 -0.008726535498373933 0.9999619230641713
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 0.9999619230641713 0.008726535498373933
|
||||||
|
vn 0 -0.9999619230641713 -0.008726535498373933
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 28/76/19 31/75/19 29/74/19 26/73/19
|
||||||
|
f 27/80/20 28/79/20 26/78/20 25/77/20
|
||||||
|
f 32/84/21 27/83/21 25/82/21 30/81/21
|
||||||
|
f 31/88/22 32/87/22 30/86/22 29/85/22
|
||||||
|
f 30/92/23 25/91/23 26/90/23 29/89/23
|
||||||
|
f 31/96/24 28/95/24 27/94/24 32/93/24
|
||||||
|
o cube
|
||||||
|
v 0.29 2.04 0.29
|
||||||
|
v 0.29 2.04 -0.29
|
||||||
|
v 0.29 1.46 0.29
|
||||||
|
v 0.29 1.46 -0.29
|
||||||
|
v -0.29 2.04 -0.29
|
||||||
|
v -0.29 2.04 0.29
|
||||||
|
v -0.29 1.46 -0.29
|
||||||
|
v -0.29 1.46 0.29
|
||||||
|
vt 0.15625 1
|
||||||
|
vt 0.296875 1
|
||||||
|
vt 0.296875 0.859375
|
||||||
|
vt 0.15625 0.859375
|
||||||
|
vt 0.15625 0.859375
|
||||||
|
vt 0.296875 0.859375
|
||||||
|
vt 0.296875 0.71875
|
||||||
|
vt 0.15625 0.71875
|
||||||
|
vt 0.15625 0.71875
|
||||||
|
vt 0.296875 0.71875
|
||||||
|
vt 0.296875 0.578125
|
||||||
|
vt 0.15625 0.578125
|
||||||
|
vt 0.296875 1
|
||||||
|
vt 0.4375 1
|
||||||
|
vt 0.4375 0.859375
|
||||||
|
vt 0.296875 0.859375
|
||||||
|
vt 0.4375 0.71875
|
||||||
|
vt 0.296875 0.71875
|
||||||
|
vt 0.296875 0.859375
|
||||||
|
vt 0.4375 0.859375
|
||||||
|
vt 0.4375 0.71875
|
||||||
|
vt 0.296875 0.71875
|
||||||
|
vt 0.296875 0.578125
|
||||||
|
vt 0.4375 0.578125
|
||||||
|
vn 0 0 -1
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 0 1
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
vn 0 -1 0
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 36/100/25 39/99/25 37/98/25 34/97/25
|
||||||
|
f 35/104/26 36/103/26 34/102/26 33/101/26
|
||||||
|
f 40/108/27 35/107/27 33/106/27 38/105/27
|
||||||
|
f 39/112/28 40/111/28 38/110/28 37/109/28
|
||||||
|
f 38/116/29 33/115/29 34/114/29 37/113/29
|
||||||
|
f 39/120/30 36/119/30 35/118/30 40/117/30
|
||||||
|
o cube
|
||||||
|
v 0.29874999999999996 2.04875 0.29874999999999996
|
||||||
|
v 0.29874999999999996 2.04875 -0.29874999999999996
|
||||||
|
v 0.29874999999999996 1.45125 0.29874999999999996
|
||||||
|
v 0.29874999999999996 1.45125 -0.29874999999999996
|
||||||
|
v -0.29874999999999996 2.04875 -0.29874999999999996
|
||||||
|
v -0.29874999999999996 2.04875 0.29874999999999996
|
||||||
|
v -0.29874999999999996 1.45125 -0.29874999999999996
|
||||||
|
v -0.29874999999999996 1.45125 0.29874999999999996
|
||||||
|
vt 0.4375 0.71875
|
||||||
|
vt 0.578125 0.71875
|
||||||
|
vt 0.578125 0.578125
|
||||||
|
vt 0.4375 0.578125
|
||||||
|
vt 0 0.546875
|
||||||
|
vt 0.140625 0.546875
|
||||||
|
vt 0.140625 0.40625
|
||||||
|
vt 0 0.40625
|
||||||
|
vt 0.140625 0.4375
|
||||||
|
vt 0.28125 0.4375
|
||||||
|
vt 0.28125 0.296875
|
||||||
|
vt 0.140625 0.296875
|
||||||
|
vt 0.28125 0.4375
|
||||||
|
vt 0.421875 0.4375
|
||||||
|
vt 0.421875 0.296875
|
||||||
|
vt 0.28125 0.296875
|
||||||
|
vt 0.5625 0.296875
|
||||||
|
vt 0.421875 0.296875
|
||||||
|
vt 0.421875 0.4375
|
||||||
|
vt 0.5625 0.4375
|
||||||
|
vt 0.703125 0.578125
|
||||||
|
vt 0.5625 0.578125
|
||||||
|
vt 0.5625 0.4375
|
||||||
|
vt 0.703125 0.4375
|
||||||
|
vn 0 0 -1
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 0 1
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
vn 0 -1 0
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 44/124/31 47/123/31 45/122/31 42/121/31
|
||||||
|
f 43/128/32 44/127/32 42/126/32 41/125/32
|
||||||
|
f 48/132/33 43/131/33 41/130/33 46/129/33
|
||||||
|
f 47/136/34 48/135/34 46/134/34 45/133/34
|
||||||
|
f 46/140/35 41/139/35 42/138/35 45/137/35
|
||||||
|
f 47/144/36 44/143/36 43/142/36 48/141/36
|
||||||
|
o cube
|
||||||
|
v 0.2825 2.0324999999999998 0.27625
|
||||||
|
v 0.2825 2.0324999999999998 -0.28874999999999995
|
||||||
|
v 0.2825 1.4675 0.27625
|
||||||
|
v 0.2825 1.4675 -0.28874999999999995
|
||||||
|
v -0.2825 2.0324999999999998 -0.28874999999999995
|
||||||
|
v -0.2825 2.0324999999999998 0.27625
|
||||||
|
v -0.2825 1.4675 -0.28874999999999995
|
||||||
|
v -0.2825 1.4675 0.27625
|
||||||
|
vt 0.5625 0.4375
|
||||||
|
vt 0.6875 0.4375
|
||||||
|
vt 0.6875 0.3125
|
||||||
|
vt 0.5625 0.3125
|
||||||
|
vt 0.578125 1
|
||||||
|
vt 0.703125 1
|
||||||
|
vt 0.703125 0.875
|
||||||
|
vt 0.578125 0.875
|
||||||
|
vt 0.578125 0.875
|
||||||
|
vt 0.703125 0.875
|
||||||
|
vt 0.703125 0.75
|
||||||
|
vt 0.578125 0.75
|
||||||
|
vt 0.578125 0.75
|
||||||
|
vt 0.703125 0.75
|
||||||
|
vt 0.703125 0.625
|
||||||
|
vt 0.578125 0.625
|
||||||
|
vt 0.125 0.28125
|
||||||
|
vt 0 0.28125
|
||||||
|
vt 0 0.40625
|
||||||
|
vt 0.125 0.40625
|
||||||
|
vt 0.6875 0.3125
|
||||||
|
vt 0.5625 0.3125
|
||||||
|
vt 0.5625 0.1875
|
||||||
|
vt 0.6875 0.1875
|
||||||
|
vn 0 0 -1
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 0 1
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
vn 0 -1 0
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 52/148/37 55/147/37 53/146/37 50/145/37
|
||||||
|
f 51/152/38 52/151/38 50/150/38 49/149/38
|
||||||
|
f 56/156/39 51/155/39 49/154/39 54/153/39
|
||||||
|
f 55/160/40 56/159/40 54/158/40 53/157/40
|
||||||
|
f 54/164/41 49/163/41 50/162/41 53/161/41
|
||||||
|
f 55/168/42 52/167/42 51/166/42 56/165/42
|
||||||
|
o cube
|
||||||
|
v 0.31875 2.06875 0.31875
|
||||||
|
v 0.31875 2.06875 -0.31875
|
||||||
|
v 0.31875 1.43125 0.31875
|
||||||
|
v 0.31875 1.43125 -0.31875
|
||||||
|
v -0.3187500000000001 2.06875 -0.31875
|
||||||
|
v -0.3187500000000001 2.06875 0.31875
|
||||||
|
v -0.3187500000000001 1.43125 -0.31875
|
||||||
|
v -0.3187500000000001 1.43125 0.31875
|
||||||
|
vt 0 0.6875
|
||||||
|
vt 0.140625 0.6875
|
||||||
|
vt 0.140625 0.546875
|
||||||
|
vt 0 0.546875
|
||||||
|
vt 0.140625 0.578125
|
||||||
|
vt 0.28125 0.578125
|
||||||
|
vt 0.28125 0.4375
|
||||||
|
vt 0.140625 0.4375
|
||||||
|
vt 0.28125 0.578125
|
||||||
|
vt 0.421875 0.578125
|
||||||
|
vt 0.421875 0.4375
|
||||||
|
vt 0.28125 0.4375
|
||||||
|
vt 0.421875 0.578125
|
||||||
|
vt 0.5625 0.578125
|
||||||
|
vt 0.5625 0.4375
|
||||||
|
vt 0.421875 0.4375
|
||||||
|
vt 0.578125 0.859375
|
||||||
|
vt 0.4375 0.859375
|
||||||
|
vt 0.4375 1
|
||||||
|
vt 0.578125 1
|
||||||
|
vt 0.578125 0.859375
|
||||||
|
vt 0.4375 0.859375
|
||||||
|
vt 0.4375 0.71875
|
||||||
|
vt 0.578125 0.71875
|
||||||
|
vn 0 0 -1
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 0 1
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 1 0
|
||||||
|
vn 0 -1 0
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 60/172/43 63/171/43 61/170/43 58/169/43
|
||||||
|
f 59/176/44 60/175/44 58/174/44 57/173/44
|
||||||
|
f 64/180/45 59/179/45 57/178/45 62/177/45
|
||||||
|
f 63/184/46 64/183/46 62/182/46 61/181/46
|
||||||
|
f 62/188/47 57/187/47 58/186/47 61/185/47
|
||||||
|
f 63/192/48 60/191/48 59/190/48 64/189/48
|
||||||
|
o cube
|
||||||
|
v -0.29618422597249355 1.8191578063526626 0.255167832577919
|
||||||
|
v -0.29618422597249355 1.83278886490433 -0.0570347366664116
|
||||||
|
v -0.3125 1.6953451531586654 0.24976205539546445
|
||||||
|
v -0.3125 1.7089762117103329 -0.06244051384886611
|
||||||
|
v -0.35814952980835646 1.840938987417286 -0.05667889463267606
|
||||||
|
v -0.35814952980835646 1.8273079288656184 0.2555236746116545
|
||||||
|
v -0.3744653038358629 1.7171263342232888 -0.06208467181513057
|
||||||
|
v -0.3744653038358629 1.7034952756716213 0.2501178974292
|
||||||
|
vt 0.140625 0.609375
|
||||||
|
vt 0.15625 0.609375
|
||||||
|
vt 0.15625 0.578125
|
||||||
|
vt 0.140625 0.578125
|
||||||
|
vt 0.578125 0.625
|
||||||
|
vt 0.65625 0.625
|
||||||
|
vt 0.65625 0.59375
|
||||||
|
vt 0.578125 0.59375
|
||||||
|
vt 0.125 0.328125
|
||||||
|
vt 0.140625 0.328125
|
||||||
|
vt 0.140625 0.296875
|
||||||
|
vt 0.125 0.296875
|
||||||
|
vt 0.65625 0.625
|
||||||
|
vt 0.734375 0.625
|
||||||
|
vt 0.734375 0.59375
|
||||||
|
vt 0.65625 0.59375
|
||||||
|
vt 0.15625 0.609375
|
||||||
|
vt 0.140625 0.609375
|
||||||
|
vt 0.140625 0.6875
|
||||||
|
vt 0.15625 0.6875
|
||||||
|
vt 0.140625 0.40625
|
||||||
|
vt 0.125 0.40625
|
||||||
|
vt 0.125 0.328125
|
||||||
|
vt 0.140625 0.328125
|
||||||
|
vn -1.7347234759768075e-18 0.043619387365336 -0.9990482215818579
|
||||||
|
vn 0.9914448613738105 -0.13040196020729422 -0.005693472539768734
|
||||||
|
vn 1.7347234759768075e-18 -0.043619387365336 0.9990482215818579
|
||||||
|
vn -0.9914448613738105 0.13040196020729422 0.005693472539768734
|
||||||
|
vn 0.13052619222005152 0.9905012255519768 0.04324621745963608
|
||||||
|
vn -0.13052619222005152 -0.9905012255519768 -0.04324621745963608
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 68/196/49 71/195/49 69/194/49 66/193/49
|
||||||
|
f 67/200/50 68/199/50 66/198/50 65/197/50
|
||||||
|
f 72/204/51 67/203/51 65/202/51 70/201/51
|
||||||
|
f 71/208/52 72/207/52 70/206/52 69/205/52
|
||||||
|
f 70/212/53 65/211/53 66/210/53 69/209/53
|
||||||
|
f 71/216/54 68/215/54 67/214/54 72/213/54
|
||||||
|
o cube
|
||||||
|
v 0.35814952980835646 1.8273079288656184 0.2555236746116545
|
||||||
|
v 0.35814952980835646 1.840938987417286 -0.05667889463267606
|
||||||
|
v 0.3744653038358629 1.7034952756716213 0.2501178974292
|
||||||
|
v 0.3744653038358629 1.7171263342232888 -0.06208467181513057
|
||||||
|
v 0.29618422597249355 1.83278886490433 -0.0570347366664116
|
||||||
|
v 0.29618422597249355 1.8191578063526626 0.255167832577919
|
||||||
|
v 0.3125 1.7089762117103329 -0.06244051384886611
|
||||||
|
v 0.3125 1.6953451531586654 0.24976205539546445
|
||||||
|
vt 0.375 0.25
|
||||||
|
vt 0.390625 0.25
|
||||||
|
vt 0.390625 0.21875
|
||||||
|
vt 0.375 0.21875
|
||||||
|
vt 0.703125 1
|
||||||
|
vt 0.78125 1
|
||||||
|
vt 0.78125 0.96875
|
||||||
|
vt 0.703125 0.96875
|
||||||
|
vt 0.390625 0.25
|
||||||
|
vt 0.40625 0.25
|
||||||
|
vt 0.40625 0.21875
|
||||||
|
vt 0.390625 0.21875
|
||||||
|
vt 0.703125 0.96875
|
||||||
|
vt 0.78125 0.96875
|
||||||
|
vt 0.78125 0.9375
|
||||||
|
vt 0.703125 0.9375
|
||||||
|
vt 0.109375 0.203125
|
||||||
|
vt 0.09375 0.203125
|
||||||
|
vt 0.09375 0.28125
|
||||||
|
vt 0.109375 0.28125
|
||||||
|
vt 0.125 0.28125
|
||||||
|
vt 0.109375 0.28125
|
||||||
|
vt 0.109375 0.203125
|
||||||
|
vt 0.125 0.203125
|
||||||
|
vn 1.7347234759768075e-18 0.043619387365336 -0.9990482215818579
|
||||||
|
vn 0.9914448613738105 0.13040196020729422 0.005693472539768734
|
||||||
|
vn -1.7347234759768075e-18 -0.043619387365336 0.9990482215818579
|
||||||
|
vn -0.9914448613738105 -0.13040196020729422 -0.005693472539768734
|
||||||
|
vn -0.13052619222005152 0.9905012255519768 0.04324621745963608
|
||||||
|
vn 0.13052619222005152 -0.9905012255519768 -0.04324621745963608
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 76/220/55 79/219/55 77/218/55 74/217/55
|
||||||
|
f 75/224/56 76/223/56 74/222/56 73/221/56
|
||||||
|
f 80/228/57 75/227/57 73/226/57 78/225/57
|
||||||
|
f 79/232/58 80/231/58 78/230/58 77/229/58
|
||||||
|
f 78/236/59 73/235/59 74/234/59 77/233/59
|
||||||
|
f 79/240/60 76/239/60 75/238/60 80/237/60
|
||||||
|
o cube
|
||||||
|
v 0.0625 1.9701148336442205 -0.23475361830076702
|
||||||
|
v 0.0625 1.986430607671727 -0.35868422597249333
|
||||||
|
v 0.0625 1.8461842259724943 -0.25106939232827347
|
||||||
|
v 0.0625 1.8625000000000007 -0.3749999999999998
|
||||||
|
v -0.0625 1.986430607671727 -0.35868422597249333
|
||||||
|
v -0.0625 1.9701148336442205 -0.23475361830076702
|
||||||
|
v -0.0625 1.8625000000000007 -0.3749999999999998
|
||||||
|
v -0.0625 1.8461842259724943 -0.25106939232827347
|
||||||
|
vt 0.734375 0.609375
|
||||||
|
vt 0.765625 0.609375
|
||||||
|
vt 0.765625 0.578125
|
||||||
|
vt 0.734375 0.578125
|
||||||
|
vt 0.734375 0.578125
|
||||||
|
vt 0.765625 0.578125
|
||||||
|
vt 0.765625 0.546875
|
||||||
|
vt 0.734375 0.546875
|
||||||
|
vt 0.484375 0.265625
|
||||||
|
vt 0.515625 0.265625
|
||||||
|
vt 0.515625 0.234375
|
||||||
|
vt 0.484375 0.234375
|
||||||
|
vt 0.734375 0.5
|
||||||
|
vt 0.765625 0.5
|
||||||
|
vt 0.765625 0.46875
|
||||||
|
vt 0.734375 0.46875
|
||||||
|
vt 0.03125 0.21875
|
||||||
|
vt 0 0.21875
|
||||||
|
vt 0 0.25
|
||||||
|
vt 0.03125 0.25
|
||||||
|
vt 0.0625 0.25
|
||||||
|
vt 0.03125 0.25
|
||||||
|
vt 0.03125 0.21875
|
||||||
|
vt 0.0625 0.21875
|
||||||
|
vn 0 0.13052619222005157 -0.9914448613738104
|
||||||
|
vn 1 0 0
|
||||||
|
vn 0 -0.13052619222005157 0.9914448613738104
|
||||||
|
vn -1 0 0
|
||||||
|
vn 0 0.9914448613738104 0.13052619222005157
|
||||||
|
vn 0 -0.9914448613738104 -0.13052619222005157
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 84/244/61 87/243/61 85/242/61 82/241/61
|
||||||
|
f 83/248/62 84/247/62 82/246/62 81/245/62
|
||||||
|
f 88/252/63 83/251/63 81/250/63 86/249/63
|
||||||
|
f 87/256/64 88/255/64 86/254/64 85/253/64
|
||||||
|
f 86/260/65 81/259/65 82/258/65 85/257/65
|
||||||
|
f 87/264/66 84/263/66 83/262/66 88/261/66
|
||||||
|
o cube
|
||||||
|
v -0.22373397375735601 1.8064382988488867 0.13826837625060115
|
||||||
|
v -0.23378239123047978 1.7855815456334638 -0.04779686809018582
|
||||||
|
v -0.2500069968076749 1.622106013532391 0.16034974508940808
|
||||||
|
v -0.2600554142807987 1.6012492603169681 -0.02571549925137888
|
||||||
|
v -0.2955750621066383 1.7946666643283957 -0.04547815200369429
|
||||||
|
v -0.2855266446335145 1.8155234175438184 0.1405870923370927
|
||||||
|
v -0.3218480851569572 1.6103343790119 -0.02339678316488733
|
||||||
|
v -0.31179966768383344 1.6311911322273227 0.16266846117589964
|
||||||
|
vt 0.21875 0.25
|
||||||
|
vt 0.234375 0.25
|
||||||
|
vt 0.234375 0.203125
|
||||||
|
vt 0.21875 0.203125
|
||||||
|
vt 0.703125 0.84375
|
||||||
|
vt 0.75 0.84375
|
||||||
|
vt 0.75 0.796875
|
||||||
|
vt 0.703125 0.796875
|
||||||
|
vt 0.234375 0.25
|
||||||
|
vt 0.25 0.25
|
||||||
|
vt 0.25 0.203125
|
||||||
|
vt 0.234375 0.203125
|
||||||
|
vt 0.171875 0.296875
|
||||||
|
vt 0.21875 0.296875
|
||||||
|
vt 0.21875 0.25
|
||||||
|
vt 0.171875 0.25
|
||||||
|
vt 0.265625 0.203125
|
||||||
|
vt 0.25 0.203125
|
||||||
|
vt 0.25 0.25
|
||||||
|
vt 0.265625 0.25
|
||||||
|
vt 0.765625 0.75
|
||||||
|
vt 0.75 0.75
|
||||||
|
vt 0.75 0.703125
|
||||||
|
vt 0.765625 0.703125
|
||||||
|
vn -0.0535915598566601 -0.11123601714892141 -0.9923479698175307
|
||||||
|
vn 0.9886827340185362 -0.145361899118907 -0.03709945738386479
|
||||||
|
vn 0.0535915598566601 0.11123601714892141 0.9923479698175307
|
||||||
|
vn -0.9886827340185362 0.145361899118907 0.03709945738386479
|
||||||
|
vn 0.1401227896017008 0.983105521687977 -0.11776730047363708
|
||||||
|
vn -0.1401227896017008 -0.983105521687977 0.11776730047363708
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 92/268/67 95/267/67 93/266/67 90/265/67
|
||||||
|
f 91/272/68 92/271/68 90/270/68 89/269/68
|
||||||
|
f 96/276/69 91/275/69 89/274/69 94/273/69
|
||||||
|
f 95/280/70 96/279/70 94/278/70 93/277/70
|
||||||
|
f 94/284/71 89/283/71 90/282/71 93/281/71
|
||||||
|
f 95/288/72 92/287/72 91/286/72 96/285/72
|
||||||
|
o cube
|
||||||
|
v -0.11939276925548908 1.6933861056047452 0.0581073650986635
|
||||||
|
v -0.10169876650018486 1.6132232238068367 -0.3077967680405371
|
||||||
|
v -0.12208162849579979 1.632363555142619 0.07134626124158512
|
||||||
|
v -0.10438762574049557 1.5522006733447107 -0.2945578718976155
|
||||||
|
v -0.35118859578474165 1.6212191240162146 -0.32161308677616157
|
||||||
|
v -0.3688825985400459 1.7013820058141231 0.04429104636303903
|
||||||
|
v -0.35387745502505236 1.5601965735540886 -0.30837419063323995
|
||||||
|
v -0.3715714577803566 1.640359455351997 0.05752994250596065
|
||||||
|
vt 0.703125 0.453125
|
||||||
|
vt 0.765625 0.453125
|
||||||
|
vt 0.765625 0.4375
|
||||||
|
vt 0.703125 0.4375
|
||||||
|
vt 0.703125 0.65625
|
||||||
|
vt 0.796875 0.65625
|
||||||
|
vt 0.796875 0.640625
|
||||||
|
vt 0.703125 0.640625
|
||||||
|
vt 0.734375 0.625
|
||||||
|
vt 0.796875 0.625
|
||||||
|
vt 0.796875 0.609375
|
||||||
|
vt 0.734375 0.609375
|
||||||
|
vt 0.703125 0.640625
|
||||||
|
vt 0.796875 0.640625
|
||||||
|
vt 0.796875 0.625
|
||||||
|
vt 0.703125 0.625
|
||||||
|
vt 0.75 0.34375
|
||||||
|
vt 0.6875 0.34375
|
||||||
|
vt 0.6875 0.4375
|
||||||
|
vt 0.75 0.4375
|
||||||
|
vt 0.75 0.34375
|
||||||
|
vt 0.6875 0.34375
|
||||||
|
vt 0.6875 0.25
|
||||||
|
vt 0.75 0.25
|
||||||
|
vn 0.04718400734747798 -0.21376768479442268 -0.9757443550378683
|
||||||
|
vn 0.9979593171382273 -0.031983600837511686 0.055265274942497875
|
||||||
|
vn -0.04718400734747798 0.21376768479442268 0.9757443550378683
|
||||||
|
vn -0.9979593171382273 0.031983600837511686 -0.055265274942497875
|
||||||
|
vn 0.04302174784497145 0.9763608073940182 -0.21182233828674588
|
||||||
|
vn -0.04302174784497145 -0.9763608073940182 0.21182233828674588
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 100/292/73 103/291/73 101/290/73 98/289/73
|
||||||
|
f 99/296/74 100/295/74 98/294/74 97/293/74
|
||||||
|
f 104/300/75 99/299/75 97/298/75 102/297/75
|
||||||
|
f 103/304/76 104/303/76 102/302/76 101/301/76
|
||||||
|
f 102/308/77 97/307/77 98/306/77 101/305/77
|
||||||
|
f 103/312/78 100/311/78 99/310/78 104/309/78
|
||||||
|
o cube
|
||||||
|
v 0.2978851788087462 1.8173404412828047 0.14105083555439102
|
||||||
|
v 0.30793359628187 1.796483688067382 -0.04501440878639598
|
||||||
|
v 0.32415820185906513 1.633008155966309 0.16313220439319798
|
||||||
|
v 0.3342066193321889 1.6121514027508863 -0.022933039947589023
|
||||||
|
v 0.24614092540571147 1.7873985693724503 -0.047333124872887516
|
||||||
|
v 0.23609250793258774 1.808255322587873 0.13873211946789946
|
||||||
|
v 0.2724139484560304 1.6030662840559546 -0.025251756034080572
|
||||||
|
v 0.2623655309829066 1.6239230372713773 0.16081348830670641
|
||||||
|
vt 0.515625 0.265625
|
||||||
|
vt 0.53125 0.265625
|
||||||
|
vt 0.53125 0.21875
|
||||||
|
vt 0.515625 0.21875
|
||||||
|
vt 0.703125 0.890625
|
||||||
|
vt 0.75 0.890625
|
||||||
|
vt 0.75 0.84375
|
||||||
|
vt 0.703125 0.84375
|
||||||
|
vt 0.1875 0.25
|
||||||
|
vt 0.203125 0.25
|
||||||
|
vt 0.203125 0.203125
|
||||||
|
vt 0.1875 0.203125
|
||||||
|
vt 0.125 0.296875
|
||||||
|
vt 0.171875 0.296875
|
||||||
|
vt 0.171875 0.25
|
||||||
|
vt 0.125 0.25
|
||||||
|
vt 0.21875 0.203125
|
||||||
|
vt 0.203125 0.203125
|
||||||
|
vt 0.203125 0.25
|
||||||
|
vt 0.21875 0.25
|
||||||
|
vt 0.765625 0.796875
|
||||||
|
vt 0.75 0.796875
|
||||||
|
vt 0.75 0.75
|
||||||
|
vt 0.765625 0.75
|
||||||
|
vn 0.0535915598566601 -0.11123601714892141 -0.9923479698175307
|
||||||
|
vn 0.9886827340185362 0.145361899118907 0.03709945738386479
|
||||||
|
vn -0.0535915598566601 0.11123601714892141 0.9923479698175307
|
||||||
|
vn -0.9886827340185362 -0.145361899118907 -0.03709945738386479
|
||||||
|
vn -0.1401227896017008 0.983105521687977 -0.11776730047363708
|
||||||
|
vn 0.1401227896017008 -0.983105521687977 0.11776730047363708
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 108/316/79 111/315/79 109/314/79 106/313/79
|
||||||
|
f 107/320/80 108/319/80 106/318/80 105/317/80
|
||||||
|
f 112/324/81 107/323/81 105/322/81 110/321/81
|
||||||
|
f 111/328/82 112/327/82 110/326/82 109/325/82
|
||||||
|
f 110/332/83 105/331/83 106/330/83 109/329/83
|
||||||
|
f 111/336/84 108/335/84 107/334/84 112/333/84
|
||||||
|
o cube
|
||||||
|
v -0.25356106033608883 1.8160034690750968 0.14443012025994795
|
||||||
|
v -0.2642793723074208 1.7937562656453125 -0.05403947370355819
|
||||||
|
v -0.28158561825642897 1.6193823647375014 0.16798358035467537
|
||||||
|
v -0.292303930227761 1.5971351613077172 -0.030486013608830756
|
||||||
|
v -0.338430577358811 1.8046584080792307 -0.05125701439976835
|
||||||
|
v -0.32771226538747894 1.826905611509015 0.1472125795637378
|
||||||
|
v -0.3664551352791512 1.6080373037416351 -0.0277035543050409
|
||||||
|
v -0.35573682330781914 1.6302845071714194 0.17076603965846524
|
||||||
|
vt 0.265625 0.25
|
||||||
|
vt 0.28125 0.25
|
||||||
|
vt 0.28125 0.203125
|
||||||
|
vt 0.265625 0.203125
|
||||||
|
vt 0.703125 0.796875
|
||||||
|
vt 0.75 0.796875
|
||||||
|
vt 0.75 0.75
|
||||||
|
vt 0.703125 0.75
|
||||||
|
vt 0.28125 0.25
|
||||||
|
vt 0.296875 0.25
|
||||||
|
vt 0.296875 0.203125
|
||||||
|
vt 0.28125 0.203125
|
||||||
|
vt 0.21875 0.296875
|
||||||
|
vt 0.265625 0.296875
|
||||||
|
vt 0.265625 0.25
|
||||||
|
vt 0.21875 0.25
|
||||||
|
vt 0.3125 0.203125
|
||||||
|
vt 0.296875 0.203125
|
||||||
|
vt 0.296875 0.25
|
||||||
|
vt 0.3125 0.25
|
||||||
|
vt 0.765625 0.703125
|
||||||
|
vt 0.75 0.703125
|
||||||
|
vt 0.75 0.65625
|
||||||
|
vt 0.765625 0.65625
|
||||||
|
vn -0.0535915598566601 -0.11123601714892141 -0.9923479698175307
|
||||||
|
vn 0.9886827340185362 -0.145361899118907 -0.03709945738386479
|
||||||
|
vn 0.0535915598566601 0.11123601714892141 0.9923479698175307
|
||||||
|
vn -0.9886827340185362 0.145361899118907 0.03709945738386479
|
||||||
|
vn 0.1401227896017008 0.983105521687977 -0.11776730047363708
|
||||||
|
vn -0.1401227896017008 -0.983105521687977 0.11776730047363708
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 116/340/85 119/339/85 117/338/85 114/337/85
|
||||||
|
f 115/344/86 116/343/86 114/342/86 113/341/86
|
||||||
|
f 120/348/87 115/347/87 113/346/87 118/345/87
|
||||||
|
f 119/352/88 120/351/88 118/350/88 117/349/88
|
||||||
|
f 118/356/89 113/355/89 114/354/89 117/353/89
|
||||||
|
f 119/360/90 116/359/90 115/358/90 120/357/90
|
||||||
|
o cube
|
||||||
|
v 0.32771226538747894 1.826905611509015 0.1472125795637378
|
||||||
|
v 0.338430577358811 1.8046584080792307 -0.05125701439976835
|
||||||
|
v 0.35573682330781914 1.6302845071714194 0.17076603965846524
|
||||||
|
v 0.3664551352791512 1.6080373037416351 -0.0277035543050409
|
||||||
|
v 0.2642793723074208 1.7937562656453125 -0.05403947370355819
|
||||||
|
v 0.25356106033608883 1.8160034690750968 0.14443012025994795
|
||||||
|
v 0.292303930227761 1.5971351613077172 -0.030486013608830756
|
||||||
|
v 0.28158561825642897 1.6193823647375014 0.16798358035467537
|
||||||
|
vt 0.3125 0.25
|
||||||
|
vt 0.328125 0.25
|
||||||
|
vt 0.328125 0.203125
|
||||||
|
vt 0.3125 0.203125
|
||||||
|
vt 0.703125 0.75
|
||||||
|
vt 0.75 0.75
|
||||||
|
vt 0.75 0.703125
|
||||||
|
vt 0.703125 0.703125
|
||||||
|
vt 0.328125 0.25
|
||||||
|
vt 0.34375 0.25
|
||||||
|
vt 0.34375 0.203125
|
||||||
|
vt 0.328125 0.203125
|
||||||
|
vt 0.265625 0.296875
|
||||||
|
vt 0.3125 0.296875
|
||||||
|
vt 0.3125 0.25
|
||||||
|
vt 0.265625 0.25
|
||||||
|
vt 0.359375 0.203125
|
||||||
|
vt 0.34375 0.203125
|
||||||
|
vt 0.34375 0.25
|
||||||
|
vt 0.359375 0.25
|
||||||
|
vt 0.375 0.25
|
||||||
|
vt 0.359375 0.25
|
||||||
|
vt 0.359375 0.203125
|
||||||
|
vt 0.375 0.203125
|
||||||
|
vn 0.0535915598566601 -0.11123601714892141 -0.9923479698175307
|
||||||
|
vn 0.9886827340185362 0.145361899118907 0.03709945738386479
|
||||||
|
vn -0.0535915598566601 0.11123601714892141 0.9923479698175307
|
||||||
|
vn -0.9886827340185362 -0.145361899118907 -0.03709945738386479
|
||||||
|
vn -0.1401227896017008 0.983105521687977 -0.11776730047363708
|
||||||
|
vn 0.1401227896017008 -0.983105521687977 0.11776730047363708
|
||||||
|
usemtl m_1e0b01f4-8960-fbc5-f0eb-f0b829090472
|
||||||
|
f 124/364/91 127/363/91 125/362/91 122/361/91
|
||||||
|
f 123/368/92 124/367/92 122/366/92 121/365/92
|
||||||
|
f 128/372/93 123/371/93 121/370/93 126/369/93
|
||||||
|
f 127/376/94 128/375/94 126/374/94 125/373/94
|
||||||
|
f 126/380/95 121/379/95 122/378/95 125/377/95
|
||||||
|
f 127/384/96 124/383/96 123/382/96 128/381/96
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka10"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
newmtl m_fdfcfefc-7bfc-ef52-ba81-4f659e2b538e
|
||||||
|
illum 1
|
||||||
|
Ns 0.0
|
||||||
|
Ni 1.45
|
||||||
|
d 1.0
|
||||||
|
Ka 1.0 1.0 1.0
|
||||||
|
Kd 0.8 0.8 0.8
|
||||||
|
Ks 0.0 0.0 0.0
|
||||||
|
map_Kd armory_armor:block/texture
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
1538
src/main/resources/assets/armory_armor/models/item/seal_vest-fix.obj
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
newmtl m_fdfcfefc-7bfc-ef52-ba81-4f659e2b538e
|
||||||
|
map_Kd armory_armor:block/texture
|
||||||
|
newmtl none
|
||||||
1705
src/main/resources/assets/armory_armor/models/item/seal_vest.obj
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
newmtl m_fdfcfefc-7bfc-ef52-ba81-4f659e2b538e.001
|
||||||
|
illum 1
|
||||||
|
Ns 0.0
|
||||||
|
Ni 1.45
|
||||||
|
d 1.0
|
||||||
|
Ka 1.0 1.0 1.0
|
||||||
|
Kd 0.8 0.8 0.8
|
||||||
|
Ks 0.0 0.0 0.0
|
||||||
|
map_Kd armory_armor:block/texture
|
||||||
|
Ke 0.0 0.0 0.0
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka4"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka11"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka7"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka9"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "armory_armor:item/ikonka2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 522 B |
|
After Width: | Height: | Size: 531 B |
|
After Width: | Height: | Size: 522 B |
|
After Width: | Height: | Size: 526 B |
|
After Width: | Height: | Size: 440 B |
BIN
src/main/resources/assets/armory_armor/textures/item/ikonka1.png
Normal file
|
After Width: | Height: | Size: 679 B |