diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15979ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# Eclipse Gradle plugin generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath + +#mcreator files +.mcreator +hpm.mcreator +mcreator.gradle +**/.mcreator/ +**/run/ +**/models/ +**/elements/ +**/.idea/ +**/.settings/ +/.gradle/ +/.idea/ +/.mcreator/ +/.settings/ +/build/ +/elements/ +/models/ +/run/ +git-lfs.exe +/.gitattributes +/2023-02-27_22.png +/corvette-steamship-swashbucklers.png +/cutter-swashbucklers.png +/image-1.png +/MilCutterRecipe.png +/pre266recipes.png +/raft-swashbucklers.png +/recipes.png +/ships (1).png +/swashbuckler-swashbucklers.png +/unins000.dat +/unins000.exe +/upgraded-swashbuckler-swashbucklers.png +/war-cutter-swashbucklers.png diff --git a/2.6.5/Swashbucklers 2.6.5 1.16.5.jar b/2.6.5/Swashbucklers 2.6.5 1.16.5.jar new file mode 100644 index 0000000..aca3b41 Binary files /dev/null and b/2.6.5/Swashbucklers 2.6.5 1.16.5.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.19.2.jar b/2.6.5/Swashbucklers! 2.6.5 1.19.2.jar new file mode 100644 index 0000000..91af5f2 Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.19.2.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.19.4.jar b/2.6.5/Swashbucklers! 2.6.5 1.19.4.jar new file mode 100644 index 0000000..5a3f6bb Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.19.4.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.20.1.jar b/2.6.5/Swashbucklers! 2.6.5 1.20.1.jar new file mode 100644 index 0000000..808ae07 Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.20.1.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.20.4.jar b/2.6.5/Swashbucklers! 2.6.5 1.20.4.jar new file mode 100644 index 0000000..2a29ba6 Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.20.4.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.20.6.jar b/2.6.5/Swashbucklers! 2.6.5 1.20.6.jar new file mode 100644 index 0000000..367b818 Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.20.6.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5 1.21.1.jar b/2.6.5/Swashbucklers! 2.6.5 1.21.1.jar new file mode 100644 index 0000000..755bd1b Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5 1.21.1.jar differ diff --git a/2.6.5/Swashbucklers! 2.6.5.jar b/2.6.5/Swashbucklers! 2.6.5.jar new file mode 100644 index 0000000..88eec2a Binary files /dev/null and b/2.6.5/Swashbucklers! 2.6.5.jar differ diff --git a/Achievements/AFineNavyVessel.png b/Achievements/AFineNavyVessel.png new file mode 100644 index 0000000..706727c Binary files /dev/null and b/Achievements/AFineNavyVessel.png differ diff --git a/Achievements/AdvancedWarfare.png b/Achievements/AdvancedWarfare.png new file mode 100644 index 0000000..15d52b2 Binary files /dev/null and b/Achievements/AdvancedWarfare.png differ diff --git a/Achievements/AllAchievementsUnlocked.png b/Achievements/AllAchievementsUnlocked.png new file mode 100644 index 0000000..5294aee Binary files /dev/null and b/Achievements/AllAchievementsUnlocked.png differ diff --git a/Achievements/CrudeBeginnings.png b/Achievements/CrudeBeginnings.png new file mode 100644 index 0000000..37fd91f Binary files /dev/null and b/Achievements/CrudeBeginnings.png differ diff --git a/Achievements/ExpandingHorizons.png b/Achievements/ExpandingHorizons.png new file mode 100644 index 0000000..42846c7 Binary files /dev/null and b/Achievements/ExpandingHorizons.png differ diff --git a/Achievements/ExplosiveAdvancement.png b/Achievements/ExplosiveAdvancement.png new file mode 100644 index 0000000..3c3318c Binary files /dev/null and b/Achievements/ExplosiveAdvancement.png differ diff --git a/Achievements/GlassCannon.png b/Achievements/GlassCannon.png new file mode 100644 index 0000000..abf8779 Binary files /dev/null and b/Achievements/GlassCannon.png differ diff --git a/Achievements/IfItBrokeFixIt.png b/Achievements/IfItBrokeFixIt.png new file mode 100644 index 0000000..9183f3a Binary files /dev/null and b/Achievements/IfItBrokeFixIt.png differ diff --git a/Achievements/JackSparrowWho.png b/Achievements/JackSparrowWho.png new file mode 100644 index 0000000..801ffe9 Binary files /dev/null and b/Achievements/JackSparrowWho.png differ diff --git a/Achievements/MaintenenceIsKey.png b/Achievements/MaintenenceIsKey.png new file mode 100644 index 0000000..256530d Binary files /dev/null and b/Achievements/MaintenenceIsKey.png differ diff --git a/Achievements/NoAchievementsUnlocked.png b/Achievements/NoAchievementsUnlocked.png new file mode 100644 index 0000000..c6c1ce3 Binary files /dev/null and b/Achievements/NoAchievementsUnlocked.png differ diff --git a/Achievements/NoMercy.png b/Achievements/NoMercy.png new file mode 100644 index 0000000..4660537 Binary files /dev/null and b/Achievements/NoMercy.png differ diff --git a/Achievements/Swashbucklers.png b/Achievements/Swashbucklers.png new file mode 100644 index 0000000..6937f5f Binary files /dev/null and b/Achievements/Swashbucklers.png differ diff --git a/Achievements/ToTheDarkSide.png b/Achievements/ToTheDarkSide.png new file mode 100644 index 0000000..42a5bcf Binary files /dev/null and b/Achievements/ToTheDarkSide.png differ diff --git a/Achievements/WellSheAintMuch.png b/Achievements/WellSheAintMuch.png new file mode 100644 index 0000000..c350bd6 Binary files /dev/null and b/Achievements/WellSheAintMuch.png differ diff --git a/README.md b/README.md index dd1b94a..b516d53 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ -this will be a sick train mod trust \ No newline at end of file +# Swashbucklers + minecraft pirate ship mod - made with mcreator diff --git a/ShipPickup.png b/ShipPickup.png new file mode 100644 index 0000000..a6df09a Binary files /dev/null and b/ShipPickup.png differ diff --git a/ShipRepair.png b/ShipRepair.png new file mode 100644 index 0000000..eaa439f Binary files /dev/null and b/ShipRepair.png differ diff --git a/ShipSpeedGif.gif b/ShipSpeedGif.gif new file mode 100644 index 0000000..3d9c216 --- /dev/null +++ b/ShipSpeedGif.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c28755f79d1191c0d4932679899f5a6224a7e79de4be43da4eda6ca4f630da +size 351710218 diff --git a/SpannerTool.png b/SpannerTool.png new file mode 100644 index 0000000..ade5926 Binary files /dev/null and b/SpannerTool.png differ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..0263cb1 --- /dev/null +++ b/build.gradle @@ -0,0 +1,62 @@ +buildscript { + repositories { + maven { url = 'https://maven.minecraftforge.net' } + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + } +} +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' + +version = '1.0' +group = 'com.yourname.modid' +archivesBaseName = 'modid' + +java.toolchain.languageVersion = JavaLanguageVersion.of(17) + +minecraft { + mappings channel: 'official', version: '1.18.2' + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + client { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + } +} + +dependencies { + minecraft 'net.minecraftforge:forge:1.18.2-40.2.21' +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation +} + +apply from: 'mcreator.gradle' + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..29b2ac4 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..249e583 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ae04661 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/recipesheet.png b/recipesheet.png new file mode 100644 index 0000000..7680374 Binary files /dev/null and b/recipesheet.png differ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..3703f36 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,6 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = 'https://maven.minecraftforge.net/' } + } +} \ No newline at end of file diff --git a/spannerRecipe.png b/spannerRecipe.png new file mode 100644 index 0000000..ab269db Binary files /dev/null and b/spannerRecipe.png differ diff --git a/src/main/java/hal/studios/hpm/HpmMod.java b/src/main/java/hal/studios/hpm/HpmMod.java new file mode 100644 index 0000000..81355db --- /dev/null +++ b/src/main/java/hal/studios/hpm/HpmMod.java @@ -0,0 +1,61 @@ +/* + * MCreator note: + * + * If you lock base mod element files, you can edit this file and it won't get overwritten. + * If you change your modid or package, you need to apply these changes to this file MANUALLY. + * + * Settings in @Mod annotation WON'T be changed in case of the base mod element + * files lock too, so you need to set them manually here in such case. + * + * If you do not lock base mod element files in Workspace settings, this file + * will be REGENERATED on each build. + * + */ +package hal.studios.hpm; + +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.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.IEventBus; + +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 hal.studios.hpm.init.HpmModTabs; +import hal.studios.hpm.init.HpmModParticleTypes; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; + +@Mod("hpm") +public class HpmMod { + public static final Logger LOGGER = LogManager.getLogger(HpmMod.class); + public static final String MODID = "hpm"; + 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 HpmMod() { + HpmModTabs.load(); + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + + HpmModItems.REGISTRY.register(bus); + HpmModEntities.REGISTRY.register(bus); + + HpmModParticleTypes.REGISTRY.register(bus); + + } + + public static void addNetworkMessage(Class messageType, BiConsumer encoder, Function decoder, BiConsumer> messageConsumer) { + PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer); + messageID++; + } +} diff --git a/src/main/java/hal/studios/hpm/client/gui/CutterinventoryScreen.java b/src/main/java/hal/studios/hpm/client/gui/CutterinventoryScreen.java new file mode 100644 index 0000000..373cd1a --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/gui/CutterinventoryScreen.java @@ -0,0 +1,84 @@ + +package hal.studios.hpm.client.gui; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.Minecraft; + +import java.util.HashMap; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.systems.RenderSystem; + +public class CutterinventoryScreen extends AbstractContainerScreen { + private final static HashMap guistate = CutterinventoryMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public CutterinventoryScreen(CutterinventoryMenu container, Inventory inventory, Component text) { + super(container, inventory, text); + this.world = container.world; + this.x = container.x; + this.y = container.y; + this.z = container.z; + this.entity = container.entity; + this.imageWidth = 420; + this.imageHeight = 247; + } + + private static final ResourceLocation texture = new ResourceLocation("hpm:textures/screens/cutterinventory.png"); + + @Override + public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(ms); + super.render(ms, mouseX, mouseY, partialTicks); + this.renderTooltip(ms, mouseX, mouseY); + } + + @Override + protected void renderBg(PoseStack ms, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.setShaderTexture(0, texture); + this.blit(ms, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight); + RenderSystem.disableBlend(); + } + + @Override + public boolean keyPressed(int key, int b, int c) { + if (key == 256) { + this.minecraft.player.closeContainer(); + return true; + } + return super.keyPressed(key, b, c); + } + + @Override + public void containerTick() { + super.containerTick(); + } + + @Override + protected void renderLabels(PoseStack poseStack, int mouseX, int mouseY) { + } + + @Override + public void onClose() { + super.onClose(); + Minecraft.getInstance().keyboardHandler.setSendRepeatsToGui(false); + } + + @Override + public void init() { + super.init(); + this.minecraft.keyboardHandler.setSendRepeatsToGui(true); + } +} diff --git a/src/main/java/hal/studios/hpm/client/gui/RaftinventoryScreen.java b/src/main/java/hal/studios/hpm/client/gui/RaftinventoryScreen.java new file mode 100644 index 0000000..ad1b597 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/gui/RaftinventoryScreen.java @@ -0,0 +1,89 @@ + +package hal.studios.hpm.client.gui; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.Minecraft; + +import java.util.HashMap; + +import hal.studios.hpm.world.inventory.RaftinventoryMenu; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.systems.RenderSystem; + +public class RaftinventoryScreen extends AbstractContainerScreen { + private final static HashMap guistate = RaftinventoryMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public RaftinventoryScreen(RaftinventoryMenu container, Inventory inventory, Component text) { + super(container, inventory, text); + this.world = container.world; + this.x = container.x; + this.y = container.y; + this.z = container.z; + this.entity = container.entity; + this.imageWidth = 371; + this.imageHeight = 182; + } + + @Override + public boolean isPauseScreen() { + return true; + } + + private static final ResourceLocation texture = new ResourceLocation("hpm:textures/screens/raftinventory.png"); + + @Override + public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(ms); + super.render(ms, mouseX, mouseY, partialTicks); + this.renderTooltip(ms, mouseX, mouseY); + } + + @Override + protected void renderBg(PoseStack ms, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.setShaderTexture(0, texture); + this.blit(ms, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight); + RenderSystem.disableBlend(); + } + + @Override + public boolean keyPressed(int key, int b, int c) { + if (key == 256) { + this.minecraft.player.closeContainer(); + return true; + } + return super.keyPressed(key, b, c); + } + + @Override + public void containerTick() { + super.containerTick(); + } + + @Override + protected void renderLabels(PoseStack poseStack, int mouseX, int mouseY) { + } + + @Override + public void onClose() { + super.onClose(); + Minecraft.getInstance().keyboardHandler.setSendRepeatsToGui(false); + } + + @Override + public void init() { + super.init(); + this.minecraft.keyboardHandler.setSendRepeatsToGui(true); + } +} diff --git a/src/main/java/hal/studios/hpm/client/gui/SwashbucklerinventoryScreen.java b/src/main/java/hal/studios/hpm/client/gui/SwashbucklerinventoryScreen.java new file mode 100644 index 0000000..f7cdfd1 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/gui/SwashbucklerinventoryScreen.java @@ -0,0 +1,84 @@ + +package hal.studios.hpm.client.gui; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.Component; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.Minecraft; + +import java.util.HashMap; + +import hal.studios.hpm.world.inventory.SwashbucklerinventoryMenu; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.systems.RenderSystem; + +public class SwashbucklerinventoryScreen extends AbstractContainerScreen { + private final static HashMap guistate = SwashbucklerinventoryMenu.guistate; + private final Level world; + private final int x, y, z; + private final Player entity; + + public SwashbucklerinventoryScreen(SwashbucklerinventoryMenu container, Inventory inventory, Component text) { + super(container, inventory, text); + this.world = container.world; + this.x = container.x; + this.y = container.y; + this.z = container.z; + this.entity = container.entity; + this.imageWidth = 176; + this.imageHeight = 175; + } + + private static final ResourceLocation texture = new ResourceLocation("hpm:textures/screens/swashbucklerinventory.png"); + + @Override + public void render(PoseStack ms, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(ms); + super.render(ms, mouseX, mouseY, partialTicks); + this.renderTooltip(ms, mouseX, mouseY); + } + + @Override + protected void renderBg(PoseStack ms, float partialTicks, int gx, int gy) { + RenderSystem.setShaderColor(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + RenderSystem.setShaderTexture(0, texture); + this.blit(ms, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight); + RenderSystem.disableBlend(); + } + + @Override + public boolean keyPressed(int key, int b, int c) { + if (key == 256) { + this.minecraft.player.closeContainer(); + return true; + } + return super.keyPressed(key, b, c); + } + + @Override + public void containerTick() { + super.containerTick(); + } + + @Override + protected void renderLabels(PoseStack poseStack, int mouseX, int mouseY) { + } + + @Override + public void onClose() { + super.onClose(); + Minecraft.getInstance().keyboardHandler.setSendRepeatsToGui(false); + } + + @Override + public void init() { + super.init(); + this.minecraft.keyboardHandler.setSendRepeatsToGui(true); + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelCutterPassenger.java b/src/main/java/hal/studios/hpm/client/model/ModelCutterPassenger.java new file mode 100644 index 0000000..d354b69 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelCutterPassenger.java @@ -0,0 +1,45 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.2 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelCutterPassenger extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "model_cutter_passenger"), "main"); + public final ModelPart bb_main; + + public ModelCutterPassenger(ModelPart root) { + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 0).addBox(-12.0F, -24.0F, -12.0F, 24.0F, 24.0F, 24.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 128, 128); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclass.java b/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclass.java new file mode 100644 index 0000000..b1988c3 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclass.java @@ -0,0 +1,1667 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.6.4 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcorvetteclass extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcorvetteclass"), "main"); + public final ModelPart bone24; + public final ModelPart bone23; + public final ModelPart bone22; + public final ModelPart bone9; + public final ModelPart bone3; + public final ModelPart sail; + public final ModelPart sail2; + public final ModelPart sail3; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone13; + public final ModelPart bone14; + public final ModelPart bone26; + public final ModelPart bone27; + public final ModelPart bone28; + public final ModelPart bone29; + public final ModelPart bone30; + public final ModelPart treasurechest; + public final ModelPart goldbarrel; + public final ModelPart bone33; + public final ModelPart hexadecagon; + public final ModelPart treasurechest2; + public final ModelPart bone34; + public final ModelPart bone54; + public final ModelPart lifeboat2; + public final ModelPart lifeboat4; + public final ModelPart bone16; + public final ModelPart bone; + public final ModelPart bone25; + public final ModelPart bone61; + public final ModelPart lifeboat3; + public final ModelPart greenbarrel; + public final ModelPart redbarrel; + public final ModelPart closedchest; + public final ModelPart valuablecargo; + public final ModelPart redbarrel3; + public final ModelPart redbarrel4; + public final ModelPart redbarrel5; + public final ModelPart redbarrel6; + public final ModelPart redbarrel7; + public final ModelPart redbarrel8; + public final ModelPart redbarrel9; + public final ModelPart redbarrel10; + public final ModelPart cargo; + public final ModelPart cargo2; + public final ModelPart valuablecargo2; + public final ModelPart algar; + public final ModelPart algar2; + public final ModelPart algar3; + public final ModelPart algar4; + public final ModelPart algar5; + public final ModelPart algar6; + public final ModelPart algar7; + public final ModelPart algar8; + public final ModelPart algar9; + public final ModelPart algar10; + public final ModelPart algar11; + public final ModelPart bb_main; + + public Modelcorvetteclass(ModelPart root) { + this.bone24 = root.getChild("bone24"); + this.bone23 = root.getChild("bone23"); + this.bone22 = root.getChild("bone22"); + this.bone9 = root.getChild("bone9"); + this.bone3 = root.getChild("bone3"); + this.sail = root.getChild("sail"); + this.sail2 = root.getChild("sail2"); + this.sail3 = root.getChild("sail3"); + this.bone11 = root.getChild("bone11"); + this.bone12 = root.getChild("bone12"); + this.bone13 = root.getChild("bone13"); + this.bone14 = root.getChild("bone14"); + this.bone26 = root.getChild("bone26"); + this.bone27 = root.getChild("bone27"); + this.bone28 = root.getChild("bone28"); + this.bone29 = root.getChild("bone29"); + this.bone30 = root.getChild("bone30"); + this.treasurechest = root.getChild("treasurechest"); + this.goldbarrel = root.getChild("goldbarrel"); + this.bone33 = root.getChild("bone33"); + this.hexadecagon = root.getChild("hexadecagon"); + this.treasurechest2 = root.getChild("treasurechest2"); + this.bone34 = root.getChild("bone34"); + this.bone54 = root.getChild("bone54"); + this.lifeboat2 = root.getChild("lifeboat2"); + this.lifeboat4 = root.getChild("lifeboat4"); + this.bone16 = root.getChild("bone16"); + this.bone = root.getChild("bone"); + this.bone25 = root.getChild("bone25"); + this.bone61 = root.getChild("bone61"); + this.lifeboat3 = root.getChild("lifeboat3"); + this.greenbarrel = root.getChild("greenbarrel"); + this.redbarrel = root.getChild("redbarrel"); + this.closedchest = root.getChild("closedchest"); + this.valuablecargo = root.getChild("valuablecargo"); + this.redbarrel3 = root.getChild("redbarrel3"); + this.redbarrel4 = root.getChild("redbarrel4"); + this.redbarrel5 = root.getChild("redbarrel5"); + this.redbarrel6 = root.getChild("redbarrel6"); + this.redbarrel7 = root.getChild("redbarrel7"); + this.redbarrel8 = root.getChild("redbarrel8"); + this.redbarrel9 = root.getChild("redbarrel9"); + this.redbarrel10 = root.getChild("redbarrel10"); + this.cargo = root.getChild("cargo"); + this.cargo2 = root.getChild("cargo2"); + this.valuablecargo2 = root.getChild("valuablecargo2"); + this.algar = root.getChild("algar"); + this.algar2 = root.getChild("algar2"); + this.algar3 = root.getChild("algar3"); + this.algar4 = root.getChild("algar4"); + this.algar5 = root.getChild("algar5"); + this.algar6 = root.getChild("algar6"); + this.algar7 = root.getChild("algar7"); + this.algar8 = root.getChild("algar8"); + this.algar9 = root.getChild("algar9"); + this.algar10 = root.getChild("algar10"); + this.algar11 = root.getChild("algar11"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone24 = partdefinition.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(281, 131).mirror().addBox(2.5175F, 1.8519F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 611).mirror() + .addBox(2.5925F, -1.1481F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(210, 793).mirror().addBox(2.905F, -1.1481F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(675, 85).mirror().addBox(2.505F, -1.1481F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(594, 0).mirror().addBox(2.5925F, 7.8519F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(141, 794).mirror().addBox(2.5925F, -2.1481F, -87.1111F, 1.0F, 4.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(883, 0).mirror() + .addBox(2.5175F, 1.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(882, 371).mirror().addBox(2.5925F, 7.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(792, 648).mirror().addBox(2.905F, 7.8519F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(661, 674).mirror().addBox(2.505F, 7.8519F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(392, 745).mirror().addBox(2.805F, 1.8519F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(584, 792).mirror() + .addBox(2.805F, 4.8519F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(252, 654).mirror().addBox(2.705F, 4.8519F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(792, 51) + .mirror().addBox(2.305F, 1.8519F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(180, 586).mirror().addBox(2.505F, -1.1481F, 93.8889F, 12.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-13.0333F, 31.0F, 22.1111F, 0.0F, 0.0F, -1.1781F)); + PartDefinition cube_r1 = bone24.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(591, 596).mirror().addBox(1.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -81.1111F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition cube_r2 = bone24.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(455, 16).mirror().addBox(2.938F, -2.6481F, -9.1897F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3208F, 10.5F, -98.1111F, 0.0F, -0.0611F, 0.0F)); + PartDefinition cube_r3 = bone24.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(485, 215).mirror().addBox(3.1658F, -3.3608F, -9.3051F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0639F, 7.4589F, -98.107F, -0.013F, -0.0952F, 0.2187F)); + PartDefinition cube_r4 = bone24.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(412, 16).mirror().addBox(4.9871F, -1.3215F, 2.4597F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.9085F, 6.2676F, -107.237F, 0.1411F, -0.1485F, -0.1232F)); + PartDefinition cube_r5 = bone24.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(499, 0).mirror().addBox(4.2531F, -1.2504F, -9.1392F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3208F, 1.0F, -98.6111F, 0.1547F, -0.2242F, 0.2691F)); + PartDefinition cube_r6 = bone24.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(627, 179).mirror().addBox(1.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -49.1111F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition bone23 = partdefinition.addOrReplaceChild("bone23", + CubeListBuilder.create().texOffs(281, 131).addBox(-3.5175F, 1.8519F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(0, 611).addBox(-3.5925F, -1.1481F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .texOffs(210, 793).addBox(-3.905F, -1.1481F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(675, 85).addBox(-3.505F, -1.1481F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(594, 0) + .addBox(-3.5925F, 7.8519F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(141, 794).addBox(-3.5925F, -2.1481F, -87.1111F, 1.0F, 4.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(883, 0) + .addBox(-3.5175F, 1.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(882, 371).addBox(-3.5925F, 7.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(792, 648) + .addBox(-3.905F, 7.8519F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(661, 674).addBox(-3.505F, 7.8519F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(392, 745) + .addBox(-3.805F, 1.8519F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(584, 792).addBox(-3.805F, 4.8519F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(252, 654) + .addBox(-3.705F, 4.8519F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(792, 51).addBox(-3.305F, 1.8519F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(180, 586) + .addBox(-14.505F, -1.1481F, 93.8889F, 12.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.0333F, 31.0F, 22.1111F, 0.0F, 0.0F, 1.1781F)); + PartDefinition cube_r7 = bone23.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(591, 596).addBox(-2.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -81.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition cube_r8 = bone23.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(455, 16).addBox(-3.938F, -2.6481F, -9.1897F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3208F, 10.5F, -98.1111F, 0.0F, 0.0611F, 0.0F)); + PartDefinition cube_r9 = bone23.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(485, 215).addBox(-4.1658F, -3.3608F, -9.3051F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0639F, 7.4589F, -98.107F, -0.013F, 0.0952F, -0.2187F)); + PartDefinition cube_r10 = bone23.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(412, 16).addBox(-5.9871F, -1.3215F, 2.4597F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.9085F, 6.2676F, -107.237F, 0.1411F, 0.1485F, 0.1232F)); + PartDefinition cube_r11 = bone23.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(499, 0).addBox(-5.2531F, -1.2504F, -9.1392F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3208F, 1.0F, -98.6111F, 0.1547F, 0.2242F, -0.2691F)); + PartDefinition cube_r12 = bone23.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(627, 179).addBox(-2.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -49.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition bone22 = partdefinition.addOrReplaceChild("bone22", + CubeListBuilder.create().texOffs(281, 72).mirror().addBox(1.6742F, 0.7019F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(574, 475).mirror() + .addBox(1.7492F, -2.2981F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(163, 790).mirror().addBox(2.0617F, -2.2981F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(531, 674).mirror().addBox(1.6617F, -2.2981F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(94, 570).mirror() + .addBox(1.7492F, 6.7019F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(537, 789).mirror().addBox(2.0617F, 6.7019F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(668, 588).mirror().addBox(1.6617F, 6.7019F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(566, 111).mirror() + .addBox(1.6617F, -2.2981F, 93.9889F, 10.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(641, 741).mirror().addBox(1.9617F, 0.7019F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(445, 789).mirror().addBox(1.9617F, 3.7019F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(110, 654).mirror() + .addBox(1.9617F, 3.7019F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 789).mirror().addBox(1.4617F, 0.7019F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-21.0333F, 22.0F, 22.1111F, 0.0F, 0.0F, -0.6981F)); + PartDefinition cube_r13 = bone22.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(438, 215).mirror().addBox(4.4482F, -3.4012F, -9.8775F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3883F, 10.6448F, -98.8297F, 0.0802F, -0.3085F, 0.0826F)); + PartDefinition cube_r14 = bone22.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(255, 607).mirror().addBox(1.2081F, -2.9099F, 11.0645F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.6115F, 9.7818F, -98.8646F, 0.0258F, -0.0042F, 0.001F)); + PartDefinition cube_r15 = bone22.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(438, 259).mirror().addBox(4.8954F, -2.1248F, -9.7873F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.4731F, 6.829F, -99.0556F, 0.1214F, -0.3244F, 0.0689F)); + PartDefinition cube_r16 = bone22.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(516, 633).mirror().addBox(0.6698F, -2.9194F, 11.1827F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.4731F, 6.829F, -99.0556F, 0.0324F, -0.0192F, 0.0792F)); + PartDefinition cube_r17 = bone22.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(514, 558).mirror().addBox(5.1922F, -2.4814F, -11.4009F, 1.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0404F, 2.2996F, -98.5559F, 0.1573F, -0.3457F, 0.1702F)); + PartDefinition cube_r18 = bone22.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(346, 881).mirror().addBox(1.4402F, -3.3111F, -5.5048F, 1.0F, 2.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0965F, 1.4155F, -82.5869F, 0.0262F, -0.0401F, 0.1745F)); + PartDefinition cube_r19 = bone22.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(394, 475).mirror().addBox(5.1607F, -3.4951F, -10.9177F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3337F, 4.7261F, -99.0056F, 0.1205F, -0.3635F, 0.2756F)); + PartDefinition cube_r20 = bone22.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(591, 633).mirror().addBox(-2.682F, 10.2734F, 30.2905F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(8.0415F, -8.1671F, -118.5094F, 0.0262F, -0.0349F, 0.1748F)); + PartDefinition cube_r21 = bone22.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(516, 596).mirror().addBox(1.0285F, -3.9575F, -5.9716F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -49.1111F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition bone9 = partdefinition.addOrReplaceChild("bone9", + CubeListBuilder.create().texOffs(281, 72).addBox(-2.6742F, 0.7019F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(574, 475).addBox(-2.7492F, -2.2981F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .texOffs(163, 790).addBox(-3.0617F, -2.2981F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(531, 674).addBox(-2.6617F, -2.2981F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(94, 570) + .addBox(-2.7492F, 6.7019F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(537, 789).addBox(-3.0617F, 6.7019F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(668, 588) + .addBox(-2.6617F, 6.7019F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(566, 111).addBox(-11.6617F, -2.2981F, 93.9889F, 10.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(641, 741) + .addBox(-2.9617F, 0.7019F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(445, 789).addBox(-2.9617F, 3.7019F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(110, 654) + .addBox(-2.9617F, 3.7019F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(0, 789).addBox(-2.4617F, 0.7019F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(21.0333F, 22.0F, 22.1111F, 0.0F, 0.0F, 0.6981F)); + PartDefinition cube_r22 = bone9.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(438, 215).addBox(-5.4482F, -3.4012F, -9.8775F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3883F, 10.6448F, -98.8297F, 0.0802F, 0.3085F, -0.0826F)); + PartDefinition cube_r23 = bone9.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(255, 607).addBox(-2.2081F, -2.9099F, 11.0645F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.6115F, 9.7818F, -98.8646F, 0.0258F, 0.0042F, -0.001F)); + PartDefinition cube_r24 = bone9.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(438, 259).addBox(-5.8954F, -2.1248F, -9.7873F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4731F, 6.829F, -99.0556F, 0.1214F, 0.3244F, -0.0689F)); + PartDefinition cube_r25 = bone9.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(516, 633).addBox(-1.6698F, -2.9194F, 11.1827F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.4731F, 6.829F, -99.0556F, 0.0324F, 0.0192F, -0.0792F)); + PartDefinition cube_r26 = bone9.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(514, 558).addBox(-6.1922F, -2.4814F, -11.4009F, 1.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0404F, 2.2996F, -98.5559F, 0.1573F, 0.3457F, -0.1702F)); + PartDefinition cube_r27 = bone9.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(346, 881).addBox(-2.4402F, -3.3111F, -5.5048F, 1.0F, 2.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0965F, 1.4155F, -82.5869F, 0.0262F, 0.0401F, -0.1745F)); + PartDefinition cube_r28 = bone9.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(394, 475).addBox(-6.1607F, -3.4951F, -10.9177F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3337F, 4.7261F, -99.0056F, 0.1205F, 0.3635F, -0.2756F)); + PartDefinition cube_r29 = bone9.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(591, 633).addBox(1.682F, 10.2734F, 30.2905F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.0415F, -8.1671F, -118.5094F, 0.0262F, 0.0349F, -0.1748F)); + PartDefinition cube_r30 = bone9.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(516, 596).addBox(-2.0285F, -3.9575F, -5.9716F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -49.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition bone3 = partdefinition.addOrReplaceChild("bone3", + CubeListBuilder.create().texOffs(772, 880).addBox(-0.5F, -19.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).texOffs(674, 880).addBox(-0.5F, -16.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offset(20.5F, 20.5F, -44.0F)); + PartDefinition cube_r31 = bone3.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(514, 534).addBox(-1.058F, -1.4265F, -21.0341F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8756F, -3.0F, -21.9591F, 0.0062F, 0.3923F, 0.1331F)); + PartDefinition cube_r32 = bone3.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(130, 879).addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0057F, 0.0433F, 0.131F)); + PartDefinition cube_r33 = bone3.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(136, 570).addBox(-0.468F, -1.1759F, -15.2654F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.6129F, -6.9984F, -41.096F, 0.1019F, 0.7262F, 0.2041F)); + PartDefinition cube_r34 = bone3.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(545, 0).addBox(-0.9272F, -1.4586F, -21.018F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5777F, -6.0165F, -21.9797F, 0.0372F, 0.3778F, 0.1821F)); + PartDefinition cube_r35 = bone3.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(880, 423).addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.0F, 11.0F, 0.0023F, 0.0304F, 0.0873F)); + PartDefinition cube_r36 = bone3.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(397, 534).addBox(-1.0351F, -1.4104F, -21.0141F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0539F, -8.9794F, -21.9926F, 0.0388F, 0.3706F, 0.1672F)); + PartDefinition cube_r37 = bone3.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(412, 37).addBox(-1.105F, -1.1664F, -17.2161F, 1.0F, 3.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5081F, -9.6671F, -41.3983F, 0.0933F, 0.7192F, 0.1873F)); + PartDefinition cube_r38 = bone3.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(507, 880).addBox(-0.375F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, 11.0F, 0.0036F, 0.0215F, 0.1658F)); + PartDefinition cube_r39 = bone3.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(532, 215).addBox(-0.7189F, -1.3101F, -18.2664F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2825F, -12.514F, -41.3631F, 0.1757F, 0.6911F, 0.3133F)); + PartDefinition cube_r40 = bone3.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(336, 558).addBox(-0.9124F, -1.4777F, -21.004F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1257F, -12.0262F, -21.9984F, 0.0485F, 0.3546F, 0.1788F)); + PartDefinition cube_r41 = bone3.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(880, 513).addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -12.0F, 11.0F, -0.0003F, 0.0087F, 0.0393F)); + PartDefinition cube_r42 = bone3.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(0, 570).addBox(-0.651F, -1.4689F, -18.2692F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2505F, -15.0936F, -41.2304F, 0.0174F, 0.6842F, 0.0525F)); + PartDefinition cube_r43 = bone3.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(397, 558).addBox(-1.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -15.0F, -22.0F, 0.0145F, 0.3661F, 0.0467F)); + PartDefinition cube_r44 = bone3.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(455, 534).addBox(-0.8386F, -1.5F, -21.265F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.7435F, -18.0F, -41.4293F, 0.0F, 0.6981F, 0.0F)); + PartDefinition cube_r45 = bone3.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(455, 558).addBox(-1.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -18.0F, -22.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition bone6 = bone3.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(-8.6129F, -0.9984F, -52.096F)); + PartDefinition cube_r46 = bone6.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(94, 570).addBox(-0.9227F, -1.1394F, -15.3683F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.2251F, 0.7307F, 0.3829F)); + PartDefinition bone7 = bone3.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.3629F, 1.7516F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r47 = bone7.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(478, 558).addBox(-9.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, 0.7137F, 0.3778F)); + PartDefinition bone8 = bone3.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.3629F, 4.7516F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r48 = bone8.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(309, 16).addBox(-10.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, 0.7137F, 0.3778F)); + PartDefinition bone10 = bone3.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-10.3629F, 7.5016F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r49 = bone10.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(432, 16).addBox(-8.6852F, -2.3041F, -0.886F, 1.0F, 3.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, 2.0F, 0.0F, 0.1844F, 0.6835F, 0.3687F)); + PartDefinition cube_r50 = bone10.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(169, 146).addBox(-7.9949F, 0.4331F, 5.872F, 1.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4122F, 4.5475F, -1.6111F, 0.3677F, 0.4737F, 1.0042F)); + PartDefinition cube_r51 = bone10.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(180, 605).addBox(-10.2265F, -2.1905F, -4.1465F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.2289F, 0.7172F, 0.4363F)); + PartDefinition bone4 = bone3.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition sail = partdefinition.addOrReplaceChild("sail", + CubeListBuilder.create().texOffs(86, 0).addBox(-0.5F, -189.0F, -41.5F, 1.0F, 27.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(234, 324).addBox(-49.0F, -77.0F, -44.0F, 99.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(660, 551) + .addBox(-42.0F, -111.0F, -44.0F, 84.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 8).addBox(-25.0F, -152.0F, -44.0F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 89) + .addBox(-16.0F, -180.0F, -42.25F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition octagon8768 = sail.addOrReplaceChild("octagon8768", + CubeListBuilder.create().texOffs(325, 131).addBox(-0.8284F, -44.0F, 9.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(558, 534).addBox(-2.0F, -44.0F, 10.1716F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -74.0F, -52.0F)); + PartDefinition octagon_r1 = octagon8768.addOrReplaceChild("octagon_r1", + CubeListBuilder.create().texOffs(380, 593).addBox(-2.0F, -41.0F, -0.8284F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(383, 131).addBox(-0.8284F, -41.0F, -2.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon5677 = octagon8768.addOrReplaceChild("octagon5677", + CubeListBuilder.create().texOffs(396, 16).addBox(-0.6213F, -46.5F, 9.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(380, 534).addBox(-1.5F, -46.5F, 10.3787F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -42.0F, 0.0F)); + PartDefinition octagon_r2 = octagon5677.addOrReplaceChild("octagon_r2", + CubeListBuilder.create().texOffs(610, 179).addBox(-1.5F, -43.5F, -0.6213F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(438, 475).addBox(-0.6213F, -43.5F, -1.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag = sail.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(124, 148).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 148).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, -30.8384F)); + PartDefinition cube_r52 = flag.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(107, 148).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r53 = flag.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(116, 148).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition octagon4565 = sail.addOrReplaceChild("octagon4565", + CubeListBuilder.create().texOffs(575, 883).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(28, 885).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 7.0F, -52.0F)); + PartDefinition octagon_r3 = octagon4565.addOrReplaceChild("octagon_r3", + CubeListBuilder.create().texOffs(42, 885).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(198, 884).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone35 = sail.addOrReplaceChild("bone35", CubeListBuilder.create(), PartPose.offset(0.5F, -75.0F, -43.5F)); + PartDefinition cube_r54 = bone35.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(594, 167).addBox(-56.5F, 0.0F, 0.0F, 112.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r55 = bone35.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(574, 580).addBox(-56.5F, 0.0734F, 0.0151F, 112.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r56 = bone35.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(574, 568).addBox(-56.5F, -0.0482F, 0.0046F, 112.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r57 = bone35.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(532, 267).addBox(-56.5F, -0.0984F, 0.0546F, 112.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone38 = sail.addOrReplaceChild("bone38", CubeListBuilder.create(), PartPose.offset(0.5F, -109.0F, -43.5F)); + PartDefinition cube_r58 = bone38.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(627, 257).addBox(-49.5F, 0.0F, 0.0F, 99.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r59 = bone38.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(412, 196).addBox(-49.5F, 0.0734F, 0.0151F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r60 = bone38.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(0, 201).addBox(-49.5F, -0.0482F, 0.0046F, 99.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r61 = bone38.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(412, 204).addBox(-49.5F, 0.9016F, 1.9046F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone47 = sail.addOrReplaceChild("bone47", CubeListBuilder.create(), PartPose.offset(0.5F, -179.25F, -41.75F)); + PartDefinition cube_r62 = bone47.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r63 = bone47.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r64 = bone47.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone48 = bone47.addOrReplaceChild("bone48", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r65 = bone48.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone50 = sail.addOrReplaceChild("bone50", CubeListBuilder.create(), PartPose.offset(0.5F, -150.0F, -43.5F)); + PartDefinition cube_r66 = bone50.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(729, 362).addBox(-34.5F, 0.0F, 0.0F, 69.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r67 = bone50.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(732, 527).addBox(-34.5F, 0.0734F, 0.0151F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r68 = bone50.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(729, 337).addBox(-34.5F, -0.0482F, 0.0046F, 69.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r69 = bone50.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(732, 535).addBox(-34.5F, 0.9016F, 1.9046F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition sail2 = partdefinition.addOrReplaceChild("sail2", + CubeListBuilder.create().texOffs(28, 0).addBox(-0.5F, -193.0F, -41.5F, 1.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 320).addBox(-49.0F, -77.0F, -44.0F, 99.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(594, 173) + .addBox(-42.0F, -118.0F, -44.0F, 84.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 4).addBox(-25.0F, -158.0F, -44.0F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 91) + .addBox(-16.0F, -183.0F, -42.25F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 86.0F)); + PartDefinition octagon2 = sail2.addOrReplaceChild("octagon2", + CubeListBuilder.create().texOffs(173, 97).addBox(-0.8284F, -44.0F, 9.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(441, 534).addBox(-2.0F, -44.0F, 10.1716F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -74.0F, -52.0F)); + PartDefinition octagon_r4 = octagon2.addOrReplaceChild("octagon_r4", + CubeListBuilder.create().texOffs(557, 475).addBox(-2.0F, -41.0F, -0.8284F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(183, 97).addBox(-0.8284F, -41.0F, -2.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon3 = octagon2.addOrReplaceChild("octagon3", + CubeListBuilder.create().texOffs(388, 16).addBox(-0.6213F, -46.5F, 9.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(484, 88).addBox(-1.5F, -46.5F, 10.3787F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -42.0F, 0.0F)); + PartDefinition octagon_r5 = octagon3.addOrReplaceChild("octagon_r5", + CubeListBuilder.create().texOffs(499, 475).addBox(-1.5F, -43.5F, -0.6213F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(393, 128).addBox(-0.6213F, -43.5F, -1.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag2 = sail2.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(42, 148).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 95).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -55.0F, -30.8384F)); + PartDefinition cube_r70 = flag2.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(81, 95).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r71 = flag2.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(89, 95).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition octagon4 = sail2.addOrReplaceChild("octagon4", + CubeListBuilder.create().texOffs(412, 215).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(0, 885).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 7.0F, -52.0F)); + PartDefinition octagon_r6 = octagon4.addOrReplaceChild("octagon_r6", + CubeListBuilder.create().texOffs(14, 885).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(840, 880).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone39 = sail2.addOrReplaceChild("bone39", CubeListBuilder.create(), PartPose.offset(0.5F, -116.0F, -43.5F)); + PartDefinition cube_r72 = bone39.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(627, 251).addBox(-49.5F, 0.0F, 0.0F, 99.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r73 = bone39.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(281, 0).addBox(-49.5F, 0.0734F, 0.0151F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r74 = bone39.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(412, 179).addBox(-49.5F, -0.0482F, 0.0046F, 99.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r75 = bone39.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(281, 8).addBox(-49.5F, 0.9016F, 1.9046F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone36 = sail2.addOrReplaceChild("bone36", CubeListBuilder.create(), PartPose.offset(0.5F, -75.0F, -43.5F)); + PartDefinition cube_r76 = bone36.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(594, 167).addBox(-56.5F, 0.0F, 0.0F, 112.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r77 = bone36.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(574, 580).addBox(-56.5F, 0.0734F, 0.0151F, 112.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r78 = bone36.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(574, 568).addBox(-56.5F, -0.0482F, 0.0046F, 112.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r79 = bone36.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(532, 267).addBox(-56.5F, -0.0984F, 0.0546F, 112.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone45 = sail2.addOrReplaceChild("bone45", CubeListBuilder.create(), PartPose.offset(0.5F, -182.25F, -41.75F)); + PartDefinition cube_r80 = bone45.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r81 = bone45.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r82 = bone45.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone46 = bone45.addOrReplaceChild("bone46", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r83 = bone46.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone49 = sail2.addOrReplaceChild("bone49", CubeListBuilder.create(), PartPose.offset(0.5F, -156.0F, -43.5F)); + PartDefinition cube_r84 = bone49.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(729, 362).addBox(-34.5F, 0.0F, 0.0F, 69.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r85 = bone49.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(732, 527).addBox(-34.5F, 0.0734F, 0.0151F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r86 = bone49.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(729, 337).addBox(-34.5F, -0.0482F, 0.0046F, 69.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r87 = bone49.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(732, 535).addBox(-34.5F, 0.9016F, 1.9046F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition sail3 = partdefinition.addOrReplaceChild("sail3", + CubeListBuilder.create().texOffs(86, 28).addBox(-0.5F, -163.0F, -41.5F, 1.0F, 23.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(281, 198).addBox(-29.0F, -77.0F, -44.0F, 58.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(592, 600) + .addBox(-1.0F, -50.0F, -40.0F, 2.0F, 2.0F, 72.0F, new CubeDeformation(0.0F)).texOffs(609, 617).addBox(-1.0F, -81.0F, -189.0F, 2.0F, 2.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(574, 588) + .addBox(-37.0F, -107.0F, -44.0F, 74.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 0).addBox(-25.0F, -131.0F, -44.0F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 89) + .addBox(-16.0F, -156.0F, -42.25F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 147.0F)); + PartDefinition octagon5 = sail3.addOrReplaceChild("octagon5", + CubeListBuilder.create().texOffs(594, 0).addBox(-0.8284F, -34.0F, 9.0F, 1.0F, 33.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(574, 518).addBox(-2.0F, -34.0F, 10.1716F, 4.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -74.0F, -52.0F)); + PartDefinition octagon_r7 = octagon5.addOrReplaceChild("octagon_r7", + CubeListBuilder.create().texOffs(584, 518).addBox(-2.0F, -31.0F, -0.8284F, 4.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(604, 0).addBox(-0.8284F, -31.0F, -2.0F, 1.0F, 33.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon6 = sail3.addOrReplaceChild("octagon6", + CubeListBuilder.create().texOffs(479, 0).addBox(-0.6213F, -34.5F, 9.5F, 1.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(126, 570).addBox(-1.5F, -34.5F, 10.3787F, 3.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -106.0F, -52.0F)); + PartDefinition octagon_r8 = octagon6.addOrReplaceChild("octagon_r8", + CubeListBuilder.create().texOffs(168, 570).addBox(-1.5F, -31.5F, -0.6213F, 3.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(487, 0).addBox(-0.6213F, -31.5F, -1.5F, 1.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag3 = sail3.addOrReplaceChild("flag3", + CubeListBuilder.create().texOffs(88, 53).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 0).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -25.0F, -30.8384F)); + PartDefinition cube_r88 = flag3.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(81, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r89 = flag3.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(88, 50).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone41 = flag3.addOrReplaceChild("bone41", CubeListBuilder.create(), PartPose.offset(0.8789F, -105.0F, -12.6616F)); + PartDefinition cube_r90 = bone41.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(396, 654).addBox(-29.5F, 0.0F, 0.0F, 58.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r91 = bone41.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(281, 190).addBox(-29.5F, 0.0734F, 0.0151F, 58.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r92 = bone41.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(396, 660).addBox(-29.5F, -0.0482F, 0.0046F, 58.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone42 = bone41.addOrReplaceChild("bone42", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r93 = bone42.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(281, 202).addBox(-29.5F, 0.8016F, 1.6546F, 58.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition octagon7 = sail3.addOrReplaceChild("octagon7", + CubeListBuilder.create().texOffs(72, 0).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(212, 884).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 7.0F, -52.0F)); + PartDefinition octagon_r9 = octagon7.addOrReplaceChild("octagon_r9", + CubeListBuilder.create().texOffs(226, 884).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 97).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone40 = sail3.addOrReplaceChild("bone40", CubeListBuilder.create(), PartPose.offset(0.5F, -105.0F, -43.5F)); + PartDefinition cube_r94 = bone40.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(680, 75).addBox(-39.5F, 0.0F, 0.0F, 78.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r95 = bone40.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(662, 395).addBox(-39.5F, 0.0734F, 0.0151F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r96 = bone40.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(675, 152).addBox(-39.5F, -0.0482F, 0.0046F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r97 = bone40.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(680, 67).addBox(-39.5F, 0.8016F, 1.6546F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 21.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone37 = sail3.addOrReplaceChild("bone37", CubeListBuilder.create(), PartPose.offset(0.5F, -75.0F, -43.5F)); + PartDefinition cube_r98 = bone37.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(180, 646).addBox(-37.5F, 0.0F, 0.0F, 73.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r99 = bone37.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(729, 354).addBox(-37.5F, 0.0734F, 0.0151F, 73.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r100 = bone37.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(729, 325).addBox(-37.5F, -0.0482F, 0.0046F, 73.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r101 = bone37.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(662, 371).addBox(-37.5F, -0.0984F, 0.0546F, 73.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone43 = sail3.addOrReplaceChild("bone43", CubeListBuilder.create(), PartPose.offset(0.5F, -155.25F, -41.75F)); + PartDefinition cube_r102 = bone43.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r103 = bone43.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r104 = bone43.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone44 = bone43.addOrReplaceChild("bone44", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r105 = bone44.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone11 = partdefinition.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offset(22.0F, 2.5F, -77.0F)); + PartDefinition cube_r106 = bone11.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(344, 45).mirror().addBox(1.0F, -6.5F, -20.0F, 0.0F, 5.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-44.0F, -3.0F, 11.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r107 = bone11.addOrReplaceChild("cube_r107", + CubeListBuilder.create().texOffs(344, 45).addBox(-1.0F, -6.5F, -20.0F, 0.0F, 5.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(336, 593).addBox(-2.0F, -1.5F, -20.0F, 2.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition bone12 = partdefinition.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(15.1625F, 2.5F, -95.8125F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r108 = bone12.addOrReplaceChild("cube_r108", + CubeListBuilder.create().texOffs(281, 19).addBox(-8.0707F, -9.5F, -15.5735F, 0.0F, 5.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(281, 16).addBox(-9.0707F, -4.5F, -15.5735F, 2.0F, 3.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition bone13 = partdefinition.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.1625F, 2.5F, -95.8125F, 0.0F, -0.3491F, 0.0F)); + PartDefinition bone14 = partdefinition.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 27.5F, 103.25F, 0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r109 = bone14.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(518, 23).addBox(-2.0F, 12.7154F, 4.1366F, 4.0F, 5.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.7854F, 0.0F, 0.0F)); + PartDefinition bone26 = partdefinition.addOrReplaceChild("bone26", + CubeListBuilder.create().texOffs(491, 596).addBox(-2.0F, -5.5F, 11.5F, 4.0F, 3.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(0, 150).addBox(-2.0F, -2.5F, 11.5F, 4.0F, 12.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 25.9487F, 111.1315F)); + PartDefinition cube_r110 = bone26.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(438, 246).addBox(-2.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.5F, 18.5F, -0.2182F, 0.0F, 0.0F)); + PartDefinition cube_r111 = bone26.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(184, 150).addBox(-2.0F, 0.0631F, 0.0193F, 4.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -4.7F, 22.4F, -0.7854F, 0.0F, 0.0F)); + PartDefinition bone27 = partdefinition.addOrReplaceChild("bone27", + CubeListBuilder.create().texOffs(499, 43).addBox(14.0F, -24.0F, -31.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(499, 129).addBox(6.0F, -24.0F, -38.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(499, 88) + .addBox(10.0F, -24.0F, -35.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(839, 48).addBox(2.0F, -24.0F, -33.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(839, 620) + .addBox(-2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(146, 838).addBox(-6.0F, -24.0F, -24.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(492, 789) + .addBox(-10.0F, -24.0F, -31.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(751, 787).addBox(-18.0F, -24.0F, -33.0F, 4.0F, 1.0F, 41.0F, new CubeDeformation(0.0F)).texOffs(442, 745) + .addBox(-14.0F, -24.0F, -39.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(0, 570).addBox(-20.0F, -24.0F, -37.0F, 2.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", + CubeListBuilder.create().texOffs(0, 570).addBox(14.0F, -24.0F, -31.0F, 4.0F, 1.0F, 86.0F, new CubeDeformation(0.0F)).texOffs(0, 571).mirror().addBox(-18.0F, -24.0F, -32.0F, 4.0F, 1.0F, 86.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(597, 674).addBox(6.0F, -24.0F, -38.0F, 4.0F, 1.0F, 60.0F, new CubeDeformation(0.0F)).texOffs(340, 215).addBox(10.0F, -24.0F, -35.0F, 4.0F, 1.0F, 90.0F, new CubeDeformation(0.0F)).texOffs(281, 16) + .addBox(2.0F, -24.0F, -33.0F, 4.0F, 1.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(730, 721).addBox(-2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 61.0F, new CubeDeformation(0.0F)).texOffs(693, 783) + .addBox(-6.0F, -24.0F, -24.0F, 4.0F, 1.0F, 46.0F, new CubeDeformation(0.0F)).texOffs(336, 534).addBox(-10.0F, -24.0F, -31.0F, 4.0F, 1.0F, 53.0F, new CubeDeformation(0.0F)).texOffs(0, 97) + .addBox(-14.0F, -24.0F, -39.0F, 4.0F, 1.0F, 93.0F, new CubeDeformation(0.0F)).texOffs(437, 215).addBox(-20.0F, -24.0F, -37.0F, 2.0F, 1.0F, 91.0F, new CubeDeformation(0.0F)).texOffs(94, 570) + .addBox(18.0F, -24.0F, -27.0F, 2.0F, 1.0F, 82.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 40.0F)); + PartDefinition bone29 = partdefinition.addOrReplaceChild("bone29", + CubeListBuilder.create().texOffs(788, 420).addBox(14.0F, -24.0F, -35.0F, 4.0F, 1.0F, 44.0F, new CubeDeformation(0.0F)).texOffs(278, 730).addBox(6.0F, -24.0F, -48.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(72, 657) + .addBox(10.0F, -24.0F, -45.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(144, 727).addBox(2.0F, -24.0F, -55.0F, 4.0F, 1.0F, 62.0F, new CubeDeformation(0.0F)).texOffs(729, 263) + .addBox(-2.0F, -24.0F, -60.0F, 4.0F, 1.0F, 61.0F, new CubeDeformation(0.0F)).texOffs(627, 179).addBox(-6.0F, -24.0F, -55.0F, 4.0F, 1.0F, 71.0F, new CubeDeformation(0.0F)).texOffs(336, 593) + .addBox(-10.0F, -24.0F, -49.0F, 4.0F, 1.0F, 58.0F, new CubeDeformation(0.0F)).texOffs(497, 837).addBox(-18.0F, -24.0F, -35.0F, 4.0F, 1.0F, 42.0F, new CubeDeformation(0.0F)).texOffs(295, 781) + .addBox(-14.0F, -24.0F, -45.0F, 4.0F, 1.0F, 46.0F, new CubeDeformation(0.0F)).texOffs(180, 570).addBox(-20.0F, -24.0F, -31.0F, 2.0F, 1.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -40.0F)); + PartDefinition bone30 = partdefinition.addOrReplaceChild("bone30", + CubeListBuilder.create().texOffs(446, 837).addBox(14.0F, -24.0F, -40.0F, 4.0F, 1.0F, 43.0F, new CubeDeformation(0.0F)).texOffs(732, 478).addBox(6.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(587, 741) + .addBox(10.0F, -24.0F, -40.0F, 4.0F, 1.0F, 47.0F, new CubeDeformation(0.0F)).texOffs(402, 596).addBox(2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(732, 420) + .addBox(-2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(455, 534).addBox(-6.0F, -24.0F, -39.0F, 4.0F, 1.0F, 51.0F, new CubeDeformation(0.0F)).texOffs(336, 730) + .addBox(-10.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(747, 783).addBox(-18.0F, -24.0F, -41.0F, 4.0F, 1.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(485, 741) + .addBox(-14.0F, -24.0F, -41.0F, 4.0F, 1.0F, 47.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 135.0F)); + PartDefinition treasurechest = partdefinition.addOrReplaceChild("treasurechest", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.0F, -1.0F, -34.5F, 0.0F, 2.8798F, 0.0F)); + PartDefinition chestlid = treasurechest.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r112 = chestlid.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r113 = chestlid.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r114 = chestlid.addOrReplaceChild("cube_r114", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r115 = chestlid.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r116 = chestlid.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = treasurechest.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition goldbarrel = partdefinition.addOrReplaceChild("goldbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.0995F, -5.4833F, -58.7568F, 0.0F, 0.7854F, 0.0F)); + PartDefinition bone33 = partdefinition.addOrReplaceChild("bone33", CubeListBuilder.create().texOffs(0, 0).addBox(-22.0F, -72.0F, -150.0F, 0.0F, 144.0F, 331.0F, new CubeDeformation(0.0F)), PartPose.offset(22.0F, -72.0F, -2.0F)); + PartDefinition cube_r117 = bone33.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(0, 309).mirror().addBox(10.0F, -65.0F, -50.0F, 0.0F, 95.0F, 166.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r118 = bone33.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(0, 309).addBox(-10.0F, -65.0F, -50.0F, 0.0F, 95.0F, 166.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-44.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r119 = bone33.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(340, 179).addBox(0.0F, -1.0F, -17.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 179) + .addBox(0.0F, -1.0F, 129.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 179).addBox(0.0F, -1.0F, 68.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-25.0F, 21.0F, -39.0F, 0.0F, 0.0F, 0.3491F)); + PartDefinition cube_r120 = bone33.addOrReplaceChild("cube_r120", + CubeListBuilder.create().texOffs(340, 179).mirror().addBox(0.0F, -1.0F, -17.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(340, 179).mirror() + .addBox(0.0F, -1.0F, 130.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(340, 179).mirror().addBox(0.0F, -1.0F, 69.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-19.0F, 21.0F, -39.0F, 0.0F, 0.0F, -0.3491F)); + PartDefinition hexadecagon = partdefinition.addOrReplaceChild("hexadecagon", + CubeListBuilder.create().texOffs(629, 674).addBox(-1.5913F, -39.0F, 0.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(668, 596).addBox(-1.5913F, -39.0F, 15.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(206, 663) + .addBox(7.0F, -39.0F, 6.4087F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(182, 663).addBox(-8.0F, -39.0F, 6.4087F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, 12.0F, -0.1309F, 0.0F, 0.0F)); + PartDefinition hexadecagon_r1 = hexadecagon.addOrReplaceChild("hexadecagon_r1", + CubeListBuilder.create().texOffs(239, 660).addBox(-8.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(198, 663).addBox(7.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(230, 663) + .addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(621, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, -0.3927F, 0.0F)); + PartDefinition hexadecagon_r2 = hexadecagon.addOrReplaceChild("hexadecagon_r2", + CubeListBuilder.create().texOffs(190, 663).addBox(-8.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(214, 663).addBox(7.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(597, 674) + .addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(637, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, 0.3927F, 0.0F)); + PartDefinition hexadecagon_r3 = hexadecagon.addOrReplaceChild("hexadecagon_r3", + CubeListBuilder.create().texOffs(222, 663).addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(613, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition hexadecagon_r4 = hexadecagon.addOrReplaceChild("hexadecagon_r4", + CubeListBuilder.create().texOffs(605, 674).addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(645, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition treasurechest2 = partdefinition.addOrReplaceChild("treasurechest2", CubeListBuilder.create(), PartPose.offsetAndRotation(-16.0F, 0.0F, -7.5F, 0.0F, -2.2689F, 0.0F)); + PartDefinition chestlid4 = treasurechest2.addOrReplaceChild("chestlid4", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r121 = chestlid4.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r122 = chestlid4.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r123 = chestlid4.addOrReplaceChild("cube_r123", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r124 = chestlid4.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r125 = chestlid4.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest4 = treasurechest2.addOrReplaceChild("chest4", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition bone34 = partdefinition.addOrReplaceChild("bone34", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.1625F, 2.5F, -95.8125F, 0.0F, -0.3491F, 0.0F)); + PartDefinition bone54 = partdefinition.addOrReplaceChild("bone54", CubeListBuilder.create().texOffs(50, 137).mirror().addBox(-10.4F, -36.0F, -16.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(58, 150).addBox(-10.0F, + -34.0F, -16.0125F, 2.0F, 10.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r126 = bone54.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(339, 95).addBox(-2.0F, -3.0F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.0F, -34.0F, -14.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition captianswheel = bone54.addOrReplaceChild("captianswheel", + CubeListBuilder.create().texOffs(0, 4).addBox(-1.0F, -35.0F, -14.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 12).addBox(-2.0F, -37.0F, -16.0F, 4.0F, 13.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 2.0F, 0.0F)); + PartDefinition octagon8 = captianswheel.addOrReplaceChild("octagon8", CubeListBuilder.create().texOffs(80, 52).addBox(-0.5F, 14.0F, -31.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, 2.0F, -1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r127 = octagon8 + .addOrReplaceChild( + "cube_r127", CubeListBuilder.create().texOffs(982, 319).addBox(-6.75F, 0.25F, -7.25F, 14.0F, 0.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(982, 319) + .addBox(-6.75F, -0.25F, -7.25F, 14.0F, 0.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(1012, 46).addBox(-1.25F, -0.5F, -1.75F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 14.0F, -24.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition cube_r128 = octagon8.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(0, 0).addBox(-24.5F, 14.0F, -7.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r129 = octagon8.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(14, 8).addBox(-17.4706F, 14.0F, 9.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -3.1416F, -0.7854F, 3.1416F)); + PartDefinition cube_r130 = octagon8.addOrReplaceChild("cube_r130", CubeListBuilder.create().texOffs(14, 14).addBox(-0.5F, 14.0F, 17.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -3.1416F, 0.0F, 3.1416F)); + PartDefinition cube_r131 = octagon8.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(16, 8).addBox(-17.4706F, 14.0F, -23.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition cube_r132 = octagon8.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(16, 14).addBox(16.4706F, 14.0F, 9.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 2.3562F, 0.0F)); + PartDefinition cube_r133 = octagon8.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(18, 0).addBox(23.5F, 14.0F, -7.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r134 = octagon8.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(20, 0).addBox(16.4706F, 14.0F, -23.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition lifeboat2 = partdefinition.addOrReplaceChild("lifeboat2", + CubeListBuilder.create().texOffs(336, 523).addBox(-7.0F, -9.2625F, 31.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(455, 486).addBox(-0.7375F, -10.175F, 30.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(78, 187).addBox(-4.2625F, -10.1125F, 30.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(181, 187).addBox(-1.225F, -7.225F, 31.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(101, 91) + .addBox(-3.8875F, -8.75F, 31.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 160).addBox(-4.8875F, -6.35F, 31.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(354, 96) + .addBox(-3.0F, -6.0F, 31.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(-22.5F, -6.0F, 64.0F)); + PartDefinition cube_r135 = lifeboat2.addOrReplaceChild("cube_r135", CubeListBuilder.create().texOffs(394, 488).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5F, -9.0F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r136 = lifeboat2.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(417, 488).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.5F, -9.0F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r137 = lifeboat2.addOrReplaceChild("cube_r137", CubeListBuilder.create().texOffs(112, 12).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r138 = lifeboat2.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(206, 48).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r139 = lifeboat2.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(206, 24).addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0F, -3.0F, 31.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r140 = lifeboat2.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(373, 90).addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, -3.525F, 31.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r141 = lifeboat2.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(206, 28).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -3.0F, 31.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r142 = lifeboat2.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(373, 94).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -3.525F, 31.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition bone2 = lifeboat2.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(574, 518).addBox(-8.5305F, 0.6607F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(255, 570) + .addBox(-10.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 268).addBox(-6.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), PartPose.offset(7.5305F, -4.4107F, 0.5F)); + PartDefinition cube_r143 = bone2.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(81, 97).addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 0.5875F, -5.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r144 = bone2.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(116, 150).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 0.5875F, -5.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r145 = bone2.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(116, 155).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 1.4107F, -5.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r146 = bone2.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(548, 520).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r147 = bone2.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(438, 226).addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.3234F, -2.8706F, -12.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r148 = bone2.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(384, 176).addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.9F, -4.0F, -9.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r149 = bone2.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(845, 226).addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r150 = bone2.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(160, 16).addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8017F, -2.8706F, -6.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r151 = bone2.addOrReplaceChild("cube_r151", CubeListBuilder.create().texOffs(292, 72).addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r152 = bone2.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(420, 566).addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -3.0F, -5.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r153 = bone2.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(217, 320).addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.9311F, -9.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r154 = bone2.addOrReplaceChild("cube_r154", CubeListBuilder.create().texOffs(185, 191).addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r155 = bone2.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(184, 144).addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.2448F, -0.4311F, -9.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r156 = bone2.addOrReplaceChild("cube_r156", CubeListBuilder.create().texOffs(293, 16).addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r157 = bone2.addOrReplaceChild("cube_r157", + CubeListBuilder.create().texOffs(14, 613).addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(582, 540).addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r158 = bone2.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(339, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 23.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r159 = bone2.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(340, 288).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 12.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r160 = bone2.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(484, 614).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.7687F, -1.4835F, 13.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r161 = bone2.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(537, 564).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8306F, -1.5453F, 1.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r162 = bone2.addOrReplaceChild("cube_r162", + CubeListBuilder.create().texOffs(179, 97).addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 276).addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0065F, 0.3564F, -9.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r163 = bone2.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(325, 178).addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.694F, 0.6689F, -5.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r164 = bone2.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(594, 43).addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r165 = bone2.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(455, 39).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r166 = bone2.addOrReplaceChild("cube_r166", CubeListBuilder.create().texOffs(485, 238).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 21.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r167 = bone2.addOrReplaceChild("cube_r167", CubeListBuilder.create().texOffs(551, 236).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 11.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r168 = bone2.addOrReplaceChild("cube_r168", CubeListBuilder.create().texOffs(438, 270).addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.7376F, -2.8706F, -12.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r169 = bone2.addOrReplaceChild("cube_r169", CubeListBuilder.create().texOffs(455, 16).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.161F, -4.0F, -9.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r170 = bone2.addOrReplaceChild("cube_r170", CubeListBuilder.create().texOffs(845, 266).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r171 = bone2.addOrReplaceChild("cube_r171", CubeListBuilder.create().texOffs(441, 28).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2593F, -2.8706F, -6.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r172 = bone2.addOrReplaceChild("cube_r172", CubeListBuilder.create().texOffs(322, 310).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r173 = bone2.addOrReplaceChild("cube_r173", CubeListBuilder.create().texOffs(136, 588).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.561F, -3.0F, -5.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r174 = bone2.addOrReplaceChild("cube_r174", CubeListBuilder.create().texOffs(346, 115).addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.9311F, -9.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r175 = bone2.addOrReplaceChild("cube_r175", CubeListBuilder.create().texOffs(468, 292).addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r176 = bone2.addOrReplaceChild("cube_r176", CubeListBuilder.create().texOffs(354, 90).addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.8162F, -0.4311F, -9.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r177 = bone2.addOrReplaceChild("cube_r177", CubeListBuilder.create().texOffs(484, 134).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r178 = bone2.addOrReplaceChild("cube_r178", + CubeListBuilder.create().texOffs(614, 518).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(0, 591).addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r179 = bone2.addOrReplaceChild("cube_r179", CubeListBuilder.create().texOffs(373, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 23.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r180 = bone2.addOrReplaceChild("cube_r180", CubeListBuilder.create().texOffs(499, 23).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 12.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r181 = bone2.addOrReplaceChild("cube_r181", CubeListBuilder.create().texOffs(614, 529).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2923F, -1.4835F, 13.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r182 = bone2.addOrReplaceChild("cube_r182", CubeListBuilder.create().texOffs(218, 570).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2304F, -1.5453F, 1.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r183 = bone2.addOrReplaceChild("cube_r183", + CubeListBuilder.create().texOffs(189, 97).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 288).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.0545F, 0.3564F, -9.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r184 = bone2.addOrReplaceChild("cube_r184", CubeListBuilder.create().texOffs(485, 52).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.367F, 0.6689F, -5.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r185 = bone2.addOrReplaceChild("cube_r185", CubeListBuilder.create().texOffs(594, 85).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone51 = bone2.addOrReplaceChild("bone51", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r186 = bone51.addOrReplaceChild("cube_r186", + CubeListBuilder.create().texOffs(359, 268).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(164, 27).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r187 = bone51.addOrReplaceChild("cube_r187", CubeListBuilder.create().texOffs(160, 21).addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r188 = bone51.addOrReplaceChild("cube_r188", CubeListBuilder.create().texOffs(16, 591).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone53 = lifeboat2.addOrReplaceChild("bone53", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -89.0F)); + PartDefinition bone55 = lifeboat2.addOrReplaceChild("bone55", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -72.0F)); + PartDefinition bone52 = lifeboat2.addOrReplaceChild("bone52", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -58.0F)); + PartDefinition lifeboat4 = partdefinition.addOrReplaceChild("lifeboat4", + CubeListBuilder.create().texOffs(336, 523).addBox(-7.0F, -9.2625F, 31.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(455, 486).addBox(-0.7375F, -10.175F, 30.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(78, 187).addBox(-4.2625F, -10.1125F, 30.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(181, 187).addBox(-1.225F, -7.225F, 31.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(101, 91) + .addBox(-3.8875F, -8.75F, 31.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 160).addBox(-4.8875F, -6.35F, 31.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(354, 96) + .addBox(-3.0F, -6.0F, 31.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -6.0F, 132.0F)); + PartDefinition cube_r189 = lifeboat4.addOrReplaceChild("cube_r189", CubeListBuilder.create().texOffs(394, 488).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5F, -9.0F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r190 = lifeboat4.addOrReplaceChild("cube_r190", CubeListBuilder.create().texOffs(417, 488).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.5F, -9.0F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r191 = lifeboat4.addOrReplaceChild("cube_r191", CubeListBuilder.create().texOffs(112, 12).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r192 = lifeboat4.addOrReplaceChild("cube_r192", CubeListBuilder.create().texOffs(206, 48).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r193 = lifeboat4.addOrReplaceChild("cube_r193", CubeListBuilder.create().texOffs(206, 24).addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0F, -3.0F, 31.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r194 = lifeboat4.addOrReplaceChild("cube_r194", CubeListBuilder.create().texOffs(373, 90).addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, -3.525F, 31.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r195 = lifeboat4.addOrReplaceChild("cube_r195", CubeListBuilder.create().texOffs(206, 28).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -3.0F, 31.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r196 = lifeboat4.addOrReplaceChild("cube_r196", CubeListBuilder.create().texOffs(373, 94).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -3.525F, 31.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition bone5 = lifeboat4.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(574, 518).addBox(-8.5305F, 0.6607F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(255, 570) + .addBox(-10.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 268).addBox(-6.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), PartPose.offset(7.5305F, -4.4107F, 0.5F)); + PartDefinition cube_r197 = bone5.addOrReplaceChild("cube_r197", CubeListBuilder.create().texOffs(81, 97).addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 0.5875F, -5.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r198 = bone5.addOrReplaceChild("cube_r198", CubeListBuilder.create().texOffs(116, 150).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 0.5875F, -5.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r199 = bone5.addOrReplaceChild("cube_r199", CubeListBuilder.create().texOffs(116, 155).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 1.4107F, -5.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r200 = bone5.addOrReplaceChild("cube_r200", CubeListBuilder.create().texOffs(548, 520).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r201 = bone5.addOrReplaceChild("cube_r201", CubeListBuilder.create().texOffs(438, 226).addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.3234F, -2.8706F, -12.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r202 = bone5.addOrReplaceChild("cube_r202", CubeListBuilder.create().texOffs(384, 176).addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.9F, -4.0F, -9.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r203 = bone5.addOrReplaceChild("cube_r203", CubeListBuilder.create().texOffs(845, 226).addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r204 = bone5.addOrReplaceChild("cube_r204", CubeListBuilder.create().texOffs(160, 16).addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8017F, -2.8706F, -6.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r205 = bone5.addOrReplaceChild("cube_r205", CubeListBuilder.create().texOffs(292, 72).addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r206 = bone5.addOrReplaceChild("cube_r206", CubeListBuilder.create().texOffs(420, 566).addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -3.0F, -5.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r207 = bone5.addOrReplaceChild("cube_r207", CubeListBuilder.create().texOffs(217, 320).addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.9311F, -9.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r208 = bone5.addOrReplaceChild("cube_r208", CubeListBuilder.create().texOffs(185, 191).addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r209 = bone5.addOrReplaceChild("cube_r209", CubeListBuilder.create().texOffs(184, 144).addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.2448F, -0.4311F, -9.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r210 = bone5.addOrReplaceChild("cube_r210", CubeListBuilder.create().texOffs(293, 16).addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r211 = bone5.addOrReplaceChild("cube_r211", + CubeListBuilder.create().texOffs(14, 613).addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(582, 540).addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r212 = bone5.addOrReplaceChild("cube_r212", CubeListBuilder.create().texOffs(339, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 23.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r213 = bone5.addOrReplaceChild("cube_r213", CubeListBuilder.create().texOffs(340, 288).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 12.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r214 = bone5.addOrReplaceChild("cube_r214", CubeListBuilder.create().texOffs(484, 614).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.7687F, -1.4835F, 13.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r215 = bone5.addOrReplaceChild("cube_r215", CubeListBuilder.create().texOffs(537, 564).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8306F, -1.5453F, 1.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r216 = bone5.addOrReplaceChild("cube_r216", + CubeListBuilder.create().texOffs(179, 97).addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 276).addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0065F, 0.3564F, -9.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r217 = bone5.addOrReplaceChild("cube_r217", CubeListBuilder.create().texOffs(325, 178).addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.694F, 0.6689F, -5.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r218 = bone5.addOrReplaceChild("cube_r218", CubeListBuilder.create().texOffs(594, 43).addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r219 = bone5.addOrReplaceChild("cube_r219", CubeListBuilder.create().texOffs(455, 39).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r220 = bone5.addOrReplaceChild("cube_r220", CubeListBuilder.create().texOffs(485, 238).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 21.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r221 = bone5.addOrReplaceChild("cube_r221", CubeListBuilder.create().texOffs(551, 236).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 11.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r222 = bone5.addOrReplaceChild("cube_r222", CubeListBuilder.create().texOffs(438, 270).addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.7376F, -2.8706F, -12.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r223 = bone5.addOrReplaceChild("cube_r223", CubeListBuilder.create().texOffs(455, 16).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.161F, -4.0F, -9.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r224 = bone5.addOrReplaceChild("cube_r224", CubeListBuilder.create().texOffs(845, 266).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r225 = bone5.addOrReplaceChild("cube_r225", CubeListBuilder.create().texOffs(441, 28).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2593F, -2.8706F, -6.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r226 = bone5.addOrReplaceChild("cube_r226", CubeListBuilder.create().texOffs(322, 310).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r227 = bone5.addOrReplaceChild("cube_r227", CubeListBuilder.create().texOffs(136, 588).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.561F, -3.0F, -5.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r228 = bone5.addOrReplaceChild("cube_r228", CubeListBuilder.create().texOffs(346, 115).addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.9311F, -9.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r229 = bone5.addOrReplaceChild("cube_r229", CubeListBuilder.create().texOffs(468, 292).addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r230 = bone5.addOrReplaceChild("cube_r230", CubeListBuilder.create().texOffs(354, 90).addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.8162F, -0.4311F, -9.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r231 = bone5.addOrReplaceChild("cube_r231", CubeListBuilder.create().texOffs(484, 134).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r232 = bone5.addOrReplaceChild("cube_r232", + CubeListBuilder.create().texOffs(614, 518).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(0, 591).addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r233 = bone5.addOrReplaceChild("cube_r233", CubeListBuilder.create().texOffs(373, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 23.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r234 = bone5.addOrReplaceChild("cube_r234", CubeListBuilder.create().texOffs(499, 23).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 12.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r235 = bone5.addOrReplaceChild("cube_r235", CubeListBuilder.create().texOffs(614, 529).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2923F, -1.4835F, 13.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r236 = bone5.addOrReplaceChild("cube_r236", CubeListBuilder.create().texOffs(218, 570).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2304F, -1.5453F, 1.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r237 = bone5.addOrReplaceChild("cube_r237", + CubeListBuilder.create().texOffs(189, 97).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 288).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.0545F, 0.3564F, -9.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r238 = bone5.addOrReplaceChild("cube_r238", CubeListBuilder.create().texOffs(485, 52).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.367F, 0.6689F, -5.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r239 = bone5.addOrReplaceChild("cube_r239", CubeListBuilder.create().texOffs(594, 85).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone15 = bone5.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r240 = bone15.addOrReplaceChild("cube_r240", + CubeListBuilder.create().texOffs(359, 268).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(164, 27).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r241 = bone15.addOrReplaceChild("cube_r241", CubeListBuilder.create().texOffs(160, 21).addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r242 = bone15.addOrReplaceChild("cube_r242", CubeListBuilder.create().texOffs(16, 591).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone64 = lifeboat4.addOrReplaceChild("bone64", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 27.0F, -136.0F)); + PartDefinition bone63 = bone64.addOrReplaceChild("bone63", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 0.0F, -15.0F)); + PartDefinition bone62 = bone64.addOrReplaceChild("bone62", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 0.0F, 15.0F)); + PartDefinition bone16 = partdefinition.addOrReplaceChild("bone16", CubeListBuilder.create().texOffs(772, 880).mirror().addBox(-0.5F, -19.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(674, 880).mirror() + .addBox(-0.5F, -16.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-20.5F, 20.5F, -44.0F)); + PartDefinition cube_r243 = bone16.addOrReplaceChild("cube_r243", CubeListBuilder.create().texOffs(514, 534).mirror().addBox(0.058F, -1.4265F, -21.0341F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8756F, -3.0F, -21.9591F, 0.0062F, -0.3923F, -0.1331F)); + PartDefinition cube_r244 = bone16.addOrReplaceChild("cube_r244", CubeListBuilder.create().texOffs(130, 879).mirror().addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0057F, -0.0433F, -0.131F)); + PartDefinition cube_r245 = bone16.addOrReplaceChild("cube_r245", CubeListBuilder.create().texOffs(136, 570).mirror().addBox(-0.532F, -1.1759F, -15.2654F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(8.6129F, -6.9984F, -41.096F, 0.1019F, -0.7262F, -0.2041F)); + PartDefinition cube_r246 = bone16.addOrReplaceChild("cube_r246", CubeListBuilder.create().texOffs(545, 0).mirror().addBox(-0.0728F, -1.4586F, -21.018F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5777F, -6.0165F, -21.9797F, 0.0372F, -0.3778F, -0.1821F)); + PartDefinition cube_r247 = bone16.addOrReplaceChild("cube_r247", CubeListBuilder.create().texOffs(880, 423).mirror().addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -6.0F, 11.0F, 0.0023F, -0.0304F, -0.0873F)); + PartDefinition cube_r248 = bone16.addOrReplaceChild("cube_r248", CubeListBuilder.create().texOffs(397, 534).mirror().addBox(0.0351F, -1.4104F, -21.0141F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0539F, -8.9794F, -21.9926F, 0.0388F, -0.3706F, -0.1672F)); + PartDefinition cube_r249 = bone16.addOrReplaceChild("cube_r249", CubeListBuilder.create().texOffs(412, 37).mirror().addBox(0.105F, -1.1664F, -17.2161F, 1.0F, 3.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.5081F, -9.6671F, -41.3983F, 0.0933F, -0.7192F, -0.1873F)); + PartDefinition cube_r250 = bone16.addOrReplaceChild("cube_r250", CubeListBuilder.create().texOffs(507, 880).mirror().addBox(-0.625F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -9.0F, 11.0F, 0.0036F, -0.0215F, -0.1658F)); + PartDefinition cube_r251 = bone16.addOrReplaceChild("cube_r251", CubeListBuilder.create().texOffs(532, 215).mirror().addBox(-0.2811F, -1.3101F, -18.2664F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2825F, -12.514F, -41.3631F, 0.1757F, -0.6911F, -0.3133F)); + PartDefinition cube_r252 = bone16.addOrReplaceChild("cube_r252", CubeListBuilder.create().texOffs(336, 558).mirror().addBox(-0.0876F, -1.4777F, -21.004F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.1257F, -12.0262F, -21.9984F, 0.0485F, -0.3546F, -0.1788F)); + PartDefinition cube_r253 = bone16.addOrReplaceChild("cube_r253", CubeListBuilder.create().texOffs(880, 513).mirror().addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -12.0F, 11.0F, -0.0003F, -0.0087F, -0.0393F)); + PartDefinition cube_r254 = bone16.addOrReplaceChild("cube_r254", CubeListBuilder.create().texOffs(0, 570).mirror().addBox(-0.349F, -1.4689F, -18.2692F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2505F, -15.0936F, -41.2304F, 0.0174F, -0.6842F, -0.0525F)); + PartDefinition cube_r255 = bone16.addOrReplaceChild("cube_r255", CubeListBuilder.create().texOffs(397, 558).mirror().addBox(0.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -15.0F, -22.0F, 0.0145F, -0.3661F, -0.0467F)); + PartDefinition cube_r256 = bone16.addOrReplaceChild("cube_r256", CubeListBuilder.create().texOffs(455, 534).mirror().addBox(-0.1614F, -1.5F, -21.265F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(6.7435F, -18.0F, -41.4293F, 0.0F, -0.6981F, 0.0F)); + PartDefinition cube_r257 = bone16.addOrReplaceChild("cube_r257", CubeListBuilder.create().texOffs(455, 558).mirror().addBox(0.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -18.0F, -22.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition bone17 = bone16.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offset(8.6129F, -0.9984F, -52.096F)); + PartDefinition cube_r258 = bone17.addOrReplaceChild("cube_r258", CubeListBuilder.create().texOffs(94, 570).mirror().addBox(-0.0773F, -1.1394F, -15.3683F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.2251F, -0.7307F, -0.3829F)); + PartDefinition bone18 = bone16.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(9.3629F, 1.7516F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r259 = bone18.addOrReplaceChild("cube_r259", CubeListBuilder.create().texOffs(478, 558).mirror().addBox(8.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 13.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, -0.7137F, -0.3778F)); + PartDefinition bone19 = bone16.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(9.3629F, 4.7516F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r260 = bone19.addOrReplaceChild("cube_r260", CubeListBuilder.create().texOffs(309, 16).mirror().addBox(9.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, -0.7137F, -0.3778F)); + PartDefinition bone20 = bone16.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(10.3629F, 7.5016F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r261 = bone20.addOrReplaceChild("cube_r261", CubeListBuilder.create().texOffs(432, 16).mirror().addBox(7.6852F, -2.3041F, -0.886F, 1.0F, 3.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.0F, 2.0F, 0.0F, 0.1844F, -0.6835F, -0.3687F)); + PartDefinition cube_r262 = bone20.addOrReplaceChild("cube_r262", CubeListBuilder.create().texOffs(169, 146).mirror().addBox(6.9949F, 0.4331F, 5.872F, 1.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.4122F, 4.5475F, -1.6111F, 0.3677F, -0.4737F, -1.0042F)); + PartDefinition cube_r263 = bone20.addOrReplaceChild("cube_r263", CubeListBuilder.create().texOffs(180, 605).mirror().addBox(9.2265F, -2.1905F, -4.1465F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0F, 0.0F, 0.0F, 0.2289F, -0.7172F, -0.4363F)); + PartDefinition bone21 = bone16.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", + CubeListBuilder.create().texOffs(0, 837).addBox(-0.5F, 4.5F, -60.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(660, 478).addBox(-0.5F, 1.5F, -7.5F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(662, 303) + .addBox(-0.6F, 4.5F, -15.5F, 1.0F, 3.0F, 65.0F, new CubeDeformation(0.0F)).texOffs(0, 730).addBox(-0.2125F, -4.5F, -101.5F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(842, 832) + .addBox(-0.2875F, -7.5F, -101.5F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(788, 475).addBox(-0.5F, -10.5F, -101.5F, 1.0F, 3.0F, 46.0F, new CubeDeformation(0.0F)).texOffs(678, 832) + .addBox(-0.5F, -10.5F, -55.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(795, 832).addBox(-0.6F, -7.5F, -61.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(834, 572) + .addBox(-0.5F, -1.5F, -67.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(833, 524).addBox(0.0F, -4.5F, -45.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(435, 596) + .addBox(-0.2F, -7.5F, -16.5F, 1.0F, 3.0F, 79.0F, new CubeDeformation(0.0F)).texOffs(516, 596).addBox(-0.5F, -10.5F, -10.5F, 1.0F, 3.0F, 73.0F, new CubeDeformation(0.0F)).texOffs(727, 655) + .addBox(-0.5F, -4.5F, -0.5F, 1.0F, 3.0F, 63.0F, new CubeDeformation(0.0F)), + PartPose.offset(20.5F, 11.5F, 68.5F)); + PartDefinition cube_r264 = bone.addOrReplaceChild("cube_r264", CubeListBuilder.create().texOffs(412, 88).addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 85.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0087F, 0.0F)); + PartDefinition cube_r265 = bone.addOrReplaceChild("cube_r265", CubeListBuilder.create().texOffs(869, 126).addBox(-0.5F, -1.5F, -17.0F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, -84.5F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition cube_r266 = bone.addOrReplaceChild("cube_r266", CubeListBuilder.create().texOffs(741, 81).addBox(-0.5F, -1.5F, -24.5F, 1.0F, 3.0F, 49.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.0F, -77.0F, 0.0F, -0.0044F, 0.0873F)); + PartDefinition cube_r267 = bone.addOrReplaceChild("cube_r267", CubeListBuilder.create().texOffs(836, 465).addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.0F, -30.0F, 0.0F, -0.0087F, 0.0436F)); + PartDefinition cube_r268 = bone.addOrReplaceChild("cube_r268", CubeListBuilder.create().texOffs(532, 215).addBox(-0.5F, -1.5F, -20.5F, 1.0F, 3.0F, 41.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 6.0F, -81.0F, 0.0F, 0.0087F, -0.0436F)); + PartDefinition bone25 = partdefinition.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(0, 837).mirror().addBox(-0.5F, 4.5F, -60.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(660, 478).mirror() + .addBox(-0.5F, 1.5F, -7.5F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(662, 303).mirror().addBox(-0.4F, 4.5F, -15.5F, 1.0F, 3.0F, 65.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 730).mirror() + .addBox(-0.7875F, -4.5F, -101.5F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(842, 832).mirror().addBox(-0.7125F, -7.5F, -101.5F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(788, 475) + .mirror().addBox(-0.5F, -10.5F, -101.5F, 1.0F, 3.0F, 46.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(678, 832).mirror().addBox(-0.5F, -10.5F, -55.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(795, 832).mirror().addBox(-0.4F, -7.5F, -61.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(834, 572).mirror().addBox(-0.5F, -1.5F, -67.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(833, 524).mirror().addBox(-1.0F, -4.5F, -45.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(435, 596).mirror().addBox(-0.8F, -7.5F, -16.5F, 1.0F, 3.0F, 79.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(516, 596).mirror().addBox(-0.5F, -10.5F, -10.5F, 1.0F, 3.0F, 73.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(727, 655).mirror().addBox(-0.5F, -4.5F, -0.5F, 1.0F, 3.0F, 63.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-20.5F, 11.5F, 68.5F)); + PartDefinition cube_r269 = bone25.addOrReplaceChild("cube_r269", CubeListBuilder.create().texOffs(412, 88).mirror().addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 85.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.0087F, 0.0F)); + PartDefinition cube_r270 = bone25.addOrReplaceChild("cube_r270", CubeListBuilder.create().texOffs(869, 126).mirror().addBox(-0.5F, -1.5F, -17.0F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, -84.5F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition cube_r271 = bone25.addOrReplaceChild("cube_r271", CubeListBuilder.create().texOffs(741, 81).mirror().addBox(-0.5F, -1.5F, -24.5F, 1.0F, 3.0F, 49.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 3.0F, -77.0F, 0.0F, 0.0044F, -0.0873F)); + PartDefinition cube_r272 = bone25.addOrReplaceChild("cube_r272", CubeListBuilder.create().texOffs(836, 465).mirror().addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 3.0F, -30.0F, 0.0F, 0.0087F, -0.0436F)); + PartDefinition cube_r273 = bone25.addOrReplaceChild("cube_r273", CubeListBuilder.create().texOffs(532, 215).mirror().addBox(-0.5F, -1.5F, -20.5F, 1.0F, 3.0F, 41.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 6.0F, -81.0F, 0.0F, -0.0087F, 0.0436F)); + PartDefinition bone61 = partdefinition.addOrReplaceChild("bone61", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.1625F, 2.5F, -95.8125F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r274 = bone61.addOrReplaceChild("cube_r274", CubeListBuilder.create().texOffs(281, 19).mirror().addBox(8.0707F, -9.5F, -15.5735F, 0.0F, 5.0F, 24.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 16).mirror() + .addBox(7.0707F, -4.5F, -15.5735F, 2.0F, 3.0F, 24.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition lifeboat3 = partdefinition.addOrReplaceChild("lifeboat3", + CubeListBuilder.create().texOffs(336, 523).mirror().addBox(-7.0F, -9.2625F, 31.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(455, 486).mirror() + .addBox(-4.2625F, -10.175F, 30.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(78, 187).mirror().addBox(-0.7375F, -10.1125F, 30.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(181, 187).mirror().addBox(-5.775F, -7.225F, 31.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(101, 91).mirror() + .addBox(-2.1125F, -8.75F, 31.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(21, 160).mirror().addBox(-2.1125F, -6.35F, 31.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(354, 96).mirror().addBox(-3.0F, -6.0F, 31.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(22.5F, -6.0F, 64.0F)); + PartDefinition cube_r275 = lifeboat3.addOrReplaceChild("cube_r275", CubeListBuilder.create().texOffs(394, 488).mirror().addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(6.5F, -9.0F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r276 = lifeboat3.addOrReplaceChild("cube_r276", CubeListBuilder.create().texOffs(417, 488).mirror().addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-6.5F, -9.0F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r277 = lifeboat3.addOrReplaceChild("cube_r277", CubeListBuilder.create().texOffs(112, 12).mirror().addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r278 = lifeboat3.addOrReplaceChild("cube_r278", CubeListBuilder.create().texOffs(206, 48).mirror().addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r279 = lifeboat3.addOrReplaceChild("cube_r279", CubeListBuilder.create().texOffs(206, 24).mirror().addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(3.0F, -3.0F, 31.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r280 = lifeboat3.addOrReplaceChild("cube_r280", CubeListBuilder.create().texOffs(373, 90).mirror().addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(5.0F, -3.525F, 31.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r281 = lifeboat3.addOrReplaceChild("cube_r281", CubeListBuilder.create().texOffs(206, 28).mirror().addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.0F, -3.0F, 31.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r282 = lifeboat3.addOrReplaceChild("cube_r282", CubeListBuilder.create().texOffs(373, 94).mirror().addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-5.0F, -3.525F, 31.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition bone56 = lifeboat3.addOrReplaceChild("bone56", + CubeListBuilder.create().texOffs(574, 518).mirror().addBox(6.5305F, 0.6607F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(255, 570).mirror() + .addBox(8.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(340, 268).mirror().addBox(4.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-7.5305F, -4.4107F, 0.5F)); + PartDefinition cube_r283 = bone56.addOrReplaceChild("cube_r283", CubeListBuilder.create().texOffs(81, 97).mirror().addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.5305F, 0.5875F, -5.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r284 = bone56.addOrReplaceChild("cube_r284", CubeListBuilder.create().texOffs(116, 150).mirror().addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.5305F, 0.5875F, -5.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r285 = bone56.addOrReplaceChild("cube_r285", CubeListBuilder.create().texOffs(116, 155).mirror().addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.5305F, 1.4107F, -5.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r286 = bone56.addOrReplaceChild("cube_r286", CubeListBuilder.create().texOffs(548, 520).mirror().addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r287 = bone56.addOrReplaceChild("cube_r287", CubeListBuilder.create().texOffs(438, 226).mirror().addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.3234F, -2.8706F, -12.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r288 = bone56.addOrReplaceChild("cube_r288", CubeListBuilder.create().texOffs(384, 176).mirror().addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.9F, -4.0F, -9.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r289 = bone56.addOrReplaceChild("cube_r289", CubeListBuilder.create().texOffs(845, 226).mirror().addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.75F, -4.0F, -5.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r290 = bone56.addOrReplaceChild("cube_r290", CubeListBuilder.create().texOffs(160, 16).mirror().addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8017F, -2.8706F, -6.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r291 = bone56.addOrReplaceChild("cube_r291", CubeListBuilder.create().texOffs(292, 72).mirror().addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.75F, -4.0F, -5.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r292 = bone56.addOrReplaceChild("cube_r292", CubeListBuilder.create().texOffs(420, 566).mirror().addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -3.0F, -5.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r293 = bone56.addOrReplaceChild("cube_r293", CubeListBuilder.create().texOffs(217, 320).mirror().addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.9311F, -9.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r294 = bone56.addOrReplaceChild("cube_r294", CubeListBuilder.create().texOffs(185, 191).mirror().addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.2448F, -0.4311F, -5.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r295 = bone56.addOrReplaceChild("cube_r295", CubeListBuilder.create().texOffs(184, 144).mirror().addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(3.2448F, -0.4311F, -9.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r296 = bone56.addOrReplaceChild("cube_r296", CubeListBuilder.create().texOffs(293, 16).mirror().addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.2448F, -0.4311F, -5.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r297 = bone56.addOrReplaceChild("cube_r297", CubeListBuilder.create().texOffs(14, 613).mirror().addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(582, 540).mirror() + .addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r298 = bone56.addOrReplaceChild("cube_r298", CubeListBuilder.create().texOffs(339, 90).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.1311F, 23.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r299 = bone56.addOrReplaceChild("cube_r299", CubeListBuilder.create().texOffs(340, 288).mirror().addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.1311F, 12.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r300 = bone56.addOrReplaceChild("cube_r300", CubeListBuilder.create().texOffs(484, 614).mirror().addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.7687F, -1.4835F, 13.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r301 = bone56.addOrReplaceChild("cube_r301", CubeListBuilder.create().texOffs(537, 564).mirror().addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8306F, -1.5453F, 1.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r302 = bone56.addOrReplaceChild("cube_r302", CubeListBuilder.create().texOffs(179, 97).mirror().addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(359, 276).mirror() + .addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.0065F, 0.3564F, -9.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r303 = bone56.addOrReplaceChild("cube_r303", CubeListBuilder.create().texOffs(325, 178).mirror().addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.694F, 0.6689F, -5.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r304 = bone56.addOrReplaceChild("cube_r304", CubeListBuilder.create().texOffs(594, 43).mirror().addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r305 = bone56.addOrReplaceChild("cube_r305", CubeListBuilder.create().texOffs(455, 39).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r306 = bone56.addOrReplaceChild("cube_r306", CubeListBuilder.create().texOffs(485, 238).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.061F, -3.0F, 21.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r307 = bone56.addOrReplaceChild("cube_r307", CubeListBuilder.create().texOffs(551, 236).mirror().addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.061F, -3.0F, 11.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r308 = bone56.addOrReplaceChild("cube_r308", CubeListBuilder.create().texOffs(438, 270).mirror().addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.7376F, -2.8706F, -12.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r309 = bone56.addOrReplaceChild("cube_r309", CubeListBuilder.create().texOffs(455, 16).mirror().addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.161F, -4.0F, -9.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r310 = bone56.addOrReplaceChild("cube_r310", CubeListBuilder.create().texOffs(845, 266).mirror().addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.811F, -4.0F, -5.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r311 = bone56.addOrReplaceChild("cube_r311", CubeListBuilder.create().texOffs(441, 28).mirror().addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2593F, -2.8706F, -6.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r312 = bone56.addOrReplaceChild("cube_r312", CubeListBuilder.create().texOffs(322, 310).mirror().addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.811F, -4.0F, -5.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r313 = bone56.addOrReplaceChild("cube_r313", CubeListBuilder.create().texOffs(136, 588).mirror().addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.561F, -3.0F, -5.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r314 = bone56.addOrReplaceChild("cube_r314", CubeListBuilder.create().texOffs(346, 115).mirror().addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.9311F, -9.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r315 = bone56.addOrReplaceChild("cube_r315", CubeListBuilder.create().texOffs(468, 292).mirror().addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(13.8162F, -0.4311F, -5.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r316 = bone56.addOrReplaceChild("cube_r316", CubeListBuilder.create().texOffs(354, 90).mirror().addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(11.8162F, -0.4311F, -9.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r317 = bone56.addOrReplaceChild("cube_r317", CubeListBuilder.create().texOffs(484, 134).mirror().addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(13.8162F, -0.4311F, -5.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r318 = bone56.addOrReplaceChild("cube_r318", CubeListBuilder.create().texOffs(614, 518).mirror().addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 591).mirror() + .addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(12.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r319 = bone56.addOrReplaceChild("cube_r319", CubeListBuilder.create().texOffs(373, 90).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.1311F, 23.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r320 = bone56.addOrReplaceChild("cube_r320", CubeListBuilder.create().texOffs(499, 23).mirror().addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.1311F, 12.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r321 = bone56.addOrReplaceChild("cube_r321", CubeListBuilder.create().texOffs(614, 529).mirror().addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2923F, -1.4835F, 13.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r322 = bone56.addOrReplaceChild("cube_r322", CubeListBuilder.create().texOffs(218, 570).mirror().addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2304F, -1.5453F, 1.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r323 = bone56.addOrReplaceChild("cube_r323", CubeListBuilder.create().texOffs(189, 97).mirror().addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(359, 288).mirror() + .addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(11.0545F, 0.3564F, -9.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r324 = bone56.addOrReplaceChild("cube_r324", CubeListBuilder.create().texOffs(485, 52).mirror().addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.367F, 0.6689F, -5.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r325 = bone56.addOrReplaceChild("cube_r325", CubeListBuilder.create().texOffs(594, 85).mirror().addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition bone57 = bone56.addOrReplaceChild("bone57", CubeListBuilder.create(), PartPose.offset(7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r326 = bone57.addOrReplaceChild("cube_r326", CubeListBuilder.create().texOffs(359, 268).mirror().addBox(-1.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(164, 27).mirror() + .addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r327 = bone57.addOrReplaceChild("cube_r327", CubeListBuilder.create().texOffs(160, 21).mirror().addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r328 = bone57.addOrReplaceChild("cube_r328", CubeListBuilder.create().texOffs(16, 591).mirror().addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone58 = lifeboat3.addOrReplaceChild("bone58", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -89.0F)); + PartDefinition bone59 = lifeboat3.addOrReplaceChild("bone59", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -72.0F)); + PartDefinition bone60 = lifeboat3.addOrReplaceChild("bone60", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -58.0F)); + PartDefinition greenbarrel = partdefinition.addOrReplaceChild("greenbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.4005F, -5.4833F, -58.7568F, 0.0F, -0.2182F, 0.0F)); + PartDefinition redbarrel = partdefinition.addOrReplaceChild("redbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(-7.9005F, -5.4833F, -41.7568F)); + PartDefinition closedchest = partdefinition.addOrReplaceChild("closedchest", CubeListBuilder.create(), PartPose.offset(-2.0F, -1.0F, 101.5F)); + PartDefinition chestlid2 = closedchest.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, 2.3387F, -0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r329 = chestlid2.addOrReplaceChild("cube_r329", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -40.5969F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r330 = chestlid2.addOrReplaceChild("cube_r330", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r331 = chestlid2.addOrReplaceChild("cube_r331", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, -38.0969F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r332 = chestlid2.addOrReplaceChild("cube_r332", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -1.9397F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, -4.6678F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r333 = chestlid2.addOrReplaceChild("cube_r333", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = closedchest.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition valuablecargo = partdefinition.addOrReplaceChild("valuablecargo", CubeListBuilder.create(), PartPose.offset(-11.9005F, -4.4833F, 129.2432F)); + PartDefinition goldbarrel2 = valuablecargo.addOrReplaceChild("goldbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.48F, 0.0F)); + PartDefinition greenbarrel2 = valuablecargo.addOrReplaceChild("greenbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(10.5F, 0.0F, 7.0F)); + PartDefinition redbarrel2 = valuablecargo.addOrReplaceChild("redbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.0F, 0.0F, -3.0F, 0.0F, -0.3054F, 0.0F)); + PartDefinition treasurechest3 = valuablecargo.addOrReplaceChild("treasurechest3", CubeListBuilder.create(), PartPose.offsetAndRotation(0.9005F, 4.4833F, -12.7432F, 0.0F, -0.6981F, 0.0F)); + PartDefinition chestlid5 = treasurechest3.addOrReplaceChild("chestlid5", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r334 = chestlid5.addOrReplaceChild("cube_r334", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r335 = chestlid5.addOrReplaceChild("cube_r335", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r336 = chestlid5.addOrReplaceChild("cube_r336", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r337 = chestlid5.addOrReplaceChild("cube_r337", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r338 = chestlid5.addOrReplaceChild("cube_r338", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest5 = treasurechest3.addOrReplaceChild("chest5", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition closedchest2 = valuablecargo.addOrReplaceChild("closedchest2", CubeListBuilder.create(), PartPose.offsetAndRotation(22.9005F, 4.4833F, 0.2568F, 0.0F, 0.48F, 0.0F)); + PartDefinition chestlid3 = closedchest2.addOrReplaceChild("chestlid3", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, 2.3387F, -0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r339 = chestlid3.addOrReplaceChild("cube_r339", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -40.5969F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r340 = chestlid3.addOrReplaceChild("cube_r340", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r341 = chestlid3.addOrReplaceChild("cube_r341", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, -38.0969F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r342 = chestlid3.addOrReplaceChild("cube_r342", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -1.9397F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, -4.6678F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r343 = chestlid3.addOrReplaceChild("cube_r343", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest3 = closedchest2.addOrReplaceChild("chest3", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition redbarrel3 = partdefinition.addOrReplaceChild("redbarrel3", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.9005F, -4.4833F, -82.7568F, 0.0F, -0.3054F, 0.0F)); + PartDefinition redbarrel4 = partdefinition.addOrReplaceChild("redbarrel4", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0995F, -4.4833F, -82.7568F, 0.0F, 0.48F, 0.0F)); + PartDefinition redbarrel5 = partdefinition.addOrReplaceChild("redbarrel5", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.0995F, -4.4833F, -74.7568F, 0.0F, 1.6581F, 0.0F)); + PartDefinition redbarrel6 = partdefinition.addOrReplaceChild("redbarrel6", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.9005F, -4.4833F, -74.7568F, 0.0F, 1.4835F, 0.0F)); + PartDefinition redbarrel7 = partdefinition.addOrReplaceChild("redbarrel7", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.9005F, -4.4833F, -67.7568F, 0.0F, 2.0944F, 0.0F)); + PartDefinition redbarrel8 = partdefinition.addOrReplaceChild("redbarrel8", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169) + .addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85).addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995) + .addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002).addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014) + .addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0995F, -9.4833F, -79.7568F, -1.4663F, -0.3864F, 0.4564F)); + PartDefinition redbarrel9 = partdefinition.addOrReplaceChild("redbarrel9", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169) + .addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85).addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995) + .addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002).addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014) + .addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0995F, -4.4833F, -66.7568F, 1.3198F, -1.1712F, -2.4137F)); + PartDefinition redbarrel10 = partdefinition.addOrReplaceChild("redbarrel10", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0995F, -4.4833F, -74.7568F, 0.0F, 1.2217F, 0.0F)); + PartDefinition cargo = partdefinition.addOrReplaceChild("cargo", CubeListBuilder.create().texOffs(972, 6).addBox(-19.5F, -6.5F, 0.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offset(3.5F, 16.5F, -19.5F)); + PartDefinition cube_r344 = cargo.addOrReplaceChild("cube_r344", CubeListBuilder.create().texOffs(972, 6).addBox(-6.5F, -6.5F, -6.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.48F, 0.0F)); + PartDefinition redbarrel13 = cargo.addOrReplaceChild("redbarrel13", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, 27.7432F, 0.0F, -1.2217F, 0.0F)); + PartDefinition redbarrel11 = cargo.addOrReplaceChild("redbarrel11", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, 2.0167F, 11.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel12 = cargo.addOrReplaceChild("redbarrel12", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, -4.9833F, 11.7432F, 0.0F, -2.3126F, 0.0F)); + PartDefinition cargo2 = partdefinition.addOrReplaceChild("cargo2", CubeListBuilder.create().texOffs(972, 6).addBox(-19.5F, -6.5F, -13.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offset(3.5F, 16.5F, 105.5F)); + PartDefinition cube_r345 = cargo2.addOrReplaceChild("cube_r345", CubeListBuilder.create().texOffs(972, 6).addBox(-6.5F, -6.5F, -6.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.48F, 0.0F)); + PartDefinition redbarrel14 = cargo2.addOrReplaceChild("redbarrel14", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, -27.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel18 = cargo2.addOrReplaceChild("redbarrel18", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4005F, 2.0167F, -27.7432F, 0.0F, 1.9199F, 0.0F)); + PartDefinition redbarrel17 = cargo2.addOrReplaceChild("redbarrel17", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, -27.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel15 = cargo2.addOrReplaceChild("redbarrel15", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, 2.0167F, -11.7432F, 0.0F, -1.2217F, 0.0F)); + PartDefinition redbarrel16 = cargo2.addOrReplaceChild("redbarrel16", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, -4.9833F, -11.7432F, 0.0F, 2.3126F, 0.0F)); + PartDefinition valuablecargo2 = partdefinition.addOrReplaceChild("valuablecargo2", CubeListBuilder.create(), PartPose.offset(0.0F, 25.0F, 137.0F)); + PartDefinition goldbarrel3 = valuablecargo2.addOrReplaceChild("goldbarrel3", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.9005F, -6.4833F, -75.2432F, 0.0F, -0.48F, 0.0F)); + PartDefinition greenbarrel3 = valuablecargo2.addOrReplaceChild("greenbarrel3", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(-1.4005F, -6.4833F, -82.2432F)); + PartDefinition redbarrel19 = valuablecargo2.addOrReplaceChild("redbarrel19", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.9005F, -6.4833F, -72.2432F, 0.0F, 0.3054F, 0.0F)); + PartDefinition treasurechest4 = valuablecargo2.addOrReplaceChild("treasurechest4", CubeListBuilder.create(), PartPose.offsetAndRotation(-11.0F, -2.0F, -62.5F, 0.0F, 0.6981F, 0.0F)); + PartDefinition chestlid6 = treasurechest4.addOrReplaceChild("chestlid6", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, 35.5375F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r346 = chestlid6.addOrReplaceChild("cube_r346", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, -8.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 4.1548F, 0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r347 = chestlid6.addOrReplaceChild("cube_r347", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, -31.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -0.8452F, -0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r348 = chestlid6.addOrReplaceChild("cube_r348", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, 1.6548F, -2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r349 = chestlid6.addOrReplaceChild("cube_r349", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -0.3117F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, 4.1548F, -1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r350 = chestlid6.addOrReplaceChild("cube_r350", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, -14.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -0.8452F, -1.5708F, 0.0F, 0.0F)); + PartDefinition chest6 = treasurechest4.addOrReplaceChild("chest6", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, -50.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, 48.5F)); + PartDefinition closedchest3 = valuablecargo2.addOrReplaceChild("closedchest3", CubeListBuilder.create(), PartPose.offsetAndRotation(11.0F, -2.0F, -75.5F, 0.0F, -0.48F, 0.0F)); + PartDefinition chestlid7 = closedchest3.addOrReplaceChild("chestlid7", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, -2.3387F, 0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r351 = chestlid7.addOrReplaceChild("cube_r351", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, -8.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 40.5969F, 0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r352 = chestlid7.addOrReplaceChild("cube_r352", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, -31.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 35.5969F, -0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r353 = chestlid7.addOrReplaceChild("cube_r353", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, 38.0969F, -2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r354 = chestlid7.addOrReplaceChild("cube_r354", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -0.0603F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, 4.6678F, -1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r355 = chestlid7.addOrReplaceChild("cube_r355", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, -14.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 35.5969F, -1.5708F, 0.0F, 0.0F)); + PartDefinition chest7 = closedchest3.addOrReplaceChild("chest7", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, -50.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, 48.5F)); + PartDefinition algar = partdefinition.addOrReplaceChild("algar", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(-9.0F, 38.0F, 4.0F)); + PartDefinition cube_r356 = algar.addOrReplaceChild("cube_r356", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar2 = partdefinition.addOrReplaceChild("algar2", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, 35.0F, 31.0F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r357 = algar2.addOrReplaceChild("cube_r357", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar3 = partdefinition.addOrReplaceChild("algar3", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, 38.0F, -40.0F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r358 = algar3.addOrReplaceChild("cube_r358", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar4 = partdefinition.addOrReplaceChild("algar4", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, 38.0F, 93.0F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r359 = algar4.addOrReplaceChild("cube_r359", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar5 = partdefinition.addOrReplaceChild("algar5", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.0F, 34.0F, -77.0F)); + PartDefinition cube_r360 = algar5.addOrReplaceChild("cube_r360", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar6 = partdefinition.addOrReplaceChild("algar6", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, 38.0F, -71.0F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r361 = algar6.addOrReplaceChild("cube_r361", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar7 = partdefinition.addOrReplaceChild("algar7", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, 36.0F, 47.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r362 = algar7.addOrReplaceChild("cube_r362", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar8 = partdefinition.addOrReplaceChild("algar8", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.0F, 36.0F, 111.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r363 = algar8.addOrReplaceChild("cube_r363", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar9 = partdefinition.addOrReplaceChild("algar9", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0F, 36.0F, 111.0F, 0.0F, -0.1309F, 0.0F)); + PartDefinition cube_r364 = algar9.addOrReplaceChild("cube_r364", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar10 = partdefinition.addOrReplaceChild("algar10", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0F, 37.0F, 65.0F, 0.0F, -0.1309F, 0.0F)); + PartDefinition cube_r365 = algar10.addOrReplaceChild("cube_r365", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar11 = partdefinition.addOrReplaceChild("algar11", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0F, 38.0F, -24.0F, 0.0F, -1.1781F, 0.0F)); + PartDefinition cube_r366 = algar11.addOrReplaceChild("cube_r366", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(606, 475).addBox(-1.0F, -23.0F, 10.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(240, 605).addBox(-1.0F, -23.0F, -34.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(232, 605) + .addBox(-1.0F, -23.0F, -85.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(224, 605).addBox(-1.0F, -23.0F, 100.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(216, 605) + .addBox(-1.0F, -23.0F, 54.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 0).addBox(-1.0F, -23.0F, -32.0F, 2.0F, 1.0F, 42.0F, new CubeDeformation(0.0F)).texOffs(339, 72) + .addBox(-1.0F, -23.0F, -64.0F, 2.0F, 1.0F, 30.0F, new CubeDeformation(0.0F)).texOffs(180, 570).addBox(-1.0F, -23.0F, -100.0F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(438, 259) + .addBox(-1.0F, -23.0F, 12.0F, 2.0F, 1.0F, 42.0F, new CubeDeformation(0.0F)).texOffs(513, 502).addBox(-1.0F, -23.0F, 56.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(438, 215) + .addBox(-1.0F, -23.0F, 102.0F, 2.0F, 1.0F, 43.0F, new CubeDeformation(0.0F)).texOffs(460, 614).addBox(18.444F, -23.0F, -66.5623F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(42, 611) + .addBox(-20.444F, -23.0F, -66.5623F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(154, 475).addBox(-20.4625F, -23.0F, -46.5625F, 2.0F, 1.0F, 178.0F, new CubeDeformation(0.0F)).texOffs(412, 0) + .addBox(18.4625F, -23.0F, -46.5625F, 2.0F, 1.0F, 178.0F, new CubeDeformation(0.0F)).texOffs(402, 499).addBox(18.5F, -22.0F, -34.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(394, 499) + .addBox(18.5F, -22.0F, 11.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 0).addBox(18.5F, -22.0F, 54.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(493, 215) + .addBox(18.5F, -22.0F, 100.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(492, 259).addBox(-20.5F, -22.0F, 100.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(344, 487) + .addBox(-20.5F, -22.0F, 54.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(336, 487).addBox(-20.5F, -22.0F, 11.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(486, 475) + .addBox(-20.5F, -22.0F, -34.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 39).addBox(-19.0F, -23.0F, -34.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 254) + .addBox(1.0F, -23.0F, -34.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(484, 296).addBox(-19.0F, -23.0F, 10.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(478, 302) + .addBox(1.0F, -23.0F, 10.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(452, 170).addBox(-19.0F, -23.0F, 54.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(452, 82) + .addBox(1.0F, -23.0F, 54.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(438, 302).addBox(-19.0F, -23.0F, 100.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(412, 170) + .addBox(1.0F, -23.0F, 100.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(309, 61).addBox(-12.0F, -23.0F, -85.0F, 11.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 175) + .addBox(1.0F, -23.0F, -85.0F, 11.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(204, 605).addBox(-1.0F, -23.0F, -66.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(412, 82) + .addBox(1.0F, -23.0F, -66.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(392, 328).addBox(-19.0F, -23.0F, -66.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(438, 282) + .addBox(-1.0F, -23.0F, -83.0F, 2.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-2.0F, 5.0F, -80.25F, 4.0F, 4.0F, 93.0F, new CubeDeformation(0.0F)).texOffs(455, 478) + .addBox(20.0F, -26.0F, 16.0F, 2.0F, 3.0F, 115.0F, new CubeDeformation(0.0F)).texOffs(229, 217).addBox(-2.0F, 5.0F, 12.75F, 4.0F, 4.0F, 103.0F, new CubeDeformation(0.0F)).texOffs(281, 72) + .addBox(-1.9F, -7.4F, 117.85F, 4.0F, 4.0F, 21.0F, new CubeDeformation(0.0F)).texOffs(357, 209).addBox(1.0F, -23.0F, 129.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(352, 328) + .addBox(-19.0F, -23.0F, 129.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(598, 518).addBox(-1.0F, -22.0F, 114.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 88) + .addBox(-1.0F, -22.0F, 129.0F, 2.0F, 16.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(312, 328).addBox(-19.0F, -23.0F, 114.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(272, 328) + .addBox(1.0F, -23.0F, 114.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(594, 0).addBox(20.0F, -26.0F, -66.0F, 2.0F, 3.0F, 82.0F, new CubeDeformation(0.0F)).texOffs(336, 475) + .addBox(-22.0F, -26.0F, -66.0F, 2.0F, 3.0F, 115.0F, new CubeDeformation(0.0F)).texOffs(574, 475).addBox(-22.0F, -26.0F, 49.0F, 2.0F, 3.0F, 82.0F, new CubeDeformation(0.0F)).texOffs(372, 44) + .addBox(18.5F, -22.0F, 114.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(328, 72).addBox(-20.5F, -22.0F, 114.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(340, 288) + .addBox(18.5F, -22.3F, 129.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 43).addBox(-1.0F, -22.0F, 119.0F, 2.0F, 16.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 125) + .addBox(1.0F, -6.0F, 129.0F, 14.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(232, 328).addBox(1.0F, -23.0F, 119.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(319, 210) + .addBox(-19.0F, -23.0F, 119.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 80).addBox(-15.0F, -6.0F, 129.0F, 14.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(205, 0) + .addBox(-20.5F, -22.3F, 129.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(339, 103).addBox(-15.0F, -5.0F, 114.0F, 14.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(101, 12) + .addBox(1.0F, -5.0F, 114.0F, 14.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-17.0F, -1.0F, -96.0F, 34.0F, 0.0F, 213.0F, new CubeDeformation(0.0F)).texOffs(507, 267) + .addBox(-1.0F, -23.0F, 96.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(552, 596).addBox(-1.0F, -23.0F, 94.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(281, 209) + .addBox(1.0F, -23.0F, 94.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(281, 125).addBox(-19.0F, -23.0F, 94.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(325, 97) + .addBox(-1.0F, -23.0F, 60.0F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(141, 187).addBox(1.0F, -23.0F, 60.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 187) + .addBox(-19.0F, -23.0F, 60.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(660, 515).addBox(-12.0F, -23.0F, 62.0F, 2.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(627, 216) + .addBox(10.0F, -23.0F, 62.0F, 2.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-10.0F, -23.0F, 62.0F, 20.0F, 0.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(0, 150) + .addBox(18.0F, -24.0F, -25.0F, 2.0F, 1.0F, 38.0F, new CubeDeformation(0.0F)).texOffs(540, 741).addBox(18.0F, -24.0F, -70.0F, 2.0F, 1.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(206, 16) + .addBox(-20.4625F, -25.0F, -66.5625F, 4.0F, 1.0F, 198.0F, new CubeDeformation(0.0F)).texOffs(0, 15).addBox(16.4625F, -25.0F, -66.5625F, 4.0F, 1.0F, 198.0F, new CubeDeformation(0.0F)).texOffs(373, 72) + .addBox(1.0F, -22.0F, 114.0F, 14.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(339, 72).addBox(-15.0F, -22.0F, 114.0F, 14.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(340, 268) + .addBox(15.0F, -22.0F, 114.0F, 4.0F, 14.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(339, 103).addBox(-19.0F, -22.0F, 114.0F, 4.0F, 14.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(101, 150) + .addBox(-10.0F, -33.0F, 6.0F, 20.0F, 9.0F, 28.0F, new CubeDeformation(0.0F)).texOffs(0, 114).addBox(21.0F, -31.0F, -66.0F, 0.0F, 5.0F, 82.0F, new CubeDeformation(0.0F)).texOffs(0, 200) + .addBox(21.0F, -31.0F, 16.0F, 0.0F, 5.0F, 115.0F, new CubeDeformation(0.0F)).texOffs(0, 200).mirror().addBox(-21.0F, -31.0F, 16.0F, 0.0F, 5.0F, 115.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 114).mirror() + .addBox(-21.0F, -31.0F, -66.0F, 0.0F, 5.0F, 82.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r367 = bb_main.addOrReplaceChild("cube_r367", + CubeListBuilder.create().texOffs(21, 147).mirror().addBox(1.0F, -6.5F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(438, 215).addBox(0.0F, -1.5F, 0.0F, 2.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-22.0F, -24.5F, 131.0F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r368 = bb_main.addOrReplaceChild("cube_r368", CubeListBuilder.create().texOffs(0, 15).mirror().addBox(0.8642F, -6.5F, 0.0964F, 0.0F, 5.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(255, 585).addBox(-0.1358F, + -1.5F, 0.0964F, 2.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-18.85F, -24.5F, 138.25F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r369 = bb_main.addOrReplaceChild("cube_r369", CubeListBuilder.create().texOffs(72, 78).mirror().addBox(1.0708F, -6.5F, -0.0366F, 0.0F, 5.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(591, 608).addBox(0.0708F, + -1.5F, -0.0366F, 2.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-9.35F, -24.5F, 145.8F, 0.0F, 1.2217F, 0.0F)); + PartDefinition cube_r370 = bb_main.addOrReplaceChild("cube_r370", + CubeListBuilder.create().texOffs(72, 78).addBox(-1.0708F, -6.5F, -0.0366F, 0.0F, 5.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(560, 608).addBox(-2.0708F, -1.5F, -0.0366F, 2.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.35F, -24.5F, 145.8F, 0.0F, -1.2217F, 0.0F)); + PartDefinition cube_r371 = bb_main.addOrReplaceChild("cube_r371", + CubeListBuilder.create().texOffs(0, 15).addBox(-0.8642F, -6.5F, 0.0964F, 0.0F, 5.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(295, 585).addBox(-1.8642F, -1.5F, 0.0964F, 2.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.85F, -24.5F, 138.25F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r372 = bb_main.addOrReplaceChild("cube_r372", + CubeListBuilder.create().texOffs(21, 147).addBox(-1.0F, -6.5F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(438, 259).addBox(-2.0F, -1.5F, 0.0F, 2.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(22.0F, -24.5F, 131.0F, 0.0F, -0.3927F, 0.0F)); + PartDefinition cube_r373 = bb_main.addOrReplaceChild("cube_r373", + CubeListBuilder.create().texOffs(42, 150).addBox(-2.5F, -37.0547F, 2.2571F, 4.0F, 31.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(173, 12).addBox(-3.0F, -63.0547F, 6.2571F, 5.0F, 68.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -18.5F, -96.5F, 1.2217F, 0.0F, 0.0F)); + PartDefinition cube_r374 = bb_main.addOrReplaceChild("cube_r374", + CubeListBuilder.create().texOffs(325, 183).addBox(-5.0F, -3.9F, -8.5F, 5.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(460, 596).addBox(-7.0F, -0.9F, -8.5F, 7.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.0F, -4.1F, 122.5F, 0.0F, 0.0F, 0.6109F)); + PartDefinition cube_r375 = bb_main.addOrReplaceChild("cube_r375", + CubeListBuilder.create().texOffs(402, 491).addBox(0.0F, -3.9F, -8.5F, 5.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(380, 286).addBox(0.0F, -0.9F, -8.5F, 7.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(15.0F, -4.1F, 122.5F, 0.0F, 0.0F, -0.6109F)); + PartDefinition cube_r376 = bb_main.addOrReplaceChild("cube_r376", + CubeListBuilder.create().texOffs(306, 310).addBox(-3.998F, -2.5F, -0.004F, 4.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.998F, -0.5F, -0.004F, 2.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.35F, -22.5F, 144.7125F, 0.0F, -1.3526F, 0.0F)); + PartDefinition cube_r377 = bb_main.addOrReplaceChild("cube_r377", + CubeListBuilder.create().texOffs(574, 505).addBox(-0.002F, -2.5F, -0.004F, 4.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(281, 16).addBox(-0.002F, -0.5F, -0.004F, 2.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.35F, -22.5F, 144.7125F, 0.0F, 1.3526F, 0.0F)); + PartDefinition cube_r378 = bb_main.addOrReplaceChild("cube_r378", + CubeListBuilder.create().texOffs(359, 523).addBox(-4.0F, -2.5F, 0.0F, 4.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(281, 72).addBox(-2.0F, -0.5F, -0.5F, 2.0F, 14.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.4625F, -22.5F, 131.4375F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r379 = bb_main.addOrReplaceChild("cube_r379", + CubeListBuilder.create().texOffs(0, 175).addBox(-4.0138F, -2.5F, -0.0185F, 4.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(101, 150).addBox(-2.0138F, -0.5F, -0.0185F, 2.0F, 14.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.075F, -22.5F, 138.0375F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r380 = bb_main.addOrReplaceChild("cube_r380", + CubeListBuilder.create().texOffs(218, 585).addBox(0.0138F, -2.5F, -0.0185F, 4.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(169, 144).addBox(0.0138F, -0.5F, -0.0185F, 2.0F, 14.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-18.075F, -22.5F, 138.0375F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r381 = bb_main.addOrReplaceChild("cube_r381", + CubeListBuilder.create().texOffs(417, 523).addBox(0.0F, -2.5F, 0.0F, 4.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(310, 72).addBox(0.0F, -0.5F, 0.0F, 2.0F, 14.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.4625F, -22.5F, 131.4375F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r382 = bb_main.addOrReplaceChild("cube_r382", + CubeListBuilder.create().texOffs(281, 48).addBox(0.1101F, -2.5F, 0.0096F, 4.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(402, 616).addBox(0.1101F, -0.5F, 0.0096F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.7F, -22.5F, -85.4F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r383 = bb_main.addOrReplaceChild("cube_r383", + CubeListBuilder.create().texOffs(438, 238).addBox(-1.0F, -2.5F, 3.0F, 4.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(72, 657).addBox(-1.0F, -0.5F, 0.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -22.5F, -100.0F, 0.0F, -0.6981F, 0.0F)); + PartDefinition cube_r384 = bb_main.addOrReplaceChild("cube_r384", + CubeListBuilder.create().texOffs(344, 44).addBox(-3.0F, -2.5F, 0.0F, 4.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(130, 657).addBox(-1.0F, -0.5F, 0.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -22.5F, -100.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition cube_r385 = bb_main.addOrReplaceChild("cube_r385", + CubeListBuilder.create().texOffs(42, 165).addBox(-4.1101F, -2.5F, 0.0096F, 4.0F, 2.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(336, 616).addBox(-2.1101F, -0.5F, 0.0096F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.7F, -22.5F, -85.4F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r386 = bb_main.addOrReplaceChild("cube_r386", + CubeListBuilder.create().texOffs(336, 637).addBox(-7.0F, -4.0F, 0.0F, 14.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(662, 331).addBox(9.0F, -4.0F, 0.0F, 14.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.0F, -4.0F, 131.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r387 = bb_main.addOrReplaceChild("cube_r387", CubeListBuilder.create().texOffs(589, 505).addBox(1.0985F, -1.0734F, -0.6F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6376F, -5.7352F, 131.0F, 0.4013F, -0.2013F, 0.5262F)); + PartDefinition cube_r388 = bb_main + .addOrReplaceChild( + "cube_r388", CubeListBuilder.create().texOffs(594, 69).addBox(-0.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).texOffs(359, 296) + .addBox(-2.6515F, -1.0734F, 0.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(293, 21).addBox(-3.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6376F, -5.7352F, 131.0F, 0.3927F, 0.0F, 0.6109F)); + PartDefinition cube_r389 = bb_main.addOrReplaceChild("cube_r389", CubeListBuilder.create().texOffs(309, 52).addBox(1.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(386, 64) + .addBox(0.6515F, -1.0734F, 0.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(594, 148).addBox(-1.0985F, -1.0748F, 0.0F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(17.6376F, -5.7352F, 131.0F, 0.3927F, 0.0F, -0.6109F)); + PartDefinition cube_r390 = bb_main.addOrReplaceChild("cube_r390", CubeListBuilder.create().texOffs(594, 111).addBox(-3.0985F, -1.0734F, -0.6F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(17.6376F, -5.7352F, 131.0F, 0.4013F, 0.2013F, -0.5262F)); + PartDefinition cube_r391 = bb_main.addOrReplaceChild("cube_r391", CubeListBuilder.create().texOffs(164, 191).addBox(-3.9015F, -1.0734F, 0.0F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6376F, -5.7352F, 131.0F, 0.829F, 0.0F, 0.6109F)); + PartDefinition cube_r392 = bb_main.addOrReplaceChild("cube_r392", + CubeListBuilder.create().texOffs(86, 102).addBox(0.028F, 1.5F, 5.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(336, 511).addBox(0.028F, 12.5F, 0.0289F, 16.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(34, 163) + .addBox(0.028F, 1.5F, 0.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(86, 168).addBox(0.028F, 1.5F, 10.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(566, 66) + .addBox(0.028F, -1.5F, 0.0289F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-18.3F, -21.5F, 138.5F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r393 = bb_main.addOrReplaceChild("cube_r393", + CubeListBuilder.create().texOffs(89, 113).addBox(-1.028F, 1.5F, 5.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(336, 475).addBox(-17.028F, 12.5F, 0.0289F, 17.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(193, 27) + .addBox(-1.028F, 1.5F, 10.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(193, 39).addBox(-1.028F, 1.5F, 0.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(504, 238) + .addBox(-1.028F, -1.5F, 0.0289F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.3F, -21.5F, 138.5F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r394 = bb_main.addOrReplaceChild("cube_r394", + CubeListBuilder.create().texOffs(182, 654).addBox(-22.0F, -1.5F, 0.0F, 22.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(86, 146).addBox(-1.0F, -12.5F, 0.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(193, 51) + .addBox(-1.0F, -12.5F, 7.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(463, 238).addBox(-1.0F, -15.5F, 0.0F, 1.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(21.0F, -7.5F, 131.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r395 = bb_main.addOrReplaceChild("cube_r395", + CubeListBuilder.create().texOffs(662, 345).addBox(-14.0657F, -1.5F, -0.0922F, 14.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(86, 124).addBox(-1.0657F, -12.5F, 6.9078F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(193, 15).addBox(-1.0657F, -12.5F, -0.0922F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(474, 39).addBox(-1.0657F, -15.5F, -0.0922F, 1.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5F, -7.5F, 145.3F, 0.0F, -1.309F, 0.0F)); + PartDefinition cube_r396 = bb_main.addOrReplaceChild("cube_r396", + CubeListBuilder.create().texOffs(662, 356).addBox(0.0657F, -1.5F, -0.0922F, 14.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(89, 135).addBox(0.0657F, -12.5F, 6.9078F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(89, 157).addBox(0.0657F, -12.5F, -0.0922F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(431, 37).addBox(0.0657F, -15.5F, -0.0922F, 1.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.5F, -7.5F, 145.3F, 0.0F, 1.309F, 0.0F)); + PartDefinition cube_r397 = bb_main.addOrReplaceChild("cube_r397", + CubeListBuilder.create().texOffs(460, 635).addBox(0.0F, -1.5F, 0.0F, 19.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(8, 150).addBox(0.0F, -12.5F, 0.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(58, 164) + .addBox(0.0F, -12.5F, 7.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(19, 175).addBox(0.0F, -15.5F, 0.0F, 1.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-21.0F, -7.5F, 131.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r398 = bb_main.addOrReplaceChild("cube_r398", CubeListBuilder.create().texOffs(309, 64).addBox(-7.0F, -1.0F, -1.0F, 7.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.0F, -5.0F, 130.0F, 0.0F, 0.0F, 0.6632F)); + PartDefinition cube_r399 = bb_main.addOrReplaceChild("cube_r399", CubeListBuilder.create().texOffs(202, 320).addBox(0.0F, -1.0F, -1.0F, 7.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(15.0F, -5.0F, 130.0F, 0.0F, 0.0F, -0.6632F)); + PartDefinition cube_r400 = bb_main.addOrReplaceChild("cube_r400", + CubeListBuilder.create().texOffs(0, 150).addBox(-2.0F, 0.0F, 13.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(486, 499).addBox(-2.0F, 0.0F, -1.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(380, 505) + .addBox(-2.0F, 0.0F, -47.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(507, 0).addBox(-2.0F, 0.0F, -90.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(507, 43) + .addBox(-2.0F, 0.0F, -135.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.5F, -5.0F, 101.0F, 0.0F, 0.0F, 0.6981F)); + PartDefinition cube_r401 = bb_main.addOrReplaceChild("cube_r401", + CubeListBuilder.create().texOffs(417, 499).addBox(0.0F, 0.0F, 13.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(425, 499).addBox(0.0F, 0.0F, -1.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(455, 499) + .addBox(0.0F, 0.0F, -47.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(463, 499).addBox(0.0F, 0.0F, -90.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(478, 499) + .addBox(0.0F, 0.0F, -135.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.5F, -5.0F, 101.0F, 0.0F, 0.0F, -0.6981F)); + PartDefinition cube_r402 = bb_main.addOrReplaceChild("cube_r402", + CubeListBuilder.create().texOffs(380, 268).addBox(-1.9937F, -0.064F, 13.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(29, 175).addBox(-3.3937F, 8.436F, -186.0F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(455, 39) + .addBox(-1.9937F, -0.064F, -167.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 64).addBox(-1.9937F, -0.064F, -1.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 109) + .addBox(-1.9937F, -0.064F, -47.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 129).addBox(-1.9937F, -0.064F, -90.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 150) + .addBox(-1.9937F, -0.064F, -135.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.4F, 3.4125F, 101.0F, 0.0F, 0.0F, 1.1781F)); + PartDefinition cube_r403 = bb_main.addOrReplaceChild("cube_r403", + CubeListBuilder.create().texOffs(397, 268).addBox(-0.0063F, -0.064F, 13.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(19, 175).addBox(1.3937F, 8.436F, -186.0F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 238) + .addBox(-0.0063F, -0.064F, -167.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(359, 487).addBox(-0.0063F, -0.064F, -1.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(376, 487) + .addBox(-0.0063F, -0.064F, -47.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(384, 487).addBox(-0.0063F, -0.064F, -90.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 23) + .addBox(-0.0063F, -0.064F, -135.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.4F, 3.4125F, 101.0F, 0.0F, 0.0F, -1.1781F)); + PartDefinition cube_r404 = bb_main.addOrReplaceChild("cube_r404", CubeListBuilder.create().texOffs(169, 169).addBox(-0.75F, -1.5F, 0.0F, 2.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, 5.0F, -85.5F, 0.0F, 0.0F, -0.9599F)); + PartDefinition cube_r405 = bb_main.addOrReplaceChild("cube_r405", CubeListBuilder.create().texOffs(86, 78).addBox(-0.5088F, -8.2855F, -0.25F, 2.0F, 8.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.2766F, 4.7057F, -85.0F, -0.05F, -0.0406F, -0.4878F)); + PartDefinition cube_r406 = bb_main.addOrReplaceChild("cube_r406", CubeListBuilder.create().texOffs(206, 15).addBox(-1.4912F, -8.2855F, -0.25F, 2.0F, 8.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.2766F, 4.7057F, -85.0F, -0.05F, 0.0406F, 0.4878F)); + PartDefinition cube_r407 = bb_main.addOrReplaceChild("cube_r407", CubeListBuilder.create().texOffs(164, 191).addBox(-1.25F, -1.5F, 0.0F, 2.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0F, 5.0F, -85.5F, 0.0F, 0.0F, 0.9599F)); + PartDefinition cube_r408 = bb_main.addOrReplaceChild("cube_r408", CubeListBuilder.create().texOffs(134, 613).addBox(-2.0F, -0.7351F, 1.3248F, 4.0F, 4.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, 143.5F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r409 = bb_main.addOrReplaceChild("cube_r409", CubeListBuilder.create().texOffs(309, 48).addBox(-2.0F, -4.4F, 1.0F, 4.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.5F, 138.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition cube_r410 = bb_main.addOrReplaceChild("cube_r410", CubeListBuilder.create().texOffs(402, 593).addBox(0.0F, -1.5F, -20.0F, 2.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-22.0F, -24.5F, -66.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r411 = bb_main.addOrReplaceChild("cube_r411", + CubeListBuilder.create().texOffs(380, 44).addBox(7.0F, 0.0F, -20.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 215).addBox(0.0F, 0.0F, -1.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.5F, -22.0F, -65.0F, 0.0F, 0.0F, -0.1309F)); + PartDefinition cube_r412 = bb_main.addOrReplaceChild("cube_r412", + CubeListBuilder.create().texOffs(438, 282).addBox(6.3657F, -7.0694F, -20.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(323, 16).addBox(-0.0593F, -9.8194F, -1.0F, 2.0F, 10.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.5F, 3.25F, -65.0F, 0.0F, 0.0F, -0.5061F)); + PartDefinition cube_r413 = bb_main.addOrReplaceChild("cube_r413", + CubeListBuilder.create().texOffs(446, 282).addBox(-8.3657F, -7.0694F, -20.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(309, 16).addBox(-1.9407F, -9.8194F, -1.0F, 2.0F, 10.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.5F, 3.25F, -65.0F, 0.0F, 0.0F, 0.5061F)); + PartDefinition cube_r414 = bb_main.addOrReplaceChild("cube_r414", + CubeListBuilder.create().texOffs(478, 475).addBox(-9.0F, 0.0F, -20.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(484, 259).addBox(-2.0F, 0.0F, -1.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.5F, -22.0F, -65.0F, 0.0F, 0.0F, 0.1309F)); + PartDefinition cube_r415 = bb_main.addOrReplaceChild("cube_r415", CubeListBuilder.create().texOffs(455, 475).addBox(-3.0F, -0.0373F, -0.0778F, 5.0F, 7.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 7.0F, -87.0F, 1.2828F, 0.0F, 0.0F)); + PartDefinition cube_r416 = bb_main.addOrReplaceChild("cube_r416", CubeListBuilder.create().texOffs(412, 16).addBox(-3.0F, -0.8412F, -0.5419F, 5.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.0F, -93.0F, 1.0472F, 0.0F, 0.0F)); + PartDefinition cube_r417 = bb_main.addOrReplaceChild("cube_r417", CubeListBuilder.create().texOffs(281, 48).addBox(-3.0F, -14.0547F, -3.7429F, 5.0F, 14.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -18.5F, -96.5F, 0.6109F, 0.0F, 0.0F)); + PartDefinition cube_r418 = bb_main.addOrReplaceChild("cube_r418", CubeListBuilder.create().texOffs(344, 44).addBox(-3.0F, -13.9808F, -3.9951F, 5.0F, 14.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.5F, -91.5F, 0.3491F, 0.0F, 0.0F)); + PartDefinition cube_r419 = bb_main.addOrReplaceChild("cube_r419", CubeListBuilder.create().texOffs(424, 307).addBox(-3.0F, -14.0F, 0.0F, 5.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 9.0F, -93.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r420 = bb_main.addOrReplaceChild("cube_r420", CubeListBuilder.create().texOffs(94, 613).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 9.0F, 115.75F, 0.7854F, 0.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 1024, 1024); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone24.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone23.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone22.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone9.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + sail.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + sail2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + sail3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone11.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone12.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone14.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone26.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone27.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone28.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone29.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone30.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + treasurechest.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + goldbarrel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone33.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + hexadecagon.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + treasurechest2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone34.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone54.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + lifeboat2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + lifeboat4.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone16.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone25.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone61.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + lifeboat3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + greenbarrel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + closedchest.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + valuablecargo.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel4.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel5.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel6.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel7.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel8.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel9.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + redbarrel10.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cargo.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cargo2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + valuablecargo2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar4.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar5.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar6.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar7.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar8.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar9.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar10.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + algar11.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclassdamaged.java b/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclassdamaged.java new file mode 100644 index 0000000..02c711a --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcorvetteclassdamaged.java @@ -0,0 +1,1478 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.6.4 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcorvetteclassdamaged extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcorvetteclassdamaged"), "main"); + public final ModelPart bone31; + + public Modelcorvetteclassdamaged(ModelPart root) { + this.bone31 = root.getChild("bone31"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone31 = partdefinition.addOrReplaceChild("bone31", + CubeListBuilder.create().texOffs(101, 150).addBox(-9.9912F, -18.9825F, -51.4031F, 20.0F, 9.0F, 28.0F, new CubeDeformation(0.0F)).texOffs(540, 741).addBox(18.0088F, -9.9825F, -127.4031F, 2.0F, 1.0F, 45.0F, new CubeDeformation(0.0F)) + .texOffs(0, 150).addBox(18.0088F, -9.9825F, -82.4031F, 2.0F, 1.0F, 38.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-16.9912F, 13.0175F, -153.4031F, 34.0F, 0.0F, 213.0F, new CubeDeformation(0.0F)).texOffs(455, 478) + .addBox(20.0088F, -11.9825F, -41.4031F, 2.0F, 3.0F, 115.0F, new CubeDeformation(0.0F)).texOffs(594, 0).addBox(20.0088F, -11.9825F, -123.4031F, 2.0F, 3.0F, 82.0F, new CubeDeformation(0.0F)).texOffs(0, 114) + .addBox(21.0088F, -16.9825F, -123.4031F, 0.0F, 5.0F, 82.0F, new CubeDeformation(0.0F)).texOffs(0, 200).addBox(21.0088F, -16.9825F, -41.4031F, 0.0F, 5.0F, 115.0F, new CubeDeformation(0.0F)).texOffs(0, 114).mirror() + .addBox(-20.9912F, -16.9825F, -123.4031F, 0.0F, 5.0F, 82.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 200).mirror().addBox(-20.9912F, -16.9825F, -41.4031F, 0.0F, 5.0F, 115.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 72).addBox(-1.8912F, 6.6175F, 60.4469F, 4.0F, 4.0F, 21.0F, new CubeDeformation(0.0F)).texOffs(229, 217).addBox(-1.9912F, 19.0175F, -44.6531F, 4.0F, 4.0F, 103.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-1.9912F, 19.0175F, -137.6531F, 4.0F, 4.0F, 93.0F, new CubeDeformation(0.0F)).texOffs(606, 475).addBox(-0.9912F, -8.9825F, -47.4031F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(240, 605) + .addBox(-0.9912F, -8.9825F, -91.4031F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 39).addBox(-18.9912F, -8.9825F, -91.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 254) + .addBox(1.0088F, -8.9825F, -91.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(478, 302).addBox(1.0088F, -8.9825F, -47.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(484, 296) + .addBox(-18.9912F, -8.9825F, -47.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(452, 82).addBox(1.0088F, -8.9825F, -3.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(452, 170) + .addBox(-18.9912F, -8.9825F, -3.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(412, 170).addBox(1.0088F, -8.9825F, 42.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(357, 209) + .addBox(1.0088F, -8.9825F, 71.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(272, 328).addBox(1.0088F, -8.9825F, 56.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(352, 328) + .addBox(-18.9912F, -8.9825F, 71.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(312, 328).addBox(-18.9912F, -8.9825F, 56.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 125) + .addBox(1.0088F, 8.0175F, 71.5969F, 14.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(319, 210).addBox(-18.9912F, -8.9825F, 61.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(232, 328) + .addBox(1.0088F, -8.9825F, 61.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(438, 302).addBox(-18.9912F, -8.9825F, 42.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 175) + .addBox(1.0088F, -8.9825F, -142.4031F, 11.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(309, 61).addBox(-11.9912F, -8.9825F, -142.4031F, 11.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(402, 499) + .addBox(18.5088F, -7.9825F, -91.4031F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(394, 499).addBox(18.5088F, -7.9825F, -46.4031F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 0) + .addBox(18.5088F, -7.9825F, -3.4031F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(493, 215).addBox(18.5088F, -7.9825F, 42.5969F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(486, 475) + .addBox(-20.4912F, -7.9825F, -91.4031F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(344, 487).addBox(-20.4912F, -7.9825F, -3.4031F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(492, 259) + .addBox(-20.4912F, -7.9825F, 42.5969F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(328, 72).addBox(-20.4912F, -7.9825F, 56.5969F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(372, 44) + .addBox(18.5088F, -7.9825F, 56.5969F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(340, 288).addBox(18.5088F, -8.2825F, 71.5969F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(205, 0) + .addBox(-20.4912F, -8.2825F, 71.5969F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 80).addBox(-14.9912F, 8.0175F, 71.5969F, 14.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(339, 103) + .addBox(-14.9912F, 9.0175F, 56.5969F, 14.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(101, 12).addBox(1.0088F, 9.0175F, 56.5969F, 14.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(373, 72) + .addBox(1.0088F, -7.9825F, 56.5969F, 14.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(340, 268).addBox(15.0088F, -7.9825F, 56.5969F, 4.0F, 14.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(339, 103) + .addBox(-18.9912F, -7.9825F, 56.5969F, 4.0F, 14.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(339, 72).addBox(-14.9912F, -7.9825F, 56.5969F, 14.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(232, 605) + .addBox(-0.9912F, -8.9825F, -142.4031F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(392, 328).addBox(-18.9912F, -8.9825F, -123.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(412, 82) + .addBox(1.0088F, -8.9825F, -123.4031F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(204, 605).addBox(-0.9912F, -8.9825F, -123.4031F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(216, 605) + .addBox(-0.9912F, -8.9825F, -3.4031F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(224, 605).addBox(-0.9912F, -8.9825F, 42.5969F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(281, 125) + .addBox(-18.9912F, -8.9825F, 36.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(281, 209).addBox(1.0088F, -8.9825F, 36.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(552, 596) + .addBox(-0.9912F, -8.9825F, 36.5969F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 187).addBox(-18.9912F, -8.9825F, 2.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(660, 515) + .addBox(-11.9912F, -8.9825F, 4.5969F, 2.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(627, 216).addBox(10.0088F, -8.9825F, 4.5969F, 2.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-9.9912F, -8.9825F, 4.5969F, 20.0F, 0.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(141, 187).addBox(1.0088F, -8.9825F, 2.5969F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(325, 97) + .addBox(-0.9912F, -8.9825F, 2.5969F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(598, 518).addBox(-0.9912F, -7.9825F, 56.5969F, 2.0F, 28.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 43) + .addBox(-0.9912F, -7.9825F, 61.5969F, 2.0F, 16.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 88).addBox(-0.9912F, -7.9825F, 71.5969F, 2.0F, 16.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 0) + .addBox(-0.9912F, -8.9825F, -89.4031F, 2.0F, 1.0F, 42.0F, new CubeDeformation(0.0F)).texOffs(339, 72).addBox(-0.9912F, -8.9825F, -121.4031F, 2.0F, 1.0F, 30.0F, new CubeDeformation(0.0F)).texOffs(180, 570) + .addBox(-0.9912F, -8.9825F, -157.4031F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(438, 282).addBox(-0.9912F, -8.9825F, -140.4031F, 2.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(460, 614) + .addBox(18.4528F, -8.9825F, -123.9654F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(42, 611).addBox(-20.4353F, -8.9825F, -123.9654F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(438, 215) + .addBox(-0.9912F, -8.9825F, 44.5969F, 2.0F, 1.0F, 43.0F, new CubeDeformation(0.0F)).texOffs(513, 502).addBox(-0.9912F, -8.9825F, -1.4031F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(507, 267) + .addBox(-0.9912F, -8.9825F, 38.5969F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(154, 475).addBox(-20.4537F, -8.9825F, -103.9656F, 2.0F, 1.0F, 178.0F, new CubeDeformation(0.0F)).texOffs(0, 15) + .addBox(16.4713F, -10.9825F, -123.9656F, 4.0F, 1.0F, 198.0F, new CubeDeformation(0.0F)).texOffs(412, 0).addBox(18.4713F, -8.9825F, -103.9656F, 2.0F, 1.0F, 178.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0088F, 9.9825F, 57.4031F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r1 = bone31.addOrReplaceChild("cube_r1", + CubeListBuilder.create().texOffs(281, 72).addBox(-2.0F, -0.5F, -0.5F, 2.0F, 14.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(359, 523).addBox(-4.0F, -2.5F, 0.0F, 4.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.4713F, -8.4825F, 74.0344F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r2 = bone31.addOrReplaceChild("cube_r2", + CubeListBuilder.create().texOffs(101, 150).addBox(-2.0138F, -0.5F, -0.0185F, 2.0F, 14.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(0, 175).addBox(-4.0138F, -2.5F, -0.0185F, 4.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.0838F, -8.4825F, 80.6344F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r3 = bone31.addOrReplaceChild("cube_r3", + CubeListBuilder.create().texOffs(0, 0).addBox(-1.998F, -0.5F, -0.004F, 2.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(306, 310).addBox(-3.998F, -2.5F, -0.004F, 4.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.3588F, -8.4825F, 87.3094F, 0.0F, -1.3526F, 0.0F)); + PartDefinition cube_r4 = bone31.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(574, 505).addBox(-0.002F, -2.5F, -0.004F, 4.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(281, 16).addBox(-0.002F, -0.5F, -0.004F, 2.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.3412F, -8.4825F, 87.3094F, 0.0F, 1.3526F, 0.0F)); + PartDefinition cube_r5 = bone31.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(218, 585).addBox(0.0138F, -2.5F, -0.0185F, 4.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(169, 144).addBox(0.0138F, -0.5F, -0.0185F, 2.0F, 14.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-18.0662F, -8.4825F, 80.6344F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r6 = bone31.addOrReplaceChild("cube_r6", + CubeListBuilder.create().texOffs(417, 523).addBox(0.0F, -2.5F, 0.0F, 4.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(310, 72).addBox(0.0F, -0.5F, 0.0F, 2.0F, 14.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.4537F, -8.4825F, 74.0344F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r7 = bone31.addOrReplaceChild("cube_r7", + CubeListBuilder.create().texOffs(42, 165).addBox(-4.1101F, -2.5F, 0.0096F, 4.0F, 2.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(336, 616).addBox(-2.1101F, -0.5F, 0.0096F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.7088F, -8.4825F, -142.8031F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r8 = bone31.addOrReplaceChild("cube_r8", + CubeListBuilder.create().texOffs(281, 48).addBox(0.1101F, -2.5F, 0.0096F, 4.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(402, 616).addBox(0.1101F, -0.5F, 0.0096F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.6912F, -8.4825F, -142.8031F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r9 = bone31.addOrReplaceChild("cube_r9", + CubeListBuilder.create().texOffs(438, 238).addBox(-1.0F, -2.5F, 3.0F, 4.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).texOffs(72, 657).addBox(-1.0F, -0.5F, 0.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -8.4825F, -157.4031F, 0.0F, -0.6981F, 0.0F)); + PartDefinition cube_r10 = bone31.addOrReplaceChild("cube_r10", + CubeListBuilder.create().texOffs(344, 44).addBox(-3.0F, -2.5F, 0.0F, 4.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(130, 657).addBox(-1.0F, -0.5F, 0.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -8.4825F, -157.4031F, 0.0F, 0.6981F, 0.0F)); + PartDefinition cube_r11 = bone31.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(164, 191).addBox(-3.9015F, -1.0734F, 0.0F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6289F, 8.2823F, 73.5969F, 0.829F, 0.0F, 0.6109F)); + PartDefinition cube_r12 = bone31 + .addOrReplaceChild( + "cube_r12", CubeListBuilder.create().texOffs(293, 21).addBox(-3.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(359, 296) + .addBox(-2.6515F, -1.0734F, 0.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(594, 69).addBox(-0.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6289F, 8.2823F, 73.5969F, 0.3927F, 0.0F, 0.6109F)); + PartDefinition cube_r13 = bone31.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(589, 505).addBox(1.0985F, -1.0734F, -0.6F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-17.6289F, 8.2823F, 73.5969F, 0.4013F, -0.2013F, 0.5262F)); + PartDefinition cube_r14 = bone31.addOrReplaceChild("cube_r14", + CubeListBuilder.create().texOffs(336, 637).addBox(-7.0F, -4.0F, 0.0F, 14.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(662, 331).addBox(9.0F, -4.0F, 0.0F, 14.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.9912F, 10.0175F, 73.5969F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r15 = bone31.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(594, 111).addBox(-3.0985F, -1.0734F, -0.6F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(17.6464F, 8.2823F, 73.5969F, 0.4013F, 0.2013F, -0.5262F)); + PartDefinition cube_r16 = bone31.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(309, 52).addBox(1.9015F, -1.0748F, 0.0F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(386, 64) + .addBox(0.6515F, -1.0734F, 0.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(594, 148).addBox(-1.0985F, -1.0748F, 0.0F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(17.6464F, 8.2823F, 73.5969F, 0.3927F, 0.0F, -0.6109F)); + PartDefinition cube_r17 = bone31.addOrReplaceChild("cube_r17", + CubeListBuilder.create().texOffs(325, 183).addBox(-5.0F, -3.9F, -8.5F, 5.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(460, 596).addBox(-7.0F, -0.9F, -8.5F, 7.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.9912F, 9.9175F, 65.0969F, 0.0F, 0.0F, 0.6109F)); + PartDefinition cube_r18 = bone31.addOrReplaceChild("cube_r18", + CubeListBuilder.create().texOffs(402, 491).addBox(0.0F, -3.9F, -8.5F, 5.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(380, 286).addBox(0.0F, -0.9F, -8.5F, 7.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(15.0088F, 9.9175F, 65.0969F, 0.0F, 0.0F, -0.6109F)); + PartDefinition cube_r19 = bone31.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(309, 64).addBox(-7.0F, -1.0F, -1.0F, 7.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.9912F, 9.0175F, 72.5969F, 0.0F, 0.0F, 0.6632F)); + PartDefinition cube_r20 = bone31.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(336, 487).addBox(-1.0F, -17.5F, -1.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-19.4912F, 9.5175F, -45.4031F, 0.0F, 0.0F, -0.48F)); + PartDefinition cube_r21 = bone31.addOrReplaceChild("cube_r21", + CubeListBuilder.create().texOffs(438, 282).addBox(6.3657F, -7.0694F, -20.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(323, 16).addBox(-0.0593F, -9.8194F, -1.0F, 2.0F, 10.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.4912F, 17.2675F, -122.4031F, 0.0F, 0.0F, -0.5061F)); + PartDefinition cube_r22 = bone31.addOrReplaceChild("cube_r22", + CubeListBuilder.create().texOffs(380, 44).addBox(7.0F, 0.0F, -20.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 215).addBox(0.0F, 0.0F, -1.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.4912F, -7.9825F, -122.4031F, 0.0F, 0.0F, -0.1309F)); + PartDefinition cube_r23 = bone31.addOrReplaceChild("cube_r23", + CubeListBuilder.create().texOffs(19, 175).addBox(1.3937F, 8.436F, -20.0F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(485, 238).addBox(-0.0063F, -0.064F, -1.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 23) + .addBox(-0.0063F, -0.064F, 31.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(384, 487).addBox(-0.0063F, -0.064F, 76.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(376, 487) + .addBox(-0.0063F, -0.064F, 119.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(397, 268).addBox(-0.0063F, -0.064F, 179.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(359, 487) + .addBox(-0.0063F, -0.064F, 165.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.3912F, 17.43F, -122.4031F, 0.0F, 0.0F, -1.1781F)); + PartDefinition cube_r24 = bone31.addOrReplaceChild("cube_r24", + CubeListBuilder.create().texOffs(478, 475).addBox(-9.0F, 0.0F, -20.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(484, 259).addBox(-2.0F, 0.0F, -1.0F, 2.0F, 17.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.5088F, -7.9825F, -122.4031F, 0.0F, 0.0F, 0.1309F)); + PartDefinition cube_r25 = bone31.addOrReplaceChild("cube_r25", + CubeListBuilder.create().texOffs(446, 282).addBox(-8.3657F, -7.0694F, -20.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(309, 16).addBox(-1.9407F, -9.8194F, -1.0F, 2.0F, 10.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.5088F, 17.2675F, -122.4031F, 0.0F, 0.0F, 0.5061F)); + PartDefinition cube_r26 = bone31.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(29, 175).addBox(-3.3937F, 8.436F, -20.0F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(455, 39).addBox(-1.9937F, -0.064F, -1.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(380, 268) + .addBox(-1.9937F, -0.064F, 179.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 64).addBox(-1.9937F, -0.064F, 165.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 109) + .addBox(-1.9937F, -0.064F, 119.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 129).addBox(-1.9937F, -0.064F, 76.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(499, 150) + .addBox(-1.9937F, -0.064F, 31.0F, 2.0F, 13.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.4088F, 17.43F, -122.4031F, 0.0F, 0.0F, 1.1781F)); + PartDefinition cube_r27 = bone31.addOrReplaceChild("cube_r27", + CubeListBuilder.create().texOffs(478, 499).addBox(0.0F, 0.0F, -1.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(463, 499).addBox(0.0F, 0.0F, 44.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(455, 499) + .addBox(0.0F, 0.0F, 87.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(417, 499).addBox(0.0F, 0.0F, 147.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(425, 499) + .addBox(0.0F, 0.0F, 133.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.4912F, 9.0175F, -90.4031F, 0.0F, 0.0F, -0.6981F)); + PartDefinition cube_r28 = bone31.addOrReplaceChild("cube_r28", + CubeListBuilder.create().texOffs(0, 150).addBox(-2.0F, 0.0F, 13.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(380, 505).addBox(-2.0F, 0.0F, -47.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(507, 0) + .addBox(-2.0F, 0.0F, -90.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(507, 43).addBox(-2.0F, 0.0F, -135.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(486, 499) + .addBox(-2.0F, 0.0F, -1.0F, 2.0F, 11.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(20.5088F, 9.0175F, 43.5969F, 0.0F, 0.0F, 0.6981F)); + PartDefinition cube_r29 = bone31.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(202, 320).addBox(0.0F, -1.0F, -1.0F, 7.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(15.0088F, 9.0175F, 72.5969F, 0.0F, 0.0F, -0.6632F)); + PartDefinition cube_r30 = bone31.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(94, 613).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 23.0175F, 58.3469F, 0.7854F, 0.0F, 0.0F)); + PartDefinition cube_r31 = bone31.addOrReplaceChild("cube_r31", + CubeListBuilder.create().texOffs(42, 150).addBox(-2.5F, -37.0547F, 2.2571F, 4.0F, 31.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(173, 12).addBox(-3.0F, -63.0547F, 6.2571F, 5.0F, 68.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -4.4825F, -153.9031F, 1.2217F, 0.0F, 0.0F)); + PartDefinition cube_r32 = bone31.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(281, 48).addBox(-3.0F, -14.0547F, -3.7429F, 5.0F, 14.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -4.4825F, -153.9031F, 0.6109F, 0.0F, 0.0F)); + PartDefinition cube_r33 = bone31.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(344, 44).addBox(-3.0F, -13.9808F, -3.9951F, 5.0F, 14.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 8.5175F, -148.9031F, 0.3491F, 0.0F, 0.0F)); + PartDefinition cube_r34 = bone31.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(455, 475).addBox(-3.0F, -0.0373F, -0.0778F, 5.0F, 7.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 21.0175F, -144.4031F, 1.2828F, 0.0F, 0.0F)); + PartDefinition cube_r35 = bone31.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(412, 16).addBox(-3.0F, -0.8412F, -0.5419F, 5.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 17.0175F, -150.4031F, 1.0472F, 0.0F, 0.0F)); + PartDefinition cube_r36 = bone31.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(424, 307).addBox(-3.0F, -14.0F, 0.0F, 5.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 23.0175F, -150.4031F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r37 = bone31.addOrReplaceChild("cube_r37", + CubeListBuilder.create().texOffs(193, 51).addBox(-1.0F, 1.5F, 7.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(86, 146).addBox(-1.0F, 1.5F, 0.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(182, 654) + .addBox(-22.0F, 12.5F, 0.0F, 22.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(463, 238).addBox(-1.0F, -1.5F, 0.0F, 1.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(21.0088F, -7.4825F, 73.5969F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r38 = bone31.addOrReplaceChild("cube_r38", + CubeListBuilder.create().texOffs(19, 175).addBox(0.0F, -1.5F, 0.0F, 1.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(8, 150).addBox(0.0F, 1.5F, 0.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(58, 164) + .addBox(0.0F, 1.5F, 7.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(460, 635).addBox(0.0F, 12.5F, 0.0F, 19.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.9912F, -7.4825F, 73.5969F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r39 = bone31.addOrReplaceChild("cube_r39", + CubeListBuilder.create().texOffs(566, 66).addBox(0.028F, -1.5F, 0.0289F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(86, 102).addBox(0.028F, 1.5F, 5.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(34, 163) + .addBox(0.028F, 1.5F, 0.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(86, 168).addBox(0.028F, 1.5F, 10.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(336, 511) + .addBox(0.028F, 12.5F, 0.0289F, 16.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-18.2912F, -7.4825F, 81.0969F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r40 = bone31.addOrReplaceChild("cube_r40", + CubeListBuilder.create().texOffs(504, 238).addBox(-1.028F, -1.5F, 0.0289F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)).texOffs(89, 113).addBox(-1.028F, 1.5F, 5.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(193, 27) + .addBox(-1.028F, 1.5F, 10.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(193, 39).addBox(-1.028F, 1.5F, 0.0289F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(336, 475) + .addBox(-17.028F, 12.5F, 0.0289F, 17.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.3088F, -7.4825F, 81.0969F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r41 = bone31.addOrReplaceChild("cube_r41", + CubeListBuilder.create().texOffs(474, 39).addBox(-1.0657F, -1.5F, -0.0922F, 1.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(193, 15).addBox(-1.0657F, 1.5F, -0.0922F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(662, 345).addBox(-14.0657F, 12.5F, -0.0922F, 14.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(86, 124).addBox(-1.0657F, 1.5F, 6.9078F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5088F, -7.4825F, 87.8969F, 0.0F, -1.309F, 0.0F)); + PartDefinition cube_r42 = bone31.addOrReplaceChild("cube_r42", + CubeListBuilder.create().texOffs(89, 157).addBox(0.0657F, 1.5F, -0.0922F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(431, 37).addBox(0.0657F, -1.5F, -0.0922F, 1.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(662, 356) + .addBox(0.0657F, 12.5F, -0.0922F, 14.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(89, 135).addBox(0.0657F, 1.5F, 6.9078F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.4912F, -7.4825F, 87.8969F, 0.0F, 1.309F, 0.0F)); + PartDefinition cube_r43 = bone31.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(169, 169).addBox(-0.75F, -1.5F, 0.0F, 2.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.9912F, 19.0175F, -142.9031F, 0.0F, 0.0F, -0.9599F)); + PartDefinition cube_r44 = bone31.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(206, 15).addBox(-1.4912F, -8.2855F, -0.25F, 2.0F, 8.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.2854F, 18.7232F, -142.4031F, -0.05F, 0.0406F, 0.4878F)); + PartDefinition cube_r45 = bone31.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(164, 191).addBox(-1.25F, -1.5F, 0.0F, 2.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0088F, 19.0175F, -142.9031F, 0.0F, 0.0F, 0.9599F)); + PartDefinition cube_r46 = bone31.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(134, 613).addBox(-2.0F, -0.7351F, 1.3248F, 4.0F, 4.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 7.5175F, 86.0969F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r47 = bone31.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(309, 48).addBox(-2.0F, -4.4F, 1.0F, 4.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, 11.5175F, 80.8469F, 0.5236F, 0.0F, 0.0F)); + PartDefinition cube_r48 = bone31.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(402, 593).addBox(0.0F, -1.5F, -20.0F, 2.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-21.9912F, -10.4825F, -123.4031F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r49 = bone31.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(574, 475).addBox(-1.0F, -1.5F, -81.0F, 2.0F, 3.0F, 82.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.9912F, -10.4825F, 72.5969F, 0.0F, 0.0087F, 0.0F)); + PartDefinition cube_r50 = bone31.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(72, 78).mirror().addBox(1.0708F, -6.5F, -0.0366F, 0.0F, 5.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(591, 608).addBox(0.0708F, + -1.5F, -0.0366F, 2.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-9.3412F, -10.4825F, 88.3969F, 0.0F, 1.2217F, 0.0F)); + PartDefinition cube_r51 = bone31.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 15).mirror().addBox(0.8642F, -6.5F, 0.0964F, 0.0F, 5.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(255, 585).addBox(-0.1358F, + -1.5F, 0.0964F, 2.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-18.8412F, -10.4825F, 80.8469F, 0.0F, 0.9163F, 0.0F)); + PartDefinition cube_r52 = bone31.addOrReplaceChild("cube_r52", + CubeListBuilder.create().texOffs(21, 147).mirror().addBox(1.0F, -6.5F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(438, 215).addBox(0.0F, -1.5F, 0.0F, 2.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-21.9912F, -10.4825F, 73.5969F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r53 = bone31.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(336, 475).addBox(-1.0F, -1.5F, -8.5F, 2.0F, 3.0F, 115.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-20.9912F, -10.4825F, -114.9031F, 0.0105F, -0.0507F, -0.0004F)); + PartDefinition cube_r54 = bone31.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(560, 608).addBox(-2.0708F, -1.5F, -0.0366F, 2.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(72, 78).addBox(-1.0708F, -6.5F, -0.0366F, 0.0F, 5.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.3588F, -10.4825F, 88.3969F, 0.0F, -1.2217F, 0.0F)); + PartDefinition cube_r55 = bone31.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(0, 15).addBox(-0.8642F, -6.5F, 0.0964F, 0.0F, 5.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(295, 585).addBox(-1.8642F, -1.5F, 0.0964F, 2.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(18.8588F, -10.4825F, 80.8469F, 0.0F, -0.9163F, 0.0F)); + PartDefinition cube_r56 = bone31.addOrReplaceChild("cube_r56", + CubeListBuilder.create().texOffs(21, 147).addBox(-1.0F, -6.5F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)).texOffs(438, 259).addBox(-2.0F, -1.5F, 0.0F, 2.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(22.0088F, -10.4825F, 73.5969F, 0.0F, -0.3927F, 0.0F)); + PartDefinition cube_r57 = bone31.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(86, 78).addBox(-0.5088F, -8.2855F, -0.25F, 2.0F, 8.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.2679F, 18.7232F, -142.4031F, -0.05F, -0.0406F, -0.4878F)); + PartDefinition algar11 = bone31.addOrReplaceChild("algar11", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.9912F, 28.0175F, -81.4031F, 0.0F, -1.1781F, 0.0F)); + PartDefinition cube_r58 = algar11.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar10 = bone31.addOrReplaceChild("algar10", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0088F, 27.0175F, 7.5969F, 0.0F, -0.1309F, 0.0F)); + PartDefinition cube_r59 = algar10.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar8 = bone31.addOrReplaceChild("algar8", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.9912F, 26.0175F, 53.5969F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r60 = algar8.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar9 = bone31.addOrReplaceChild("algar9", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0088F, 26.0175F, 53.5969F, 0.0F, -0.1309F, 0.0F)); + PartDefinition cube_r61 = algar9.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar7 = bone31.addOrReplaceChild("algar7", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.9912F, 26.0175F, -10.4031F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r62 = algar7.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar6 = bone31.addOrReplaceChild("algar6", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0088F, 28.0175F, -128.4031F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r63 = algar6.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar5 = bone31.addOrReplaceChild("algar5", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.9912F, 24.0175F, -134.4031F)); + PartDefinition cube_r64 = algar5.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar4 = bone31.addOrReplaceChild("algar4", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.9912F, 28.0175F, 35.5969F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r65 = algar4.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar3 = bone31.addOrReplaceChild("algar3", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0088F, 28.0175F, -97.4031F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r66 = algar3.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar = bone31.addOrReplaceChild("algar", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.9912F, 28.0175F, -53.4031F)); + PartDefinition cube_r67 = algar.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition algar2 = bone31.addOrReplaceChild("algar2", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0088F, 25.0175F, -26.4031F, 0.0F, 1.1345F, 0.0F)); + PartDefinition cube_r68 = algar2.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(1004, 996).addBox(0.0F, -9.0F, -5.0F, 0.0F, 18.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition valuablecargo2 = bone31.addOrReplaceChild("valuablecargo2", CubeListBuilder.create(), PartPose.offset(0.0088F, 15.0175F, 79.5969F)); + PartDefinition goldbarrel3 = valuablecargo2.addOrReplaceChild("goldbarrel3", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.9005F, -6.4833F, -75.2432F, 0.0F, -0.48F, 0.0F)); + PartDefinition greenbarrel3 = valuablecargo2.addOrReplaceChild("greenbarrel3", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(-1.4005F, -6.4833F, -82.2432F)); + PartDefinition redbarrel19 = valuablecargo2.addOrReplaceChild("redbarrel19", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.9005F, -6.4833F, -72.2432F, 0.0F, 0.3054F, 0.0F)); + PartDefinition treasurechest4 = valuablecargo2.addOrReplaceChild("treasurechest4", CubeListBuilder.create(), PartPose.offsetAndRotation(-11.0F, -2.0F, -62.5F, 0.0F, 0.6981F, 0.0F)); + PartDefinition chestlid6 = treasurechest4.addOrReplaceChild("chestlid6", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, 35.5375F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r69 = chestlid6.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, -8.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 4.1548F, 0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r70 = chestlid6.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, -31.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -0.8452F, -0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r71 = chestlid6.addOrReplaceChild("cube_r71", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, 1.6548F, -2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r72 = chestlid6.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -0.3117F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, 4.1548F, -1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r73 = chestlid6.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, -14.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -0.8452F, -1.5708F, 0.0F, 0.0F)); + PartDefinition chest6 = treasurechest4.addOrReplaceChild("chest6", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, -50.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, 48.5F)); + PartDefinition closedchest3 = valuablecargo2.addOrReplaceChild("closedchest3", CubeListBuilder.create(), PartPose.offsetAndRotation(11.0F, -2.0F, -75.5F, 0.0F, -0.48F, 0.0F)); + PartDefinition chestlid7 = closedchest3.addOrReplaceChild("chestlid7", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, -2.3387F, 0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r74 = chestlid7.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, -8.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 40.5969F, 0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r75 = chestlid7.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, -31.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 35.5969F, -0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r76 = chestlid7.addOrReplaceChild("cube_r76", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, 15.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, 38.0969F, -2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r77 = chestlid7.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -0.0603F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, 4.6678F, -1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r78 = chestlid7.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, -14.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, 35.5969F, -1.5708F, 0.0F, 0.0F)); + PartDefinition chest7 = closedchest3.addOrReplaceChild("chest7", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, -50.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, 48.5F)); + PartDefinition cargo2 = bone31.addOrReplaceChild("cargo2", CubeListBuilder.create().texOffs(972, 6).addBox(-19.5F, -6.5F, -13.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offset(3.5088F, 6.5175F, 48.0969F)); + PartDefinition cube_r79 = cargo2.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(972, 6).addBox(-6.5F, -6.5F, -6.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.48F, 0.0F)); + PartDefinition redbarrel14 = cargo2.addOrReplaceChild("redbarrel14", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, -27.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel18 = cargo2.addOrReplaceChild("redbarrel18", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4005F, 2.0167F, -27.7432F, 0.0F, 1.9199F, 0.0F)); + PartDefinition redbarrel17 = cargo2.addOrReplaceChild("redbarrel17", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, -27.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel15 = cargo2.addOrReplaceChild("redbarrel15", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, 2.0167F, -11.7432F, 0.0F, -1.2217F, 0.0F)); + PartDefinition redbarrel16 = cargo2.addOrReplaceChild("redbarrel16", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, -4.9833F, -11.7432F, 0.0F, 2.3126F, 0.0F)); + PartDefinition cargo = bone31.addOrReplaceChild("cargo", CubeListBuilder.create(), PartPose.offset(3.5088F, 6.5175F, -76.9031F)); + PartDefinition cube_r80 = cargo.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(972, 6).addBox(-6.5F, -6.5F, -6.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.48F, 0.0F)); + PartDefinition cube_r81 = cargo.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(972, 6).addBox(-6.5F, -6.5F, -6.5F, 13.0F, 13.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.0F, 0.0F, 7.0F, 0.0F, 0.0F, -0.7854F)); + PartDefinition redbarrel13 = cargo.addOrReplaceChild("redbarrel13", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.5995F, 2.0167F, 27.7432F, 0.0F, -1.2217F, 0.0F)); + PartDefinition redbarrel11 = cargo.addOrReplaceChild("redbarrel11", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.5995F, 2.0167F, 11.7432F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel12 = cargo.addOrReplaceChild("redbarrel12", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.4005F, -9.9833F, 11.7432F, 2.3998F, -0.829F, 3.1416F)); + PartDefinition redbarrel10 = bone31.addOrReplaceChild("redbarrel10", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.1083F, -14.4658F, -132.16F, 0.0F, 1.2217F, 0.0F)); + PartDefinition redbarrel9 = bone31.addOrReplaceChild("redbarrel9", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169) + .addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85).addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995) + .addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002).addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014) + .addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.1083F, -14.4658F, -124.16F, 1.3198F, -1.1712F, -2.4137F)); + PartDefinition redbarrel8 = bone31.addOrReplaceChild("redbarrel8", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169) + .addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85).addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995) + .addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002).addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014) + .addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1083F, -19.4658F, -137.16F, -1.4663F, -0.3864F, 0.4564F)); + PartDefinition redbarrel7 = bone31.addOrReplaceChild("redbarrel7", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.8917F, -14.4658F, -125.16F, 0.0F, 2.0944F, 0.0F)); + PartDefinition redbarrel6 = bone31.addOrReplaceChild("redbarrel6", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.8917F, -14.4658F, -132.16F, 0.0F, 1.4835F, 0.0F)); + PartDefinition redbarrel5 = bone31.addOrReplaceChild("redbarrel5", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.1083F, -14.4658F, -132.16F, 0.0F, 1.6581F, 0.0F)); + PartDefinition redbarrel4 = bone31.addOrReplaceChild("redbarrel4", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.1083F, -14.4658F, -140.16F, 0.0F, 0.48F, 0.0F)); + PartDefinition redbarrel3 = bone31.addOrReplaceChild("redbarrel3", + CubeListBuilder.create().texOffs(163, 1010).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.8917F, -14.4658F, -140.16F, 0.0F, -0.3054F, 0.0F)); + PartDefinition valuablecargo = bone31.addOrReplaceChild("valuablecargo", CubeListBuilder.create(), PartPose.offset(-11.8917F, -14.4658F, 71.84F)); + PartDefinition goldbarrel2 = valuablecargo.addOrReplaceChild("goldbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.48F, 0.0F)); + PartDefinition greenbarrel2 = valuablecargo.addOrReplaceChild("greenbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(10.5F, 0.0F, 7.0F)); + PartDefinition redbarrel2 = valuablecargo.addOrReplaceChild("redbarrel2", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.0F, 0.0F, -3.0F, 0.0F, -0.3054F, 0.0F)); + PartDefinition treasurechest3 = valuablecargo.addOrReplaceChild("treasurechest3", CubeListBuilder.create(), PartPose.offsetAndRotation(0.9005F, 4.4833F, -12.7432F, 0.0F, -0.6981F, 0.0F)); + PartDefinition chestlid5 = treasurechest3.addOrReplaceChild("chestlid5", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r82 = chestlid5.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r83 = chestlid5.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r84 = chestlid5.addOrReplaceChild("cube_r84", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r85 = chestlid5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r86 = chestlid5.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest5 = treasurechest3.addOrReplaceChild("chest5", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition closedchest2 = valuablecargo.addOrReplaceChild("closedchest2", CubeListBuilder.create(), PartPose.offsetAndRotation(22.9005F, 4.4833F, 0.2568F, 0.0F, 0.48F, 0.0F)); + PartDefinition chestlid3 = closedchest2.addOrReplaceChild("chestlid3", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, 2.3387F, -0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r87 = chestlid3.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -40.5969F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r88 = chestlid3.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r89 = chestlid3.addOrReplaceChild("cube_r89", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, -38.0969F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r90 = chestlid3.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -1.9397F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, -4.6678F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r91 = chestlid3.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest3 = closedchest2.addOrReplaceChild("chest3", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition closedchest = bone31.addOrReplaceChild("closedchest", CubeListBuilder.create(), PartPose.offset(-1.9912F, -10.9825F, 44.0969F)); + PartDefinition chestlid2 = closedchest.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(0.1736F, -3.9964F, 2.3387F, -0.0436F, 0.0F, 0.0F)); + PartDefinition cube_r92 = chestlid2.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -40.5969F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r93 = chestlid2.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r94 = chestlid2.addOrReplaceChild("cube_r94", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1636F, 12.035F, -38.0969F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r95 = chestlid2.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(50, 1016).addBox(-4.0F, -0.342F, -1.9397F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0083F, 0.1903F, -4.6678F, 1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r96 = chestlid2.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.1736F, 13.535F, -35.5969F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = closedchest.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition redbarrel = bone31.addOrReplaceChild("redbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1014).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(-7.8917F, -15.4658F, -99.16F)); + PartDefinition greenbarrel = bone31.addOrReplaceChild("greenbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(124, 995).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1002) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(124, 1008).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.3917F, -15.4658F, -116.16F, 0.0F, -0.2182F, 0.0F)); + PartDefinition lifeboat3 = bone31.addOrReplaceChild("lifeboat3", CubeListBuilder.create().texOffs(336, 523).mirror().addBox(-7.0F, -9.2625F, 31.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(455, 486).mirror() + .addBox(-4.2625F, -10.175F, 30.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(78, 187).mirror().addBox(-0.7375F, -10.1125F, 30.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(181, 187) + .mirror().addBox(-5.775F, -7.225F, 31.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(101, 91).mirror().addBox(-2.1125F, -8.75F, 31.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(21, 160).mirror().addBox(-2.1125F, -6.35F, 31.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(354, 96).mirror().addBox(-3.0F, -6.0F, 31.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(22.5088F, -15.9825F, 6.5969F)); + PartDefinition cube_r97 = lifeboat3.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(394, 488).mirror().addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(6.5F, -9.0F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r98 = lifeboat3.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(417, 488).mirror().addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-6.5F, -9.0F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r99 = lifeboat3.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(112, 12).mirror().addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r100 = lifeboat3.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(206, 48).mirror().addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2875F, -7.8875F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r101 = lifeboat3.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(206, 24).mirror().addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(3.0F, -3.0F, 31.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r102 = lifeboat3.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(373, 90).mirror().addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(5.0F, -3.525F, 31.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r103 = lifeboat3.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(206, 28).mirror().addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.0F, -3.0F, 31.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r104 = lifeboat3.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(373, 94).mirror().addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-5.0F, -3.525F, 31.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition bone56 = lifeboat3.addOrReplaceChild("bone56", + CubeListBuilder.create().texOffs(574, 518).mirror().addBox(6.5305F, 0.6607F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(255, 570).mirror() + .addBox(8.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(340, 268).mirror().addBox(4.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-7.5305F, -4.4107F, 0.5F)); + PartDefinition cube_r105 = bone56.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(81, 97).mirror().addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.5305F, 0.5875F, -5.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r106 = bone56.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(116, 150).mirror().addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.5305F, 0.5875F, -5.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r107 = bone56.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(116, 155).mirror().addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.5305F, 1.4107F, -5.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r108 = bone56.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(548, 520).mirror().addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r109 = bone56.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(438, 226).mirror().addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.3234F, -2.8706F, -12.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r110 = bone56.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(384, 176).mirror().addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.9F, -4.0F, -9.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r111 = bone56.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(845, 226).mirror().addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.75F, -4.0F, -5.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r112 = bone56.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(160, 16).mirror().addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8017F, -2.8706F, -6.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r113 = bone56.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(292, 72).mirror().addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.75F, -4.0F, -5.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r114 = bone56.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(420, 566).mirror().addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -3.0F, -5.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r115 = bone56.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(217, 320).mirror().addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.9311F, -9.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r116 = bone56.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(185, 191).mirror().addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.2448F, -0.4311F, -5.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r117 = bone56.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(184, 144).mirror().addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(3.2448F, -0.4311F, -9.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r118 = bone56.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(293, 16).mirror().addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.2448F, -0.4311F, -5.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r119 = bone56.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(14, 613).mirror().addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(582, 540).mirror() + .addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r120 = bone56.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(339, 90).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.1311F, 23.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r121 = bone56.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(340, 288).mirror().addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.2448F, -0.1311F, 12.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r122 = bone56.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(484, 614).mirror().addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.7687F, -1.4835F, 13.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r123 = bone56.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(537, 564).mirror().addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8306F, -1.5453F, 1.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r124 = bone56.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(179, 97).mirror().addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(359, 276).mirror() + .addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(4.0065F, 0.3564F, -9.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r125 = bone56.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(325, 178).mirror().addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.694F, 0.6689F, -5.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r126 = bone56.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(594, 43).mirror().addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r127 = bone56.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(455, 39).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r128 = bone56.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(485, 238).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.061F, -3.0F, 21.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r129 = bone56.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(551, 236).mirror().addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.061F, -3.0F, 11.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r130 = bone56.addOrReplaceChild("cube_r130", CubeListBuilder.create().texOffs(438, 270).mirror().addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.7376F, -2.8706F, -12.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r131 = bone56.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(455, 16).mirror().addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.161F, -4.0F, -9.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r132 = bone56.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(845, 266).mirror().addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.811F, -4.0F, -5.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r133 = bone56.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(441, 28).mirror().addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2593F, -2.8706F, -6.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r134 = bone56.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(322, 310).mirror().addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.811F, -4.0F, -5.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r135 = bone56.addOrReplaceChild("cube_r135", CubeListBuilder.create().texOffs(136, 588).mirror().addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(15.561F, -3.0F, -5.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r136 = bone56.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(346, 115).mirror().addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.9311F, -9.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r137 = bone56.addOrReplaceChild("cube_r137", CubeListBuilder.create().texOffs(468, 292).mirror().addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(13.8162F, -0.4311F, -5.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r138 = bone56.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(354, 90).mirror().addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(11.8162F, -0.4311F, -9.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r139 = bone56.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(484, 134).mirror().addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(13.8162F, -0.4311F, -5.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r140 = bone56.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(614, 518).mirror().addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 591).mirror() + .addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(12.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r141 = bone56.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(373, 90).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.1311F, 23.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r142 = bone56.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(499, 23).mirror().addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.8162F, -0.1311F, 12.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r143 = bone56.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(614, 529).mirror().addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2923F, -1.4835F, 13.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r144 = bone56.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(218, 570).mirror().addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(14.2304F, -1.5453F, 1.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r145 = bone56.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(189, 97).mirror().addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(359, 288).mirror() + .addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(11.0545F, 0.3564F, -9.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r146 = bone56.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(485, 52).mirror().addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(12.367F, 0.6689F, -5.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r147 = bone56.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(594, 85).mirror().addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(10.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition bone57 = bone56.addOrReplaceChild("bone57", CubeListBuilder.create(), PartPose.offset(7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r148 = bone57.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(359, 268).mirror().addBox(-1.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(164, 27).mirror() + .addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r149 = bone57.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(160, 21).mirror().addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r150 = bone57.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(16, 591).mirror().addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone58 = lifeboat3.addOrReplaceChild("bone58", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -89.0F)); + PartDefinition bone59 = lifeboat3.addOrReplaceChild("bone59", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -72.0F)); + PartDefinition bone60 = lifeboat3.addOrReplaceChild("bone60", + CubeListBuilder.create().texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror() + .addBox(10.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159) + .mirror().addBox(10.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(281, 159).mirror().addBox(10.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-22.5F, 27.0F, -58.0F)); + PartDefinition bone61 = bone31.addOrReplaceChild("bone61", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.1537F, -7.4825F, -153.2156F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r151 = bone61.addOrReplaceChild("cube_r151", CubeListBuilder.create().texOffs(281, 19).mirror().addBox(8.0707F, -9.5F, -15.5735F, 0.0F, 5.0F, 24.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(281, 16).mirror() + .addBox(7.0707F, -4.5F, -15.5735F, 2.0F, 3.0F, 24.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition bone25 = bone31.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(660, 478).mirror().addBox(-0.5F, 1.5F, -7.5F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(662, 303).mirror() + .addBox(-0.4F, 4.5F, -15.5F, 1.0F, 3.0F, 65.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(678, 832).mirror().addBox(-0.5F, -10.5F, -55.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(833, 524).mirror() + .addBox(-1.0F, -4.5F, -45.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(435, 596).mirror().addBox(-0.8F, -7.5F, -16.5F, 1.0F, 3.0F, 79.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(516, 596).mirror() + .addBox(-0.5F, -10.5F, -10.5F, 1.0F, 3.0F, 73.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(727, 655).mirror().addBox(-0.5F, -4.5F, -0.5F, 1.0F, 3.0F, 63.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(-20.4912F, 1.5175F, 11.0969F)); + PartDefinition cube_r152 = bone25.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(412, 88).mirror().addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 85.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.0087F, 0.0F)); + PartDefinition cube_r153 = bone25.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(532, 215).mirror().addBox(-0.5F, -1.5F, -20.5F, 1.0F, 3.0F, 41.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 6.0F, -81.0F, 0.0F, -0.0087F, 0.0436F)); + PartDefinition bone = bone31.addOrReplaceChild("bone", + CubeListBuilder.create().texOffs(0, 837).addBox(-0.5F, 4.5F, -60.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(660, 478).addBox(-0.5F, 1.5F, -7.5F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(662, 303) + .addBox(-0.6F, 4.5F, -15.5F, 1.0F, 3.0F, 65.0F, new CubeDeformation(0.0F)).texOffs(0, 730).addBox(-0.2125F, -4.5F, -101.5F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(842, 832) + .addBox(-0.2875F, -7.5F, -101.5F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(788, 475).addBox(-0.5F, -10.5F, -101.5F, 1.0F, 3.0F, 46.0F, new CubeDeformation(0.0F)).texOffs(678, 832) + .addBox(-0.5F, -10.5F, -55.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(834, 572).addBox(-0.5F, -1.5F, -67.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(435, 596) + .addBox(-0.2F, -7.5F, -16.5F, 1.0F, 3.0F, 79.0F, new CubeDeformation(0.0F)).texOffs(516, 596).addBox(-0.5F, -10.5F, -10.5F, 1.0F, 3.0F, 73.0F, new CubeDeformation(0.0F)).texOffs(727, 655) + .addBox(-0.5F, -4.5F, -0.5F, 1.0F, 3.0F, 63.0F, new CubeDeformation(0.0F)), + PartPose.offset(20.5088F, 1.5175F, 11.0969F)); + PartDefinition cube_r154 = bone.addOrReplaceChild("cube_r154", CubeListBuilder.create().texOffs(412, 88).addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 85.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0087F, 0.0F)); + PartDefinition cube_r155 = bone.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(836, 465).addBox(-0.5F, -1.5F, -22.5F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.0F, -30.0F, 0.0F, -0.0087F, 0.0436F)); + PartDefinition bone16 = bone31.addOrReplaceChild("bone16", CubeListBuilder.create().texOffs(772, 880).mirror().addBox(-0.5F, -19.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(674, 880).mirror() + .addBox(-0.5F, -16.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-20.4912F, 10.5175F, -101.4031F)); + PartDefinition cube_r156 = bone16.addOrReplaceChild("cube_r156", CubeListBuilder.create().texOffs(514, 534).mirror().addBox(0.058F, -1.4265F, -21.0341F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.8756F, -3.0F, -21.9591F, 0.0062F, -0.3923F, -0.1331F)); + PartDefinition cube_r157 = bone16.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(136, 570).mirror().addBox(-0.532F, -1.1759F, -15.2654F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(8.6129F, -6.9984F, -41.096F, 0.1019F, -0.7262F, -0.2041F)); + PartDefinition cube_r158 = bone16.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(545, 0).mirror().addBox(-0.0728F, -1.4586F, -21.018F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5777F, -6.0165F, -21.9797F, 0.0372F, -0.3778F, -0.1821F)); + PartDefinition cube_r159 = bone16.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(397, 534).mirror().addBox(0.0351F, -1.4104F, -21.0141F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0539F, -8.9794F, -21.9926F, 0.0388F, -0.3706F, -0.1672F)); + PartDefinition cube_r160 = bone16.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(412, 37).mirror().addBox(0.105F, -1.1664F, -17.2161F, 1.0F, 3.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.5081F, -9.6671F, -41.3983F, 0.0933F, -0.7192F, -0.1873F)); + PartDefinition cube_r161 = bone16.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(532, 215).mirror().addBox(-0.2811F, -1.3101F, -18.2664F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2825F, -12.514F, -41.3631F, 0.1757F, -0.6911F, -0.3133F)); + PartDefinition cube_r162 = bone16.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(336, 558).mirror().addBox(-0.0876F, -1.4777F, -21.004F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.1257F, -12.0262F, -21.9984F, 0.0485F, -0.3546F, -0.1788F)); + PartDefinition cube_r163 = bone16.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(880, 513).mirror().addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -12.0F, 11.0F, 0.0115F, -0.0416F, -0.0396F)); + PartDefinition cube_r164 = bone16.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(0, 570).mirror().addBox(-0.349F, -1.4689F, -18.2692F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.2505F, -15.0936F, -41.2304F, 0.0174F, -0.6842F, -0.0525F)); + PartDefinition cube_r165 = bone16.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(397, 558).mirror().addBox(0.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -15.0F, -22.0F, 0.0145F, -0.3661F, -0.0467F)); + PartDefinition cube_r166 = bone16.addOrReplaceChild("cube_r166", CubeListBuilder.create().texOffs(455, 534).mirror().addBox(-0.1614F, -1.5F, -21.265F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(6.7435F, -18.0F, -41.4293F, 0.0F, -0.6981F, 0.0F)); + PartDefinition cube_r167 = bone16.addOrReplaceChild("cube_r167", CubeListBuilder.create().texOffs(455, 558).mirror().addBox(0.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.5F, -18.0F, -22.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition bone17 = bone16.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offset(8.6129F, -0.9984F, -52.096F)); + PartDefinition cube_r168 = bone17.addOrReplaceChild("cube_r168", CubeListBuilder.create().texOffs(94, 570).mirror().addBox(-0.0773F, -1.1394F, -15.3683F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.2251F, -0.7307F, -0.3829F)); + PartDefinition bone18 = bone16.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(9.3629F, 1.7516F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r169 = bone18.addOrReplaceChild("cube_r169", CubeListBuilder.create().texOffs(478, 558).mirror().addBox(8.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 13.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, -0.7137F, -0.3778F)); + PartDefinition bone19 = bone16.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(9.3629F, 4.7516F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r170 = bone19.addOrReplaceChild("cube_r170", CubeListBuilder.create().texOffs(309, 16).mirror().addBox(9.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, -0.7137F, -0.3778F)); + PartDefinition bone20 = bone16.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(10.3629F, 7.5016F, -52.096F, 0.0F, -0.0436F, 0.0F)); + PartDefinition cube_r171 = bone20.addOrReplaceChild("cube_r171", CubeListBuilder.create().texOffs(432, 16).mirror().addBox(7.6852F, -2.3041F, -0.886F, 1.0F, 3.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(4.0F, 2.0F, 0.0F, 0.1844F, -0.6835F, -0.3687F)); + PartDefinition cube_r172 = bone20.addOrReplaceChild("cube_r172", CubeListBuilder.create().texOffs(169, 146).mirror().addBox(6.9949F, 0.4331F, 5.872F, 1.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(7.4122F, 4.5475F, -1.6111F, 0.3677F, -0.4737F, -1.0042F)); + PartDefinition cube_r173 = bone20.addOrReplaceChild("cube_r173", CubeListBuilder.create().texOffs(180, 605).mirror().addBox(9.2265F, -2.1905F, -4.1465F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0F, 0.0F, 0.0F, 0.2289F, -0.7172F, -0.4363F)); + PartDefinition bone21 = bone16.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition lifeboat4 = bone31.addOrReplaceChild("lifeboat4", + CubeListBuilder.create().texOffs(336, 523).addBox(-7.0F, 9.7375F, 31.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(455, 486).addBox(-0.7375F, 8.825F, 30.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(78, 187).addBox(-4.2625F, 8.8875F, 30.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(181, 187).addBox(-1.225F, 11.775F, 31.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(101, 91) + .addBox(-3.8875F, 10.25F, 31.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 160).addBox(-4.8875F, 12.65F, 31.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(354, 96) + .addBox(-3.0F, 13.0F, 31.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -34.9825F, 74.5969F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r174 = lifeboat4.addOrReplaceChild("cube_r174", CubeListBuilder.create().texOffs(394, 488).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5F, 10.0F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r175 = lifeboat4.addOrReplaceChild("cube_r175", CubeListBuilder.create().texOffs(417, 488).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.5F, 10.0F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r176 = lifeboat4.addOrReplaceChild("cube_r176", CubeListBuilder.create().texOffs(112, 12).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2875F, 11.1125F, 31.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r177 = lifeboat4.addOrReplaceChild("cube_r177", CubeListBuilder.create().texOffs(206, 48).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2875F, 11.1125F, 31.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r178 = lifeboat4.addOrReplaceChild("cube_r178", CubeListBuilder.create().texOffs(206, 24).addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0F, 16.0F, 31.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r179 = lifeboat4.addOrReplaceChild("cube_r179", CubeListBuilder.create().texOffs(373, 90).addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, 15.475F, 31.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r180 = lifeboat4.addOrReplaceChild("cube_r180", CubeListBuilder.create().texOffs(206, 28).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, 16.0F, 31.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r181 = lifeboat4.addOrReplaceChild("cube_r181", CubeListBuilder.create().texOffs(373, 94).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, 15.475F, 31.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition bone5 = lifeboat4.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(574, 518).addBox(-8.5305F, 0.6607F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(255, 570) + .addBox(-10.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 268).addBox(-6.5305F, 0.4107F, -5.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), PartPose.offset(7.5305F, 14.5893F, 0.5F)); + PartDefinition cube_r182 = bone5.addOrReplaceChild("cube_r182", CubeListBuilder.create().texOffs(81, 97).addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 0.5875F, -5.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r183 = bone5.addOrReplaceChild("cube_r183", CubeListBuilder.create().texOffs(116, 150).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 0.5875F, -5.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r184 = bone5.addOrReplaceChild("cube_r184", CubeListBuilder.create().texOffs(116, 155).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 1.4107F, -5.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r185 = bone5.addOrReplaceChild("cube_r185", CubeListBuilder.create().texOffs(548, 520).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r186 = bone5.addOrReplaceChild("cube_r186", CubeListBuilder.create().texOffs(438, 226).addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.3234F, -2.8706F, -12.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r187 = bone5.addOrReplaceChild("cube_r187", CubeListBuilder.create().texOffs(384, 176).addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.9F, -4.0F, -9.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r188 = bone5.addOrReplaceChild("cube_r188", CubeListBuilder.create().texOffs(845, 226).addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r189 = bone5.addOrReplaceChild("cube_r189", CubeListBuilder.create().texOffs(160, 16).addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8017F, -2.8706F, -6.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r190 = bone5.addOrReplaceChild("cube_r190", CubeListBuilder.create().texOffs(292, 72).addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.75F, -4.0F, -5.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r191 = bone5.addOrReplaceChild("cube_r191", CubeListBuilder.create().texOffs(420, 566).addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -3.0F, -5.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r192 = bone5.addOrReplaceChild("cube_r192", CubeListBuilder.create().texOffs(217, 320).addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.9311F, -9.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r193 = bone5.addOrReplaceChild("cube_r193", CubeListBuilder.create().texOffs(185, 191).addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r194 = bone5.addOrReplaceChild("cube_r194", CubeListBuilder.create().texOffs(184, 144).addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.2448F, -0.4311F, -9.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r195 = bone5.addOrReplaceChild("cube_r195", CubeListBuilder.create().texOffs(293, 16).addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2448F, -0.4311F, -5.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r196 = bone5.addOrReplaceChild("cube_r196", + CubeListBuilder.create().texOffs(14, 613).addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(582, 540).addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r197 = bone5.addOrReplaceChild("cube_r197", CubeListBuilder.create().texOffs(339, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 23.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r198 = bone5.addOrReplaceChild("cube_r198", CubeListBuilder.create().texOffs(340, 288).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.2448F, -0.1311F, 12.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r199 = bone5.addOrReplaceChild("cube_r199", CubeListBuilder.create().texOffs(484, 614).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.7687F, -1.4835F, 13.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r200 = bone5.addOrReplaceChild("cube_r200", CubeListBuilder.create().texOffs(537, 564).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8306F, -1.5453F, 1.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r201 = bone5.addOrReplaceChild("cube_r201", + CubeListBuilder.create().texOffs(179, 97).addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 276).addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0065F, 0.3564F, -9.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r202 = bone5.addOrReplaceChild("cube_r202", CubeListBuilder.create().texOffs(325, 178).addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.694F, 0.6689F, -5.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r203 = bone5.addOrReplaceChild("cube_r203", CubeListBuilder.create().texOffs(594, 43).addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r204 = bone5.addOrReplaceChild("cube_r204", CubeListBuilder.create().texOffs(455, 39).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r205 = bone5.addOrReplaceChild("cube_r205", CubeListBuilder.create().texOffs(485, 238).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 21.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r206 = bone5.addOrReplaceChild("cube_r206", CubeListBuilder.create().texOffs(551, 236).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -3.0F, 11.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r207 = bone5.addOrReplaceChild("cube_r207", CubeListBuilder.create().texOffs(438, 270).addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.7376F, -2.8706F, -12.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r208 = bone5.addOrReplaceChild("cube_r208", CubeListBuilder.create().texOffs(455, 16).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.161F, -4.0F, -9.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r209 = bone5.addOrReplaceChild("cube_r209", CubeListBuilder.create().texOffs(845, 266).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r210 = bone5.addOrReplaceChild("cube_r210", CubeListBuilder.create().texOffs(441, 28).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2593F, -2.8706F, -6.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r211 = bone5.addOrReplaceChild("cube_r211", CubeListBuilder.create().texOffs(322, 310).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -4.0F, -5.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r212 = bone5.addOrReplaceChild("cube_r212", CubeListBuilder.create().texOffs(136, 588).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.561F, -3.0F, -5.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r213 = bone5.addOrReplaceChild("cube_r213", CubeListBuilder.create().texOffs(346, 115).addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.9311F, -9.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r214 = bone5.addOrReplaceChild("cube_r214", CubeListBuilder.create().texOffs(468, 292).addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r215 = bone5.addOrReplaceChild("cube_r215", CubeListBuilder.create().texOffs(354, 90).addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.8162F, -0.4311F, -9.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r216 = bone5.addOrReplaceChild("cube_r216", CubeListBuilder.create().texOffs(484, 134).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, -0.4311F, -5.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r217 = bone5.addOrReplaceChild("cube_r217", + CubeListBuilder.create().texOffs(614, 518).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(0, 591).addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.5305F, 0.9107F, 10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r218 = bone5.addOrReplaceChild("cube_r218", CubeListBuilder.create().texOffs(373, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 23.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r219 = bone5.addOrReplaceChild("cube_r219", CubeListBuilder.create().texOffs(499, 23).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, -0.1311F, 12.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r220 = bone5.addOrReplaceChild("cube_r220", CubeListBuilder.create().texOffs(614, 529).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2923F, -1.4835F, 13.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r221 = bone5.addOrReplaceChild("cube_r221", CubeListBuilder.create().texOffs(218, 570).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2304F, -1.5453F, 1.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r222 = bone5.addOrReplaceChild("cube_r222", + CubeListBuilder.create().texOffs(189, 97).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 288).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.0545F, 0.3564F, -9.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r223 = bone5.addOrReplaceChild("cube_r223", CubeListBuilder.create().texOffs(485, 52).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.367F, 0.6689F, -5.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r224 = bone5.addOrReplaceChild("cube_r224", CubeListBuilder.create().texOffs(594, 85).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 1.4107F, 10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone15 = bone5.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r225 = bone15.addOrReplaceChild("cube_r225", + CubeListBuilder.create().texOffs(359, 268).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(164, 27).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r226 = bone15.addOrReplaceChild("cube_r226", CubeListBuilder.create().texOffs(160, 21).addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r227 = bone15.addOrReplaceChild("cube_r227", CubeListBuilder.create().texOffs(16, 591).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone64 = lifeboat4.addOrReplaceChild("bone64", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 46.0F, -136.0F)); + PartDefinition bone63 = bone64.addOrReplaceChild("bone63", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 0.0F, -15.0F)); + PartDefinition bone62 = bone64.addOrReplaceChild("bone62", + CubeListBuilder.create().texOffs(545, 24).addBox(-11.0F, -48.0F, 147.0F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.8F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.45F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.65F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.6F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.4F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24) + .addBox(-11.0F, -48.0F, 146.05F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(545, 24).addBox(-11.0F, -48.0F, 146.25F, 22.0F, 13.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 0.0F, 15.0F)); + PartDefinition lifeboat2 = bone31.addOrReplaceChild("lifeboat2", CubeListBuilder.create(), PartPose.offset(-22.4912F, -15.9825F, 6.5969F)); + PartDefinition bone32 = lifeboat2.addOrReplaceChild("bone32", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0017F, -3.0637F, 24.4908F, 0.3702F, 0.5003F, 0.6387F)); + PartDefinition bone2 = bone32.addOrReplaceChild( + "bone2", CubeListBuilder.create().texOffs(574, 518).addBox(-2.2028F, 5.9731F, -31.1875F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(255, 570) + .addBox(-4.2028F, 5.7231F, -31.1875F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 268).addBox(-0.2028F, 5.7231F, -31.1875F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.2011F, 2.3406F, -5.3033F, 0.9163F, 0.0F, 0.0F)); + PartDefinition cube_r228 = bone2.addOrReplaceChild("cube_r228", CubeListBuilder.create().texOffs(81, 97).addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.7972F, 5.8999F, -31.0776F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r229 = bone2.addOrReplaceChild("cube_r229", CubeListBuilder.create().texOffs(116, 150).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.2028F, 5.8999F, -31.0776F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r230 = bone2.addOrReplaceChild("cube_r230", CubeListBuilder.create().texOffs(116, 155).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.2028F, 6.7231F, -31.1875F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r231 = bone2.addOrReplaceChild("cube_r231", CubeListBuilder.create().texOffs(548, 520).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.3277F, 2.3124F, -14.6875F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r232 = bone2.addOrReplaceChild("cube_r232", CubeListBuilder.create().texOffs(438, 226).addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0043F, 2.4418F, -37.778F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r233 = bone2.addOrReplaceChild("cube_r233", CubeListBuilder.create().texOffs(384, 176).addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.4277F, 1.3124F, -34.975F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r234 = bone2.addOrReplaceChild("cube_r234", CubeListBuilder.create().texOffs(845, 226).addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.0777F, 1.3124F, -31.1875F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r235 = bone2.addOrReplaceChild("cube_r235", CubeListBuilder.create().texOffs(160, 16).addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.526F, 2.4418F, -32.681F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r236 = bone2.addOrReplaceChild("cube_r236", CubeListBuilder.create().texOffs(292, 72).addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.0777F, 1.3124F, -31.1875F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r237 = bone2.addOrReplaceChild("cube_r237", CubeListBuilder.create().texOffs(420, 566).addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.8277F, 2.3124F, -31.1875F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r238 = bone2.addOrReplaceChild("cube_r238", CubeListBuilder.create().texOffs(217, 320).addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0829F, 4.3813F, -34.6875F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r239 = bone2.addOrReplaceChild("cube_r239", CubeListBuilder.create().texOffs(185, 191).addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0829F, 4.8813F, -31.1875F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r240 = bone2.addOrReplaceChild("cube_r240", CubeListBuilder.create().texOffs(184, 144).addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0829F, 4.8813F, -34.6875F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r241 = bone2.addOrReplaceChild("cube_r241", CubeListBuilder.create().texOffs(293, 16).addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0829F, 4.8813F, -31.1875F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r242 = bone2.addOrReplaceChild("cube_r242", + CubeListBuilder.create().texOffs(14, 613).addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(582, 540).addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.7972F, 6.2231F, -15.1875F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r243 = bone2.addOrReplaceChild("cube_r243", CubeListBuilder.create().texOffs(339, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0829F, 5.1813F, -2.6875F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r244 = bone2.addOrReplaceChild("cube_r244", CubeListBuilder.create().texOffs(340, 288).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0829F, 5.1813F, -13.6875F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r245 = bone2.addOrReplaceChild("cube_r245", CubeListBuilder.create().texOffs(484, 614).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.559F, 3.8289F, -12.1875F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r246 = bone2.addOrReplaceChild("cube_r246", CubeListBuilder.create().texOffs(537, 564).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.4971F, 3.7671F, -24.1875F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r247 = bone2.addOrReplaceChild("cube_r247", + CubeListBuilder.create().texOffs(179, 97).addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 276).addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.3212F, 5.6689F, -34.9375F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r248 = bone2.addOrReplaceChild("cube_r248", CubeListBuilder.create().texOffs(325, 178).addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.6337F, 5.9814F, -31.1875F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r249 = bone2.addOrReplaceChild("cube_r249", CubeListBuilder.create().texOffs(594, 43).addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.7972F, 6.7231F, -15.1875F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r250 = bone2.addOrReplaceChild("cube_r250", CubeListBuilder.create().texOffs(455, 39).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.3277F, 2.3124F, -4.6875F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r251 = bone2.addOrReplaceChild("cube_r251", CubeListBuilder.create().texOffs(485, 238).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.7333F, 2.3124F, -4.6875F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r252 = bone2.addOrReplaceChild("cube_r252", CubeListBuilder.create().texOffs(551, 236).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.7333F, 2.3124F, -14.6875F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r253 = bone2.addOrReplaceChild("cube_r253", CubeListBuilder.create().texOffs(438, 270).addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.4099F, 2.4418F, -37.778F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r254 = bone2.addOrReplaceChild("cube_r254", CubeListBuilder.create().texOffs(455, 16).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.8333F, 1.3124F, -34.975F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r255 = bone2.addOrReplaceChild("cube_r255", CubeListBuilder.create().texOffs(845, 266).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.4833F, 1.3124F, -31.1875F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r256 = bone2.addOrReplaceChild("cube_r256", CubeListBuilder.create().texOffs(441, 28).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.9316F, 2.4418F, -32.681F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r257 = bone2.addOrReplaceChild("cube_r257", CubeListBuilder.create().texOffs(322, 310).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.4833F, 1.3124F, -31.1875F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r258 = bone2.addOrReplaceChild("cube_r258", CubeListBuilder.create().texOffs(136, 588).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.2333F, 2.3124F, -31.1875F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r259 = bone2.addOrReplaceChild("cube_r259", CubeListBuilder.create().texOffs(346, 115).addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.4885F, 4.3813F, -34.6875F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r260 = bone2.addOrReplaceChild("cube_r260", CubeListBuilder.create().texOffs(468, 292).addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4885F, 4.8813F, -31.1875F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r261 = bone2.addOrReplaceChild("cube_r261", CubeListBuilder.create().texOffs(354, 90).addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.4885F, 4.8813F, -34.6875F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r262 = bone2.addOrReplaceChild("cube_r262", CubeListBuilder.create().texOffs(484, 134).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4885F, 4.8813F, -31.1875F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r263 = bone2.addOrReplaceChild("cube_r263", + CubeListBuilder.create().texOffs(614, 518).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(0, 591).addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.2028F, 6.2231F, -15.1875F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r264 = bone2.addOrReplaceChild("cube_r264", CubeListBuilder.create().texOffs(373, 90).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.4885F, 5.1813F, -2.6875F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r265 = bone2.addOrReplaceChild("cube_r265", CubeListBuilder.create().texOffs(499, 23).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.4885F, 5.1813F, -13.6875F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r266 = bone2.addOrReplaceChild("cube_r266", CubeListBuilder.create().texOffs(614, 529).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.9646F, 3.8289F, -12.1875F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r267 = bone2.addOrReplaceChild("cube_r267", CubeListBuilder.create().texOffs(218, 570).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.9028F, 3.7671F, -24.1875F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r268 = bone2.addOrReplaceChild("cube_r268", + CubeListBuilder.create().texOffs(189, 97).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(359, 288).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.7268F, 5.6689F, -34.9375F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r269 = bone2.addOrReplaceChild("cube_r269", CubeListBuilder.create().texOffs(485, 52).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0393F, 5.9814F, -31.1875F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r270 = bone2.addOrReplaceChild("cube_r270", CubeListBuilder.create().texOffs(594, 85).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.2028F, 6.7231F, -15.1875F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone51 = bone2.addOrReplaceChild("bone51", CubeListBuilder.create(), PartPose.offset(-1.2028F, 9.0731F, -56.1125F)); + PartDefinition cube_r271 = bone51.addOrReplaceChild("cube_r271", + CubeListBuilder.create().texOffs(359, 268).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(164, 27).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -3.0902F, 20.9695F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r272 = bone51.addOrReplaceChild("cube_r272", CubeListBuilder.create().texOffs(160, 21).addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.3125F, -3.0902F, 20.9695F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r273 = bone51.addOrReplaceChild("cube_r273", CubeListBuilder.create().texOffs(16, 591).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 21.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone13 = bone32.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.8745F, 0.0561F, 0.0669F)); + PartDefinition cube_r274 = bone13.addOrReplaceChild("cube_r274", + CubeListBuilder.create().texOffs(354, 96).addBox(-3.0F, -3.0F, 20.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(21, 160).addBox(-4.8875F, -3.35F, 20.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(101, 91) + .addBox(-3.8875F, -5.75F, 20.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(181, 187).addBox(-1.225F, -4.225F, 20.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(78, 187) + .addBox(-4.2625F, -7.1125F, 19.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(455, 486).addBox(-0.7375F, -7.175F, 19.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(336, 523) + .addBox(-7.0F, -6.2625F, 20.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0017F, 4.0637F, -20.4908F, 0.0F, 0.0F, 0.0F)); + PartDefinition cube_r275 = bone13.addOrReplaceChild("cube_r275", CubeListBuilder.create().texOffs(394, 488).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5017F, -1.9363F, 0.0092F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r276 = bone13.addOrReplaceChild("cube_r276", CubeListBuilder.create().texOffs(417, 488).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.4983F, -1.9363F, 0.0092F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r277 = bone13.addOrReplaceChild("cube_r277", CubeListBuilder.create().texOffs(112, 12).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2858F, -0.8238F, 0.0092F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r278 = bone13.addOrReplaceChild("cube_r278", CubeListBuilder.create().texOffs(206, 48).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2892F, -0.8238F, 0.0092F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r279 = bone13.addOrReplaceChild("cube_r279", CubeListBuilder.create().texOffs(206, 24).addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0017F, 4.0637F, 0.0092F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r280 = bone13.addOrReplaceChild("cube_r280", CubeListBuilder.create().texOffs(373, 90).addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0017F, 3.5387F, 0.0092F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r281 = bone13.addOrReplaceChild("cube_r281", CubeListBuilder.create().texOffs(206, 28).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.9983F, 4.0637F, 0.0092F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r282 = bone13.addOrReplaceChild("cube_r282", CubeListBuilder.create().texOffs(373, 94).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.9983F, 3.5387F, 0.0092F, 0.0F, 0.0F, -0.7854F)); + PartDefinition bone53 = lifeboat2.addOrReplaceChild("bone53", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -89.0F)); + PartDefinition bone55 = lifeboat2.addOrReplaceChild("bone55", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -72.0F)); + PartDefinition bone52 = lifeboat2.addOrReplaceChild("bone52", + CubeListBuilder.create().texOffs(281, 159).addBox(-32.0F, -48.0F, 84.25F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.0F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.75F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.5F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.4F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 83.65F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159) + .addBox(-32.0F, -48.0F, 83.9F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(281, 159).addBox(-32.0F, -48.0F, 84.15F, 22.0F, 28.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offset(22.5F, 27.0F, -58.0F)); + PartDefinition bone54 = bone31.addOrReplaceChild("bone54", CubeListBuilder.create().texOffs(50, 137).mirror().addBox(-10.4F, -36.0F, -16.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(58, 150).addBox(-10.0F, -34.0F, + -16.0125F, 2.0F, 10.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0088F, 14.0175F, -57.4031F)); + PartDefinition cube_r283 = bone54.addOrReplaceChild("cube_r283", CubeListBuilder.create().texOffs(339, 95).addBox(-2.0F, -3.0F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-9.0F, -34.0F, -14.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition captianswheel = bone54.addOrReplaceChild("captianswheel", + CubeListBuilder.create().texOffs(0, 4).addBox(-1.0F, -35.0F, -14.0F, 2.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 12).addBox(-2.0F, -37.0F, -16.0F, 4.0F, 13.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 2.0F, 0.0F)); + PartDefinition octagon8 = captianswheel.addOrReplaceChild("octagon8", CubeListBuilder.create().texOffs(80, 52).addBox(-0.5F, 14.0F, -31.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, 2.0F, -1.5708F, 0.0F, 0.0F)); + PartDefinition cube_r284 = octagon8 + .addOrReplaceChild( + "cube_r284", CubeListBuilder.create().texOffs(982, 319).addBox(-6.75F, 0.25F, -7.25F, 14.0F, 0.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(982, 319) + .addBox(-6.75F, -0.25F, -7.25F, 14.0F, 0.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(1012, 46).addBox(-1.25F, -0.5F, -1.75F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 14.0F, -24.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition cube_r285 = octagon8.addOrReplaceChild("cube_r285", CubeListBuilder.create().texOffs(0, 0).addBox(-24.5F, 14.0F, -7.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r286 = octagon8.addOrReplaceChild("cube_r286", CubeListBuilder.create().texOffs(14, 8).addBox(-17.4706F, 14.0F, 9.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -3.1416F, -0.7854F, 3.1416F)); + PartDefinition cube_r287 = octagon8.addOrReplaceChild("cube_r287", CubeListBuilder.create().texOffs(14, 14).addBox(-0.5F, 14.0F, 17.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -3.1416F, 0.0F, 3.1416F)); + PartDefinition cube_r288 = octagon8.addOrReplaceChild("cube_r288", CubeListBuilder.create().texOffs(16, 8).addBox(-17.4706F, 14.0F, -23.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition cube_r289 = octagon8.addOrReplaceChild("cube_r289", CubeListBuilder.create().texOffs(16, 14).addBox(16.4706F, 14.0F, 9.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 2.3562F, 0.0F)); + PartDefinition cube_r290 = octagon8.addOrReplaceChild("cube_r290", CubeListBuilder.create().texOffs(18, 0).addBox(23.5F, 14.0F, -7.0F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r291 = octagon8.addOrReplaceChild("cube_r291", CubeListBuilder.create().texOffs(20, 0).addBox(16.4706F, 14.0F, -23.9706F, 1.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition bone34 = bone31.addOrReplaceChild("bone34", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.1537F, -7.4825F, -153.2156F, 0.0F, -0.3491F, 0.0F)); + PartDefinition treasurechest2 = bone31.addOrReplaceChild("treasurechest2", CubeListBuilder.create(), PartPose.offsetAndRotation(-15.9912F, -9.9825F, -64.9031F, 0.0F, -2.2689F, 0.0F)); + PartDefinition chestlid4 = treasurechest2.addOrReplaceChild("chestlid4", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r292 = chestlid4.addOrReplaceChild("cube_r292", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r293 = chestlid4.addOrReplaceChild("cube_r293", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r294 = chestlid4.addOrReplaceChild("cube_r294", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r295 = chestlid4.addOrReplaceChild("cube_r295", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r296 = chestlid4.addOrReplaceChild("cube_r296", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest4 = treasurechest2.addOrReplaceChild("chest4", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition hexadecagon = bone31.addOrReplaceChild("hexadecagon", + CubeListBuilder.create().texOffs(629, 674).addBox(-1.5913F, -39.0F, 0.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(668, 596).addBox(-1.5913F, -39.0F, 15.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(206, 663) + .addBox(7.0F, -39.0F, 6.4087F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(182, 663).addBox(-8.0F, -39.0F, 6.4087F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0088F, -18.9825F, -45.4031F, -0.1309F, 0.0F, 0.0F)); + PartDefinition hexadecagon_r1 = hexadecagon.addOrReplaceChild("hexadecagon_r1", + CubeListBuilder.create().texOffs(239, 660).addBox(-8.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(198, 663).addBox(7.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(230, 663) + .addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(621, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, -0.3927F, 0.0F)); + PartDefinition hexadecagon_r2 = hexadecagon.addOrReplaceChild("hexadecagon_r2", + CubeListBuilder.create().texOffs(190, 663).addBox(-8.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(214, 663).addBox(7.0F, -25.0F, -1.5913F, 1.0F, 41.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(597, 674) + .addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(637, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, 0.3927F, 0.0F)); + PartDefinition hexadecagon_r3 = hexadecagon.addOrReplaceChild("hexadecagon_r3", + CubeListBuilder.create().texOffs(222, 663).addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(613, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition hexadecagon_r4 = hexadecagon.addOrReplaceChild("hexadecagon_r4", + CubeListBuilder.create().texOffs(605, 674).addBox(-1.5913F, -25.0F, 7.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(645, 674).addBox(-1.5913F, -25.0F, -8.0F, 3.0F, 41.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.0F, 8.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition bone33 = bone31.addOrReplaceChild("bone33", CubeListBuilder.create().texOffs(0, 0).addBox(-22.0F, -72.0F, -150.0F, 0.0F, 144.0F, 331.0F, new CubeDeformation(0.0F)), PartPose.offset(22.0088F, -81.9825F, -59.4031F)); + PartDefinition cube_r297 = bone33.addOrReplaceChild("cube_r297", CubeListBuilder.create().texOffs(0, 309).addBox(-10.0F, -65.0F, -50.0F, 0.0F, 95.0F, 166.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-44.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r298 = bone33.addOrReplaceChild("cube_r298", + CubeListBuilder.create().texOffs(340, 179).addBox(0.0F, -1.0F, -17.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(340, 179).addBox(0.0F, -1.0F, 129.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-25.0F, 21.0F, -39.0F, 0.0F, 0.0F, 0.3491F)); + PartDefinition cube_r299 = bone33.addOrReplaceChild("cube_r299", CubeListBuilder.create().texOffs(340, 179).mirror().addBox(0.0F, -1.0F, -17.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(340, 179).mirror() + .addBox(0.0F, -1.0F, 130.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-19.0F, 21.0F, -39.0F, 0.0F, 0.0F, -0.3491F)); + PartDefinition cube_r300 = bone33.addOrReplaceChild("cube_r300", CubeListBuilder.create().texOffs(340, 179).mirror().addBox(-5.7176F, -55.8004F, -18.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.7215F, 63.9622F, 48.0F, 0.0F, 0.0F, -1.3526F)); + PartDefinition cube_r301 = bone33.addOrReplaceChild("cube_r301", CubeListBuilder.create().texOffs(340, 179).addBox(-4.8781F, -54.5215F, -18.0F, 0.0F, 53.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-38.7215F, 72.9622F, 47.0F, 0.0F, 0.0F, -0.6109F)); + PartDefinition goldbarrel = bone31.addOrReplaceChild("goldbarrel", + CubeListBuilder.create().texOffs(255, 607).addBox(-3.0F, -2.2667F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(169, 169).addBox(-3.5F, -1.0167F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(166, 85) + .addBox(-3.5F, 2.5833F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(140, 18).addBox(-3.0F, -1.0167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(140, 12) + .addBox(-3.0F, -1.2667F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(6, 0).addBox(-3.0F, -1.5167F, -3.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.1083F, -15.4658F, -116.16F, 0.0F, 0.7854F, 0.0F)); + PartDefinition treasurechest = bone31.addOrReplaceChild("treasurechest", CubeListBuilder.create(), PartPose.offsetAndRotation(-2.9912F, -10.9825F, -91.9031F, 0.0F, 2.8798F, 0.0F)); + PartDefinition chestlid = treasurechest.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(-12.0F, -9.0F, -35.5375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r302 = chestlid.addOrReplaceChild("cube_r302", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1752F, -40.6185F, 7.3784F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r303 = chestlid.addOrReplaceChild("cube_r303", CubeListBuilder.create().texOffs(32, 1012).addBox(8.1852F, 18.9272F, 30.4592F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r304 = chestlid.addOrReplaceChild("cube_r304", + CubeListBuilder.create().texOffs(70, 1006).addBox(13.2652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(70, 1006).addBox(8.0652F, 33.7073F, -16.6204F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r305 = chestlid.addOrReplaceChild("cube_r305", CubeListBuilder.create().texOffs(50, 1016).addBox(8.1752F, 37.9844F, -1.6883F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r306 = chestlid.addOrReplaceChild("cube_r306", CubeListBuilder.create().texOffs(52, 1010).addBox(8.1652F, 30.5871F, 13.2844F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = treasurechest.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(2, 1006).addBox(8.1752F, -6.0F, 45.8671F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-12.0F, 2.0F, -48.5F)); + PartDefinition bone30 = bone31.addOrReplaceChild("bone30", + CubeListBuilder.create().texOffs(446, 837).addBox(14.0F, -24.0F, -40.0F, 4.0F, 1.0F, 43.0F, new CubeDeformation(0.0F)).texOffs(732, 478).addBox(6.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(402, 596) + .addBox(2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(732, 420).addBox(-2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(455, 534) + .addBox(-6.0F, -24.0F, -39.0F, 4.0F, 1.0F, 51.0F, new CubeDeformation(0.0F)).texOffs(336, 730).addBox(-10.0F, -24.0F, -39.0F, 4.0F, 1.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(747, 783) + .addBox(-18.0F, -24.0F, -41.0F, 4.0F, 1.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(485, 741).addBox(-14.0F, -24.0F, -41.0F, 4.0F, 1.0F, 47.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, 77.5969F)); + PartDefinition bone29 = bone31.addOrReplaceChild("bone29", + CubeListBuilder.create().texOffs(788, 420).addBox(14.0F, -24.0F, -35.0F, 4.0F, 1.0F, 44.0F, new CubeDeformation(0.0F)).texOffs(278, 730).addBox(6.0F, -24.0F, -48.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(72, 657) + .addBox(10.0F, -24.0F, -45.0F, 4.0F, 1.0F, 50.0F, new CubeDeformation(0.0F)).texOffs(144, 727).addBox(2.0F, -24.0F, -55.0F, 4.0F, 1.0F, 62.0F, new CubeDeformation(0.0F)).texOffs(729, 263) + .addBox(-2.0F, -24.0F, -60.0F, 4.0F, 1.0F, 61.0F, new CubeDeformation(0.0F)).texOffs(627, 179).addBox(-6.0F, -24.0F, -55.0F, 4.0F, 1.0F, 71.0F, new CubeDeformation(0.0F)).texOffs(336, 593) + .addBox(-10.0F, -24.0F, -49.0F, 4.0F, 1.0F, 58.0F, new CubeDeformation(0.0F)).texOffs(497, 837).addBox(-18.0F, -24.0F, -35.0F, 4.0F, 1.0F, 42.0F, new CubeDeformation(0.0F)).texOffs(295, 781) + .addBox(-14.0F, -24.0F, -45.0F, 4.0F, 1.0F, 46.0F, new CubeDeformation(0.0F)).texOffs(180, 570).addBox(-20.0F, -24.0F, -31.0F, 2.0F, 1.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, -97.4031F)); + PartDefinition bone28 = bone31.addOrReplaceChild("bone28", + CubeListBuilder.create().texOffs(0, 570).addBox(14.0F, -24.0F, -31.0F, 4.0F, 1.0F, 86.0F, new CubeDeformation(0.0F)).texOffs(597, 674).addBox(6.0F, -24.0F, -38.0F, 4.0F, 1.0F, 60.0F, new CubeDeformation(0.0F)).texOffs(340, 215) + .addBox(10.0F, -24.0F, -35.0F, 4.0F, 1.0F, 90.0F, new CubeDeformation(0.0F)).texOffs(754, 790).addBox(-14.0F, -24.0F, 16.0F, 4.0F, 1.0F, 38.0F, new CubeDeformation(0.0F)).texOffs(94, 570) + .addBox(18.0F, -24.0F, -27.0F, 2.0F, 1.0F, 82.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, -17.4031F)); + PartDefinition cube_r307 = bone28.addOrReplaceChild("cube_r307", CubeListBuilder.create().texOffs(730, 721).addBox(-2.0F, -0.5F, -30.5F, 4.0F, 1.0F, 61.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -23.5F, -8.5F, -0.3054F, -0.3054F, 0.0F)); + PartDefinition cube_r308 = bone28.addOrReplaceChild("cube_r308", CubeListBuilder.create().texOffs(281, 16).addBox(-2.0F, -0.5F, -27.5F, 4.0F, 1.0F, 55.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0F, -23.5F, -5.5F, 0.1309F, 0.2618F, 0.0F)); + PartDefinition bone27 = bone31.addOrReplaceChild("bone27", + CubeListBuilder.create().texOffs(839, 48).addBox(2.0F, -24.0F, -33.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(839, 620).addBox(-2.0F, -24.0F, -39.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(146, 838) + .addBox(-6.0F, -24.0F, -24.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(492, 789).addBox(-10.0F, -24.0F, -31.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(751, 787) + .addBox(-18.0F, -24.0F, -33.0F, 4.0F, 1.0F, 41.0F, new CubeDeformation(0.0F)).texOffs(442, 745).addBox(-14.0F, -24.0F, -39.0F, 4.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(0, 570) + .addBox(-20.0F, -24.0F, -37.0F, 2.0F, 1.0F, 40.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, -57.4031F)); + PartDefinition bone26 = bone31.addOrReplaceChild("bone26", + CubeListBuilder.create().texOffs(491, 596).addBox(-2.0F, -5.5F, 11.5F, 4.0F, 3.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(0, 150).addBox(-2.0F, -2.5F, 11.5F, 4.0F, 12.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 15.9662F, 53.7284F)); + PartDefinition cube_r309 = bone26.addOrReplaceChild("cube_r309", CubeListBuilder.create().texOffs(438, 246).addBox(-2.0F, 0.0F, 0.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.5F, 18.5F, -0.2182F, 0.0F, 0.0F)); + PartDefinition cube_r310 = bone26.addOrReplaceChild("cube_r310", CubeListBuilder.create().texOffs(184, 150).addBox(-2.0F, 0.0631F, 0.0193F, 4.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -4.7F, 22.4F, -0.7854F, 0.0F, 0.0F)); + PartDefinition bone14 = bone31.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0088F, 17.5175F, 45.8469F, 0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r311 = bone14.addOrReplaceChild("cube_r311", CubeListBuilder.create().texOffs(518, 23).addBox(-2.0F, 12.7154F, 4.1366F, 4.0F, 5.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.7854F, 0.0F, 0.0F)); + PartDefinition bone12 = bone31.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(15.1713F, -7.4825F, -153.2156F, 0.0F, 0.3491F, 0.0F)); + PartDefinition cube_r312 = bone12.addOrReplaceChild("cube_r312", + CubeListBuilder.create().texOffs(281, 19).addBox(-8.0707F, -9.5F, -15.5735F, 0.0F, 5.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(281, 16).addBox(-9.0707F, -4.5F, -15.5735F, 2.0F, 3.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition bone11 = bone31.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offset(22.0088F, -7.4825F, -134.4031F)); + PartDefinition cube_r313 = bone11.addOrReplaceChild("cube_r313", CubeListBuilder.create().texOffs(344, 45).mirror().addBox(1.0F, -6.5F, -20.0F, 0.0F, 5.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-44.0F, -3.0F, 11.0F, 0.0F, -0.3491F, 0.0F)); + PartDefinition cube_r314 = bone11.addOrReplaceChild("cube_r314", + CubeListBuilder.create().texOffs(344, 45).addBox(-1.0F, -6.5F, -20.0F, 0.0F, 5.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(336, 593).addBox(-2.0F, -1.5F, -20.0F, 2.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition sail3 = bone31.addOrReplaceChild("sail3", + CubeListBuilder.create().texOffs(86, 28).addBox(-0.5F, -163.0F, -41.5F, 1.0F, 23.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(281, 198).addBox(-29.0F, -77.0F, -44.0F, 58.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(592, 600) + .addBox(-1.0F, -50.0F, -40.0F, 2.0F, 2.0F, 72.0F, new CubeDeformation(0.0F)).texOffs(609, 617).addBox(-1.0F, -81.0F, -189.0F, 2.0F, 2.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(574, 588) + .addBox(-37.0F, -107.0F, -44.0F, 74.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 0).addBox(-25.0F, -131.0F, -44.0F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 89) + .addBox(-16.0F, -156.0F, -42.25F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, 89.5969F)); + PartDefinition octagon5 = sail3.addOrReplaceChild("octagon5", + CubeListBuilder.create().texOffs(594, 0).addBox(-0.8284F, -34.0F, 9.0F, 1.0F, 33.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(574, 518).addBox(-2.0F, -34.0F, 10.1716F, 4.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -74.0F, -52.0F)); + PartDefinition octagon_r1 = octagon5.addOrReplaceChild("octagon_r1", + CubeListBuilder.create().texOffs(584, 518).addBox(-2.0F, -31.0F, -0.8284F, 4.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(604, 0).addBox(-0.8284F, -31.0F, -2.0F, 1.0F, 33.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon6 = sail3.addOrReplaceChild("octagon6", + CubeListBuilder.create().texOffs(479, 0).addBox(-0.6213F, -34.5F, 9.5F, 1.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(126, 570).addBox(-1.5F, -34.5F, 10.3787F, 3.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -106.0F, -52.0F)); + PartDefinition octagon_r2 = octagon6.addOrReplaceChild("octagon_r2", + CubeListBuilder.create().texOffs(168, 570).addBox(-1.5F, -31.5F, -0.6213F, 3.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(487, 0).addBox(-0.6213F, -31.5F, -1.5F, 1.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag3 = sail3.addOrReplaceChild("flag3", + CubeListBuilder.create().texOffs(88, 53).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 0).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -25.0F, -30.8384F)); + PartDefinition cube_r315 = flag3.addOrReplaceChild("cube_r315", CubeListBuilder.create().texOffs(81, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r316 = flag3.addOrReplaceChild("cube_r316", CubeListBuilder.create().texOffs(88, 50).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone41 = flag3.addOrReplaceChild("bone41", CubeListBuilder.create(), PartPose.offset(0.8789F, -105.0F, -12.6616F)); + PartDefinition cube_r317 = bone41.addOrReplaceChild("cube_r317", CubeListBuilder.create().texOffs(396, 654).addBox(-29.5F, 0.0F, 0.0F, 58.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r318 = bone41.addOrReplaceChild("cube_r318", CubeListBuilder.create().texOffs(281, 190).addBox(-29.5F, 0.0734F, 0.0151F, 58.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r319 = bone41.addOrReplaceChild("cube_r319", CubeListBuilder.create().texOffs(396, 660).addBox(-29.5F, -0.0482F, 0.0046F, 58.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone42 = bone41.addOrReplaceChild("bone42", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r320 = bone42.addOrReplaceChild("cube_r320", CubeListBuilder.create().texOffs(281, 202).addBox(-29.5F, 0.8016F, 1.6546F, 58.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition octagon7 = sail3.addOrReplaceChild("octagon7", + CubeListBuilder.create().texOffs(72, 0).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(212, 884).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 7.0F, -52.0F)); + PartDefinition octagon_r3 = octagon7.addOrReplaceChild("octagon_r3", + CubeListBuilder.create().texOffs(226, 884).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 97).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone40 = sail3.addOrReplaceChild("bone40", CubeListBuilder.create(), PartPose.offset(0.5F, -105.0F, -43.5F)); + PartDefinition cube_r321 = bone40.addOrReplaceChild("cube_r321", CubeListBuilder.create().texOffs(680, 75).addBox(-39.5F, 0.0F, 0.0F, 78.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r322 = bone40.addOrReplaceChild("cube_r322", CubeListBuilder.create().texOffs(662, 395).addBox(-39.5F, 0.0734F, 0.0151F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r323 = bone40.addOrReplaceChild("cube_r323", CubeListBuilder.create().texOffs(675, 152).addBox(-39.5F, -0.0482F, 0.0046F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r324 = bone40.addOrReplaceChild("cube_r324", CubeListBuilder.create().texOffs(680, 67).addBox(-39.5F, 0.8016F, 1.6546F, 78.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 21.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone37 = sail3.addOrReplaceChild("bone37", CubeListBuilder.create(), PartPose.offset(0.5F, -75.0F, -43.5F)); + PartDefinition cube_r325 = bone37.addOrReplaceChild("cube_r325", CubeListBuilder.create().texOffs(180, 646).addBox(-37.5F, 0.0F, 0.0F, 73.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r326 = bone37.addOrReplaceChild("cube_r326", CubeListBuilder.create().texOffs(729, 354).addBox(-37.5F, 0.0734F, 0.0151F, 73.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r327 = bone37.addOrReplaceChild("cube_r327", CubeListBuilder.create().texOffs(729, 325).addBox(-37.5F, -0.0482F, 0.0046F, 73.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r328 = bone37.addOrReplaceChild("cube_r328", CubeListBuilder.create().texOffs(662, 371).addBox(-37.5F, -0.0984F, 0.0546F, 73.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone43 = sail3.addOrReplaceChild("bone43", CubeListBuilder.create(), PartPose.offset(0.5F, -155.25F, -41.75F)); + PartDefinition cube_r329 = bone43.addOrReplaceChild("cube_r329", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r330 = bone43.addOrReplaceChild("cube_r330", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r331 = bone43.addOrReplaceChild("cube_r331", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone44 = bone43.addOrReplaceChild("bone44", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r332 = bone44.addOrReplaceChild("cube_r332", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition sail2 = bone31.addOrReplaceChild("sail2", + CubeListBuilder.create().texOffs(28, 0).addBox(-0.6F, -194.0F, 0.85F, 1.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 320).addBox(-49.1F, -78.0F, -1.65F, 99.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(594, 173) + .addBox(-42.1F, -119.0F, -1.65F, 84.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 4).addBox(-25.1F, -159.0F, -1.65F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 91) + .addBox(-16.1F, -184.0F, 0.1F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1088F, 15.0175F, -13.7531F, 0.0F, 0.0F, -0.6545F)); + PartDefinition octagon2 = sail2.addOrReplaceChild("octagon2", + CubeListBuilder.create().texOffs(173, 97).addBox(-0.8284F, -44.0F, 9.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(441, 534).addBox(-2.0F, -44.0F, 10.1716F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.1F, -75.0F, -9.65F)); + PartDefinition octagon_r4 = octagon2.addOrReplaceChild("octagon_r4", + CubeListBuilder.create().texOffs(557, 475).addBox(-2.0F, -41.0F, -0.8284F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(183, 97).addBox(-0.8284F, -41.0F, -2.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon3 = octagon2.addOrReplaceChild("octagon3", + CubeListBuilder.create().texOffs(388, 16).addBox(-0.6213F, -46.5F, 9.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(484, 88).addBox(-1.5F, -46.5F, 10.3787F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -42.0F, 0.0F)); + PartDefinition octagon_r5 = octagon3.addOrReplaceChild("octagon_r5", + CubeListBuilder.create().texOffs(499, 475).addBox(-1.5F, -43.5F, -0.6213F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(393, 128).addBox(-0.6213F, -43.5F, -1.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag2 = sail2.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(42, 148).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(72, 95).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.4789F, -56.0F, 11.5116F)); + PartDefinition cube_r333 = flag2.addOrReplaceChild("cube_r333", CubeListBuilder.create().texOffs(81, 95).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r334 = flag2.addOrReplaceChild("cube_r334", CubeListBuilder.create().texOffs(89, 95).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition octagon4 = sail2.addOrReplaceChild("octagon4", + CubeListBuilder.create().texOffs(412, 215).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(0, 885).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.1F, 6.0F, -9.65F)); + PartDefinition octagon_r6 = octagon4.addOrReplaceChild("octagon_r6", + CubeListBuilder.create().texOffs(14, 885).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(840, 880).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone39 = sail2.addOrReplaceChild("bone39", CubeListBuilder.create(), PartPose.offset(0.4F, -117.0F, -1.15F)); + PartDefinition cube_r335 = bone39.addOrReplaceChild("cube_r335", CubeListBuilder.create().texOffs(627, 251).addBox(-49.5F, 0.0F, 0.0F, 99.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r336 = bone39.addOrReplaceChild("cube_r336", CubeListBuilder.create().texOffs(281, 0).addBox(-49.5F, 0.0734F, 0.0151F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r337 = bone39.addOrReplaceChild("cube_r337", CubeListBuilder.create().texOffs(412, 179).addBox(-49.5F, -0.0482F, 0.0046F, 99.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r338 = bone39.addOrReplaceChild("cube_r338", CubeListBuilder.create().texOffs(281, 8).addBox(-49.5F, 0.9016F, 1.9046F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone36 = sail2.addOrReplaceChild("bone36", CubeListBuilder.create(), PartPose.offset(0.4F, -76.0F, -1.15F)); + PartDefinition cube_r339 = bone36.addOrReplaceChild("cube_r339", CubeListBuilder.create().texOffs(594, 167).addBox(-56.5F, 0.0F, 0.0F, 112.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r340 = bone36.addOrReplaceChild("cube_r340", CubeListBuilder.create().texOffs(574, 580).addBox(-56.5F, 0.0734F, 0.0151F, 112.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r341 = bone36.addOrReplaceChild("cube_r341", CubeListBuilder.create().texOffs(574, 568).addBox(-56.5F, -0.0482F, 0.0046F, 112.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r342 = bone36.addOrReplaceChild("cube_r342", CubeListBuilder.create().texOffs(532, 267).addBox(-56.5F, -0.0984F, 0.0546F, 112.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone45 = sail2.addOrReplaceChild("bone45", CubeListBuilder.create(), PartPose.offset(0.4F, -183.25F, 0.6F)); + PartDefinition cube_r343 = bone45.addOrReplaceChild("cube_r343", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r344 = bone45.addOrReplaceChild("cube_r344", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r345 = bone45.addOrReplaceChild("cube_r345", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone46 = bone45.addOrReplaceChild("bone46", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r346 = bone46.addOrReplaceChild("cube_r346", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone49 = sail2.addOrReplaceChild("bone49", CubeListBuilder.create(), PartPose.offset(0.4F, -157.0F, -1.15F)); + PartDefinition cube_r347 = bone49.addOrReplaceChild("cube_r347", CubeListBuilder.create().texOffs(729, 362).addBox(-34.5F, 0.0F, 0.0F, 69.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r348 = bone49.addOrReplaceChild("cube_r348", CubeListBuilder.create().texOffs(732, 527).addBox(-34.5F, 0.0734F, 0.0151F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r349 = bone49.addOrReplaceChild("cube_r349", CubeListBuilder.create().texOffs(729, 337).addBox(-34.5F, -0.0482F, 0.0046F, 69.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r350 = bone49.addOrReplaceChild("cube_r350", CubeListBuilder.create().texOffs(732, 535).addBox(-34.5F, 0.9016F, 1.9046F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition sail = bone31.addOrReplaceChild("sail", + CubeListBuilder.create().texOffs(86, 0).addBox(-0.5F, -189.0F, -41.5F, 1.0F, 27.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(234, 324).addBox(-49.0F, -77.0F, -44.0F, 99.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(660, 551) + .addBox(-42.0F, -111.0F, -44.0F, 84.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 8).addBox(-25.0F, -152.0F, -44.0F, 50.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 89) + .addBox(-16.0F, -180.0F, -42.25F, 32.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0088F, 14.0175F, -57.4031F)); + PartDefinition octagon8768 = sail.addOrReplaceChild("octagon8768", + CubeListBuilder.create().texOffs(325, 131).addBox(-0.8284F, -44.0F, 9.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(558, 534).addBox(-2.0F, -44.0F, 10.1716F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -74.0F, -52.0F)); + PartDefinition octagon_r7 = octagon8768.addOrReplaceChild("octagon_r7", + CubeListBuilder.create().texOffs(380, 593).addBox(-2.0F, -41.0F, -0.8284F, 4.0F, 43.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(383, 131).addBox(-0.8284F, -41.0F, -2.0F, 1.0F, 43.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition octagon5677 = octagon8768.addOrReplaceChild("octagon5677", + CubeListBuilder.create().texOffs(396, 16).addBox(-0.6213F, -46.5F, 9.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(380, 534).addBox(-1.5F, -46.5F, 10.3787F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, -42.0F, 0.0F)); + PartDefinition octagon_r8 = octagon5677.addOrReplaceChild("octagon_r8", + CubeListBuilder.create().texOffs(610, 179).addBox(-1.5F, -43.5F, -0.6213F, 3.0F, 45.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(438, 475).addBox(-0.6213F, -43.5F, -1.5F, 1.0F, 45.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition flag = sail.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(124, 148).addBox(0.1289F, -136.5F, -4.0991F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(101, 148).addBox(0.1289F, -136.5F, -9.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, -30.8384F)); + PartDefinition cube_r351 = flag.addOrReplaceChild("cube_r351", CubeListBuilder.create().texOffs(107, 148).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -135.0F, -5.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r352 = flag.addOrReplaceChild("cube_r352", CubeListBuilder.create().texOffs(116, 148).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -135.0F, -7.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition octagon4565 = sail.addOrReplaceChild("octagon4565", + CubeListBuilder.create().texOffs(575, 883).addBox(-1.0355F, -83.5F, 8.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(28, 885).addBox(-2.5F, -83.5F, 9.9645F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 7.0F, -52.0F)); + PartDefinition octagon_r9 = octagon4565.addOrReplaceChild("octagon_r9", + CubeListBuilder.create().texOffs(42, 885).addBox(-2.5F, -80.5F, -1.0355F, 5.0F, 83.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(198, 884).addBox(-1.0355F, -80.5F, -2.5F, 2.0F, 83.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition bone35 = sail.addOrReplaceChild("bone35", CubeListBuilder.create(), PartPose.offset(0.5F, -75.0F, -43.5F)); + PartDefinition cube_r353 = bone35.addOrReplaceChild("cube_r353", CubeListBuilder.create().texOffs(594, 167).addBox(-56.5F, 0.0F, 0.0F, 112.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r354 = bone35.addOrReplaceChild("cube_r354", CubeListBuilder.create().texOffs(574, 580).addBox(-56.5F, 0.0734F, 0.0151F, 112.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r355 = bone35.addOrReplaceChild("cube_r355", CubeListBuilder.create().texOffs(574, 568).addBox(-56.5F, -0.0482F, 0.0046F, 112.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, -0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r356 = bone35.addOrReplaceChild("cube_r356", CubeListBuilder.create().texOffs(532, 267).addBox(-56.5F, -0.0984F, 0.0546F, 112.0F, 24.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.1309F, 0.0F, 0.0F)); + PartDefinition bone38 = sail.addOrReplaceChild("bone38", CubeListBuilder.create(), PartPose.offset(0.5F, -109.0F, -43.5F)); + PartDefinition cube_r357 = bone38.addOrReplaceChild("cube_r357", CubeListBuilder.create().texOffs(627, 257).addBox(-49.5F, 0.0F, 0.0F, 99.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r358 = bone38.addOrReplaceChild("cube_r358", CubeListBuilder.create().texOffs(412, 196).addBox(-49.5F, 0.0734F, 0.0151F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r359 = bone38.addOrReplaceChild("cube_r359", CubeListBuilder.create().texOffs(0, 201).addBox(-49.5F, -0.0482F, 0.0046F, 99.0F, 12.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition cube_r360 = bone38.addOrReplaceChild("cube_r360", CubeListBuilder.create().texOffs(412, 204).addBox(-49.5F, 0.9016F, 1.9046F, 99.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 25.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone47 = sail.addOrReplaceChild("bone47", CubeListBuilder.create(), PartPose.offset(0.5F, -179.25F, -41.75F)); + PartDefinition cube_r361 = bone47.addOrReplaceChild("cube_r361", CubeListBuilder.create().texOffs(340, 314).addBox(-21.5F, 0.0F, 0.0F, 42.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r362 = bone47.addOrReplaceChild("cube_r362", CubeListBuilder.create().texOffs(230, 310).addBox(-21.5F, 0.0734F, 0.0151F, 42.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r363 = bone47.addOrReplaceChild("cube_r363", CubeListBuilder.create().texOffs(412, 160).addBox(-21.5F, -0.0482F, 0.0046F, 42.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0873F, 0.0F, 0.0F)); + PartDefinition bone48 = bone47.addOrReplaceChild("bone48", CubeListBuilder.create(), PartPose.offset(0.0F, 18.25F, -5.55F)); + PartDefinition cube_r364 = bone48.addOrReplaceChild("cube_r364", CubeListBuilder.create().texOffs(412, 68).addBox(-21.5F, 0.8016F, 1.6546F, 42.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone50 = sail.addOrReplaceChild("bone50", CubeListBuilder.create(), PartPose.offset(0.5F, -150.0F, -43.5F)); + PartDefinition cube_r365 = bone50.addOrReplaceChild("cube_r365", CubeListBuilder.create().texOffs(729, 362).addBox(-34.5F, 0.0F, 0.0F, 69.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.48F, 0.0F, 0.0F)); + PartDefinition cube_r366 = bone50.addOrReplaceChild("cube_r366", CubeListBuilder.create().texOffs(732, 527).addBox(-34.5F, 0.0734F, 0.0151F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.25F, -2.75F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r367 = bone50.addOrReplaceChild("cube_r367", CubeListBuilder.create().texOffs(729, 337).addBox(-34.5F, -0.0482F, 0.0046F, 69.0F, 17.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.25F, -4.15F, 0.0611F, 0.0F, 0.0F)); + PartDefinition cube_r368 = bone50.addOrReplaceChild("cube_r368", CubeListBuilder.create().texOffs(732, 535).addBox(-34.5F, 0.9016F, 1.9046F, 69.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 30.25F, -5.25F, 0.5236F, 0.0F, 0.0F)); + PartDefinition bone9 = bone31.addOrReplaceChild("bone9", + CubeListBuilder.create().texOffs(281, 72).addBox(-2.6742F, 0.7019F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(574, 475).addBox(-2.7492F, -2.2981F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .texOffs(163, 790).addBox(-3.0617F, -2.2981F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(531, 674).addBox(-2.6617F, -2.2981F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(94, 570) + .addBox(-2.7492F, 6.7019F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(537, 789).addBox(-3.0617F, 6.7019F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(668, 588) + .addBox(-2.6617F, 6.7019F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(566, 111).addBox(-11.6617F, -2.2981F, 93.9889F, 10.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(641, 741) + .addBox(-2.9617F, 0.7019F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(445, 789).addBox(-2.9617F, 3.7019F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(110, 654) + .addBox(-2.9617F, 3.7019F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(0, 789).addBox(-2.4617F, 0.7019F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(21.0421F, 12.0175F, -35.292F, 0.0F, 0.0F, 0.6981F)); + PartDefinition cube_r369 = bone9.addOrReplaceChild("cube_r369", CubeListBuilder.create().texOffs(438, 215).addBox(-5.4482F, -3.4012F, -9.8775F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3883F, 10.6448F, -98.8297F, 0.0802F, 0.3085F, -0.0826F)); + PartDefinition cube_r370 = bone9.addOrReplaceChild("cube_r370", CubeListBuilder.create().texOffs(255, 607).addBox(-2.2081F, -2.9099F, 11.0645F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.6115F, 9.7818F, -98.8646F, 0.0258F, 0.0042F, -0.001F)); + PartDefinition cube_r371 = bone9.addOrReplaceChild("cube_r371", CubeListBuilder.create().texOffs(438, 259).addBox(-5.8954F, -2.1248F, -9.7873F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4731F, 6.829F, -99.0556F, 0.1214F, 0.3244F, -0.0689F)); + PartDefinition cube_r372 = bone9.addOrReplaceChild("cube_r372", CubeListBuilder.create().texOffs(516, 633).addBox(-1.6698F, -2.9194F, 11.1827F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.4731F, 6.829F, -99.0556F, 0.0324F, 0.0192F, -0.0792F)); + PartDefinition cube_r373 = bone9.addOrReplaceChild("cube_r373", CubeListBuilder.create().texOffs(514, 558).addBox(-6.1922F, -2.4814F, -11.4009F, 1.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0404F, 2.2996F, -98.5559F, 0.1573F, 0.3457F, -0.1702F)); + PartDefinition cube_r374 = bone9.addOrReplaceChild("cube_r374", CubeListBuilder.create().texOffs(346, 881).addBox(-2.4402F, -3.3111F, -5.5048F, 1.0F, 2.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0965F, 1.4155F, -82.5869F, 0.0262F, 0.0401F, -0.1745F)); + PartDefinition cube_r375 = bone9.addOrReplaceChild("cube_r375", CubeListBuilder.create().texOffs(394, 475).addBox(-6.1607F, -3.4951F, -10.9177F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3337F, 4.7261F, -99.0056F, 0.1205F, 0.3635F, -0.2756F)); + PartDefinition cube_r376 = bone9.addOrReplaceChild("cube_r376", CubeListBuilder.create().texOffs(591, 633).addBox(1.682F, 10.2734F, 30.2905F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.0415F, -8.1671F, -118.5094F, 0.0262F, 0.0349F, -0.1748F)); + PartDefinition cube_r377 = bone9.addOrReplaceChild("cube_r377", CubeListBuilder.create().texOffs(516, 596).addBox(-2.0285F, -3.9575F, -5.9716F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -49.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition bone3 = bone31.addOrReplaceChild("bone3", + CubeListBuilder.create().texOffs(772, 880).addBox(-0.5F, -19.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).texOffs(674, 880).addBox(-0.5F, -16.5F, -22.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offset(20.5088F, 10.5175F, -101.4031F)); + PartDefinition cube_r378 = bone3.addOrReplaceChild("cube_r378", CubeListBuilder.create().texOffs(514, 534).addBox(-1.058F, -1.4265F, -21.0341F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.8756F, -3.0F, -21.9591F, 0.0062F, 0.3923F, 0.1331F)); + PartDefinition cube_r379 = bone3.addOrReplaceChild("cube_r379", CubeListBuilder.create().texOffs(130, 879).addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.0057F, 0.0433F, 0.131F)); + PartDefinition cube_r380 = bone3.addOrReplaceChild("cube_r380", CubeListBuilder.create().texOffs(136, 570).addBox(-0.468F, -1.1759F, -15.2654F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-8.6129F, -6.9984F, -41.096F, 0.1019F, 0.7262F, 0.2041F)); + PartDefinition cube_r381 = bone3.addOrReplaceChild("cube_r381", CubeListBuilder.create().texOffs(545, 0).addBox(-0.9272F, -1.4586F, -21.018F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5777F, -6.0165F, -21.9797F, 0.0372F, 0.3778F, 0.1821F)); + PartDefinition cube_r382 = bone3.addOrReplaceChild("cube_r382", CubeListBuilder.create().texOffs(397, 534).addBox(-1.0351F, -1.4104F, -21.0141F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0539F, -8.9794F, -21.9926F, 0.0388F, 0.3706F, 0.1672F)); + PartDefinition cube_r383 = bone3.addOrReplaceChild("cube_r383", CubeListBuilder.create().texOffs(412, 37).addBox(-1.105F, -1.1664F, -17.2161F, 1.0F, 3.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5081F, -9.6671F, -41.3983F, 0.0933F, 0.7192F, 0.1873F)); + PartDefinition cube_r384 = bone3.addOrReplaceChild("cube_r384", CubeListBuilder.create().texOffs(507, 880).addBox(-0.375F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, 11.0F, 0.0036F, 0.0215F, 0.1658F)); + PartDefinition cube_r385 = bone3.addOrReplaceChild("cube_r385", CubeListBuilder.create().texOffs(532, 215).addBox(-0.7189F, -1.3101F, -18.2664F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2825F, -12.514F, -41.3631F, 0.1757F, 0.6911F, 0.3133F)); + PartDefinition cube_r386 = bone3.addOrReplaceChild("cube_r386", CubeListBuilder.create().texOffs(336, 558).addBox(-0.9124F, -1.4777F, -21.004F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1257F, -12.0262F, -21.9984F, 0.0485F, 0.3546F, 0.1788F)); + PartDefinition cube_r387 = bone3.addOrReplaceChild("cube_r387", CubeListBuilder.create().texOffs(880, 513).addBox(-0.5F, -1.5F, -33.0F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -12.0F, 11.0F, -0.0003F, 0.0087F, 0.0393F)); + PartDefinition cube_r388 = bone3.addOrReplaceChild("cube_r388", CubeListBuilder.create().texOffs(0, 570).addBox(-0.651F, -1.4689F, -18.2692F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2505F, -15.0936F, -41.2304F, 0.0174F, 0.6842F, 0.0525F)); + PartDefinition cube_r389 = bone3.addOrReplaceChild("cube_r389", CubeListBuilder.create().texOffs(397, 558).addBox(-1.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -15.0F, -22.0F, 0.0145F, 0.3661F, 0.0467F)); + PartDefinition cube_r390 = bone3.addOrReplaceChild("cube_r390", CubeListBuilder.create().texOffs(455, 534).addBox(-0.8386F, -1.5F, -21.265F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.7435F, -18.0F, -41.4293F, 0.0F, 0.6981F, 0.0F)); + PartDefinition cube_r391 = bone3.addOrReplaceChild("cube_r391", CubeListBuilder.create().texOffs(455, 558).addBox(-1.0F, -1.5F, -21.0F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -18.0F, -22.0F, 0.0F, 0.3491F, 0.0F)); + PartDefinition bone6 = bone3.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(-8.6129F, -0.9984F, -52.096F)); + PartDefinition cube_r392 = bone6.addOrReplaceChild("cube_r392", CubeListBuilder.create().texOffs(94, 570).addBox(-0.9227F, -1.1394F, -15.3683F, 1.0F, 3.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 11.0F, 0.2251F, 0.7307F, 0.3829F)); + PartDefinition bone7 = bone3.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.3629F, 1.7516F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r393 = bone7.addOrReplaceChild("cube_r393", CubeListBuilder.create().texOffs(478, 558).addBox(-9.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, 0.7137F, 0.3778F)); + PartDefinition bone8 = bone3.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.3629F, 4.7516F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r394 = bone8.addOrReplaceChild("cube_r394", CubeListBuilder.create().texOffs(309, 16).addBox(-10.2904F, -2.0836F, -5.6814F, 1.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2217F, 0.7137F, 0.3778F)); + PartDefinition bone10 = bone3.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-10.3629F, 7.5016F, -52.096F, 0.0F, 0.0436F, 0.0F)); + PartDefinition cube_r395 = bone10.addOrReplaceChild("cube_r395", CubeListBuilder.create().texOffs(432, 16).addBox(-8.6852F, -2.3041F, -0.886F, 1.0F, 3.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, 2.0F, 0.0F, 0.1844F, 0.6835F, 0.3687F)); + PartDefinition cube_r396 = bone10.addOrReplaceChild("cube_r396", CubeListBuilder.create().texOffs(169, 146).addBox(-7.9949F, 0.4331F, 5.872F, 1.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.4122F, 4.5475F, -1.6111F, 0.3677F, 0.4737F, 1.0042F)); + PartDefinition cube_r397 = bone10.addOrReplaceChild("cube_r397", CubeListBuilder.create().texOffs(180, 605).addBox(-10.2265F, -2.1905F, -4.1465F, 1.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.2289F, 0.7172F, 0.4363F)); + PartDefinition bone4 = bone3.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition bone22 = bone31.addOrReplaceChild("bone22", + CubeListBuilder.create().texOffs(281, 72).mirror().addBox(1.6742F, 0.7019F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(574, 475).mirror() + .addBox(1.7492F, -2.2981F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(163, 790).mirror().addBox(2.0617F, -2.2981F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(531, 674).mirror().addBox(1.6617F, -2.2981F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(94, 570).mirror() + .addBox(1.7492F, 6.7019F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(537, 789).mirror().addBox(2.0617F, 6.7019F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(668, 588).mirror().addBox(1.6617F, 6.7019F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(566, 111).mirror() + .addBox(1.6617F, -2.2981F, 93.9889F, 10.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(641, 741).mirror().addBox(1.9617F, 0.7019F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(445, 789).mirror().addBox(1.9617F, 3.7019F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(110, 654).mirror() + .addBox(1.9617F, 3.7019F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 789).mirror().addBox(1.4617F, 0.7019F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-21.0246F, 12.0175F, -35.292F, 0.0F, 0.0F, -0.6981F)); + PartDefinition cube_r398 = bone22.addOrReplaceChild("cube_r398", CubeListBuilder.create().texOffs(438, 215).mirror().addBox(4.4482F, -3.4012F, -9.8775F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3883F, 10.6448F, -98.8297F, 0.0802F, -0.3085F, 0.0826F)); + PartDefinition cube_r399 = bone22.addOrReplaceChild("cube_r399", CubeListBuilder.create().texOffs(255, 607).mirror().addBox(1.2081F, -2.9099F, 11.0645F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.6115F, 9.7818F, -98.8646F, 0.0258F, -0.0042F, 0.001F)); + PartDefinition cube_r400 = bone22.addOrReplaceChild("cube_r400", CubeListBuilder.create().texOffs(438, 259).mirror().addBox(4.8954F, -2.1248F, -9.7873F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.4731F, 6.829F, -99.0556F, 0.1214F, -0.3244F, 0.0689F)); + PartDefinition cube_r401 = bone22.addOrReplaceChild("cube_r401", CubeListBuilder.create().texOffs(516, 633).mirror().addBox(0.6698F, -2.9194F, 11.1827F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.4731F, 6.829F, -99.0556F, 0.0324F, -0.0192F, 0.0792F)); + PartDefinition cube_r402 = bone22.addOrReplaceChild("cube_r402", CubeListBuilder.create().texOffs(514, 558).mirror().addBox(5.1922F, -2.4814F, -11.4009F, 1.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0404F, 2.2996F, -98.5559F, 0.1573F, -0.3457F, 0.1702F)); + PartDefinition cube_r403 = bone22.addOrReplaceChild("cube_r403", CubeListBuilder.create().texOffs(346, 881).mirror().addBox(1.4402F, -3.3111F, -5.5048F, 1.0F, 2.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.0965F, 1.4155F, -82.5869F, 0.0262F, -0.0401F, 0.1745F)); + PartDefinition cube_r404 = bone22.addOrReplaceChild("cube_r404", CubeListBuilder.create().texOffs(394, 475).mirror().addBox(5.1607F, -3.4951F, -10.9177F, 1.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3337F, 4.7261F, -99.0056F, 0.1205F, -0.3635F, 0.2756F)); + PartDefinition cube_r405 = bone22.addOrReplaceChild("cube_r405", CubeListBuilder.create().texOffs(591, 633).mirror().addBox(-2.682F, 10.2734F, 30.2905F, 1.0F, 3.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(8.0415F, -8.1671F, -118.5094F, 0.0262F, -0.0349F, 0.1748F)); + PartDefinition cube_r406 = bone22.addOrReplaceChild("cube_r406", CubeListBuilder.create().texOffs(516, 596).mirror().addBox(1.0285F, -3.9575F, -5.9716F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -49.1111F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition bone23 = bone31.addOrReplaceChild("bone23", + CubeListBuilder.create().texOffs(281, 131).addBox(-3.5175F, 1.8519F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).texOffs(0, 611).addBox(-3.5925F, -1.1481F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .texOffs(210, 793).addBox(-3.905F, -1.1481F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(675, 85).addBox(-3.505F, -1.1481F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(594, 0) + .addBox(-3.5925F, 7.8519F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).texOffs(141, 794).addBox(-3.5925F, -2.1481F, -87.1111F, 1.0F, 4.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(883, 0) + .addBox(-3.5175F, 1.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(882, 371).addBox(-3.5925F, 7.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(792, 648) + .addBox(-3.905F, 7.8519F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(661, 674).addBox(-3.505F, 7.8519F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).texOffs(392, 745) + .addBox(-3.805F, 1.8519F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(584, 792).addBox(-3.805F, 4.8519F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(252, 654) + .addBox(-3.705F, 4.8519F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).texOffs(792, 51).addBox(-3.305F, 1.8519F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).texOffs(180, 586) + .addBox(-14.505F, -1.1481F, 93.8889F, 12.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(13.0421F, 21.0175F, -35.292F, 0.0F, 0.0F, 1.1781F)); + PartDefinition cube_r407 = bone23.addOrReplaceChild("cube_r407", CubeListBuilder.create().texOffs(591, 596).addBox(-2.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -81.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition cube_r408 = bone23.addOrReplaceChild("cube_r408", CubeListBuilder.create().texOffs(455, 16).addBox(-3.938F, -2.6481F, -9.1897F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3208F, 10.5F, -98.1111F, 0.0F, 0.0611F, 0.0F)); + PartDefinition cube_r409 = bone23.addOrReplaceChild("cube_r409", CubeListBuilder.create().texOffs(485, 215).addBox(-4.1658F, -3.3608F, -9.3051F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0639F, 7.4589F, -98.107F, -0.013F, 0.0952F, -0.2187F)); + PartDefinition cube_r410 = bone23.addOrReplaceChild("cube_r410", CubeListBuilder.create().texOffs(412, 16).addBox(-5.9871F, -1.3215F, 2.4597F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.9085F, 6.2676F, -107.237F, 0.1411F, 0.1485F, 0.1232F)); + PartDefinition cube_r411 = bone23.addOrReplaceChild("cube_r411", CubeListBuilder.create().texOffs(499, 0).addBox(-5.2531F, -1.2504F, -9.1392F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3208F, 1.0F, -98.6111F, 0.1547F, 0.2242F, -0.2691F)); + PartDefinition cube_r412 = bone23.addOrReplaceChild("cube_r412", CubeListBuilder.create().texOffs(627, 179).addBox(-2.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5333F, 7.5F, -49.1111F, 0.0F, -0.0175F, -0.0873F)); + PartDefinition bone24 = bone31.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(281, 131).mirror().addBox(2.5175F, 1.8519F, -55.1111F, 1.0F, 3.0F, 56.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 611).mirror() + .addBox(2.5925F, -1.1481F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(210, 793).mirror().addBox(2.905F, -1.1481F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(675, 85).mirror().addBox(2.505F, -1.1481F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(594, 0).mirror().addBox(2.5925F, 7.8519F, -55.1111F, 1.0F, 3.0F, 40.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(141, 794).mirror().addBox(2.5925F, -2.1481F, -87.1111F, 1.0F, 4.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(883, 0).mirror() + .addBox(2.5175F, 1.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(882, 371).mirror().addBox(2.5925F, 7.8519F, -87.1111F, 1.0F, 3.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(792, 648).mirror().addBox(2.905F, 7.8519F, -15.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(661, 674).mirror().addBox(2.505F, 7.8519F, 29.8889F, 1.0F, 3.0F, 64.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(392, 745).mirror().addBox(2.805F, 1.8519F, 45.8889F, 1.0F, 3.0F, 48.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(584, 792).mirror() + .addBox(2.805F, 4.8519F, -21.1111F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(252, 654).mirror().addBox(2.705F, 4.8519F, 23.8889F, 1.0F, 3.0F, 70.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(792, 51) + .mirror().addBox(2.305F, 1.8519F, 0.8889F, 1.0F, 3.0F, 45.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(180, 586).mirror().addBox(2.505F, -1.1481F, 93.8889F, 12.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-13.0246F, 21.0175F, -35.292F, 0.0F, 0.0F, -1.1781F)); + PartDefinition cube_r413 = bone24.addOrReplaceChild("cube_r413", CubeListBuilder.create().texOffs(591, 596).mirror().addBox(1.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -81.1111F, 0.0F, 0.0175F, 0.0873F)); + PartDefinition cube_r414 = bone24.addOrReplaceChild("cube_r414", CubeListBuilder.create().texOffs(455, 16).mirror().addBox(2.938F, -2.6481F, -9.1897F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3208F, 10.5F, -98.1111F, 0.0F, -0.0611F, 0.0F)); + PartDefinition cube_r415 = bone24.addOrReplaceChild("cube_r415", CubeListBuilder.create().texOffs(485, 215).mirror().addBox(3.1658F, -3.3608F, -9.3051F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0639F, 7.4589F, -98.107F, -0.013F, -0.0952F, 0.2187F)); + PartDefinition cube_r416 = bone24.addOrReplaceChild("cube_r416", CubeListBuilder.create().texOffs(412, 16).mirror().addBox(4.9871F, -1.3215F, 2.4597F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.9085F, 6.2676F, -107.237F, 0.1411F, -0.1485F, -0.1232F)); + PartDefinition cube_r417 = bone24.addOrReplaceChild("cube_r417", CubeListBuilder.create().texOffs(499, 0).mirror().addBox(4.2531F, -1.2504F, -9.1392F, 1.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.3208F, 1.0F, -98.6111F, 0.1547F, -0.2242F, 0.2691F)); + PartDefinition cube_r418 = bone24.addOrReplaceChild("cube_r418", CubeListBuilder.create().texOffs(627, 179).mirror().addBox(1.9687F, -2.8852F, -5.9552F, 1.0F, 3.0F, 34.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5333F, 7.5F, -49.1111F, 0.0F, 0.0175F, 0.0873F)); + return LayerDefinition.create(meshdefinition, 1024, 1024); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone31.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutter.java b/src/main/java/hal/studios/hpm/client/model/Modelcutter.java new file mode 100644 index 0000000..cf377de --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutter.java @@ -0,0 +1,406 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutter extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutter"), "main"); + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart wheel; + public final ModelPart mast2; + public final ModelPart bone19; + public final ModelPart flag2; + public final ModelPart bone; + public final ModelPart bone20; + public final ModelPart bone21; + public final ModelPart bone22; + public final ModelPart mast; + public final ModelPart bb_main; + + public Modelcutter(ModelPart root) { + this.bone13 = root.getChild("bone13"); + this.flag = root.getChild("flag"); + this.wheel = root.getChild("wheel"); + this.mast2 = root.getChild("mast2"); + this.bone19 = root.getChild("bone19"); + this.flag2 = root.getChild("flag2"); + this.bone = root.getChild("bone"); + this.bone20 = root.getChild("bone20"); + this.bone21 = root.getChild("bone21"); + this.bone22 = root.getChild("bone22"); + this.mast = root.getChild("mast"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone13 = partdefinition.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(120, 0).addBox(-0.625F, -25.0F, 32.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -39.0F)); + PartDefinition cube_r1 = bone13.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r2 = bone13.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r3 = bone13.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r4 = bone13.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r5 = bone13.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r6 = bone13.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r7 = bone13.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(0, 0).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 75.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition flag = partdefinition.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -23.0F, -30.8384F)); + PartDefinition cube_r8 = flag.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r9 = flag.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast2 = partdefinition.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -39.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, 11.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r10 = bone6.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r11 = bone11.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r12 = bone11.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r13 = bone12.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r14 = bone12.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r15 = bone14.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r16 = bone14.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r17 = bone14.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r18 = bone15.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r19 = bone16.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r20 = bone16.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r21 = bone17.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r22 = bone17.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r23 = bone18.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r24 = bone18.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r25 = bone18.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone19 = partdefinition.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, 10.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r26 = chestlid.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r27 = chestlid.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r28 = chestlid.addOrReplaceChild("cube_r28", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r29 = chestlid.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r30 = chestlid.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition flag2 = partdefinition.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -23.0F, -6.8384F)); + PartDefinition cube_r31 = flag2.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r32 = flag2.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 24.0F, 0.0F)); + PartDefinition cube_r33 = bone.addOrReplaceChild("cube_r33", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = partdefinition.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, 8.375F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r34 = bone20.addOrReplaceChild("cube_r34", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = partdefinition.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, 8.375F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r35 = bone21.addOrReplaceChild("cube_r35", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone22 = partdefinition.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, 8.375F, -36.1749F, 0.0F, 1.4835F, 0.0F)); + PartDefinition cube_r36 = bone22.addOrReplaceChild("cube_r36", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -39.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -13.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r37 = bone2.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r38 = bone3.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r39 = bone3.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r40 = bone4.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r41 = bone4.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r42 = bone5.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r43 = bone5.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r44 = bone5.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r45 = bone7.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r46 = bone8.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r47 = bone8.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r48 = bone9.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r49 = bone9.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r50 = bone10.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r51 = bone10.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r52 = bone10.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(96, 58).addBox(-1.5F, -2.625F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171) + .addBox(4.5F, -9.0F, -11.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169).addBox(7.5F, -9.0F, -38.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 15.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 15.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70) + .addBox(-6.8938F, -12.1688F, 14.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70).addBox(-1.6062F, -12.2625F, 14.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 15.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 15.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 15.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.0F, -27.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, -7.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, -5.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-1.0F, -8.0F, 17.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -38.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -38.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250).addBox(-12.0F, -16.0F, 17.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r53 = bb_main.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -31.2702F, -0.0118F, -0.0129F, -0.4799F)); + PartDefinition cube_r54 = bb_main.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(238, 123).addBox(0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -31.2702F, -0.0118F, 0.0129F, 0.4799F)); + PartDefinition cube_r55 = bb_main.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -7.2702F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r56 = bb_main.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -7.2702F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r57 = bb_main.addOrReplaceChild("cube_r57", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 32) + .addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34).addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r58 = bb_main.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r59 = bb_main.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -50.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r60 = bb_main.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r61 = bb_main.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r62 = bb_main.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r63 = bb_main.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r64 = bb_main.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r65 = bb_main.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r66 = bb_main.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r67 = bb_main.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r68 = bb_main.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r69 = bb_main.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r70 = bb_main.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r71 = bb_main.addOrReplaceChild("cube_r71", + CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r72 = bb_main.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r73 = bb_main.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r74 = bb_main.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r75 = bb_main.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r76 = bb_main.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r77 = bb_main.addOrReplaceChild("cube_r77", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r78 = bb_main.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -43.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r79 = bb_main.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -43.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r80 = bb_main.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r81 = bb_main.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -38.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r82 = bb_main.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -38.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r83 = bb_main.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r84 = bb_main.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r85 = bb_main.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r86 = bb_main.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r87 = bb_main.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r88 = bb_main.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r89 = bb_main.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r90 = bb_main.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r91 = bb_main.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r92 = bb_main.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r93 = bb_main.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r94 = bb_main + .addOrReplaceChild( + "cube_r94", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r95 = bb_main.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r96 = bb_main + .addOrReplaceChild( + "cube_r96", CubeListBuilder.create().texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(194, 56) + .addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171).addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r97 = bb_main.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r98 = bb_main.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r99 = bb_main.addOrReplaceChild("cube_r99", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r100 = bb_main.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r101 = bb_main.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r102 = bb_main.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r103 = bb_main.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r104 = bb_main.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r105 = bb_main.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r106 = bb_main.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r107 = bb_main.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r108 = bb_main.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r109 = bb_main.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -50.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r110 = bb_main.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r111 = bb_main.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r112 = bb_main.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r113 = bb_main + .addOrReplaceChild( + "cube_r113", CubeListBuilder.create().texOffs(72, 171).addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161) + .addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r114 = bb_main.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r115 = bb_main.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r116 = bb_main.addOrReplaceChild("cube_r116", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r117 = bb_main.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r118 = bb_main.addOrReplaceChild("cube_r118", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r119 = bb_main.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r120 = bb_main.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r121 = bb_main.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r122 = bb_main.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r123 = bb_main.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r124 = bb_main.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r125 = bb_main.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r126 = bb_main.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r127 = bb_main.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.7854F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone19.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone20.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone21.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone22.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedDamaged.java b/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedDamaged.java new file mode 100644 index 0000000..f94630a --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedDamaged.java @@ -0,0 +1,472 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelcutterArmedDamaged extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutter_armed_damaged"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone15; + public final ModelPart bone16; + public final ModelPart bone17; + public final ModelPart bone18; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + public final ModelPart bone23; + public final ModelPart chest2; + public final ModelPart CannonLeft; + public final ModelPart CannonRight; + public final ModelPart CannonFront; + public final ModelPart bb_main; + + public ModelcutterArmedDamaged(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone15 = this.mast.getChild("bone15"); + this.bone16 = this.bone15.getChild("bone16"); + this.bone17 = this.bone15.getChild("bone17"); + this.bone18 = this.bone17.getChild("bone18"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + this.bone23 = this.Decorations.getChild("bone23"); + this.chest2 = this.bone23.getChild("chest2"); + this.CannonLeft = root.getChild("CannonLeft"); + this.CannonRight = root.getChild("CannonRight"); + this.CannonFront = root.getChild("CannonFront"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8937F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0812F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.75F, 24.0F, -11.0F, 0.0F, 0.0F, -0.1745F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r72 = Hull + .addOrReplaceChild( + "cube_r72", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r73 = Hull.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -70.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(152, 270) + .addBox(0.0F, -65.0F, 1.0F, 0.0F, 65.0F, 49.0F, new CubeDeformation(0.0F)).texOffs(210, 5).addBox(-0.75F, -20.0F, 0.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.0F, -15.0F, 0.0F, 0.0F, -0.4363F)); + PartDefinition cube_r75 = mast.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(344, 168).addBox(0.0F, -27.0F, -1.0F, 0.0F, 27.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.5F, -36.0F, 1.25F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r76 = mast.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(224, 19).addBox(0.0F, -1.0F, -1.0F, 1.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.75F, -36.0F, 1.0F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r77 = mast.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(232, 268).addBox(-0.1686F, -55.1491F, -1.2717F, 0.0F, 65.0F, 51.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -8.0F, -49.0F, 0.0228F, -0.0945F, 0.0435F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -27.5F, 11.8431F)); + PartDefinition cube_r78 = bone2.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -26.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r79 = bone3.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -38.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone3.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -38.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r81 = bone4.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r82 = bone4.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -38.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r83 = bone5.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r84 = bone5.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -38.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r85 = bone5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -38.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, -9.5F, 11.8431F)); + PartDefinition cube_r86 = bone7.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = bone8.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r88 = bone8.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r89 = bone9.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone9.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r91 = bone10.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r92 = bone10.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r93 = bone10.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, -26.5F, 11.8431F)); + PartDefinition cube_r94 = bone15.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(272, 230).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r95 = bone16.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(255, 230).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r96 = bone16.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(268, 230).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r97 = bone17.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(247, 230).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r98 = bone17.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(251, 230).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r99 = bone18.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(287, 124).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r100 = bone18.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(239, 230).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r101 = bone18.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(243, 230).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 2.0F, -0.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r102 = bone6.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r103 = bone11.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r104 = bone11.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r105 = bone12.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r106 = bone12.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r107 = bone14.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r108 = bone14.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r109 = bone14.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, -4.0F, -8.0F)); + PartDefinition cube_r110 = bone13.addOrReplaceChild("cube_r110", + CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(242, 0).addBox(0.125F, 41.5F, -23.0F, 1.0F, 1.0F, 44.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.625F, -59.5F, 5.5F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r111 = bone13.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(298, 220).addBox(3.3072F, 13.9539F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.2132F, 0.762F, 0.3038F)); + PartDefinition cube_r112 = bone13.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(298, 205).addBox(0.8247F, -0.5492F, -21.5F, 0.0F, 15.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.0436F, 0.7844F, 0.0617F)); + PartDefinition cube_r113 = bone13.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(298, 190).addBox(0.8746F, -14.4486F, -21.5F, 0.0F, 14.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.0436F, 0.7844F, -0.0617F)); + PartDefinition cube_r114 = bone13.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(298, 183).addBox(3.356F, -20.9431F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.2132F, 0.762F, -0.3038F)); + PartDefinition cube_r115 = bone13.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(358, 22).mirror().addBox(-7.125F, -0.5F, 21.0F, 13.0F, 23.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.625F, -17.5F, 32.0F, 0.0F, 2.3562F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -18.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -18.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, 0.1616F)); + PartDefinition cube_r116 = flag.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -17.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r117 = flag.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -17.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-7.5195F, -13.625F, -36.1749F, 0.2182F, 0.6981F, 0.0F)); + PartDefinition cube_r118 = bone22.addOrReplaceChild("cube_r118", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-7.5195F, -13.625F, -12.1749F, -0.189F, 0.3463F, -0.5131F)); + PartDefinition cube_r119 = bone21.addOrReplaceChild("cube_r119", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(2.4805F, -15.625F, -11.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r120 = bone20.addOrReplaceChild("cube_r120", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r121 = bone.addOrReplaceChild("cube_r121", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-7.0F, -14.0F, 11.0F, 0.0787F, -0.6194F, 0.3783F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r122 = chestlid.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r123 = chestlid.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r124 = chestlid.addOrReplaceChild("cube_r124", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r125 = chestlid.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r126 = chestlid.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition bone23 = Decorations.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(7.0F, -14.0F, -41.0F, 0.0F, 2.2253F, 0.0F)); + PartDefinition chest2 = bone23.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition CannonLeft = partdefinition.addOrReplaceChild("CannonLeft", + CubeListBuilder.create().texOffs(255, 23).addBox(-1.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(256, 11).addBox(-2.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.5F, 11.75F, -27.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r127 = CannonLeft.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(274, 6).addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -3.0F, 0.0F, 0.0F, 0.0F, -0.5236F)); + PartDefinition CannonRight = partdefinition.addOrReplaceChild("CannonRight", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-8.5F, 15.75F, -27.5F)); + PartDefinition cube_r128 = CannonRight.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -3.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition CannonFront = partdefinition.addOrReplaceChild("CannonFront", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.5F, 9.75F, -50.5F, 1.5708F, -1.4835F, -1.5708F)); + PartDefinition cube_r129 = CannonFront.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -3.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(259, 4).addBox(8.0F, -15.25F, -29.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(8.0F, -15.25F, -25.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).mirror() + .addBox(-11.0F, -11.25F, -29.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(259, 4).mirror().addBox(-11.0F, -11.25F, -25.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r130 = bb_main.addOrReplaceChild("cube_r130", + CubeListBuilder.create().texOffs(259, 4).addBox(-2.5F, -2.5F, -2.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(-2.5F, -2.5F, 2.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5F, -12.75F, -49.5F, 0.0F, 1.5708F, 0.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonLeft.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonRight.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonFront.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = Mth.cos(limbSwing * 1.0F) * 1.0F * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedWreck.java b/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedWreck.java new file mode 100644 index 0000000..0916694 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelcutterArmedWreck.java @@ -0,0 +1,444 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelcutterArmedWreck extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutter_armed_wreck"), "main"); + public final ModelPart Hull; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + public final ModelPart bone23; + public final ModelPart chest2; + public final ModelPart CannonFront; + public final ModelPart CannonRight; + public final ModelPart CannonLeft; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone15; + public final ModelPart bone16; + public final ModelPart bone17; + public final ModelPart bone18; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + + public ModelcutterArmedWreck(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.Decorations = this.Hull.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + this.bone23 = this.Decorations.getChild("bone23"); + this.chest2 = this.bone23.getChild("chest2"); + this.CannonFront = this.Hull.getChild("CannonFront"); + this.CannonRight = this.Hull.getChild("CannonRight"); + this.CannonLeft = this.Hull.getChild("CannonLeft"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone15 = this.mast.getChild("bone15"); + this.bone16 = this.bone15.getChild("bone16"); + this.bone17 = this.bone15.getChild("bone17"); + this.bone18 = this.bone17.getChild("bone18"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8937F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0812F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(259, 4) + .addBox(7.046F, -13.9179F, -18.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(7.046F, -13.9179F, -14.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).mirror() + .addBox(-11.75F, -13.25F, -14.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(259, 4).mirror().addBox(-11.75F, -13.25F, -18.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.75F, 24.0F, -11.0F, 0.0F, 0.0F, -0.9163F)); + PartDefinition cube_r1 = Hull.addOrReplaceChild("cube_r1", + CubeListBuilder.create().texOffs(259, 4).addBox(-2.5F, -2.1527F, 4.2196F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(-2.5F, -2.1527F, -0.2804F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.25F, -12.75F, -38.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r3 = Hull + .addOrReplaceChild( + "cube_r3", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r6 = Hull.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r7 = Hull + .addOrReplaceChild( + "cube_r7", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r72 = Hull.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r73 = Hull + .addOrReplaceChild( + "cube_r73", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r75 = Hull.addOrReplaceChild("cube_r75", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition Decorations = Hull.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offset(0.25F, 0.0F, 11.0F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-7.5195F, -13.625F, -36.1749F, 0.2182F, 0.6981F, 0.0F)); + PartDefinition cube_r76 = bone22.addOrReplaceChild("cube_r76", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.0F, -6.0F, 0.0F, 0.0F, 0.0F, 1.0472F)); + PartDefinition cube_r77 = bone.addOrReplaceChild("cube_r77", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-7.0F, -14.0F, 11.0F, 0.0787F, -0.6194F, 0.3783F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r78 = chestlid.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r79 = chestlid.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r80 = chestlid.addOrReplaceChild("cube_r80", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r81 = chestlid.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r82 = chestlid.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition bone23 = Decorations.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(7.0F, -14.0F, -41.0F, 0.0F, 2.2253F, 0.0F)); + PartDefinition chest2 = bone23.addOrReplaceChild("chest2", CubeListBuilder.create(), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition chest_r1 = chest2.addOrReplaceChild("chest_r1", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -7.0F, 8.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -2.0F, 25.0F, 0.3927F, -0.5672F, 0.0F)); + PartDefinition CannonFront = Hull.addOrReplaceChild("CannonFront", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5303F, -2.404F, -3.4696F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5303F, -2.654F, -3.9696F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.25F, -14.25F, -39.5F, 1.5708F, -1.4835F, -1.5708F)); + PartDefinition cube_r83 = CannonFront.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.3532F, -1.1852F, -2.4696F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -3.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition CannonRight = Hull.addOrReplaceChild("CannonRight", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5F, -4.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5F, -5.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-11.25F, -8.25F, -16.5F)); + PartDefinition cube_r84 = CannonRight.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -5.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition CannonLeft = Hull.addOrReplaceChild("CannonLeft", + CubeListBuilder.create().texOffs(255, 23).addBox(0.5795F, -1.9281F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(256, 11).addBox(-0.4205F, -2.1781F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.75F, -12.25F, -16.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r85 = CannonLeft.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(274, 6).addBox(0.89F, 0.2515F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -3.0F, 0.0F, 0.0F, 0.0F, -0.5236F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -70.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.0F, -15.0F, 0.0F, 0.0F, -1.6144F)); + PartDefinition cube_r86 = mast.addOrReplaceChild("cube_r86", + CubeListBuilder.create().texOffs(210, 5).addBox(-0.75F, -1.0F, -1.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(152, 270).addBox(0.0F, -46.0F, 0.0F, 0.0F, 65.0F, 49.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -19.0F, 1.0F, 0.0F, -0.3927F, 0.0F)); + PartDefinition cube_r87 = mast.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(344, 168).addBox(0.0F, -27.0F, -1.0F, 0.0F, 27.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.5F, -36.0F, 0.25F, 0.0381F, -0.1704F, -0.2214F)); + PartDefinition cube_r88 = mast.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(224, 19).addBox(0.0F, -1.0F, -1.0F, 1.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.75F, -36.0F, 1.0F, 0.0381F, -0.1704F, -0.2214F)); + PartDefinition cube_r89 = mast.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(232, 268).addBox(-0.1686F, -55.1491F, -1.2716F, 0.0F, 65.0F, 51.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -8.0F, -49.0F, 0.0228F, -0.0945F, 0.0435F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -27.5F, 11.8431F)); + PartDefinition cube_r90 = bone2.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -26.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r91 = bone3.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -38.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r92 = bone3.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -38.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r93 = bone4.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r94 = bone4.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -38.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r95 = bone5.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r96 = bone5.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -38.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r97 = bone5.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -38.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, -9.5F, 11.8431F)); + PartDefinition cube_r98 = bone7.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r99 = bone8.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r100 = bone8.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r101 = bone9.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r102 = bone9.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r103 = bone10.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r104 = bone10.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r105 = bone10.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, -26.5F, 11.8431F)); + PartDefinition cube_r106 = bone15.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(272, 230).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r107 = bone16.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(255, 230).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r108 = bone16.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(268, 230).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r109 = bone17.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(247, 230).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r110 = bone17.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(251, 230).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r111 = bone18.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(287, 124).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r112 = bone18.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(239, 230).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r113 = bone18.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(243, 230).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 2.0F, -0.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r114 = bone6.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r115 = bone11.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r116 = bone11.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r117 = bone12.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r118 = bone12.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r119 = bone14.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r120 = bone14.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r121 = bone14.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, -4.0F, -8.0F)); + PartDefinition cube_r122 = bone13.addOrReplaceChild("cube_r122", + CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(242, 0).addBox(0.125F, 41.5F, -23.0F, 1.0F, 1.0F, 44.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.625F, -59.5F, 5.5F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r123 = bone13.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(298, 220).addBox(3.3072F, 13.9539F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.2132F, 0.762F, 0.3038F)); + PartDefinition cube_r124 = bone13.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(298, 205).addBox(0.8247F, -0.5492F, -21.5F, 0.0F, 15.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.0436F, 0.7844F, 0.0617F)); + PartDefinition cube_r125 = bone13.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(298, 190).addBox(0.8746F, -14.4486F, -21.5F, 0.0F, 14.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.0436F, 0.7844F, -0.0617F)); + PartDefinition cube_r126 = bone13.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(298, 183).addBox(3.356F, -20.9431F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.2132F, 0.762F, -0.3038F)); + PartDefinition cube_r127 = bone13.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(358, 22).mirror().addBox(-7.125F, -0.5F, 21.0F, 13.0F, 23.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.625F, -17.5F, 32.0F, 0.0F, 2.3562F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -18.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -18.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, 0.1616F)); + PartDefinition cube_r128 = flag.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -17.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r129 = flag.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -17.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelcutterDamagedSails.java b/src/main/java/hal/studios/hpm/client/model/ModelcutterDamagedSails.java new file mode 100644 index 0000000..cb5174b --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelcutterDamagedSails.java @@ -0,0 +1,408 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelcutterDamagedSails extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutter_damaged_sails"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + + public ModelcutterDamagedSails(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8937F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0812F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -11.0F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r72 = Hull + .addOrReplaceChild( + "cube_r72", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r73 = Hull.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -39.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, -15) + .addBox(0.0F, -33.0F, -60.0F, 0.0F, 47.0F, 74.0F, new CubeDeformation(0.0F)).texOffs(210, 5).addBox(-0.75F, -6.0F, -18.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 1.0F, 3.0F)); + PartDefinition cube_r75 = mast.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(94, 319).addBox(-12.0F, -56.0F, -1.0F, 24.0F, 65.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.7625F, -58.25F, -0.8378F, 0.0F, 0.0F)); + PartDefinition cube_r76 = mast.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(36, 329).addBox(-12.0F, -55.0F, 1.0F, 24.0F, 55.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 12.25F, 13.0F, 0.6196F, 0.0F, 0.0F)); + PartDefinition cube_r77 = mast.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(0, 339).mirror().addBox(-1.0F, -28.0F, -18.0F, 0.0F, 28.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-10.0F, 13.0F, -8.9F, 0.0F, 0.0F, 0.3927F)); + PartDefinition cube_r78 = mast.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(0, 339).addBox(1.0F, -28.0F, -18.0F, 0.0F, 28.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(12.0F, 11.0F, -8.9F, 0.0F, 0.0F, 2.0071F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r79 = bone2.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r80 = bone3.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r81 = bone3.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r82 = bone4.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r83 = bone4.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r84 = bone5.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r85 = bone5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r86 = bone5.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r87 = bone7.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r88 = bone8.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r89 = bone8.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r90 = bone9.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r91 = bone9.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r92 = bone10.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r93 = bone10.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r94 = bone10.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 16.0F, -18.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r95 = bone6.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r96 = bone11.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r97 = bone11.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r98 = bone12.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r99 = bone12.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r100 = bone14.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r101 = bone14.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r102 = bone14.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, 10.0F, -26.0F)); + PartDefinition cube_r103 = bone13.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(108, 245).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r104 = bone13.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(108, 241).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r105 = bone13.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(108, 233).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r106 = bone13.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(108, 229).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r107 = bone13.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(108, 227).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r108 = bone13.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -43.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r109 = bone13.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0873F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -37.0F, -17.8384F)); + PartDefinition cube_r110 = flag.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r111 = flag.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -15.625F, -36.1749F, 0.0F, 1.4835F, 0.0F)); + PartDefinition cube_r112 = bone22.addOrReplaceChild("cube_r112", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -15.625F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r113 = bone21.addOrReplaceChild("cube_r113", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, -15.625F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r114 = bone20.addOrReplaceChild("cube_r114", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r115 = bone.addOrReplaceChild("cube_r115", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r116 = chestlid.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r117 = chestlid.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r118 = chestlid.addOrReplaceChild("cube_r118", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r119 = chestlid.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r120 = chestlid.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = Mth.cos(limbSwing * 1.0F) * 1.0F * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelcutterRearWreckremade.java b/src/main/java/hal/studios/hpm/client/model/ModelcutterRearWreckremade.java new file mode 100644 index 0000000..8b0ac7b --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelcutterRearWreckremade.java @@ -0,0 +1,267 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelcutterRearWreckremade extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutter_rear_wreckremade"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + + public ModelcutterRearWreckremade(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192).addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(85, 27) + .addBox(-4.5F, -3.0F, -2.5F, 3.0F, 2.0F, 29.0F, new CubeDeformation(0.0F)).texOffs(123, 85).addBox(-1.5F, -2.625F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(83, 25).mirror() + .addBox(1.5F, -3.0F, -4.5F, 3.0F, 2.0F, 31.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42).addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181) + .addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179).addBox(-6.8937F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49) + .addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19).addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.0812F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25).addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(254, 0) + .addBox(-10.0F, -9.0F, 3.0F, 22.0F, 9.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.3F, 24.0F, -11.0F, 0.0F, 0.0F, 0.0873F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(79, 133).mirror().addBox(4.3467F, 0.1647F, -5.0F, 3.0F, 1.0F, 35.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(90, 144).addBox(-7.3467F, 0.1647F, 6.0F, 3.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).addBox(-11.7417F, + 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(181, 146).addBox(-1.5F, -1.0F, -6.5F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.6318F, -3.6096F, 2.4825F, -0.0785F, 0.0F, 0.7854F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(141, 21).mirror().addBox(-9.422F, 10.3831F, -3.014F, 2.0F, 2.0F, 33.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(134, 14).addBox(7.422F, 10.3831F, -10.014F, 2.0F, 2.0F, 40.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", + CubeListBuilder.create().texOffs(206, 99).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 172).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", + CubeListBuilder.create().texOffs(72, 171).addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -53.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.0F, -15.0F, 0.0F, 0.0F, 1.5272F)); + PartDefinition cube_r26 = mast.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(210, 5).addBox(0.0F, -1.0F, -1.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)).texOffs(0, -15).addBox(0.75F, -28.0F, -43.0F, 0.0F, 47.0F, 74.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.75F, -19.0F, 1.0F, 0.0F, 0.3927F, 0.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -27.5F, 11.8431F)); + PartDefinition cube_r27 = bone2.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r28 = bone3.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r29 = bone3.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r30 = bone4.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r31 = bone4.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r32 = bone5.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r33 = bone5.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r34 = bone5.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, -9.5F, 11.8431F)); + PartDefinition cube_r35 = bone7.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r36 = bone8.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r37 = bone8.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r38 = bone9.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r39 = bone9.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r40 = bone10.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r41 = bone10.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r42 = bone10.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 2.0F, -0.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r43 = bone6.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r44 = bone11.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r45 = bone11.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r46 = bone12.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r47 = bone12.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r48 = bone14.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r49 = bone14.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r50 = bone14.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, -4.0F, -8.0F)); + PartDefinition cube_r51 = bone13.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(108, 245).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r52 = bone13.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(108, 241).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r53 = bone13.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(108, 233).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r54 = bone13.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(108, 229).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r55 = bone13.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(108, 227).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r56 = bone13.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -43.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r57 = bone13.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0873F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, 0.1616F)); + PartDefinition cube_r58 = flag.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r59 = flag.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offsetAndRotation(-2.0F, 24.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r60 = bone.addOrReplaceChild("cube_r60", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r61 = chestlid.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r62 = chestlid.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r63 = chestlid.addOrReplaceChild("cube_r63", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r64 = chestlid.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r65 = chestlid.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/ModelcutterdWreckFrontremade.java b/src/main/java/hal/studios/hpm/client/model/ModelcutterdWreckFrontremade.java new file mode 100644 index 0000000..c6245c4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/ModelcutterdWreckFrontremade.java @@ -0,0 +1,206 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class ModelcutterdWreckFrontremade extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterd_wreck_frontremade"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + + public ModelcutterdWreckFrontremade(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = this.Hull.getChild("wheel"); + this.Decorations = this.Hull.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(44, 174).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(89, 31).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 25.0F, new CubeDeformation(0.0F)).texOffs(126, 88) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(89, 31).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 25.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 0) + .addBox(-8.0F, -8.5F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(254, 0).addBox(-10.0F, -8.5F, -13.0F, 22.0F, 9.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.3F, 24.0F, 16.0F, 0.0F, 0.0F, 0.0873F)); + PartDefinition cube_r1 = Hull.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r2 = Hull.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r6 = Hull.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(94, 148).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(96, 150).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(148, 28).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 26.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(150, 30).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = Hull.addOrReplaceChild("wheel", CubeListBuilder.create(), PartPose.offset(1.3F, -16.0F, 6.25F)); + PartDefinition Decorations = Hull.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.7F, 0.0F, 11.0F, 0.0F, 0.0F, 0.1309F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -11.625F, -36.1749F, -1.4822F, 0.1739F, -1.5554F)); + PartDefinition cube_r57 = bone22.addOrReplaceChild("cube_r57", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -15.625F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r58 = bone21.addOrReplaceChild("cube_r58", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, -15.625F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r59 = bone20.addOrReplaceChild("cube_r59", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create(), PartPose.offset(0.0F, 14.0F, -34.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterdamaged.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterdamaged.java new file mode 100644 index 0000000..527db85 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterdamaged.java @@ -0,0 +1,385 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterdamaged extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterdamaged"), "main"); + public final ModelPart wheel; + public final ModelPart bone23; + + public Modelcutterdamaged(ModelPart root) { + this.wheel = root.getChild("wheel"); + this.bone23 = root.getChild("bone23"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5F, 12.25F, -4.125F, -0.1309F, 0.0F, 0.0F)); + PartDefinition bone23 = partdefinition.addOrReplaceChild("bone23", + CubeListBuilder.create().texOffs(0, 250).addBox(-12.0F, -16.0F, 17.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 17.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -38.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -38.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 16) + .addBox(-1.0F, -17.0F, -7.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.0F, -27.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, -5.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(39, 169).addBox(7.5F, -9.0F, -38.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171) + .addBox(4.5F, -9.0F, -11.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -38.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8937F, 15.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 70).addBox(-1.6062F, -12.2625F, 14.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(22, 70) + .addBox(-6.8938F, -12.1688F, 14.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 15.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 15.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.8312F, -6.025F, 15.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 15.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.0F, 28.0F, 0.0F, 0.0F, 0.0F, -0.2182F)); + PartDefinition cube_r1 = bone23 + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = bone23 + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = bone23.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = bone23 + .addOrReplaceChild( + "cube_r4", CubeListBuilder.create().texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = bone23.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = bone23 + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = bone23.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = bone23.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = bone23.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = bone23.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = bone23.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = bone23.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = bone23.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = bone23.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = bone23.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = bone23.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = bone23.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = bone23.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = bone23.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = bone23.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = bone23.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = bone23.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = bone23.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -50.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = bone23.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = bone23.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = bone23.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = bone23.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = bone23.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = bone23.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = bone23.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = bone23.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = bone23.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = bone23.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = bone23.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = bone23.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = bone23.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r37 = bone23.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r38 = bone23.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r39 = bone23.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r40 = bone23.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r41 = bone23.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r42 = bone23.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r43 = bone23.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -38.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r44 = bone23.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -43.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r45 = bone23.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -43.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r46 = bone23.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -38.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r47 = bone23.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = bone23.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r49 = bone23.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = bone23.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = bone23.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = bone23.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -50.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = bone23.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = bone23.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = bone23.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(190, 12).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = bone23.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = bone23.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = bone23.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = bone23.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = bone23.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = bone23.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = bone23.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = bone23.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = bone23.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = bone23.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r66 = bone23.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r67 = bone23.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r68 = bone23 + .addOrReplaceChild( + "cube_r68", CubeListBuilder.create().texOffs(36, 161).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = bone23.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r70 = bone23.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = bone23.addOrReplaceChild("cube_r71", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -14.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r72 = bone23.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(238, 123).addBox(0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -31.2702F, -0.0118F, 0.0129F, 0.4799F)); + PartDefinition cube_r73 = bone23.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -7.2702F, -0.0169F, -0.0045F, 0.0873F)); + PartDefinition cube_r74 = bone23.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -7.2702F, -0.0164F, -0.006F, -0.6981F)); + PartDefinition cube_r75 = bone23.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -31.2702F, -0.0118F, -0.0129F, -0.4799F)); + PartDefinition mast = bone23.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -39.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -10.0F, -13.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r76 = bone2.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r77 = bone3.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r78 = bone3.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r79 = bone4.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone4.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r81 = bone5.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r82 = bone5.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r83 = bone5.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r84 = bone7.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r85 = bone8.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r86 = bone8.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r87 = bone9.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r88 = bone9.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r89 = bone10.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone10.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r91 = bone10.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone23.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -15.625F, -36.1749F, 0.0F, 1.4835F, 0.0F)); + PartDefinition cube_r92 = bone22.addOrReplaceChild("cube_r92", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = bone23.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -15.625F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r93 = bone21.addOrReplaceChild("cube_r93", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = bone23.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, -15.625F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r94 = bone20.addOrReplaceChild("cube_r94", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = bone23.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r95 = bone.addOrReplaceChild("cube_r95", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = bone23.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -0.0375F, -1.309F, 0.0F, 0.0F)); + PartDefinition cube_r96 = chestlid.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 10.9376F, -23.1872F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r97 = chestlid.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 10.9376F, -18.1872F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r98 = chestlid.addOrReplaceChild("cube_r98", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 9.4376F, -20.6872F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r99 = chestlid.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 10.9376F, -23.1872F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r100 = chestlid.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 10.9376F, -18.1872F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition mast2 = bone23.addOrReplaceChild("mast2", + CubeListBuilder.create().texOffs(18, 16).addBox(-0.625F, -39.6667F, -0.1667F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(120, 0).addBox(-0.5F, -15.6667F, 0.5833F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -9.3333F, -7.5833F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r101 = mast2.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(42, 42).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 33.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.125F, -27.6667F, -36.4167F, 0.0F, 3.1416F, 0.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.125F, -14.1667F, 12.4265F)); + PartDefinition cube_r102 = bone6.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r103 = bone11.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r104 = bone11.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r105 = bone12.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r106 = bone12.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r107 = bone14.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r108 = bone14.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r109 = bone14.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.125F, 3.8333F, 12.4265F)); + PartDefinition cube_r110 = bone15.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r111 = bone16.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r112 = bone16.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r113 = bone17.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r114 = bone17.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r115 = bone18.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r116 = bone18.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r117 = bone18.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag2 = mast2.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.2539F, -37.6667F, 0.7449F, -0.9163F, 0.0F, 0.0F)); + PartDefinition cube_r118 = flag2.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r119 = flag2.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition flag = bone23.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -47.0F, -30.8384F)); + PartDefinition cube_r120 = flag.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r121 = flag.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone13 = bone23.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, -39.0F)); + PartDefinition cube_r122 = bone13.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r123 = bone13.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r124 = bone13.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r125 = bone13.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r126 = bone13.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r127 = bone13.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r128 = bone13.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(118, 194).addBox(0.0F, -7.0F, -25.0F, 0.0F, 31.0F, 25.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone23.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = Mth.cos(limbSwing * 0.6662F + (float) Math.PI) * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterdamagedremade.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterdamagedremade.java new file mode 100644 index 0000000..78411e6 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterdamagedremade.java @@ -0,0 +1,407 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterdamagedremade extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterdamagedremade"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + + public Modelcutterdamagedremade(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8938F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0813F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.3F, 24.0F, -11.0F, 0.0F, 0.0F, 0.0873F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r72 = Hull + .addOrReplaceChild( + "cube_r72", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r73 = Hull.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -53.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, -15) + .addBox(0.0F, -47.0F, -42.0F, 0.0F, 47.0F, 74.0F, new CubeDeformation(0.0F)).texOffs(210, 5).addBox(-0.75F, -20.0F, 0.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.0F, -15.0F, 0.0F, 0.0F, 1.1345F)); + PartDefinition cube_r75 = mast.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(94, 319).addBox(-12.0F, -56.0F, -1.0F, 24.0F, 65.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, -7.2375F, -42.25F, -0.8359F, 0.0648F, 0.0585F)); + PartDefinition cube_r76 = mast.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(36, 329).addBox(-12.0F, -55.0F, 1.0F, 24.0F, 55.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.75F, 31.0F, 0.6196F, 0.0F, 0.0F)); + PartDefinition cube_r77 = mast.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(0, 339).mirror().addBox(-1.0F, -28.0F, -18.0F, 0.0F, 28.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-6.0F, 11.0F, 9.1F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -27.5F, 11.8431F)); + PartDefinition cube_r78 = bone2.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r79 = bone3.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone3.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r81 = bone4.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r82 = bone4.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r83 = bone5.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r84 = bone5.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r85 = bone5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, -9.5F, 11.8431F)); + PartDefinition cube_r86 = bone7.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = bone8.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r88 = bone8.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r89 = bone9.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone9.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r91 = bone10.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r92 = bone10.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r93 = bone10.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 2.0F, -0.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r94 = bone6.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r95 = bone11.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r96 = bone11.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r97 = bone12.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r98 = bone12.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r99 = bone14.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r100 = bone14.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r101 = bone14.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, -4.0F, -8.0F)); + PartDefinition cube_r102 = bone13.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(108, 245).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r103 = bone13.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(108, 241).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r104 = bone13.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(108, 233).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r105 = bone13.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(108, 229).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r106 = bone13.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(108, 227).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r107 = bone13.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -43.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r108 = bone13.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0873F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -51.0F, 0.1616F)); + PartDefinition cube_r109 = flag.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r110 = flag.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offsetAndRotation(-2.0F, 24.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -11.625F, -36.1749F, -1.4822F, 0.1739F, -1.5554F)); + PartDefinition cube_r111 = bone22.addOrReplaceChild("cube_r111", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -15.625F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r112 = bone21.addOrReplaceChild("cube_r112", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, -15.625F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r113 = bone20.addOrReplaceChild("cube_r113", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r114 = bone.addOrReplaceChild("cube_r114", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r115 = chestlid.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r116 = chestlid.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r117 = chestlid.addOrReplaceChild("cube_r117", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r118 = chestlid.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r119 = chestlid.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = Mth.cos(limbSwing * 1.0F) * 1.0F * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcuttermilitarised.java b/src/main/java/hal/studios/hpm/client/model/Modelcuttermilitarised.java new file mode 100644 index 0000000..ab272a5 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcuttermilitarised.java @@ -0,0 +1,509 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcuttermilitarised extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcuttermilitarised"), "main"); + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart wheel; + public final ModelPart mast2; + public final ModelPart bone19; + public final ModelPart flag2; + public final ModelPart bone; + public final ModelPart mast; + public final ModelPart cannon; + public final ModelPart cannon2; + public final ModelPart cannon3; + public final ModelPart bb_main; + + public Modelcuttermilitarised(ModelPart root) { + this.bone13 = root.getChild("bone13"); + this.flag = root.getChild("flag"); + this.wheel = root.getChild("wheel"); + this.mast2 = root.getChild("mast2"); + this.bone19 = root.getChild("bone19"); + this.flag2 = root.getChild("flag2"); + this.bone = root.getChild("bone"); + this.mast = root.getChild("mast"); + this.cannon = root.getChild("cannon"); + this.cannon2 = root.getChild("cannon2"); + this.cannon3 = root.getChild("cannon3"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone13 = partdefinition.addOrReplaceChild("bone13", + CubeListBuilder.create().texOffs(211, 108).mirror().addBox(0.0F, -62.0F, -12.0F, 0.0F, 18.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(120, 0).addBox(-0.625F, -25.0F, 27.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)) + .texOffs(177, 169).addBox(-13.0F, -59.0F, 1.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 1.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(177, 169) + .addBox(-13.0F, -59.0F, 25.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 25.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -39.0F)); + PartDefinition cube_r1 = bone13.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 25.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r2 = bone13.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 24.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r3 = bone13.addOrReplaceChild("cube_r3", + CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 58).addBox(-17.0F, -5.425F, -24.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 24.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r4 = bone13.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 24.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r5 = bone13.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 25.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r6 = bone13.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(86, 232).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 35.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r7 = bone13.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 35.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r8 = bone13.addOrReplaceChild("cube_r8", + CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(86, 227).addBox(-13.0F, 19.784F, -35.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 35.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r9 = bone13.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 35.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r10 = bone13.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 35.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r11 = bone13.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 26.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r12 = bone13.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 25.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r13 = bone13.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 1.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r14 = bone13.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 0.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r15 = bone13.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 0.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r16 = bone13.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 1.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r17 = bone13.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(86, 233).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 11.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bone13.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 11.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone13.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 11.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone13.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 11.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r21 = bone13.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 2.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r22 = bone13.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 1.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r23 = bone13.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(0, 200).addBox(0.0F, -25.0F, -35.5F, 0.0F, 18.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(211, 108) + .addBox(0.0F, -25.0F, -52.0F, 0.0F, 18.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 75.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -10.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition flag = partdefinition.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 0.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, -4.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -41.0F, -30.8384F)); + PartDefinition cube_r24 = flag.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, -0.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r25 = flag.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, -2.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, -5.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast2 = partdefinition.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -23.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, 11.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r26 = bone6.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r27 = bone11.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(155, 114).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r28 = bone11.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r29 = bone12.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(147, 114).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r30 = bone12.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(151, 114).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r31 = bone14.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(76, 106).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r32 = bone14.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(109, 0).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r33 = bone14.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone20 = mast2.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -6.1569F)); + PartDefinition cube_r34 = bone20.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r35 = bone21.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(155, 114).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r36 = bone21.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone20.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r37 = bone22.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(147, 114).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r38 = bone22.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(151, 114).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone23 = bone22.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r39 = bone23.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(76, 106).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r40 = bone23.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(109, 0).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r41 = bone23.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone24 = mast2.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -30.1569F)); + PartDefinition cube_r42 = bone24.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r43 = bone25.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(155, 114).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r44 = bone25.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r45 = bone26.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(147, 114).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r46 = bone26.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(151, 114).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r47 = bone27.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(76, 106).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r48 = bone27.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(109, 0).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r49 = bone27.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r50 = bone15.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r51 = bone16.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(16, 106).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r52 = bone16.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r53 = bone17.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(8, 106).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r54 = bone17.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(12, 106).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r55 = bone18.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(48, 0).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r56 = bone18.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(0, 106).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r57 = bone18.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone19 = partdefinition.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, 10.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r58 = chestlid.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(154, 213).addBox(-7.0438F, -21.9519F, -2.3138F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r59 = chestlid.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(154, 213).addBox(-7.0338F, 2.5379F, 17.277F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r60 = chestlid.addOrReplaceChild("cube_r60", + CubeListBuilder.create().texOffs(157, 209).addBox(-1.9538F, 17.4638F, -3.259F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-7.1538F, 17.4638F, -3.259F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r61 = chestlid.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(172, 217).addBox(-7.0438F, 17.616F, 3.5565F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r62 = chestlid.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(174, 211).addBox(-7.0538F, 9.6532F, 11.2464F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-7.0438F, -13.0F, 26.0332F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition flag2 = partdefinition.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 0.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, -4.9116F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -41.0F, -6.8384F)); + PartDefinition cube_r63 = flag2.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, -0.9741F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r64 = flag2.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, -2.9116F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 24.0F, 0.0F)); + PartDefinition cube_r65 = bone.addOrReplaceChild("cube_r65", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 7.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -23.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -13.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r66 = bone2.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r67 = bone3.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(155, 114).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r68 = bone3.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r69 = bone4.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(147, 114).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r70 = bone4.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(151, 114).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r71 = bone5.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(76, 106).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r72 = bone5.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(109, 0).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r73 = bone5.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r74 = bone7.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -17.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r75 = bone8.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(16, 106).addBox(11.5208F, -21.5F, 11.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r76 = bone8.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -16.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r77 = bone9.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(8, 106).addBox(11.5208F, -21.5F, -13.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r78 = bone9.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(12, 106).addBox(-16.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r79 = bone10.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(48, 0).addBox(-12.5208F, -21.5F, -13.0208F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone10.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(0, 106).addBox(-17.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r81 = bone10.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 17.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cannon = partdefinition.addOrReplaceChild("cannon", CubeListBuilder.create().texOffs(93, 27).addBox(-2.3333F, -5.755F, -18.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror() + .addBox(1.6667F, -5.755F, -18.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-0.1667F, 17.455F, -32.6718F)); + PartDefinition cube_r82 = cannon.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -7.955F, -16.3282F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r83 = cannon.addOrReplaceChild("cube_r83", + CubeListBuilder.create().texOffs(104, 235).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -7.455F, -20.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r84 = cannon.addOrReplaceChild("cube_r84", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.1667F, -3.455F, -19.3282F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon2 = partdefinition.addOrReplaceChild("cannon2", + CubeListBuilder.create().texOffs(93, 27).addBox(2.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(6.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(93, 27).addBox(-28.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(-24.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-8.0714F, 13.6316F, -30.8564F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r85 = cannon2.addOrReplaceChild("cube_r85", + CubeListBuilder.create().texOffs(96, 134).addBox(-26.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(96, 134).addBox(4.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r86 = cannon2.addOrReplaceChild("cube_r86", + CubeListBuilder.create().texOffs(104, 235).addBox(-27.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-27.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(104, 235) + .addBox(4.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(3.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r87 = cannon2.addOrReplaceChild("cube_r87", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-26.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-30.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(36, 119).mirror().addBox(4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon3 = partdefinition.addOrReplaceChild("cannon3", + CubeListBuilder.create().texOffs(93, 27).mirror().addBox(-3.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(-7.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(93, 27).mirror().addBox(27.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(23.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0714F, 13.6316F, -30.8564F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r88 = cannon3.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(96, 134).mirror().addBox(25.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 134).mirror() + .addBox(-5.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r89 = cannon3.addOrReplaceChild("cube_r89", + CubeListBuilder.create().texOffs(104, 235).mirror().addBox(25.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(24.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(104, 235).mirror().addBox(-6.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(-6.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r90 = cannon3.addOrReplaceChild("cube_r90", + CubeListBuilder.create().texOffs(36, 119).addBox(25.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(29.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(36, 119).addBox(-5.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(-1.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(96, 58).addBox(-1.5F, -2.625F, -43.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -43.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171) + .addBox(4.5F, -9.0F, -16.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169).addBox(7.5F, -9.0F, -43.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 10.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 10.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70) + .addBox(-6.8938F, -12.1688F, 9.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70).addBox(-1.6062F, -12.2625F, 9.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 10.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 10.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 10.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.0F, -32.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, -12.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, -10.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-1.0F, -8.0F, 12.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -43.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -43.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250).addBox(-12.0F, -16.0F, 12.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -43.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r91 = bb_main.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -37.2702F, -0.0118F, -0.0129F, -0.4799F)); + PartDefinition cube_r92 = bb_main.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(238, 123).addBox(0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -37.2702F, -0.0118F, 0.0129F, 0.4799F)); + PartDefinition cube_r93 = bb_main.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -12.2702F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r94 = bb_main.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -12.2702F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r95 = bb_main.addOrReplaceChild("cube_r95", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 32) + .addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34).addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r96 = bb_main.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r97 = bb_main.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -55.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r98 = bb_main.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r99 = bb_main.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r100 = bb_main.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r101 = bb_main.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r102 = bb_main.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r103 = bb_main.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r104 = bb_main.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r105 = bb_main.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r106 = bb_main.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r107 = bb_main.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r108 = bb_main.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r109 = bb_main.addOrReplaceChild("cube_r109", + CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r110 = bb_main.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r111 = bb_main.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r112 = bb_main.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r113 = bb_main.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r114 = bb_main.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r115 = bb_main.addOrReplaceChild("cube_r115", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r116 = bb_main.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -48.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r117 = bb_main.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -48.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r118 = bb_main.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r119 = bb_main.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -43.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r120 = bb_main.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -43.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r121 = bb_main.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r122 = bb_main.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r123 = bb_main.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r124 = bb_main.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r125 = bb_main.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r126 = bb_main.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r127 = bb_main.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r128 = bb_main.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r129 = bb_main.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r130 = bb_main.addOrReplaceChild("cube_r130", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r131 = bb_main.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r132 = bb_main + .addOrReplaceChild( + "cube_r132", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r133 = bb_main.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r134 = bb_main + .addOrReplaceChild( + "cube_r134", CubeListBuilder.create().texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(194, 56) + .addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171).addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r135 = bb_main.addOrReplaceChild("cube_r135", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r136 = bb_main.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r137 = bb_main.addOrReplaceChild("cube_r137", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r138 = bb_main.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r139 = bb_main.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r140 = bb_main.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r141 = bb_main.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r142 = bb_main.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r143 = bb_main.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r144 = bb_main.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r145 = bb_main.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r146 = bb_main.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r147 = bb_main.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -55.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r148 = bb_main.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r149 = bb_main.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r150 = bb_main.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r151 = bb_main + .addOrReplaceChild( + "cube_r151", CubeListBuilder.create().texOffs(72, 171).addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161) + .addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r152 = bb_main.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r153 = bb_main.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r154 = bb_main.addOrReplaceChild("cube_r154", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r155 = bb_main.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r156 = bb_main.addOrReplaceChild("cube_r156", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r157 = bb_main.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r158 = bb_main.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r159 = bb_main.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r160 = bb_main.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r161 = bb_main.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r162 = bb_main.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r163 = bb_main.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r164 = bb_main.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r165 = bb_main.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -19.5F, -0.0175F, 0.0F, 0.7854F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone19.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterpirate.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterpirate.java new file mode 100644 index 0000000..e2b61db --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterpirate.java @@ -0,0 +1,512 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterpirate extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterpirate"), "main"); + public final ModelPart flag; + public final ModelPart bone13; + public final ModelPart wheel; + public final ModelPart mast2; + public final ModelPart bone19; + public final ModelPart flag2; + public final ModelPart bone; + public final ModelPart mast; + public final ModelPart cannon; + public final ModelPart cannon2; + public final ModelPart cannon3; + public final ModelPart bb_main; + + public Modelcutterpirate(ModelPart root) { + this.flag = root.getChild("flag"); + this.bone13 = root.getChild("bone13"); + this.wheel = root.getChild("wheel"); + this.mast2 = root.getChild("mast2"); + this.bone19 = root.getChild("bone19"); + this.flag2 = root.getChild("flag2"); + this.bone = root.getChild("bone"); + this.mast = root.getChild("mast"); + this.cannon = root.getChild("cannon"); + this.cannon2 = root.getChild("cannon2"); + this.cannon3 = root.getChild("cannon3"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition flag = partdefinition.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -41.0F, -13.8384F)); + PartDefinition cube_r1 = flag.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r2 = flag.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone13 = partdefinition.addOrReplaceChild("bone13", + CubeListBuilder.create().texOffs(211, 108).mirror().addBox(0.0F, -62.0F, -7.0F, 0.0F, 18.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(120, 0).addBox(-0.625F, -25.0F, 32.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)) + .texOffs(177, 169).addBox(-13.0F, -59.0F, 6.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 6.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(177, 169) + .addBox(-13.0F, -59.0F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -22.0F)); + PartDefinition cube_r3 = bone13.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 30.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r4 = bone13.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 29.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r5 = bone13.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 58).addBox(-17.0F, -5.425F, -24.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 29.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r6 = bone13.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 29.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r7 = bone13.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 30.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r8 = bone13.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(86, 232).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r9 = bone13.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r10 = bone13.addOrReplaceChild("cube_r10", + CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(86, 227).addBox(-13.0F, 19.784F, -35.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r11 = bone13.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r12 = bone13.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r13 = bone13.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 31.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r14 = bone13.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 30.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r15 = bone13.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 6.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r16 = bone13.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 5.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r17 = bone13.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 5.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bone13.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 6.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone13.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(86, 233).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 16.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone13.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 16.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r21 = bone13.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 16.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r22 = bone13.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 16.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r23 = bone13.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r24 = bone13.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 6.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r25 = bone13.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(0, 200).addBox(0.0F, -25.0F, -35.5F, 0.0F, 18.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(211, 108) + .addBox(0.0F, -25.0F, -52.0F, 0.0F, 18.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 75.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, 12.25F)); + PartDefinition mast2 = partdefinition.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, 28.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r26 = bone6.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r27 = bone11.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r28 = bone11.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r29 = bone12.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r30 = bone12.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r31 = bone14.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r32 = bone14.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r33 = bone14.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone20 = mast2.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -6.1569F)); + PartDefinition cube_r34 = bone20.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r35 = bone21.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r36 = bone21.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone20.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r37 = bone22.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r38 = bone22.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone23 = bone22.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r39 = bone23.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r40 = bone23.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r41 = bone23.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone24 = mast2.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -30.1569F)); + PartDefinition cube_r42 = bone24.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r43 = bone25.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r44 = bone25.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r45 = bone26.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r46 = bone26.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r47 = bone27.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r48 = bone27.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r49 = bone27.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r50 = bone15.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r51 = bone16.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r52 = bone16.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r53 = bone17.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r54 = bone17.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r55 = bone18.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r56 = bone18.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r57 = bone18.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone19 = partdefinition.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, 10.0F, 28.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r58 = chestlid.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r59 = chestlid.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r60 = chestlid.addOrReplaceChild("cube_r60", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r61 = chestlid.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r62 = chestlid.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition flag2 = partdefinition.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -41.0F, 10.1616F)); + PartDefinition cube_r63 = flag2.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r64 = flag2.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 24.0F, 17.0F)); + PartDefinition cube_r65 = bone.addOrReplaceChild("cube_r65", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, 4.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r66 = bone2.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r67 = bone3.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r68 = bone3.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r69 = bone4.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r70 = bone4.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r71 = bone5.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r72 = bone5.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r73 = bone5.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r74 = bone7.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r75 = bone8.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r76 = bone8.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r77 = bone9.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r78 = bone9.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r79 = bone10.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone10.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r81 = bone10.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cannon = partdefinition.addOrReplaceChild("cannon", CubeListBuilder.create().texOffs(93, 27).addBox(-2.3333F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror() + .addBox(1.6667F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-0.1667F, 17.455F, -15.6718F)); + PartDefinition cube_r82 = cannon.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -7.955F, -11.3282F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r83 = cannon.addOrReplaceChild("cube_r83", + CubeListBuilder.create().texOffs(104, 235).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -7.455F, -15.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r84 = cannon.addOrReplaceChild("cube_r84", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.1667F, -3.455F, -14.3282F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon2 = partdefinition.addOrReplaceChild("cannon2", + CubeListBuilder.create().texOffs(93, 27).addBox(-2.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(1.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(93, 27).addBox(-33.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(-29.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-8.0714F, 13.6316F, -13.8564F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r85 = cannon2.addOrReplaceChild("cube_r85", + CubeListBuilder.create().texOffs(96, 134).addBox(-31.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r86 = cannon2.addOrReplaceChild("cube_r86", + CubeListBuilder.create().texOffs(104, 235).addBox(-32.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-32.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(104, 235) + .addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r87 = cannon2.addOrReplaceChild("cube_r87", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-31.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-35.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon3 = partdefinition.addOrReplaceChild("cannon3", + CubeListBuilder.create().texOffs(93, 27).mirror().addBox(1.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(-2.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(93, 27).mirror().addBox(32.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(28.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0714F, 13.6316F, -13.8564F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r88 = cannon3.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(96, 134).mirror().addBox(30.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 134).mirror() + .addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r89 = cannon3.addOrReplaceChild("cube_r89", + CubeListBuilder.create().texOffs(104, 235).mirror().addBox(30.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(29.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(104, 235).mirror().addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r90 = cannon3.addOrReplaceChild("cube_r90", + CubeListBuilder.create().texOffs(36, 119).addBox(30.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(34.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(36, 119).addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(3.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(96, 58).addBox(-1.5F, -2.625F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171) + .addBox(4.5F, -9.0F, 5.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169).addBox(7.5F, -9.0F, -21.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 32.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 32.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70) + .addBox(-6.8938F, -12.1688F, 31.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70).addBox(-1.6062F, -12.2625F, 31.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 32.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 32.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 32.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.0F, -10.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, 10.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, 12.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-1.0F, -8.0F, 34.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250).addBox(-12.0F, -16.0F, 34.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r91 = bb_main.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -15.2702F, -0.0118F, -0.0129F, -0.4799F)); + PartDefinition cube_r92 = bb_main.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(238, 123).addBox(0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, -15.2702F, -0.0118F, 0.0129F, 0.4799F)); + PartDefinition cube_r93 = bb_main.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, 9.7298F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r94 = bb_main.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r95 = bb_main.addOrReplaceChild("cube_r95", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 32) + .addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34).addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r96 = bb_main.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r97 = bb_main.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -33.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r98 = bb_main.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r99 = bb_main.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r100 = bb_main.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r101 = bb_main.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r102 = bb_main.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r103 = bb_main.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r104 = bb_main.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r105 = bb_main.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r106 = bb_main.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r107 = bb_main.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r108 = bb_main.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r109 = bb_main.addOrReplaceChild("cube_r109", + CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r110 = bb_main.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r111 = bb_main.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r112 = bb_main.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r113 = bb_main.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r114 = bb_main.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r115 = bb_main.addOrReplaceChild("cube_r115", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r116 = bb_main.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -26.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r117 = bb_main.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -26.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r118 = bb_main.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r119 = bb_main.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -21.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r120 = bb_main.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -21.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r121 = bb_main.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r122 = bb_main.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r123 = bb_main.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r124 = bb_main.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r125 = bb_main.addOrReplaceChild("cube_r125", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r126 = bb_main.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r127 = bb_main.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r128 = bb_main.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r129 = bb_main.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r130 = bb_main.addOrReplaceChild("cube_r130", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r131 = bb_main.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r132 = bb_main + .addOrReplaceChild( + "cube_r132", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r133 = bb_main.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r134 = bb_main + .addOrReplaceChild( + "cube_r134", CubeListBuilder.create().texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(194, 56) + .addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171).addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r135 = bb_main.addOrReplaceChild("cube_r135", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r136 = bb_main.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r137 = bb_main.addOrReplaceChild("cube_r137", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r138 = bb_main.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r139 = bb_main.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r140 = bb_main.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r141 = bb_main.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r142 = bb_main.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r143 = bb_main.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r144 = bb_main.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r145 = bb_main.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r146 = bb_main.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r147 = bb_main.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -33.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r148 = bb_main.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r149 = bb_main.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r150 = bb_main.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r151 = bb_main + .addOrReplaceChild( + "cube_r151", CubeListBuilder.create().texOffs(72, 171).addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161) + .addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r152 = bb_main.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r153 = bb_main.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r154 = bb_main.addOrReplaceChild("cube_r154", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r155 = bb_main.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r156 = bb_main.addOrReplaceChild("cube_r156", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r157 = bb_main.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r158 = bb_main.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r159 = bb_main.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r160 = bb_main.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r161 = bb_main.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r162 = bb_main.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r163 = bb_main.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r164 = bb_main.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r165 = bb_main.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.7854F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + flag.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone19.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon3.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.flag.yRot = Mth.cos(limbSwing * 0.6662F + (float) Math.PI) * limbSwingAmount; + this.flag2.yRot = Mth.cos(limbSwing * 0.6662F) * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedamaged.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedamaged.java new file mode 100644 index 0000000..603422d --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedamaged.java @@ -0,0 +1,505 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterpiratedamaged extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterpiratedamaged"), "main"); + public final ModelPart bone28; + + public Modelcutterpiratedamaged(ModelPart root) { + this.bone28 = root.getChild("bone28"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", + CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -8.0F, 34.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 32.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19).addBox(-5.8312F, -10.125F, 32.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49) + .addBox(-2.3375F, -7.3375F, 32.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70).addBox(-6.8938F, -12.1688F, 31.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70) + .addBox(-1.6062F, -12.2625F, 31.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 32.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 58).addBox(-1.5F, -2.625F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2) + .addBox(-4.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, 5.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169) + .addBox(7.5F, -9.0F, -21.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25).addBox(-4.5F, -6.0F, 32.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, 10.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, 12.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-8.0F, -8.0F, -10.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 250).addBox(-12.0F, -16.0F, 34.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 28.0F, 0.0F, 0.0F, 0.0F, -0.2182F)); + PartDefinition cube_r1 = bone28 + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r2 = bone28.addOrReplaceChild("cube_r2", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r3 = bone28.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r4 = bone28.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r5 = bone28.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r6 = bone28.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r7 = bone28.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r8 = bone28.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r9 = bone28.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r10 = bone28.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r11 = bone28.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r12 = bone28.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r13 = bone28.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r14 = bone28.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r15 = bone28.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r16 = bone28.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r17 = bone28.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bone28.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(41, 222).addBox(-1.5F, 11.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5236F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone28.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, -0.8324F, -11.8662F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -13.0F, -39.5F, -0.2618F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone28.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r21 = bone28.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -33.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r22 = bone28.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r23 = bone28.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r24 = bone28.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r25 = bone28.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r26 = bone28.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r27 = bone28.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -21.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r28 = bone28.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -26.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r29 = bone28.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -26.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r30 = bone28.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -21.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r31 = bone28.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r32 = bone28.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r33 = bone28.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r34 = bone28.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r35 = bone28.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r36 = bone28.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = bone28.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r38 = bone28.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r39 = bone28.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r40 = bone28.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r41 = bone28.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r42 = bone28.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r43 = bone28 + .addOrReplaceChild( + "cube_r43", CubeListBuilder.create().texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r44 = bone28.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r45 = bone28.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r46 = bone28.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r47 = bone28.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r48 = bone28.addOrReplaceChild("cube_r48", + CubeListBuilder.create().texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r49 = bone28.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r50 = bone28 + .addOrReplaceChild( + "cube_r50", CubeListBuilder.create().texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r51 = bone28.addOrReplaceChild("cube_r51", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r52 = bone28.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r53 = bone28.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -33.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r54 = bone28.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r55 = bone28.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r56 = bone28.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r57 = bone28.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r58 = bone28.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r59 = bone28.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r60 = bone28.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r61 = bone28.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r62 = bone28.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r63 = bone28.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r64 = bone28.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r65 = bone28.addOrReplaceChild("cube_r65", + CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r66 = bone28.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r67 = bone28.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r68 = bone28.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r69 = bone28.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r70 = bone28.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r71 = bone28.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r72 = bone28.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r73 = bone28.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -18.1356F, -30.118F, 0.0F, 18.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0173F, 0.0023F, -0.2182F)); + PartDefinition cube_r74 = bone28.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r75 = bone28.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, 9.7298F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r76 = bone28.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -15.2702F, 0.0038F, -0.017F, -1.4399F)); + PartDefinition cannon3 = bone28.addOrReplaceChild("cannon3", + CubeListBuilder.create().texOffs(93, 27).mirror().addBox(1.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(-2.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(93, 27).mirror().addBox(32.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(28.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0714F, -10.3684F, -13.8564F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r77 = cannon3.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(96, 134).mirror().addBox(30.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 134).mirror() + .addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r78 = cannon3.addOrReplaceChild("cube_r78", + CubeListBuilder.create().texOffs(104, 235).mirror().addBox(30.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(29.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(104, 235).mirror().addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r79 = cannon3.addOrReplaceChild("cube_r79", + CubeListBuilder.create().texOffs(36, 119).addBox(30.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(34.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(36, 119).addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(3.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon2 = bone28.addOrReplaceChild("cannon2", + CubeListBuilder.create().texOffs(93, 27).addBox(-2.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(1.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(93, 27).addBox(-33.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(-29.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-8.0714F, -10.3684F, -13.8564F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r80 = cannon2.addOrReplaceChild("cube_r80", + CubeListBuilder.create().texOffs(96, 134).addBox(-31.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r81 = cannon2.addOrReplaceChild("cube_r81", + CubeListBuilder.create().texOffs(104, 235).addBox(-32.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-32.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(104, 235) + .addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r82 = cannon2.addOrReplaceChild("cube_r82", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-31.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-35.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon = bone28.addOrReplaceChild("cannon", CubeListBuilder.create().texOffs(93, 27).addBox(-2.3333F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror() + .addBox(1.6667F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-0.1667F, -6.545F, -15.6718F)); + PartDefinition cube_r83 = cannon.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -7.955F, -11.3282F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r84 = cannon.addOrReplaceChild("cube_r84", + CubeListBuilder.create().texOffs(104, 235).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -7.455F, -15.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r85 = cannon.addOrReplaceChild("cube_r85", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.1667F, -3.455F, -14.3282F, -0.5672F, 0.0F, 0.0F)); + PartDefinition mast = bone28.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169) + .addBox(-13.0F, -37.5F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(177, 169).addBox(-13.0F, -49.0F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, -14.0F, 0.0F, 0.0F, -0.48F)); + PartDefinition cube_r86 = mast.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -14.5F, -2.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = mast.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r88 = mast.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r89 = mast.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(68, 58).addBox(-20.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -15.9875F, -2.6375F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r90 = mast.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(0, 58).addBox(-15.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.334F, -2.9637F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r91 = mast.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.825F, -2.6125F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r92 = mast.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -33.075F, -1.725F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r93 = mast.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(86, 233).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r94 = mast.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r95 = mast.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r96 = mast.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(68, 64).addBox(-21.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.7375F, -1.75F, 0.4363F, 0.0F, 0.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, 11.8431F)); + PartDefinition cube_r97 = bone2.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r98 = bone3.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r99 = bone3.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r100 = bone4.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r101 = bone4.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r102 = bone5.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r103 = bone5.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r104 = bone5.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, 11.8431F)); + PartDefinition cube_r105 = bone7.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r106 = bone8.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r107 = bone8.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r108 = bone9.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r109 = bone9.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r110 = bone10.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r111 = bone10.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r112 = bone10.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone24 = mast.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, 11.8431F)); + PartDefinition cube_r113 = bone24.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r114 = bone25.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r115 = bone25.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r116 = bone26.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r117 = bone26.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r118 = bone27.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r119 = bone27.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r120 = bone27.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -55.0F, 0.1616F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r121 = flag.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r122 = flag.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = bone28.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 17.0F)); + PartDefinition cube_r123 = bone.addOrReplaceChild("cube_r123", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone29 = bone28.addOrReplaceChild("bone29", CubeListBuilder.create(), PartPose.offset(5.0F, 8.0F, -12.0F)); + PartDefinition cube_r124 = bone29.addOrReplaceChild("cube_r124", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -4.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone30 = bone28.addOrReplaceChild("bone30", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.625F, -7.1749F, -0.8091F, 0.2143F, -0.2194F)); + PartDefinition cube_r125 = bone30.addOrReplaceChild("cube_r125", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition flag2 = bone28.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -65.0F, 10.1616F, -0.6545F, 0.0F, 0.0F)); + PartDefinition cube_r126 = flag2.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r127 = flag2.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone19 = bone28.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 28.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r128 = chestlid.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r129 = chestlid.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r130 = chestlid.addOrReplaceChild("cube_r130", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r131 = chestlid.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r132 = chestlid.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition bone31 = bone28.addOrReplaceChild("bone31", CubeListBuilder.create(), PartPose.offsetAndRotation(3.0F, -2.0F, 0.0F, -1.309F, -0.6545F, 0.0F)); + PartDefinition chestlid2 = bone31.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(-4.0F, -3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r133 = chestlid2.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r134 = chestlid2.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r135 = chestlid2.addOrReplaceChild("cube_r135", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r136 = chestlid2.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r137 = chestlid2.addOrReplaceChild("cube_r137", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = bone31.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, 8.0F, -34.0F)); + PartDefinition mast2 = bone28.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -10.0F, 28.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r138 = bone6.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r139 = bone11.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r140 = bone11.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r141 = bone12.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r142 = bone12.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r143 = bone14.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r144 = bone14.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r145 = bone14.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone20 = mast2.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -6.1569F)); + PartDefinition cube_r146 = bone20.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r147 = bone21.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r148 = bone21.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone20.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r149 = bone22.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r150 = bone22.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone23 = bone22.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r151 = bone23.addOrReplaceChild("cube_r151", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r152 = bone23.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r153 = bone23.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r154 = bone15.addOrReplaceChild("cube_r154", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r155 = bone16.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r156 = bone16.addOrReplaceChild("cube_r156", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r157 = bone17.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r158 = bone17.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r159 = bone18.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r160 = bone18.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r161 = bone18.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition wheel = bone28.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -16.0F, 12.25F)); + PartDefinition bone13 = bone28.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(120, 0).addBox(-0.625F, -25.0F, 32.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(177, 169) + .addBox(-13.0F, -59.0F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, -22.0F)); + PartDefinition cube_r162 = bone13.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 30.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r163 = bone13.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 29.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r164 = bone13.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 29.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r165 = bone13.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 29.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r166 = bone13.addOrReplaceChild("cube_r166", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 30.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r167 = bone13.addOrReplaceChild("cube_r167", CubeListBuilder.create().texOffs(86, 232).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r168 = bone13.addOrReplaceChild("cube_r168", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r169 = bone13.addOrReplaceChild("cube_r169", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r170 = bone13.addOrReplaceChild("cube_r170", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r171 = bone13.addOrReplaceChild("cube_r171", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r172 = bone13.addOrReplaceChild("cube_r172", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 31.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r173 = bone13.addOrReplaceChild("cube_r173", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 30.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r174 = bone13.addOrReplaceChild("cube_r174", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -21.5F, -11.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, -0.48F)); + PartDefinition cube_r175 = bone13.addOrReplaceChild("cube_r175", CubeListBuilder.create().texOffs(0, 200).addBox(0.0F, -1.0F, -0.5F, 0.0F, 18.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -61.0F, 30.0F, 2.618F, -0.7854F, 3.1416F)); + PartDefinition cube_r176 = bone13.addOrReplaceChild("cube_r176", CubeListBuilder.create().texOffs(52, 52).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone28.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedplayeramaged.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedplayeramaged.java new file mode 100644 index 0000000..e20d2c7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratedplayeramaged.java @@ -0,0 +1,505 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterpiratedplayeramaged extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterpiratedplayeramaged"), "main"); + public final ModelPart bone28; + + public Modelcutterpiratedplayeramaged(ModelPart root) { + this.bone28 = root.getChild("bone28"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", + CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -8.0F, 34.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 32.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19).addBox(-5.8312F, -10.125F, 32.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49) + .addBox(-2.3375F, -7.3375F, 32.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70).addBox(-6.8938F, -12.1688F, 31.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70) + .addBox(-1.6062F, -12.2625F, 31.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 32.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 58).addBox(-1.5F, -2.625F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2) + .addBox(-4.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, 5.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169) + .addBox(7.5F, -9.0F, -21.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25).addBox(-4.5F, -6.0F, 32.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, 10.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, 12.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-8.0F, -8.0F, -10.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 250).addBox(-12.0F, -16.0F, 34.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 28.0F, -21.0F, 0.0F, 0.0F, -0.2182F)); + PartDefinition cube_r1 = bone28 + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r2 = bone28.addOrReplaceChild("cube_r2", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r3 = bone28.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r4 = bone28.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r5 = bone28.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r6 = bone28.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r7 = bone28.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r8 = bone28.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r9 = bone28.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r10 = bone28.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r11 = bone28.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r12 = bone28.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r13 = bone28.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r14 = bone28.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r15 = bone28.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r16 = bone28.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r17 = bone28.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bone28.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(41, 222).addBox(-1.5F, 11.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5236F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone28.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, -0.8324F, -11.8662F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -13.0F, -39.5F, -0.2618F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone28.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r21 = bone28.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -33.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r22 = bone28.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r23 = bone28.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r24 = bone28.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r25 = bone28.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r26 = bone28.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r27 = bone28.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -21.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r28 = bone28.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -26.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r29 = bone28.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -26.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r30 = bone28.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -21.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r31 = bone28.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r32 = bone28.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r33 = bone28.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r34 = bone28.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r35 = bone28.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r36 = bone28.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = bone28.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r38 = bone28.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r39 = bone28.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r40 = bone28.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r41 = bone28.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r42 = bone28.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r43 = bone28 + .addOrReplaceChild( + "cube_r43", CubeListBuilder.create().texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r44 = bone28.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r45 = bone28.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r46 = bone28.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r47 = bone28.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r48 = bone28.addOrReplaceChild("cube_r48", + CubeListBuilder.create().texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r49 = bone28.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r50 = bone28 + .addOrReplaceChild( + "cube_r50", CubeListBuilder.create().texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r51 = bone28.addOrReplaceChild("cube_r51", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r52 = bone28.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r53 = bone28.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -33.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r54 = bone28.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r55 = bone28.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r56 = bone28.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r57 = bone28.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r58 = bone28.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r59 = bone28.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r60 = bone28.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r61 = bone28.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r62 = bone28.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r63 = bone28.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r64 = bone28.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r65 = bone28.addOrReplaceChild("cube_r65", + CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r66 = bone28.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r67 = bone28.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r68 = bone28.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r69 = bone28.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r70 = bone28.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r71 = bone28.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r72 = bone28.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r73 = bone28.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -18.1356F, -30.118F, 0.0F, 18.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0173F, 0.0023F, -0.2182F)); + PartDefinition cube_r74 = bone28.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r75 = bone28.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, 9.7298F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r76 = bone28.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -15.2702F, 0.0038F, -0.017F, -1.4399F)); + PartDefinition cannon3 = bone28.addOrReplaceChild("cannon3", + CubeListBuilder.create().texOffs(93, 27).mirror().addBox(1.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(-2.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(93, 27).mirror().addBox(32.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(28.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0714F, -10.3684F, -13.8564F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r77 = cannon3.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(96, 134).mirror().addBox(30.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 134).mirror() + .addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r78 = cannon3.addOrReplaceChild("cube_r78", + CubeListBuilder.create().texOffs(104, 235).mirror().addBox(30.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(29.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(104, 235).mirror().addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r79 = cannon3.addOrReplaceChild("cube_r79", + CubeListBuilder.create().texOffs(36, 119).addBox(30.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(34.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(36, 119).addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(3.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon2 = bone28.addOrReplaceChild("cannon2", + CubeListBuilder.create().texOffs(93, 27).addBox(-2.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(1.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(93, 27).addBox(-33.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(-29.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-8.0714F, -10.3684F, -13.8564F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r80 = cannon2.addOrReplaceChild("cube_r80", + CubeListBuilder.create().texOffs(96, 134).addBox(-31.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r81 = cannon2.addOrReplaceChild("cube_r81", + CubeListBuilder.create().texOffs(104, 235).addBox(-32.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-32.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(104, 235) + .addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r82 = cannon2.addOrReplaceChild("cube_r82", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-31.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-35.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon = bone28.addOrReplaceChild("cannon", CubeListBuilder.create().texOffs(93, 27).addBox(-2.3333F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror() + .addBox(1.6667F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-0.1667F, -6.545F, -15.6718F)); + PartDefinition cube_r83 = cannon.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -7.955F, -11.3282F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r84 = cannon.addOrReplaceChild("cube_r84", + CubeListBuilder.create().texOffs(104, 235).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -7.455F, -15.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r85 = cannon.addOrReplaceChild("cube_r85", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.1667F, -3.455F, -14.3282F, -0.5672F, 0.0F, 0.0F)); + PartDefinition mast = bone28.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169) + .addBox(-13.0F, -37.5F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(177, 169).addBox(-13.0F, -49.0F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, -14.0F, 0.0F, 0.0F, -0.48F)); + PartDefinition cube_r86 = mast.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -14.5F, -2.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = mast.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r88 = mast.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r89 = mast.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(68, 58).addBox(-20.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -15.9875F, -2.6375F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r90 = mast.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(0, 58).addBox(-15.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.334F, -2.9637F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r91 = mast.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.825F, -2.6125F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r92 = mast.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -33.075F, -1.725F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r93 = mast.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(86, 233).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r94 = mast.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r95 = mast.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r96 = mast.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(68, 64).addBox(-21.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -14.7375F, -1.75F, 0.4363F, 0.0F, 0.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, 11.8431F)); + PartDefinition cube_r97 = bone2.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r98 = bone3.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r99 = bone3.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r100 = bone4.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r101 = bone4.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r102 = bone5.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r103 = bone5.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r104 = bone5.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, 11.8431F)); + PartDefinition cube_r105 = bone7.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r106 = bone8.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r107 = bone8.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r108 = bone9.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r109 = bone9.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r110 = bone10.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r111 = bone10.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r112 = bone10.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone24 = mast.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, 11.8431F)); + PartDefinition cube_r113 = bone24.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r114 = bone25.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r115 = bone25.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r116 = bone26.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r117 = bone26.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r118 = bone27.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r119 = bone27.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r120 = bone27.addOrReplaceChild("cube_r120", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -55.0F, 0.1616F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r121 = flag.addOrReplaceChild("cube_r121", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r122 = flag.addOrReplaceChild("cube_r122", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = bone28.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 17.0F)); + PartDefinition cube_r123 = bone.addOrReplaceChild("cube_r123", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone29 = bone28.addOrReplaceChild("bone29", CubeListBuilder.create(), PartPose.offset(5.0F, 8.0F, -12.0F)); + PartDefinition cube_r124 = bone29.addOrReplaceChild("cube_r124", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -4.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone30 = bone28.addOrReplaceChild("bone30", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.625F, -7.1749F, -0.8091F, 0.2143F, -0.2194F)); + PartDefinition cube_r125 = bone30.addOrReplaceChild("cube_r125", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition flag2 = bone28.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -65.0F, 10.1616F, -0.6545F, 0.0F, 0.0F)); + PartDefinition cube_r126 = flag2.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r127 = flag2.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone19 = bone28.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 28.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r128 = chestlid.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r129 = chestlid.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r130 = chestlid.addOrReplaceChild("cube_r130", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r131 = chestlid.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r132 = chestlid.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition bone31 = bone28.addOrReplaceChild("bone31", CubeListBuilder.create(), PartPose.offsetAndRotation(3.0F, -2.0F, 0.0F, -1.309F, -0.6545F, 0.0F)); + PartDefinition chestlid2 = bone31.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(-4.0F, -3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r133 = chestlid2.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r134 = chestlid2.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r135 = chestlid2.addOrReplaceChild("cube_r135", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r136 = chestlid2.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r137 = chestlid2.addOrReplaceChild("cube_r137", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = bone31.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, 8.0F, -34.0F)); + PartDefinition mast2 = bone28.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -10.0F, 28.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r138 = bone6.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r139 = bone11.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r140 = bone11.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r141 = bone12.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r142 = bone12.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r143 = bone14.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r144 = bone14.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r145 = bone14.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone20 = mast2.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, -6.1569F)); + PartDefinition cube_r146 = bone20.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r147 = bone21.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r148 = bone21.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone20.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r149 = bone22.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r150 = bone22.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone23 = bone22.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r151 = bone23.addOrReplaceChild("cube_r151", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r152 = bone23.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r153 = bone23.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r154 = bone15.addOrReplaceChild("cube_r154", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r155 = bone16.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r156 = bone16.addOrReplaceChild("cube_r156", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r157 = bone17.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r158 = bone17.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r159 = bone18.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r160 = bone18.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r161 = bone18.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition wheel = bone28.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -16.0F, 12.25F)); + PartDefinition bone13 = bone28.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(120, 0).addBox(-0.625F, -25.0F, 32.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(177, 169) + .addBox(-13.0F, -59.0F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, -22.0F)); + PartDefinition cube_r162 = bone13.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 30.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r163 = bone13.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 29.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r164 = bone13.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 29.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r165 = bone13.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 29.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r166 = bone13.addOrReplaceChild("cube_r166", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 30.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r167 = bone13.addOrReplaceChild("cube_r167", CubeListBuilder.create().texOffs(86, 232).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r168 = bone13.addOrReplaceChild("cube_r168", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r169 = bone13.addOrReplaceChild("cube_r169", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r170 = bone13.addOrReplaceChild("cube_r170", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r171 = bone13.addOrReplaceChild("cube_r171", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r172 = bone13.addOrReplaceChild("cube_r172", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 31.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r173 = bone13.addOrReplaceChild("cube_r173", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 30.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r174 = bone13.addOrReplaceChild("cube_r174", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -21.5F, -11.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.0F, -1.5708F, -0.48F)); + PartDefinition cube_r175 = bone13.addOrReplaceChild("cube_r175", CubeListBuilder.create().texOffs(0, 200).addBox(0.0F, -1.0F, -0.5F, 0.0F, 18.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -61.0F, 30.0F, 2.618F, -0.7854F, 3.1416F)); + PartDefinition cube_r176 = bone13.addOrReplaceChild("cube_r176", CubeListBuilder.create().texOffs(52, 52).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone28.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratewreck.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratewreck.java new file mode 100644 index 0000000..9998ca9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterpiratewreck.java @@ -0,0 +1,520 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterpiratewreck extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterpiratewreck"), "main"); + public final ModelPart bone28; + + public Modelcutterpiratewreck(ModelPart root) { + this.bone28 = root.getChild("bone28"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", + CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -8.0F, 34.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(65, 197).addBox(12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(26, 49) + .addBox(-7.8312F, -6.025F, 32.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19).addBox(-5.8312F, -10.125F, 32.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 49) + .addBox(-2.3375F, -7.3375F, 32.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(22, 70).addBox(-6.8938F, -12.1688F, 31.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 70) + .addBox(-1.6062F, -12.2625F, 31.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.5F, -10.8937F, 32.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror() + .addBox(1.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 58).addBox(-1.5F, -2.625F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2) + .addBox(-4.5F, -3.0F, -21.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, 5.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(39, 169) + .addBox(7.5F, -9.0F, -21.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(89, 25).addBox(-4.5F, -6.0F, 32.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(30, 16) + .addBox(-1.0F, -17.0F, 10.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-0.5F, -16.5F, 12.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-8.0F, -8.0F, -10.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 250).addBox(-12.0F, -16.0F, 34.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror() + .addBox(-12.0F, -14.0F, -21.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(9.0F, 20.0F, 0.0F, 0.0F, 0.0F, -1.309F)); + PartDefinition cube_r1 = bone28 + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(36, 161).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r2 = bone28.addOrReplaceChild("cube_r2", + CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r3 = bone28.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 175).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r4 = bone28.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r5 = bone28.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r6 = bone28.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r7 = bone28.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r8 = bone28.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r9 = bone28.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r10 = bone28.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r11 = bone28.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r12 = bone28.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r13 = bone28.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r14 = bone28.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r15 = bone28.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r16 = bone28.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r17 = bone28.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bone28.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(41, 222).addBox(-1.5F, 11.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5236F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone28.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, -0.8324F, -11.8662F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -13.0F, -39.5F, -0.2618F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone28.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r21 = bone28.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -33.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r22 = bone28.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r23 = bone28.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r24 = bone28.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r25 = bone28.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r26 = bone28.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r27 = bone28.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -21.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r28 = bone28.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -26.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r29 = bone28.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -26.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r30 = bone28.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -21.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r31 = bone28.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r32 = bone28.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r33 = bone28.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r34 = bone28.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r35 = bone28.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 115).addBox(-9.922F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r36 = bone28.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = bone28.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r38 = bone28.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r39 = bone28.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r40 = bone28.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r41 = bone28.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r42 = bone28.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r43 = bone28 + .addOrReplaceChild( + "cube_r43", CubeListBuilder.create().texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r44 = bone28.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r45 = bone28.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r46 = bone28.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r47 = bone28.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r48 = bone28.addOrReplaceChild("cube_r48", + CubeListBuilder.create().texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r49 = bone28.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r50 = bone28 + .addOrReplaceChild( + "cube_r50", CubeListBuilder.create().texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r51 = bone28.addOrReplaceChild("cube_r51", + CubeListBuilder.create().texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r52 = bone28.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r53 = bone28.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -33.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r54 = bone28.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r55 = bone28.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(30, 28).mirror().addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(60, 139).mirror() + .addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r56 = bone28.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r57 = bone28.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r58 = bone28.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r59 = bone28.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r60 = bone28.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r61 = bone28.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r62 = bone28.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r63 = bone28.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r64 = bone28.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r65 = bone28.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r66 = bone28.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r67 = bone28.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r68 = bone28.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, 2.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r69 = bone28.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -18.1356F, -30.118F, 0.0F, 18.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0173F, 0.0023F, -0.2182F)); + PartDefinition cube_r70 = bone28.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -13.7857F, 9.7298F, -0.0164F, -0.006F, -0.6981F)); + PartDefinition cube_r71 = bone28.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(238, 92).mirror().addBox(-0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, 9.7298F, -0.0169F, -0.0045F, 0.0873F)); + PartDefinition cube_r72 = bone28.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -13.7857F, -15.2702F, 0.0038F, -0.017F, -1.4399F)); + PartDefinition cannon3 = bone28.addOrReplaceChild("cannon3", + CubeListBuilder.create().texOffs(93, 27).mirror().addBox(1.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(-2.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(93, 27).mirror().addBox(32.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(92, 26) + .addBox(28.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0714F, -10.3684F, -13.8564F, 0.0F, -1.5708F, -1.0472F)); + PartDefinition cube_r73 = cannon3.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(96, 134).mirror().addBox(30.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(96, 134).mirror() + .addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r74 = cannon3.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(104, 235).mirror().addBox(30.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(29.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(104, 235).mirror().addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(129, 238).mirror() + .addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r75 = cannon3.addOrReplaceChild("cube_r75", + CubeListBuilder.create().texOffs(36, 119).addBox(30.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(36, 119).mirror().addBox(34.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon2 = bone28.addOrReplaceChild("cannon2", + CubeListBuilder.create().texOffs(93, 27).addBox(-2.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(1.5714F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false).texOffs(93, 27).addBox(-33.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror().addBox(-29.4286F, -0.9316F, -2.3186F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) + .mirror(false), + PartPose.offsetAndRotation(-8.0714F, -10.3684F, -13.8564F, 0.0F, 1.5708F, 0.0F)); + PartDefinition cube_r76 = cannon2.addOrReplaceChild("cube_r76", + CubeListBuilder.create().texOffs(96, 134).addBox(-31.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.4286F, -3.1316F, -0.1436F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r77 = cannon2.addOrReplaceChild("cube_r77", + CubeListBuilder.create().texOffs(104, 235).addBox(-32.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-32.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)).texOffs(104, 235) + .addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0714F, -2.6316F, -4.6436F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r78 = cannon2.addOrReplaceChild("cube_r78", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-31.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-35.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0714F, 1.3684F, -3.1436F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cannon = bone28.addOrReplaceChild("cannon", CubeListBuilder.create().texOffs(93, 27).addBox(-2.3333F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(92, 26).mirror() + .addBox(1.6667F, -5.755F, -13.5032F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-0.1667F, -6.545F, -15.6718F)); + PartDefinition cube_r79 = cannon.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(96, 134).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -7.955F, -11.3282F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r80 = cannon.addOrReplaceChild("cube_r80", + CubeListBuilder.create().texOffs(104, 235).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(129, 238).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -7.455F, -15.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r81 = cannon.addOrReplaceChild("cube_r81", + CubeListBuilder.create().texOffs(36, 119).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 119).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.1667F, -3.455F, -14.3282F, -0.5672F, 0.0F, 0.0F)); + PartDefinition mast = bone28.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169) + .addBox(-13.0F, -37.5F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(177, 169).addBox(-13.0F, -49.0F, -2.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, -14.0F, -0.0908F, 0.8665F, -0.3129F)); + PartDefinition cube_r82 = mast.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -14.5F, -2.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r83 = mast.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r84 = mast.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r85 = mast.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(86, 233).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r86 = mast.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r87 = mast.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.0F, 8.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, 11.8431F)); + PartDefinition cube_r88 = bone2.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r89 = bone3.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone3.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r91 = bone4.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r92 = bone4.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r93 = bone5.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r94 = bone5.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r95 = bone5.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, 11.8431F)); + PartDefinition cube_r96 = bone7.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r97 = bone8.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r98 = bone8.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r99 = bone9.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r100 = bone9.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r101 = bone10.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r102 = bone10.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r103 = bone10.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone24 = mast.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, 11.8431F)); + PartDefinition cube_r104 = bone24.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r105 = bone25.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r106 = bone25.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r107 = bone26.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r108 = bone26.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r109 = bone27.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r110 = bone27.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r111 = bone27.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone32 = mast.addOrReplaceChild("bone32", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -33.7375F, -1.75F, -1.4379F, 0.173F, 0.023F)); + PartDefinition cube_r112 = bone32.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.6625F, 0.025F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r113 = bone32.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 1.9125F, -0.8625F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r114 = bone32.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(0, 58).addBox(-15.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 8.4035F, -1.2137F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r115 = bone32.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(68, 58).addBox(-20.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 17.75F, -0.8875F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r116 = bone32.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(68, 64).addBox(-21.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 19.0F, 0.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -55.0F, 0.1616F, -2.514F, -0.7674F, 2.675F)); + PartDefinition cube_r117 = flag.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r118 = flag.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone = bone28.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(2.4805F, -19.625F, 26.8251F, 0.0F, 0.0F, 2.3998F)); + PartDefinition cube_r119 = bone.addOrReplaceChild("cube_r119", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone29 = bone28.addOrReplaceChild("bone29", CubeListBuilder.create(), PartPose.offset(5.0F, 8.0F, -12.0F)); + PartDefinition cube_r120 = bone29.addOrReplaceChild("cube_r120", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -4.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone30 = bone28.addOrReplaceChild("bone30", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.625F, -7.1749F, -0.8091F, 0.2143F, -0.2194F)); + PartDefinition cube_r121 = bone30.addOrReplaceChild("cube_r121", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone33 = bone28.addOrReplaceChild("bone33", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.25F, -22.1749F, -1.5024F, 0.2547F, 0.6787F)); + PartDefinition cube_r122 = bone33.addOrReplaceChild("cube_r122", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone36 = bone28.addOrReplaceChild("bone36", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.25F, 27.1749F, 1.5024F, -0.2547F, 0.6787F)); + PartDefinition cube_r123 = bone36.addOrReplaceChild("cube_r123", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -1.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -1.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -1.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -1.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -1.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -1.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, -2.1749F, 0.0F, -0.6981F, 0.0F)); + PartDefinition bone34 = bone28.addOrReplaceChild("bone34", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.25F, -14.1749F, -0.0925F, 1.0068F, 1.4882F)); + PartDefinition cube_r124 = bone34.addOrReplaceChild("cube_r124", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone35 = bone28.addOrReplaceChild("bone35", CubeListBuilder.create(), PartPose.offsetAndRotation(0.4805F, -5.25F, 17.8251F, -0.0925F, 1.0068F, 1.4882F)); + PartDefinition cube_r125 = bone35.addOrReplaceChild("cube_r125", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition flag2 = bone28.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.3789F, -65.0F, 10.1616F, -0.6867F, -1.4512F, 0.349F)); + PartDefinition cube_r126 = flag2.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r127 = flag2.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone19 = bone28.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-18.0F, -8.0F, 0.0F, -0.1954F, -0.1841F, 1.3257F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(3.0F, -15.0F, 6.9625F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r128 = chestlid.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r129 = chestlid.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r130 = chestlid.addOrReplaceChild("cube_r130", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r131 = chestlid.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r132 = chestlid.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(3.0F, -4.0F, -6.0F)); + PartDefinition bone31 = bone28.addOrReplaceChild("bone31", CubeListBuilder.create(), PartPose.offsetAndRotation(3.0F, -2.0F, 0.0F, -1.309F, -0.6545F, 0.0F)); + PartDefinition chestlid2 = bone31.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(-4.0F, -3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r133 = chestlid2.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r134 = chestlid2.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r135 = chestlid2.addOrReplaceChild("cube_r135", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r136 = chestlid2.addOrReplaceChild("cube_r136", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r137 = chestlid2.addOrReplaceChild("cube_r137", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = bone31.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, 8.0F, -34.0F)); + PartDefinition mast2 = bone28.addOrReplaceChild("mast2", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -57.0F, -1.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -10.0F, 11.0F, 0.0F, 0.0F, -0.2618F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, 10.8431F)); + PartDefinition cube_r138 = bone6.addOrReplaceChild("cube_r138", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r139 = bone11.addOrReplaceChild("cube_r139", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r140 = bone11.addOrReplaceChild("cube_r140", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r141 = bone12.addOrReplaceChild("cube_r141", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r142 = bone12.addOrReplaceChild("cube_r142", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r143 = bone14.addOrReplaceChild("cube_r143", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r144 = bone14.addOrReplaceChild("cube_r144", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r145 = bone14.addOrReplaceChild("cube_r145", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone20 = mast2.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -31.5F, 10.8431F)); + PartDefinition cube_r146 = bone20.addOrReplaceChild("cube_r146", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r147 = bone21.addOrReplaceChild("cube_r147", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r148 = bone21.addOrReplaceChild("cube_r148", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone20.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r149 = bone22.addOrReplaceChild("cube_r149", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r150 = bone22.addOrReplaceChild("cube_r150", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone23 = bone22.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r151 = bone23.addOrReplaceChild("cube_r151", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r152 = bone23.addOrReplaceChild("cube_r152", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r153 = bone23.addOrReplaceChild("cube_r153", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, 10.8431F)); + PartDefinition cube_r154 = bone15.addOrReplaceChild("cube_r154", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r155 = bone16.addOrReplaceChild("cube_r155", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r156 = bone16.addOrReplaceChild("cube_r156", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r157 = bone17.addOrReplaceChild("cube_r157", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r158 = bone17.addOrReplaceChild("cube_r158", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r159 = bone18.addOrReplaceChild("cube_r159", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r160 = bone18.addOrReplaceChild("cube_r160", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r161 = bone18.addOrReplaceChild("cube_r161", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast2.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(120, 0).addBox(-0.625F, -25.0F, 32.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(177, 169) + .addBox(-13.0F, -59.0F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(178, 169).addBox(-13.0F, -47.5F, 30.0F, 26.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 10.0F, -33.0F)); + PartDefinition cube_r162 = bone13.addOrReplaceChild("cube_r162", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 30.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r163 = bone13.addOrReplaceChild("cube_r163", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 29.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r164 = bone13.addOrReplaceChild("cube_r164", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 29.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r165 = bone13.addOrReplaceChild("cube_r165", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 29.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r166 = bone13.addOrReplaceChild("cube_r166", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 30.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r167 = bone13.addOrReplaceChild("cube_r167", CubeListBuilder.create().texOffs(86, 232).addBox(-13.0F, -20.7822F, -2.2923F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r168 = bone13.addOrReplaceChild("cube_r168", CubeListBuilder.create().texOffs(86, 231).addBox(-13.0F, -21.4738F, -7.5942F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r169 = bone13.addOrReplaceChild("cube_r169", CubeListBuilder.create().texOffs(86, 227).addBox(-13.0F, 19.784F, -11.2137F, 26.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r170 = bone13.addOrReplaceChild("cube_r170", CubeListBuilder.create().texOffs(86, 225).addBox(-13.0F, -23.4762F, -15.1675F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r171 = bone13.addOrReplaceChild("cube_r171", CubeListBuilder.create().texOffs(86, 223).addBox(-13.0F, -20.7441F, -20.7238F, 26.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.0F, 40.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r172 = bone13.addOrReplaceChild("cube_r172", CubeListBuilder.create().texOffs(156, 56).addBox(-0.875F, -19.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 31.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r173 = bone13.addOrReplaceChild("cube_r173", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 30.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r174 = bone13.addOrReplaceChild("cube_r174", CubeListBuilder.create().texOffs(156, 56).addBox(-1.875F, -22.5F, -15.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -24.5F, 7.0F, 0.3634F, -0.6324F, -0.9107F)); + PartDefinition cube_r175 = bone13.addOrReplaceChild("cube_r175", CubeListBuilder.create().texOffs(0, 200).addBox(0.0F, -1.0F, -0.5F, 0.0F, 18.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -61.0F, 30.0F, 2.618F, -0.7854F, 3.1416F)); + PartDefinition cube_r176 = bone13.addOrReplaceChild("cube_r176", CubeListBuilder.create().texOffs(52, 52).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition wheel = bone28.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -16.0F, 12.25F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone28.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterremastered.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterremastered.java new file mode 100644 index 0000000..33946a2 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterremastered.java @@ -0,0 +1,406 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterremastered extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterremastered"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + + public Modelcutterremastered(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8937F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8938F, -12.1688F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9313F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0812F, -6.025F, 26.9313F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -11.0F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r72 = Hull + .addOrReplaceChild( + "cube_r72", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r73 = Hull.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -39.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, -15) + .addBox(0.0F, -33.0F, -60.0F, 0.0F, 47.0F, 74.0F, new CubeDeformation(0.0F)).texOffs(210, 5).addBox(-0.75F, -6.0F, -18.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 1.0F, 3.0F)); + PartDefinition cube_r75 = mast.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(94, 319).addBox(-12.0F, -56.0F, -1.0F, 24.0F, 65.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 3.7625F, -58.25F, -0.8378F, 0.0F, 0.0F)); + PartDefinition cube_r76 = mast.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(36, 329).addBox(-12.0F, -55.0F, 1.0F, 24.0F, 55.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 12.25F, 13.0F, 0.6196F, 0.0F, 0.0F)); + PartDefinition cube_r77 = mast.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(0, 339).mirror().addBox(-1.0F, -28.0F, -18.0F, 0.0F, 28.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-10.0F, 13.0F, -8.9F, 0.0F, 0.0F, -0.2182F)); + PartDefinition cube_r78 = mast.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(0, 339).addBox(1.0F, -28.0F, -18.0F, 0.0F, 28.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.0F, 13.0F, -8.9F, 0.0F, 0.0F, 0.2182F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r79 = bone2.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r80 = bone3.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r81 = bone3.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r82 = bone4.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r83 = bone4.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r84 = bone5.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r85 = bone5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r86 = bone5.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r87 = bone7.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r88 = bone8.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r89 = bone8.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r90 = bone9.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r91 = bone9.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r92 = bone10.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r93 = bone10.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r94 = bone10.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3536F, 16.0F, -18.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r95 = bone6.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3536F, 1.5F, -0.3536F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.6411F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r96 = bone11.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r97 = bone11.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.6411F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r98 = bone12.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r99 = bone12.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r100 = bone14.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r101 = bone14.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r102 = bone14.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, 10.0F, -26.0F)); + PartDefinition cube_r103 = bone13.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(108, 245).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.7375F, 7.25F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r104 = bone13.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(108, 241).addBox(-17.0F, -3.992F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -25.9875F, 6.3625F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r105 = bone13.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(108, 233).addBox(-17.0F, -5.425F, -0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.334F, 6.0363F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r106 = bone13.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(108, 229).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.825F, 6.3875F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r107 = bone13.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(108, 227).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -43.075F, 7.275F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r108 = bone13.addOrReplaceChild("cube_r108", + CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(156, 56).addBox(0.125F, 18.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -43.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -37.0F, -17.8384F)); + PartDefinition cube_r109 = flag.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r110 = flag.addOrReplaceChild("cube_r110", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -15.625F, -36.1749F, 0.0F, 1.4835F, 0.0F)); + PartDefinition cube_r111 = bone22.addOrReplaceChild("cube_r111", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -15.625F, -43.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r112 = bone21.addOrReplaceChild("cube_r112", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(6.4805F, -15.625F, -38.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r113 = bone20.addOrReplaceChild("cube_r113", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r114 = bone.addOrReplaceChild("cube_r114", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r115 = chestlid.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r116 = chestlid.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r117 = chestlid.addOrReplaceChild("cube_r117", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r118 = chestlid.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r119 = chestlid.addOrReplaceChild("cube_r119", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = headPitch / (180F / (float) Math.PI); + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterweaponisedremastered.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterweaponisedremastered.java new file mode 100644 index 0000000..ee1a183 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterweaponisedremastered.java @@ -0,0 +1,487 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterweaponisedremastered extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterweaponisedremastered"), "main"); + public final ModelPart Hull; + public final ModelPart wheel; + public final ModelPart mast; + public final ModelPart bone2; + public final ModelPart bone3; + public final ModelPart bone4; + public final ModelPart bone5; + public final ModelPart bone7; + public final ModelPart bone8; + public final ModelPart bone9; + public final ModelPart bone10; + public final ModelPart bone15; + public final ModelPart bone16; + public final ModelPart bone17; + public final ModelPart bone18; + public final ModelPart bone6; + public final ModelPart bone11; + public final ModelPart bone12; + public final ModelPart bone14; + public final ModelPart bone13; + public final ModelPart flag; + public final ModelPart Decorations; + public final ModelPart bone22; + public final ModelPart bone21; + public final ModelPart bone20; + public final ModelPart bone; + public final ModelPart bone19; + public final ModelPart chestlid; + public final ModelPart chest; + public final ModelPart bone23; + public final ModelPart chestlid2; + public final ModelPart chest2; + public final ModelPart CannonLeft; + public final ModelPart CannonRight; + public final ModelPart CannonFront; + public final ModelPart bb_main; + + public Modelcutterweaponisedremastered(ModelPart root) { + this.Hull = root.getChild("Hull"); + this.wheel = root.getChild("wheel"); + this.mast = root.getChild("mast"); + this.bone2 = this.mast.getChild("bone2"); + this.bone3 = this.bone2.getChild("bone3"); + this.bone4 = this.bone2.getChild("bone4"); + this.bone5 = this.bone4.getChild("bone5"); + this.bone7 = this.mast.getChild("bone7"); + this.bone8 = this.bone7.getChild("bone8"); + this.bone9 = this.bone7.getChild("bone9"); + this.bone10 = this.bone9.getChild("bone10"); + this.bone15 = this.mast.getChild("bone15"); + this.bone16 = this.bone15.getChild("bone16"); + this.bone17 = this.bone15.getChild("bone17"); + this.bone18 = this.bone17.getChild("bone18"); + this.bone6 = this.mast.getChild("bone6"); + this.bone11 = this.bone6.getChild("bone11"); + this.bone12 = this.bone6.getChild("bone12"); + this.bone14 = this.bone12.getChild("bone14"); + this.bone13 = this.mast.getChild("bone13"); + this.flag = this.mast.getChild("flag"); + this.Decorations = root.getChild("Decorations"); + this.bone22 = this.Decorations.getChild("bone22"); + this.bone21 = this.Decorations.getChild("bone21"); + this.bone20 = this.Decorations.getChild("bone20"); + this.bone = this.Decorations.getChild("bone"); + this.bone19 = this.Decorations.getChild("bone19"); + this.chestlid = this.bone19.getChild("chestlid"); + this.chest = this.bone19.getChild("chest"); + this.bone23 = this.Decorations.getChild("bone23"); + this.chestlid2 = this.bone23.getChild("chestlid2"); + this.chest2 = this.bone23.getChild("chest2"); + this.CannonLeft = root.getChild("CannonLeft"); + this.CannonRight = root.getChild("CannonRight"); + this.CannonFront = root.getChild("CannonFront"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition Hull = partdefinition.addOrReplaceChild("Hull", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -9.0F, -27.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.5F, -9.0F, -0.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(153, 192) + .addBox(4.5F, -9.0F, -6.5F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(60, 2).addBox(-4.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(96, 58) + .addBox(-1.5F, -2.625F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).texOffs(60, 2).mirror().addBox(1.5F, -3.0F, -27.5F, 3.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 42) + .addBox(-10.5F, -10.8938F, 26.5562F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(73, 181).addBox(-1.6062F, -12.2625F, 25.4875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(73, 179) + .addBox(-6.8937F, -12.1687F, 25.375F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 49).addBox(-2.3375F, -7.3375F, 26.8188F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.8312F, -10.125F, 26.9312F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.0812F, -6.025F, 26.9312F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.5F, -6.0F, 26.5F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -8.25F, -22.0F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -16.5F, 6.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -17.0F, 4.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(65, 197) + .addBox(12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).texOffs(65, 197).mirror().addBox(-12.0F, -14.0F, -27.0F, 0.0F, 4.0F, 55.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250) + .addBox(-12.0F, -16.0F, 28.0F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-1.0F, -8.0F, 28.0F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, -11.0F)); + PartDefinition cube_r1 = Hull + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = Hull + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(78, 176) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(60, 114).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = Hull.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 29).mirror().addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = Hull.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(89, 122).mirror().addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(105, 171) + .addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = Hull.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = Hull + .addOrReplaceChild( + "cube_r6", CubeListBuilder.create().texOffs(89, 122).addBox(5.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).mirror() + .addBox(8.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r7 = Hull.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r8 = Hull.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r9 = Hull.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r10 = Hull.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(178, 143).mirror().addBox(5.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r11 = Hull.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r12 = Hull.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r13 = Hull.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r14 = Hull.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r15 = Hull.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r16 = Hull.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r17 = Hull.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r18 = Hull.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r19 = Hull.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r20 = Hull.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = Hull.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = Hull.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r23 = Hull.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -7.0236F, -39.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r24 = Hull.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r25 = Hull.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r26 = Hull.addOrReplaceChild("cube_r26", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r27 = Hull.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = Hull.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = Hull.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(60, 106).addBox(-8.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r30 = Hull.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r31 = Hull.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.163F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r32 = Hull.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r33 = Hull.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = Hull.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r35 = Hull.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r36 = Hull.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r37 = Hull.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r38 = Hull.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(198, 171).addBox(-10.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r39 = Hull.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r40 = Hull.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -12.422F, -27.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r41 = Hull.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(140, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -12.422F, -32.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r42 = Hull.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(140, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -12.422F, -32.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r43 = Hull.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -12.422F, -27.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r44 = Hull.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(66, 40).mirror().addBox(-9.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r45 = Hull.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(120, 0).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.4F, -1.0F, -3.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = Hull.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r47 = Hull.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(120, 0).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 54.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.4F, -1.0F, -3.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r48 = Hull.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(53, 200).mirror().addBox(-9.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r49 = Hull.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.9F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r50 = Hull.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r51 = Hull.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r52 = Hull.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -7.0236F, -39.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r53 = Hull.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r54 = Hull.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r55 = Hull.addOrReplaceChild("cube_r55", + CubeListBuilder.create().texOffs(206, 99).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(42, 181).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r56 = Hull.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r57 = Hull.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r58 = Hull.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r59 = Hull.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r60 = Hull.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r61 = Hull.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r62 = Hull.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r63 = Hull.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r64 = Hull.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r65 = Hull.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(199, 21).addBox(1.5F, -8.2608F, 4.8799F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r66 = Hull.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(21, 214).addBox(-1.8533F, -8.173F, 4.8808F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r67 = Hull.addOrReplaceChild("cube_r67", + CubeListBuilder.create().texOffs(199, 135).addBox(-4.5F, -8.0F, 5.0F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(178, 114).addBox(-4.5F, -8.0F, 11.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r68 = Hull.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(186, 194).addBox(-7.5F, -7.4724F, 5.2264F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -11.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r69 = Hull.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r70 = Hull.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r71 = Hull.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r72 = Hull + .addOrReplaceChild( + "cube_r72", CubeListBuilder.create().texOffs(42, 167).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(72, 171) + .addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r73 = Hull.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(6, 181).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r74 = Hull.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(135, 177).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.0F, -3.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 8.0F, -4.75F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -56.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(182, 218) + .addBox(0.0F, -51.0F, -69.0F, 0.0F, 65.0F, 101.0F, new CubeDeformation(0.0F)).texOffs(210, 5).addBox(-0.75F, -6.0F, -18.0F, 1.0F, 1.0F, 32.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 1.0F, 3.0F)); + PartDefinition cube_r75 = mast.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(344, 168).addBox(0.0F, -27.0F, -1.0F, 0.0F, 27.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.5F, -22.0F, -16.75F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r76 = mast.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(293, 0).addBox(-11.5F, -10.5F, 0.0F, 23.0F, 21.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0063F, -12.5F, 4.303F, 0.0F, -1.0297F, 0.0F)); + PartDefinition cube_r77 = mast.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(224, 19).addBox(0.0F, -1.0F, -1.0F, 1.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.75F, -22.0F, -17.0F, 0.0F, -0.7418F, 0.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r78 = bone2.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -26.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r79 = bone3.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -38.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r80 = bone3.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -38.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r81 = bone4.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r82 = bone4.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -38.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r83 = bone5.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -38.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r84 = bone5.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -38.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r85 = bone5.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -38.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r86 = bone7.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = bone8.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r88 = bone8.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r89 = bone9.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone9.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r91 = bone10.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r92 = bone10.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r93 = bone10.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, -12.5F, -6.1569F)); + PartDefinition cube_r94 = bone15.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(272, 230).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -9.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r95 = bone16.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(255, 230).addBox(7.9853F, -21.5F, 7.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r96 = bone16.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(268, 230).addBox(0.15F, -21.5F, -11.9375F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r97 = bone17.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(247, 230).addBox(7.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r98 = bone17.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(251, 230).addBox(-11.85F, -21.5F, 0.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r99 = bone18.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(287, 124).addBox(-8.9853F, -21.5F, -9.4853F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r100 = bone18.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(239, 230).addBox(-12.3625F, -21.5F, -1.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r101 = bone18.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(243, 230).addBox(0.15F, -21.5F, 12.0625F, 1.0F, 17.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone6 = mast.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offsetAndRotation(0.3535F, 16.0F, -18.8033F, 3.1416F, 0.0F, 0.0F)); + PartDefinition cube_r102 = bone6.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(298, 106).addBox(-0.5F, -1.5F, -1.0F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3535F, 1.5F, -0.3535F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.6464F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r103 = bone11.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(288, 106).addBox(7.9853F, -10.5F, 7.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r104 = bone11.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(294, 106).addBox(0.15F, -10.5F, -11.9375F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.641F, 10.5F, 11.3714F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r105 = bone12.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(280, 106).addBox(7.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r106 = bone12.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(284, 106).addBox(-11.85F, -10.5F, 0.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r107 = bone14.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(266, 105).addBox(-8.9853F, -10.5F, -9.4853F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r108 = bone14.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(272, 106).addBox(-12.3625F, -10.5F, -1.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r109 = bone14.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(276, 106).addBox(0.15F, -10.5F, 12.0625F, 1.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, 10.0F, -26.0F)); + PartDefinition cube_r110 = bone13.addOrReplaceChild("cube_r110", + CubeListBuilder.create().texOffs(185, 118).addBox(0.125F, -0.5F, -12.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(242, 0).addBox(0.125F, 41.5F, -23.0F, 1.0F, 1.0F, 44.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.625F, -59.5F, 5.5F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r111 = bone13.addOrReplaceChild("cube_r111", CubeListBuilder.create().texOffs(298, 220).addBox(3.3072F, 13.9539F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.2132F, 0.762F, 0.3038F)); + PartDefinition cube_r112 = bone13.addOrReplaceChild("cube_r112", CubeListBuilder.create().texOffs(298, 205).addBox(0.8247F, -0.5492F, -21.5F, 0.0F, 15.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, 0.0436F, 0.7844F, 0.0617F)); + PartDefinition cube_r113 = bone13.addOrReplaceChild("cube_r113", CubeListBuilder.create().texOffs(298, 190).addBox(0.8746F, -14.4486F, -21.5F, 0.0F, 14.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.0436F, 0.7844F, -0.0617F)); + PartDefinition cube_r114 = bone13.addOrReplaceChild("cube_r114", CubeListBuilder.create().texOffs(298, 183).addBox(3.356F, -20.9431F, -21.5F, 0.0F, 7.0F, 43.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.4195F, -38.5F, 4.8833F, -0.2132F, 0.762F, -0.3038F)); + PartDefinition cube_r115 = bone13.addOrReplaceChild("cube_r115", CubeListBuilder.create().texOffs(358, 22).mirror().addBox(-7.125F, -0.5F, 21.0F, 13.0F, 23.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.625F, -17.5F, 32.0F, 0.0F, 2.3562F, 0.0F)); + PartDefinition cube_r116 = bone13.addOrReplaceChild("cube_r116", CubeListBuilder.create().texOffs(358, 0).addBox(-5.875F, -0.5F, 21.0F, 13.0F, 23.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.625F, -17.5F, 6.5F, 0.0F, -2.3562F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -18.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -18.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -37.0F, -17.8384F)); + PartDefinition cube_r117 = flag.addOrReplaceChild("cube_r117", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, -17.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r118 = flag.addOrReplaceChild("cube_r118", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, -17.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition Decorations = partdefinition.addOrReplaceChild("Decorations", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone22 = Decorations.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -15.625F, -36.1749F, 0.0F, 1.4835F, 0.0F)); + PartDefinition cube_r119 = bone22.addOrReplaceChild("cube_r119", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = Decorations.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.5195F, -15.625F, -12.1749F, 0.0F, 0.3927F, 0.0F)); + PartDefinition cube_r120 = bone21.addOrReplaceChild("cube_r120", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = Decorations.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(2.4805F, -15.625F, -11.1749F, 0.0F, -0.2618F, 0.0F)); + PartDefinition cube_r121 = bone20.addOrReplaceChild("cube_r121", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 0.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 0.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 0.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 3.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 0.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone = Decorations.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(8.0F, 0.0F, 0.0F)); + PartDefinition cube_r122 = bone.addOrReplaceChild("cube_r122", + CubeListBuilder.create().texOffs(206, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(206, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -13.0F, 12.0F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = Decorations.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-6.0F, -14.0F, 11.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, -21.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r123 = chestlid.addOrReplaceChild("cube_r123", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r124 = chestlid.addOrReplaceChild("cube_r124", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r125 = chestlid.addOrReplaceChild("cube_r125", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r126 = chestlid.addOrReplaceChild("cube_r126", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.5677F, 3.9022F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r127 = chestlid.addOrReplaceChild("cube_r127", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition bone23 = Decorations.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offsetAndRotation(7.0F, -14.0F, -41.0F, 0.0F, 2.2253F, 0.0F)); + PartDefinition chestlid2 = bone23.addOrReplaceChild("chestlid2", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.75F, 1.4625F, -0.9163F, 0.0F, 0.0F)); + PartDefinition cube_r128 = chestlid2.addOrReplaceChild("cube_r128", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.8801F, -1.7618F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.7317F, -23.2636F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r129 = chestlid2.addOrReplaceChild("cube_r129", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 4.6253F, 20.6501F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.7317F, -18.2636F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r130 = chestlid2.addOrReplaceChild("cube_r130", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 21.1913F, -4.6157F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 12.2317F, -20.7636F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r131 = chestlid2.addOrReplaceChild("cube_r131", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 0.0F, -1.0F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 1.5485F, -4.4232F, 2.2689F, 0.0F, 0.0F)); + PartDefinition cube_r132 = chestlid2.addOrReplaceChild("cube_r132", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 13.2483F, 12.9228F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 13.7317F, -18.2636F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest2 = bone23.addOrReplaceChild("chest2", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -13.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition CannonLeft = partdefinition.addOrReplaceChild("CannonLeft", + CubeListBuilder.create().texOffs(255, 23).addBox(-1.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(256, 11).addBox(-2.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offset(8.5F, 11.75F, -27.5F)); + PartDefinition cube_r133 = CannonLeft.addOrReplaceChild("cube_r133", CubeListBuilder.create().texOffs(274, 6).addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -3.0F, 0.0F, 0.0F, 0.0F, -0.5236F)); + PartDefinition CannonRight = partdefinition.addOrReplaceChild("CannonRight", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-8.5F, 11.75F, -27.5F)); + PartDefinition cube_r134 = CannonRight.addOrReplaceChild("cube_r134", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -3.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition CannonFront = partdefinition.addOrReplaceChild("CannonFront", CubeListBuilder.create().texOffs(255, 23).mirror().addBox(-5.5F, -2.75F, -1.5F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(256, 11).mirror() + .addBox(-0.5F, -3.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.5F, 9.75F, -50.5F, -1.5708F, -1.0908F, 1.5708F)); + PartDefinition cube_r135 = CannonFront.addOrReplaceChild("cube_r135", CubeListBuilder.create().texOffs(274, 6).mirror().addBox(-0.5F, -1.5F, -0.5F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -3.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(259, 4).addBox(6.0F, -14.25F, -29.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(6.0F, -14.25F, -25.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).mirror() + .addBox(-11.0F, -14.25F, -29.75F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(259, 4).mirror().addBox(-11.0F, -14.25F, -25.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r136 = bb_main.addOrReplaceChild("cube_r136", + CubeListBuilder.create().texOffs(259, 4).addBox(-2.5F, -2.5F, -2.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(259, 4).addBox(-2.5F, -2.5F, 2.25F, 5.0F, 5.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.5F, -12.75F, -49.5F, 0.0F, 1.5708F, 0.0F)); + return LayerDefinition.create(meshdefinition, 384, 384); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + Hull.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Decorations.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonLeft.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonRight.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + CannonFront.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = Mth.cos(limbSwing * 0.6662F + (float) Math.PI) * limbSwingAmount; + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckback.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckback.java new file mode 100644 index 0000000..61669aa --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckback.java @@ -0,0 +1,176 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterwreckback extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterwreckback"), "main"); + public final ModelPart bone2; + + public Modelcutterwreckback(ModelPart root) { + this.bone2 = root.getChild("bone2"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone2 = partdefinition.addOrReplaceChild("bone2", + CubeListBuilder.create().texOffs(0, 0).addBox(-0.649F, -0.8537F, 11.8744F, 2.0F, 10.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(145, 215).addBox(12.351F, -6.8537F, -25.1256F, 0.0F, 4.0F, 37.0F, new CubeDeformation(0.0F)) + .texOffs(145, 215).mirror().addBox(-11.649F, -6.8537F, -25.1256F, 0.0F, 4.0F, 37.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 250).addBox(-11.649F, -8.8537F, 11.8744F, 24.0F, 6.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-7.649F, -0.8537F, -32.1256F, 16.0F, 0.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(132, 171).addBox(4.851F, -1.8537F, -16.6256F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(119, 81) + .addBox(-1.149F, 4.5213F, -18.6256F, 3.0F, 2.0F, 31.0F, new CubeDeformation(0.0F)).texOffs(86, 28).mirror().addBox(1.851F, 4.1463F, -17.6256F, 3.0F, 2.0F, 28.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(86, 28) + .addBox(-4.149F, 4.1463F, -17.6256F, 3.0F, 2.0F, 28.0F, new CubeDeformation(0.0F)).texOffs(0, 42).addBox(-10.149F, -3.7474F, 10.4307F, 21.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 70) + .addBox(-1.2553F, -5.1162F, 9.3619F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(22, 70).addBox(-6.5428F, -5.0224F, 9.2494F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(60, 19) + .addBox(-5.4803F, -2.9787F, 10.8057F, 9.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(26, 49).addBox(-7.4803F, 1.1213F, 10.8057F, 11.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(89, 25) + .addBox(-4.149F, 1.1463F, 10.3744F, 9.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.351F, 18.8537F, 5.1256F, 0.2618F, 0.0F, 0.0F)); + PartDefinition cube_r1 = bone2 + .addOrReplaceChild( + "cube_r1", CubeListBuilder.create().texOffs(89, 32).addBox(-11.3384F, -12.3168F, 28.875F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(72, 34) + .addBox(-9.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(79, 133).mirror().addBox(4.3467F, 0.1647F, -5.0F, 3.0F, 1.0F, 35.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r2 = bone2 + .addOrReplaceChild( + "cube_r2", CubeListBuilder.create().texOffs(89, 18).addBox(2.8384F, -12.4668F, 28.8188F, 8.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(103, 66) + .addBox(6.8988F, -10.8669F, 30.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(79, 133).addBox(-7.3467F, 0.1647F, -5.0F, 3.0F, 1.0F, 35.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r3 = bone2.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(30, 28).addBox(-7.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r4 = bone2.addOrReplaceChild("cube_r4", + CubeListBuilder.create().texOffs(0, 139).addBox(-11.7622F, -0.4046F, 30.0F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(105, 171).addBox(-11.7417F, 2.721F, 12.0F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r5 = bone2.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(14, 29).addBox(4.2917F, -2.6468F, 30.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r6 = bone2.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r7 = bone2.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(194, 73).mirror().addBox(8.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r8 = bone2.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 106).mirror().addBox(7.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r9 = bone2.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(60, 106).mirror().addBox(5.7417F, 2.7012F, -8.9654F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r10 = bone2.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(194, 73).addBox(-11.7417F, 3.0446F, -3.1832F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r11 = bone2.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(178, 143).addBox(-8.7417F, 3.6968F, 13.2665F, 3.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r12 = bone2.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(0, 106).addBox(-10.8142F, 7.8319F, 7.6737F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r13 = bone2.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(142, 22).mirror().addBox(-9.422F, 10.3831F, -2.014F, 2.0F, 2.0F, 32.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r14 = bone2.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(142, 22).addBox(7.422F, 10.3831F, -2.014F, 2.0F, 2.0F, 32.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r15 = bone2.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 193).addBox(-1.8533F, -8.173F, 2.8808F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r16 = bone2.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(0, 161).addBox(-10.1344F, -8.0386F, 0.2444F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r17 = bone2.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(178, 114).addBox(-4.5F, -8.0F, 3.0F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r18 = bone2.addOrReplaceChild("cube_r18", + CubeListBuilder.create().texOffs(72, 171).addBox(7.5F, -7.5247F, 3.2273F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(165, 173).addBox(-7.5F, -7.4724F, 3.2264F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone2.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(178, 0).addBox(1.5F, -8.2608F, 2.8799F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, 6.1463F, -19.6256F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bone2.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(238, 92).addBox(0.2846F, -31.1356F, -5.118F, 0.0F, 31.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(12.039F, -6.6394F, -12.3957F, -0.0094F, -0.0147F, -1.3526F)); + PartDefinition bone = bone2.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(6.8315F, -6.4787F, 4.6996F, -0.0668F, 0.6516F, 1.461F)); + PartDefinition cube_r21 = bone.addOrReplaceChild("cube_r21", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone19 = bone2.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offsetAndRotation(-5.649F, -8.8537F, 5.8744F, -0.3491F, -0.6545F, 0.0F)); + PartDefinition chestlid = bone19.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 3.0F, 0.9625F, -2.2689F, 0.0F, 0.0F)); + PartDefinition cube_r22 = chestlid.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(154, 213).addBox(-4.0F, -25.6017F, 0.2188F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 11.3602F, -24.0935F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r23 = chestlid.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(154, 213).addBox(-3.99F, 6.326F, 19.5977F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 11.3602F, -19.0935F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r24 = chestlid.addOrReplaceChild("cube_r24", + CubeListBuilder.create().texOffs(157, 209).addBox(1.09F, 20.5073F, -6.4951F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(157, 209).addBox(-4.11F, 20.5073F, -6.4951F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, 9.8602F, -21.5935F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r25 = chestlid.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(172, 217).addBox(-4.0F, 21.742F, 1.9098F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 11.3602F, -24.0935F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r26 = chestlid.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(174, 211).addBox(-4.01F, 14.0935F, 11.1102F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 11.3602F, -19.0935F, 1.5708F, 0.0F, 0.0F)); + PartDefinition chest = bone19.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(124, 207).addBox(-4.0F, -11.0F, 30.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -34.0F)); + PartDefinition mast2 = bone2.addOrReplaceChild("mast2", + CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -40.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(120, 0).addBox(-0.625F, -16.0F, 0.0F, 1.0F, 1.0F, 24.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(-0.5F, -7.5F, 2.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(30, 16).addBox(-1.0F, -8.0F, 0.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.351F, -1.8537F, -12.1256F, 0.0F, 0.0F, -0.9599F)); + PartDefinition cube_r27 = mast2.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(40, 40).addBox(0.0F, -7.0F, -61.0F, 0.0F, 31.0F, 35.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -28.0F, -37.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition bone6 = mast2.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, -16.5F, 11.8431F)); + PartDefinition cube_r28 = bone6.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -7.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone11 = bone6.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r29 = bone11.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -19.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r30 = bone11.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -19.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone12 = bone6.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r31 = bone12.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -19.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r32 = bone12.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -19.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r33 = bone14.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -19.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r34 = bone14.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -19.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r35 = bone14.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -19.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone15 = mast2.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(0.0F, 1.5F, 11.8431F)); + PartDefinition cube_r36 = bone15.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -7.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r37 = bone16.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -19.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r38 = bone16.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -19.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone17 = bone15.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r39 = bone17.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -19.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r40 = bone17.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -19.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r41 = bone18.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -19.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r42 = bone18.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -19.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r43 = bone18.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -19.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag2 = mast2.addOrReplaceChild("flag2", + CubeListBuilder.create().texOffs(0, 17).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -38.0F, 0.1616F)); + PartDefinition cube_r44 = flag2.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(10, 0).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r45 = flag2.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(0, 14).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition wheel = mast2.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(183, 222).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -7.0F, 2.25F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckfront.java b/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckfront.java new file mode 100644 index 0000000..511f36b --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelcutterwreckfront.java @@ -0,0 +1,250 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelcutterwreckfront extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelcutterwreckfront"), "main"); + public final ModelPart bone; + + public Modelcutterwreckfront(ModelPart root) { + this.bone = root.getChild("bone"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", + CubeListBuilder.create().texOffs(39, 169).addBox(7.5F, -4.0F, -8.5F, 3.0F, 2.0F, 27.0F, new CubeDeformation(0.0F)).texOffs(84, 24).addBox(-4.5F, 2.0F, -8.5F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)).texOffs(127, 89) + .addBox(-1.5F, 2.375F, -8.5F, 3.0F, 2.0F, 23.0F, new CubeDeformation(0.0F)).texOffs(84, 24).mirror().addBox(1.5F, 2.0F, -8.5F, 3.0F, 2.0F, 30.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 21.0F, -3.0F, -0.6545F, 0.0F, 0.0F)); + PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(194, 56).mirror().addBox(5.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(120, 137).mirror().addBox(7.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(120, 25).mirror().addBox(11.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r5 = bone.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(120, 33).mirror().addBox(10.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r6 = bone.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(120, 48).mirror().addBox(14.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r7 = bone.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(0, 161).mirror().addBox(13.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r8 = bone.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(120, 114).mirror().addBox(8.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r9 = bone.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(60, 0).mirror().addBox(8.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r10 = bone.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(120, 122).mirror().addBox(9.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(60, 139).mirror().addBox(9.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(30, 28).mirror() + .addBox(11.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(101, 37).mirror().addBox(4.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r13 = bone.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(147, 25).mirror().addBox(-1.75F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(1.74F, -2.0236F, -20.4552F, -0.581F, 0.2055F, -0.1332F)); + PartDefinition cube_r14 = bone.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 131).mirror().addBox(5.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r15 = bone.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(63, 109).mirror().addBox(4.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r16 = bone.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(63, 109).addBox(-7.3467F, 0.1647F, -24.0F, 3.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r17 = bone.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(120, 122).addBox(-12.8111F, 4.0584F, -26.8471F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r18 = bone.addOrReplaceChild("cube_r18", + CubeListBuilder.create().texOffs(30, 28).addBox(-12.3111F, 13.4715F, -33.3069F, 1.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(60, 139).addBox(-11.8111F, 13.4715F, -27.3069F, 2.0F, 2.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r19 = bone.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(120, 114).addBox(-11.7417F, 2.956F, -23.9286F, 3.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r20 = bone.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(194, 56).addBox(-8.7417F, 2.721F, -24.0F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r21 = bone.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(120, 114).addBox(-11.4706F, 9.7197F, -26.1629F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r22 = bone.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(60, 0).addBox(-11.1843F, 19.6318F, -26.6504F, 3.0F, 2.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r23 = bone.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(120, 33).addBox(-13.1199F, 11.6635F, -25.2737F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r24 = bone.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(120, 48).addBox(-17.1544F, 20.7548F, -18.1185F, 3.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r25 = bone.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(120, 137).addBox(-10.8142F, 8.3026F, -23.8372F, 3.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r26 = bone.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(131, 60).addBox(-9.922F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r27 = bone.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(120, 25).addBox(-14.8312F, 15.3265F, -22.5162F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r28 = bone.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(85, 200).addBox(-9.922F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r29 = bone.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(0, 161).addBox(-16.9526F, 20.6486F, -26.9831F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r30 = bone.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(114, 246).mirror().addBox(-0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.9628F, -7.422F, -8.0407F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r31 = bone.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(132, 238).mirror().addBox(0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-9.5128F, -7.422F, -13.4907F, 0.0F, -0.7418F, 0.0F)); + PartDefinition cube_r32 = bone.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(132, 238).addBox(-0.0328F, -1.575F, -14.0002F, 0.0F, 4.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.5128F, -7.422F, -13.4907F, 0.0F, 0.7418F, 0.0F)); + PartDefinition cube_r33 = bone.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(114, 246).addBox(0.05F, -1.575F, -5.975F, 0.0F, 4.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.9628F, -7.422F, -8.0407F, 0.0F, 0.4363F, 0.0F)); + PartDefinition cube_r34 = bone.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(66, 40).addBox(7.422F, 19.3622F, -22.5162F, 2.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r35 = bone.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(157, 37).mirror().addBox(-9.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r36 = bone.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(157, 37).addBox(7.422F, 10.3831F, -24.014F, 2.0F, 2.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r37 = bone.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(53, 200).addBox(7.422F, 25.1896F, -28.4831F, 2.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r38 = bone.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(60, 131).addBox(-1.5F, 2.3361F, -29.6709F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r39 = bone.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(0, 131).addBox(-8.5492F, 1.9611F, -28.5292F, 3.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r40 = bone.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(147, 25).addBox(-0.25F, -1.0F, -5.5F, 2.0F, 2.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.74F, -2.0236F, -20.4552F, -0.581F, -0.2055F, 0.1332F)); + PartDefinition cube_r41 = bone.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(101, 37).addBox(-7.4686F, 13.2385F, -27.8754F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r42 = bone.addOrReplaceChild("cube_r42", + CubeListBuilder.create().texOffs(67, 223).addBox(-1.0F, 11.6135F, -53.7362F, 2.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)).texOffs(41, 222).addBox(-1.5F, 12.6135F, -44.7362F, 3.0F, 3.0F, 19.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r43 = bone.addOrReplaceChild("cube_r43", + CubeListBuilder.create().texOffs(200, 93).addBox(-1.5F, -8.2346F, -23.8801F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(36, 175).addBox(-4.5F, -8.1822F, -23.8806F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r44 = bone.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(179, 93).addBox(-1.5F, -6.2918F, -38.688F, 3.0F, 2.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r45 = bone.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(146, 12).addBox(-3.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r46 = bone.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(60, 25).addBox(-7.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r47 = bone.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(146, 0).addBox(0.9952F, -6.6448F, -34.188F, 3.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r48 = bone.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(60, 10).addBox(4.2474F, -6.2863F, -31.188F, 3.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r49 = bone.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(89, 9).addBox(-19.7634F, -6.5126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r50 = bone.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(144, 137).addBox(-28.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r51 = bone.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(84, 131).addBox(25.0523F, -6.6626F, -26.9105F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r52 = bone.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(89, 0).addBox(16.7634F, -6.8126F, -25.1741F, 3.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r53 = bone.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(135, 174).addBox(-10.7301F, -7.6818F, -24.0F, 3.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r54 = bone.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(36, 161).addBox(4.5F, -8.4147F, -23.7571F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r55 = bone.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(14, 171).addBox(1.2626F, -7.9425F, -24.1182F, 3.0F, 2.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r56 = bone.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(129, 171).addBox(-7.5F, -7.8419F, -24.1164F, 3.0F, 2.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r57 = bone.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(198, 171).mirror().addBox(7.8142F, 7.9558F, -6.0964F, 3.0F, 2.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 4.0F, 15.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r58 = bone.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(238, 123).addBox(0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.688F, -8.7857F, -1.2702F, -0.0118F, 0.0129F, 0.4799F)); + PartDefinition cube_r59 = bone.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(238, 123).mirror().addBox(-0.3098F, -14.1271F, -4.9048F, 0.0F, 14.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-11.688F, -8.7857F, -1.2702F, -0.0118F, -0.0129F, -0.4799F)); + PartDefinition mast = bone.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(18, 16).addBox(-0.75F, -37.0F, -18.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -7.0F, 17.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r60 = bone2.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(163, 114).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -7.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r61 = bone3.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(155, 114).addBox(7.9853F, -19.5F, 7.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r62 = bone3.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(159, 114).addBox(0.15F, -19.5F, -11.9375F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r63 = bone4.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(147, 114).addBox(7.9853F, -19.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r64 = bone4.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(151, 114).addBox(-11.85F, -19.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r65 = bone5.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(76, 106).addBox(-8.9853F, -19.5F, -9.4853F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r66 = bone5.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(109, 0).addBox(-12.3625F, -19.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r67 = bone5.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(138, 0).addBox(0.15F, -19.5F, 12.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r68 = bone7.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(33, 106).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -7.0F, -12.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r69 = bone8.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(16, 106).addBox(7.9853F, -19.5F, 7.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r70 = bone8.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(29, 106).addBox(0.15F, -19.5F, -11.9375F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r71 = bone9.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(8, 106).addBox(7.9853F, -19.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r72 = bone9.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(12, 106).addBox(-11.85F, -19.5F, 0.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r73 = bone10.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(48, 0).addBox(-8.9853F, -19.5F, -9.4853F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r74 = bone10.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(0, 106).addBox(-12.3625F, -19.5F, -1.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r75 = bone10.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(4, 106).addBox(0.15F, -19.5F, 12.0625F, 1.0F, 22.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone22 = bone.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.5195F, -12.625F, -9.1749F, 1.4477F, 0.7816F, 1.4839F)); + PartDefinition cube_r76 = bone22.addOrReplaceChild("cube_r76", + CubeListBuilder.create().texOffs(207, 222).addBox(-2.0F, 2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 215).addBox(-2.0F, 2.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(207, 209) + .addBox(-2.0F, 2.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 5.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 2.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, 1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, 0.625F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone21 = bone.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.5195F, -8.625F, -13.1749F, -0.7418F, 0.3927F, 0.0F)); + PartDefinition cube_r77 = bone21.addOrReplaceChild("cube_r77", + CubeListBuilder.create().texOffs(218, 232).addBox(-2.0F, 2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232).addBox(-2.0F, 2.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(224, 232) + .addBox(-2.0F, 2.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 5.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 2.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, 1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, -3.375F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition bone20 = bone.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.5195F, -2.625F, 10.8251F, 1.0036F, -0.2618F, 0.0F)); + PartDefinition cube_r78 = bone20.addOrReplaceChild("cube_r78", + CubeListBuilder.create().texOffs(218, 226).addBox(-2.0F, 2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 220).addBox(-2.0F, 2.25F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(218, 214) + .addBox(-2.0F, 2.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(176, 238).addBox(-2.5F, 5.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(176, 230) + .addBox(-2.5F, 2.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(204, 233).addBox(-2.0F, 1.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5195F, -3.375F, 2.1749F, 0.0F, 0.6981F, 0.0F)); + PartDefinition flag = bone.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(34, 32).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -42.0F, -0.8384F)); + PartDefinition cube_r79 = flag.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(4, 31).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r80 = flag.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(30, 32).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone13 = bone.addOrReplaceChild("bone13", CubeListBuilder.create(), PartPose.offset(0.0F, 3.0F, -9.0F)); + PartDefinition cube_r81 = bone13.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(68, 64).addBox(-17.0F, -1.5F, 0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -22.7375F, 7.75F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r82 = bone13.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(68, 58).addBox(-17.0F, -3.992F, -0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -23.9875F, 8.6375F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r83 = bone13.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(0, 58).addBox(-17.0F, -5.425F, 0.325F, 34.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -33.334F, 8.9637F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r84 = bone13.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(0, 66).addBox(-17.0F, -0.008F, -0.0261F, 34.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -39.825F, 8.6125F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r85 = bone13.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(68, 62).addBox(-17.0F, -0.5F, 0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -41.075F, 7.725F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r86 = bone13.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(156, 56).addBox(0.125F, -0.5F, -18.0F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.125F, -22.5F, 7.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r87 = bone13.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(105, 183).addBox(0.0F, -7.0F, -21.0F, 0.0F, 31.0F, 35.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.0F, -5.0F, 0.0F, 3.1416F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modeldrifting_wood.java b/src/main/java/hal/studios/hpm/client/model/Modeldrifting_wood.java new file mode 100644 index 0000000..8a1ce97 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modeldrifting_wood.java @@ -0,0 +1,46 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modeldrifting_wood extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modeldrifting_wood"), "main"); + public final ModelPart DriftingWood; + + public Modeldrifting_wood(ModelPart root) { + this.DriftingWood = root.getChild("DriftingWood"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition DriftingWood = partdefinition.addOrReplaceChild("DriftingWood", CubeListBuilder.create().texOffs(0, 0).addBox(-2.0F, -0.5F, -7.0F, 4.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 23.5F, 0.0F)); + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + DriftingWood.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.DriftingWood.zRot = headPitch / (180F / (float) Math.PI); + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelfloating_barrel.java b/src/main/java/hal/studios/hpm/client/model/Modelfloating_barrel.java new file mode 100644 index 0000000..6d7e870 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelfloating_barrel.java @@ -0,0 +1,50 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.12.3 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelfloating_barrel extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelfloating_barrel"), "main"); + public final ModelPart bone; + + public Modelfloating_barrel(ModelPart root) { + this.bone = root.getChild("bone"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", + CubeListBuilder.create().texOffs(28, 12).addBox(-2.0F, -2.0F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(24, 6).addBox(-2.0F, -1.75F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(25, 1) + .addBox(-2.0F, -1.5F, -5.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(0, 21).addBox(-2.5F, 1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(0, 13) + .addBox(-2.5F, -1.5F, -5.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-2.0F, -3.0F, -5.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.0F, -4.0F, 2.0F, 0.0F, 0.6981F, 0.0F)); + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelplankowood.java b/src/main/java/hal/studios/hpm/client/model/Modelplankowood.java new file mode 100644 index 0000000..af841ed --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelplankowood.java @@ -0,0 +1,46 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.6.4 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelplankowood extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelplankowood"), "main"); + public final ModelPart plank; + + public Modelplankowood(ModelPart root) { + this.plank = root.getChild("plank"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition plank = partdefinition.addOrReplaceChild("plank", CubeListBuilder.create(), PartPose.offset(0.0F, 23.5F, 0.0F)); + PartDefinition cube_r1 = plank.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 0).addBox(-3.0F, -0.5F, -10.0F, 6.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + plank.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelraft.java b/src/main/java/hal/studios/hpm/client/model/Modelraft.java new file mode 100644 index 0000000..499aa95 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelraft.java @@ -0,0 +1,136 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelraft extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelraft"), "main"); + public final ModelPart mast; + public final ModelPart bone; + public final ModelPart bone6; + public final ModelPart bone8; + public final ModelPart bone7; + public final ModelPart bb_main; + + public Modelraft(ModelPart root) { + this.mast = root.getChild("mast"); + this.bone = root.getChild("bone"); + this.bone6 = root.getChild("bone6"); + this.bone8 = root.getChild("bone8"); + this.bone7 = root.getChild("bone7"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create(), PartPose.offset(0.0F, 20.0F, 3.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r1 = bone2.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(28, 0).addBox(-0.5F, -23.5F, -1.0F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 10.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r2 = bone3.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(20, 0).addBox(-7.5711F, -26.5F, -8.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r3 = bone3.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(24, 0).addBox(0.15F, -26.5F, 10.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r4 = bone4.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(12, 0).addBox(-7.5711F, -26.5F, 6.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r5 = bone4.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(16, 0).addBox(10.15F, -26.5F, 0.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r6 = bone5.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 0).addBox(6.5711F, -26.5F, 6.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r7 = bone5.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(4, 0).addBox(9.6375F, -26.5F, -1.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r8 = bone5.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(8, 0).addBox(0.15F, -26.5F, -9.9375F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", + CubeListBuilder.create().texOffs(0, 53).addBox(-11.0F, -15.0F, 9.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(58, 33).addBox(-11.5F, -13.5F, 8.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(58, 25) + .addBox(-11.5F, -10.5F, 8.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(0, 78).addBox(-11.0F, -13.5F, 9.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(0, 84) + .addBox(-11.0F, -13.75F, 9.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(0, 90).addBox(-11.0F, -14.0F, 9.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offset(8.0F, 24.0F, 0.0F)); + PartDefinition bone6 = partdefinition + .addOrReplaceChild( + "bone6", CubeListBuilder.create().texOffs(24, 53).addBox(-5.2539F, -5.4619F, -2.7335F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(58, 33) + .addBox(-5.7539F, -3.9619F, -3.2335F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(58, 25).addBox(-5.7539F, -0.9619F, -3.2335F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, 15.5F, 18.0F, 0.5059F, 0.3082F, 0.9083F)); + PartDefinition bone8 = partdefinition.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-9.0F, 18.0F, 3.0F, 0.0F, -0.6545F, 0.0F)); + PartDefinition chest = bone8.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(58, 66).addBox(-15.7258F, -12.0F, 27.8117F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(12.0F, 6.0F, -31.0F)); + PartDefinition chestlid = bone8.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(12.0F, -3.0F, -18.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r9 = chestlid.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(28, 43).addBox(-15.7258F, -23.574F, -1.076F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.25F, -5.0F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r10 = chestlid.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(58, 41).addBox(-15.7158F, 4.3242F, 18.2631F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.25F, 0.0F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r11 = chestlid.addOrReplaceChild("cube_r11", + CubeListBuilder.create().texOffs(32, 30).addBox(-10.6358F, 18.793F, -4.8069F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(32, 32).addBox(-15.8358F, 18.793F, -4.8069F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.01F, -1.25F, -2.5F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r12 = chestlid.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(30, 28).addBox(-15.7258F, 19.4749F, 2.7153F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 0.25F, -5.0F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r13 = chestlid.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(21, 37).addBox(-15.7358F, 11.6877F, 11.0917F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.25F, 0.0F, 1.5708F, 0.0F, 0.0F)); + PartDefinition bone7 = partdefinition.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 53).addBox(-3.0F, -6.5F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(58, 33) + .addBox(-3.5F, -5.0F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(58, 25).addBox(-3.5F, -2.0F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.0F, 15.5F, 18.0F, 0.0F, -0.4363F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(0, 0).addBox(-13.0F, -8.0F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)).texOffs(58, 0).addBox(-17.0F, -41.0F, 5.0F, 34.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(36, 0) + .addBox(-0.75F, -48.0F, 6.25F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(116, 36).addBox(-13.75F, -8.5F, -21.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(116, 36) + .addBox(-13.75F, -8.5F, 19.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(116, 36).addBox(-13.75F, -8.5F, 8.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(116, 36) + .addBox(-13.75F, -8.5F, -10.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(58, 0).mirror().addBox(-17.0F, -23.5F, 5.0F, 34.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r14 = bb_main.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(19, 79).addBox(-4.5F, -2.0F, -4.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.0F, -12.0F, 19.5F, 0.0F, -0.4363F, 0.0F)); + PartDefinition cube_r15 = bb_main.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(32, 0).addBox(-0.0795F, 0.2452F, -0.1466F, 0.0F, 27.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-1.0F, -32.25F, 6.5F, -0.0174F, 0.0008F, 0.3927F)); + PartDefinition cube_r16 = bb_main.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(116, 4).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -40.0F, 5.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r17 = bb_main.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(116, 6).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -38.75F, 4.1125F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r18 = bb_main.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(58, 111).addBox(-17.0F, -7.425F, 0.0F, 34.0F, 10.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -34.209F, 3.7863F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r19 = bb_main.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(116, 8).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -23.6125F, 5.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r20 = bb_main.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(116, 10).addBox(-17.0F, -1.992F, 0.0261F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -24.8625F, 4.1125F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r21 = bb_main.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(34, 0).addBox(-0.1705F, 0.2452F, -0.1466F, 0.0F, 27.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.0F, -32.25F, 6.5F, -0.0174F, -0.0008F, -0.3927F)); + PartDefinition cube_r22 = bb_main.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 53).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.25F, -5.5F, 0.0F, 0.0F, 0.0F, 0.0873F)); + PartDefinition cube_r23 = bb_main.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(58, 5).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.5F, -5.5F, 0.0F, 0.0F, 0.0F, 0.1309F)); + PartDefinition cube_r24 = bb_main.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(58, 58).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.25F, -5.5F, 0.0F, 0.0F, 0.0F, -0.1745F)); + PartDefinition cube_r25 = bb_main.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(0, 106).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.5F, 0.0F, 0.0F, 0.0F, -0.0436F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone6.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone8.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone7.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelraftwrecked.java b/src/main/java/hal/studios/hpm/client/model/Modelraftwrecked.java new file mode 100644 index 0000000..088f4d5 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelraftwrecked.java @@ -0,0 +1,126 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelraftwrecked extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelraftwrecked"), "main"); + public final ModelPart mast; + public final ModelPart bone6; + public final ModelPart bone8; + public final ModelPart bone7; + public final ModelPart bb_main; + + public Modelraftwrecked(ModelPart root) { + this.mast = root.getChild("mast"); + this.bone6 = root.getChild("bone6"); + this.bone8 = root.getChild("bone8"); + this.bone7 = root.getChild("bone7"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create(), PartPose.offsetAndRotation(-1.0F, 16.0F, 6.0F, 0.0F, 0.0F, 1.4399F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(1.0F, -9.5F, -9.1569F)); + PartDefinition cube_r1 = bone2.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(28, 0).addBox(-0.5F, -23.5F, -1.0F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 10.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r2 = bone3.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(20, 0).addBox(-7.5711F, -26.5F, -8.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r3 = bone3.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(24, 0).addBox(0.15F, -26.5F, 10.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r4 = bone4.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(12, 0).addBox(-7.5711F, -26.5F, 6.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r5 = bone4.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(16, 0).addBox(10.15F, -26.5F, 0.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r6 = bone5.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 0).addBox(6.5711F, -26.5F, 6.0711F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r7 = bone5.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(4, 0).addBox(9.6375F, -26.5F, -1.0625F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r8 = bone5.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(8, 0).addBox(0.15F, -26.5F, -9.9375F, 1.0F, 36.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = mast.addOrReplaceChild("bone9", CubeListBuilder.create().texOffs(58, 0).addBox(-17.0F, -38.0F, 5.0F, 34.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(58, 0).mirror() + .addBox(-17.0F, -20.5F, 5.0F, 34.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(36, 0).addBox(-0.75F, -45.0F, 6.25F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 5.0F, -6.0F)); + PartDefinition cube_r9 = bone9.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(116, 4).addBox(-17.0F, -0.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -37.0F, 5.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r10 = bone9.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(116, 6).addBox(-17.0F, -0.008F, 0.0261F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -35.75F, 4.1125F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r11 = bone9.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(58, 111).addBox(-17.0F, -7.425F, 0.0F, 34.0F, 10.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -31.209F, 3.7863F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r12 = bone9.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(116, 8).addBox(-17.0F, -1.5F, -0.25F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -20.6125F, 5.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r13 = bone9.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(116, 10).addBox(-17.0F, -1.992F, 0.0261F, 34.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -21.8625F, 4.1125F, 0.1745F, 0.0F, 0.0F)); + PartDefinition bone6 = partdefinition + .addOrReplaceChild( + "bone6", CubeListBuilder.create().texOffs(24, 53).addBox(-5.2539F, -5.4619F, -2.7335F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(58, 33) + .addBox(-5.7539F, -3.9619F, -3.2335F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(58, 25).addBox(-5.7539F, -0.9619F, -3.2335F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-16.0F, 20.5F, 12.0F, -1.2191F, 0.5717F, 0.0819F)); + PartDefinition bone8 = partdefinition.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(6.0F, 16.0F, 0.0F, -1.0472F, -0.6545F, 0.0F)); + PartDefinition chest = bone8.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(58, 66).addBox(-15.7258F, -12.0F, 27.8117F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(3.0F, 0.0F, -28.0F)); + PartDefinition chestlid = bone8.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(-8.7275F, -13.6464F, 6.3834F, -2.138F, 0.0F, 0.0F)); + PartDefinition cube_r14 = chestlid.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(28, 43).addBox(-15.7258F, -23.574F, -1.076F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.7275F, 11.8235F, -18.825F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r15 = chestlid.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(58, 41).addBox(-15.7158F, 4.3242F, 18.2631F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.7275F, 11.8235F, -13.825F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r16 = chestlid.addOrReplaceChild("cube_r16", + CubeListBuilder.create().texOffs(32, 30).addBox(-10.6358F, 18.793F, -4.8069F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(32, 32).addBox(-15.8358F, 18.793F, -4.8069F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.7375F, 10.3235F, -16.325F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r17 = chestlid.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(30, 28).addBox(-15.7258F, 19.4749F, 2.7153F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.7175F, 11.8235F, -18.825F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r18 = chestlid.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(21, 37).addBox(-15.7358F, 11.6877F, 11.0917F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(11.7275F, 11.8235F, -13.825F, 1.5708F, 0.0F, 0.0F)); + PartDefinition bone7 = partdefinition.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 53).addBox(-3.0F, -6.5F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(58, 33) + .addBox(-3.5F, -5.0F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(58, 25).addBox(-3.5F, -2.0F, -3.5F, 7.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(8.0F, 15.5F, 18.0F, -0.3922F, -0.1964F, 1.13F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(116, 36).addBox(-13.75F, -9.5F, 8.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r19 = bb_main.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(19, 79).addBox(-0.375F, -3.0F, -4.0F, 6.0F, 0.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(9.0F, -12.0F, 19.5F, -0.3747F, -0.2291F, 1.0472F)); + PartDefinition cube_r20 = bb_main.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(116, 36).addBox(-11.75F, -6.5F, 19.0F, 28.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -3.0F, 0.0F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r21 = bb_main.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(0, 0).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5F, -5.5F, 0.0F, -0.0886F, 0.1739F, -0.0154F)); + PartDefinition cube_r22 = bb_main.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 53).addBox(-2.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.25F, -5.5F, 0.0F, -0.043F, -0.0076F, -0.0871F)); + PartDefinition cube_r23 = bb_main.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(58, 5).addBox(-2.5F, -2.5F, -35.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(10.5F, -5.5F, 11.0F, 0.2778F, -0.3367F, 0.037F)); + PartDefinition cube_r24 = bb_main.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(58, 58).addBox(-0.5F, -2.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.25F, -5.5F, 0.0F, 0.0894F, -0.2173F, -0.1939F)); + PartDefinition cube_r25 = bb_main.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(0, 106).addBox(-2.5F, -3.5F, -24.0F, 5.0F, 5.0F, 48.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.5F, 0.0F, -3.098F, 0.0F, -0.0436F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone6.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone8.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone7.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelswashbuckler.java b/src/main/java/hal/studios/hpm/client/model/Modelswashbuckler.java new file mode 100644 index 0000000..0eed805 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelswashbuckler.java @@ -0,0 +1,274 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelswashbuckler extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelswashbuckler"), "main"); + public final ModelPart bone; + public final ModelPart flag; + public final ModelPart mast; + public final ModelPart water; + public final ModelPart wheel; + public final ModelPart bb_main; + + public Modelswashbuckler(ModelPart root) { + this.bone = root.getChild("bone"); + this.flag = root.getChild("flag"); + this.mast = root.getChild("mast"); + this.water = root.getChild("water"); + this.wheel = root.getChild("wheel"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(0, 74).addBox(-8.5305F, 1.6607F, -16.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1) + .addBox(-10.5305F, 1.4107F, -16.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1).mirror().addBox(-6.5305F, 1.4107F, -16.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(7.5305F, 19.5893F, -0.5F)); + PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 59).mirror().addBox(3.6995F, 1.6408F, -19.0195F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 59).addBox(-5.6995F, 1.6408F, -19.0195F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(59, 17).addBox(-1.0F, 1.8908F, -19.7806F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(80, 0).mirror().addBox(5.2095F, 5.6372F, -4.0642F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r5 = bone.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(104, 44).mirror().addBox(9.3017F, 14.0991F, -17.9888F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r6 = bone.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(80, 48).mirror().addBox(5.2813F, 17.1264F, -18.9888F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r7 = bone.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(78, 76).mirror().addBox(5.2813F, 7.2554F, -16.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r8 = bone.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 48).mirror().addBox(7.8875F, 10.551F, -15.0108F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r9 = bone.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(59, 22).mirror().addBox(5.2813F, 13.2415F, -15.0108F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r10 = bone.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(0, 89).mirror().addBox(5.2095F, 5.8684F, -15.8915F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(59, 38).mirror().addBox(9.4363F, 14.1699F, -12.079F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(20, 48).mirror().addBox(6.7466F, 8.109F, -16.8491F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r13 = bone.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(40, 0).mirror().addBox(5.4562F, 13.4212F, -17.7669F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r14 = bone.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 54).mirror().addBox(5.6471F, 6.8132F, -17.442F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r15 = bone.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(116, 100).mirror().addBox(3.8278F, 2.1473F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(40, 90).mirror() + .addBox(5.8278F, 2.1473F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r16 = bone.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(116, 65).mirror().addBox(3.8278F, 2.7979F, 8.8443F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r17 = bone.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(40, 38).mirror().addBox(3.8278F, 2.1341F, -5.977F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r18 = bone.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(121, 113).mirror().addBox(5.8278F, 2.3631F, -2.1221F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r19 = bone.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(40, 75).mirror().addBox(5.8278F, 2.304F, -15.9524F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r20 = bone.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(28, 43).mirror().addBox(6.5407F, 9.3144F, -18.2046F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 17).mirror() + .addBox(7.5407F, 9.3144F, -22.2046F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = bone.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(19, 54).mirror().addBox(6.5407F, 3.0389F, -17.8981F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = bone.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(2.8978F, -0.2235F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r23 = bone.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(40, 17).mirror().addBox(5.2095F, 5.5546F, 5.1158F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r24 = bone.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(40, 17).addBox(-7.2095F, 5.5546F, 5.1158F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r25 = bone.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(80, 0).addBox(-7.2095F, 5.6372F, -4.0642F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r26 = bone.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(104, 44).addBox(-11.3017F, 14.0991F, -17.9888F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r27 = bone.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(80, 48).addBox(-6.2813F, 17.1264F, -18.9888F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r28 = bone.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(78, 76).addBox(-6.2813F, 7.2554F, -16.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r29 = bone.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(0, 48).addBox(-9.8875F, 10.551F, -15.0108F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r30 = bone.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(59, 22).addBox(-6.2813F, 13.2415F, -15.0108F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r31 = bone.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 89).addBox(-7.2095F, 5.8684F, -15.8915F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r32 = bone.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(59, 38).addBox(-11.4363F, 14.1699F, -12.079F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r33 = bone.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(20, 48).addBox(-8.7466F, 8.109F, -16.8491F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = bone.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(40, 0).addBox(-7.4562F, 13.4212F, -17.7669F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r35 = bone.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(0, 54).addBox(-7.6471F, 6.8132F, -17.442F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r36 = bone.addOrReplaceChild("cube_r36", + CubeListBuilder.create().texOffs(116, 100).addBox(-5.8278F, 2.1473F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(40, 90).addBox(-7.8278F, 2.1473F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r37 = bone.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(116, 65).addBox(-5.8278F, 2.7979F, 8.8443F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r38 = bone.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(40, 38).addBox(-5.8278F, 2.1341F, -5.977F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r39 = bone.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(121, 113).addBox(-7.8278F, 2.3631F, -2.1221F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r40 = bone.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(40, 75).addBox(-7.8278F, 2.304F, -15.9524F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r41 = bone.addOrReplaceChild("cube_r41", + CubeListBuilder.create().texOffs(28, 43).addBox(-7.5407F, 9.3144F, -18.2046F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 17).addBox(-8.5407F, 9.3144F, -22.2046F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r42 = bone.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(19, 54).addBox(-8.5407F, 3.0389F, -17.8981F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r43 = bone.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(0, 0).addBox(-4.8978F, -0.2235F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -0.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone6 = bone.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r44 = bone6.addOrReplaceChild("cube_r44", + CubeListBuilder.create().texOffs(20, 8).addBox(-4.9791F, 9.159F, -25.5836F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(28, 48).addBox(-4.9791F, 9.159F, -18.5836F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r45 = bone6.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(28, 48).mirror().addBox(2.9791F, 9.159F, -18.5836F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r46 = bone6.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(107, 114).addBox(-1.0F, 8.409F, -27.1575F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5672F, 0.0F, 0.0F)); + PartDefinition flag = partdefinition.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(0, 10).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(9, 15).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -10.0F, -8.8384F)); + PartDefinition cube_r47 = flag.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(9, 10).addBox(0.2563F, -33.5F, -3.9151F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.3789F, 32.0F, 7.8384F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r48 = flag.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(0, 15).addBox(-1.7297F, -33.5F, -5.4894F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.3789F, 32.0F, 7.8384F, 0.0F, -0.2618F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create(), PartPose.offset(0.0F, 20.0F, -13.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r49 = bone2.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(16, 130).addBox(-6.2678F, -30.0F, 4.7678F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.5F, 18.1569F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r50 = bone3.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(8, 130).addBox(-20.2066F, -32.0F, 4.9711F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.1569F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r51 = bone3.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(12, 130).addBox(17.8069F, -32.0F, 9.775F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.1569F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r52 = bone4.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 130).addBox(-20.4011F, -32.0F, 19.3077F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.4319F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r53 = bone4.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(4, 130).addBox(28.0819F, -32.0F, -0.225F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.4319F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r54 = bone5.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(32, 74).addBox(-6.0556F, -32.0F, 19.5109F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r55 = bone5.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(72, 75).addBox(10.2125F, -32.0F, 17.3694F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r56 = bone5.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(110, 75).addBox(18.0819F, -32.0F, -10.5125F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, 1.5708F, 0.0F)); + PartDefinition water = partdefinition.addOrReplaceChild("water", CubeListBuilder.create().texOffs(139, 3).addBox(-1.5F, 0.0F, -1.5F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, 15.0F, 16.5F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 11.0F, -4.75F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(80, 38).addBox(3.0F, -7.0F, -1.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(0, 111).addBox(5.0F, -7.0F, -17.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(80, 67) + .addBox(-11.0F, -30.0F, -11.0F, 22.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(80, 65).addBox(-11.0F, -18.5F, -11.0F, 22.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 9) + .addBox(-3.0F, -5.0F, 19.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(80, 59).addBox(-7.0F, -8.2625F, 19.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 27) + .addBox(-4.2625F, -9.1125F, 18.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 13).addBox(-0.7375F, -9.175F, 18.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 6) + .addBox(-4.8875F, -5.35F, 19.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(20, 29).addBox(-1.225F, -6.225F, 19.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 31) + .addBox(-3.8875F, -7.75F, 19.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 19).addBox(-0.75F, -36.0F, -9.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 17) + .addBox(-1.0F, -14.0F, -7.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(12, 19).addBox(-0.5F, -13.5F, -5.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(109, 5) + .addBox(-5.5F, -10.0F, 15.0F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r57 = bb_main.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(80, 23).addBox(-11.0F, 19.784F, -11.2137F, 22.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r58 = bb_main.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(74, 37).mirror().addBox(-8.6292F, -27.5974F, -9.119F, 0.0F, 24.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0174F, -0.0015F, 0.2618F)); + PartDefinition cube_r59 = bb_main.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(1, 118).addBox(-6.8878F, -5.9833F, 17.0363F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.6109F, -0.0436F)); + PartDefinition cube_r60 = bb_main.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(1, 118).addBox(14.0094F, -5.9833F, 8.1783F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, -0.6981F, -0.0436F)); + PartDefinition cube_r61 = bb_main.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(0, 118).addBox(5.4733F, -6.0333F, 15.25F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, -0.0436F)); + PartDefinition cube_r62 = bb_main.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(21, 135).addBox(-5.5854F, -7.6625F, 17.0F, 9.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.3491F)); + PartDefinition cube_r63 = bb_main.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(6, 26).addBox(-5.5F, 10.6294F, 11.4044F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 1.0908F, 0.0F, 0.0F)); + PartDefinition cube_r64 = bb_main.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(74, 37).addBox(8.6292F, -27.5974F, -9.119F, 0.0F, 24.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0174F, 0.0015F, -0.2618F)); + PartDefinition cube_r65 = bb_main.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(0, 102).addBox(0.6635F, -4.0965F, -22.792F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r66 = bb_main.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(20, 17).addBox(2.8316F, -3.8576F, -20.792F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r67 = bb_main.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(16, 92).addBox(16.7015F, -4.1084F, -17.9403F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r68 = bb_main.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(20, 23).addBox(11.1756F, -4.2084F, -16.7827F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r69 = bb_main.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(56, 93).addBox(-18.7015F, -4.1084F, -17.9403F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r70 = bb_main.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(0, 25).addBox(-13.1756F, -4.0084F, -16.7827F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r71 = bb_main.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 37).addBox(-4.8316F, -3.8576F, -20.792F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r72 = bb_main.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(18, 102).addBox(-2.6635F, -4.0965F, -22.792F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r73 = bb_main.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(116, 89).addBox(-1.0F, -3.8612F, -25.792F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r74 = bb_main.addOrReplaceChild("cube_r74", + CubeListBuilder.create().texOffs(40, 33).addBox(2.2256F, -7.9779F, 19.2125F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 3).addBox(4.5992F, -7.2446F, 20.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r75 = bb_main.addOrReplaceChild("cube_r75", + CubeListBuilder.create().texOffs(40, 38).addBox(-7.2256F, -7.8779F, 19.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 0).addBox(-6.5992F, -7.2446F, 20.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r76 = bb_main.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(0, 8).addBox(2.8612F, -2.0979F, 20.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r77 = bb_main.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(25, 59).addBox(3.8415F, 0.0636F, 20.0F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r78 = bb_main.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(59, 27).addBox(-7.8415F, 0.0636F, 20.0F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r79 = bb_main.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(9, 8).addBox(-4.8612F, -2.0979F, 20.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r80 = bb_main.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(80, 27).addBox(-11.0F, -20.7822F, -2.2923F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r81 = bb_main.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(80, 29).addBox(-11.0F, -21.4738F, -7.5942F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r82 = bb_main.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(80, 31).addBox(-11.0F, -23.4762F, -15.1675F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r83 = bb_main.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(80, 33).addBox(-11.0F, -20.7441F, -20.7238F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r84 = bb_main.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(22, 112).addBox(5.0F, -4.6832F, 2.1516F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(0, 0) + .addBox(3.0F, -5.2765F, -15.8381F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(0, 37).addBox(-5.0F, -4.6483F, 4.151F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r85 = bb_main.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(0, 17).addBox(-7.1534F, -4.7879F, -16.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r86 = bb_main.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(104, 23).addBox(-6.7563F, -5.0257F, 0.1629F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r87 = bb_main.addOrReplaceChild("cube_r87", + CubeListBuilder.create().texOffs(104, 44).addBox(-5.0F, -4.8946F, -16.0776F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(40, 0).addBox(1.0F, -5.1738F, 3.9199F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r88 = bb_main.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(106, 0).addBox(0.8417F, -4.9616F, -16.0788F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r89 = bb_main.addOrReplaceChild("cube_r89", + CubeListBuilder.create().texOffs(44, 113).addBox(-3.0F, -5.1215F, -15.9204F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(0, 74).addBox(-1.0F, -5.1564F, -15.9201F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r90 = bb_main.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(84, 113).addBox(-3.0F, -5.0F, 2.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r91 = bb_main.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(80, 0).addBox(-1.2355F, -5.1153F, -2.0795F, 2.0F, 1.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -1.0F, -0.0175F, 0.0F, 0.0524F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + water.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = headPitch / (180F / (float) Math.PI); + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerdestroyed.java b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerdestroyed.java new file mode 100644 index 0000000..994acd9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerdestroyed.java @@ -0,0 +1,270 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelswashbucklerdestroyed extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelswashbucklerdestroyed"), "main"); + public final ModelPart bone; + + public Modelswashbucklerdestroyed(ModelPart root) { + this.bone = root.getChild("bone"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(7.5305F, 19.5893F, -0.5F)); + PartDefinition bone8 = bone.addOrReplaceChild("bone8", + CubeListBuilder.create().texOffs(80, 38).addBox(3.0F, 0.0F, -1.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(22, 23).addBox(-3.0F, 4.0F, 5.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(18, 92) + .addBox(-1.0F, 4.25F, 1.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(16, 17).mirror().addBox(1.0F, 4.0F, -1.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(40, 9) + .addBox(-3.0F, 2.0F, 19.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(80, 59).addBox(-7.0F, -1.2625F, 19.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 13) + .addBox(-0.7375F, -2.175F, 18.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 27).addBox(-4.2625F, -2.1125F, 18.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 29) + .addBox(-1.225F, 0.775F, 19.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 31).addBox(-3.8875F, -0.75F, 19.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 6) + .addBox(-4.8875F, 1.65F, 19.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, -0.5893F, 6.5F, -0.2876F, -0.3232F, -0.0236F)); + PartDefinition cube_r1 = bone8.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(116, 65).mirror().addBox(3.8278F, 2.7979F, 8.8443F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r2 = bone8.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(40, 38).addBox(-7.2256F, -7.8779F, 19.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 0) + .addBox(-6.5992F, -7.2446F, 20.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(18, 19).mirror().addBox(2.8978F, -0.2235F, 2.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r3 = bone8.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(40, 33).addBox(2.2256F, -7.9779F, 19.2125F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 3) + .addBox(4.5992F, -7.2446F, 20.0F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(14, 14).addBox(-4.8978F, -0.2235F, -2.0F, 2.0F, 1.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r4 = bone8.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(9, 8).addBox(-4.8612F, -2.0979F, 20.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r5 = bone8.addOrReplaceChild("cube_r5", + CubeListBuilder.create().texOffs(59, 27).addBox(-7.8415F, 0.0636F, 20.0F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 90).addBox(-7.8278F, 2.1473F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r6 = bone8.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(0, 8).addBox(2.8612F, -2.0979F, 20.0F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r7 = bone8.addOrReplaceChild("cube_r7", + CubeListBuilder.create().texOffs(25, 59).addBox(3.8415F, 0.0636F, 20.0F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 90).mirror().addBox(5.8278F, 2.1473F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r8 = bone8.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(21, 135).addBox(-5.5854F, -7.6625F, 17.0F, 9.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 0.3491F)); + PartDefinition cube_r9 = bone8.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(1, 118).addBox(14.0094F, -5.9833F, 8.1783F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, -0.6981F, -0.0436F)); + PartDefinition cube_r10 = bone8.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(1, 118).addBox(-6.8878F, -5.9833F, 17.0363F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.6109F, -0.0436F)); + PartDefinition cube_r11 = bone8.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(0, 118).addBox(5.4733F, -6.0333F, 15.25F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, -0.0436F)); + PartDefinition cube_r12 = bone8.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(40, 17).addBox(-7.2095F, 5.5546F, 5.1158F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r13 = bone8.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(121, 113).addBox(-7.8278F, 2.3631F, -2.1221F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r14 = bone8.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(116, 65).addBox(-5.8278F, 2.7979F, 8.8443F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r15 = bone8.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(104, 23).addBox(-6.7563F, -5.0257F, 0.1629F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r16 = bone8.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(84, 113).addBox(-3.0F, -5.0F, 2.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r17 = bone8.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(80, 0).addBox(-1.2355F, -5.1153F, -2.0795F, 2.0F, 1.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r18 = bone8.addOrReplaceChild("cube_r18", + CubeListBuilder.create().texOffs(0, 37).addBox(-5.0F, -4.6483F, 4.151F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)).texOffs(22, 112).addBox(5.0F, -4.6832F, 2.1516F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r19 = bone8.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(97, 95).addBox(-6.2813F, 7.2554F, 2.9907F, 1.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r20 = bone8.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(97, 95).mirror().addBox(5.2813F, 7.2554F, 2.9907F, 1.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r21 = bone8.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(40, 0).addBox(1.0F, -5.1738F, 3.9199F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r22 = bone8.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(80, 0).mirror().addBox(5.2095F, 5.6372F, -4.0642F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r23 = bone8.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(121, 113).mirror().addBox(5.8278F, 2.3631F, -2.1221F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r24 = bone8.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(40, 38).mirror().addBox(3.8278F, 2.1341F, -5.977F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r25 = bone8.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(40, 17).mirror().addBox(5.2095F, 5.5546F, 5.1158F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 5.0F, -1.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition water = bone8.addOrReplaceChild("water", + CubeListBuilder.create().texOffs(139, 3).addBox(-1.5F, 0.0F, -1.5F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(109, 5).addBox(-1.5F, -1.0F, -1.5F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offset(-4.0F, -2.0F, 16.5F)); + PartDefinition cube_r26 = water.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(6, 26).addBox(-5.5F, 10.6294F, 11.4044F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0F, 7.0F, -17.5F, 1.0908F, 0.0F, 0.0F)); + PartDefinition bone9 = bone.addOrReplaceChild("bone9", + CubeListBuilder.create().texOffs(18, 92).addBox(-1.0F, -0.75F, -16.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(19, 19).mirror().addBox(1.0F, -1.0F, -16.0F, 2.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(14, 14).addBox(-3.0F, -1.0F, -16.0F, 2.0F, 1.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(0, 111).addBox(5.0F, -5.0F, -16.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 5.4107F, -2.5F, 0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r27 = bone9.addOrReplaceChild("cube_r27", + CubeListBuilder.create().texOffs(0, 74).addBox(-1.0F, -5.1564F, -15.9201F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(44, 113).addBox(-3.0F, -5.1215F, -15.9204F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r28 = bone9.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(116, 89).addBox(-1.0F, -3.8612F, -25.792F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r29 = bone9.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(18, 102).addBox(-2.6635F, -4.0965F, -22.792F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r30 = bone9.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(0, 37).addBox(-4.8316F, -3.8576F, -20.792F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r31 = bone9.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 102).addBox(0.6635F, -4.0965F, -22.792F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r32 = bone9.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(20, 17).addBox(2.8316F, -3.8576F, -20.792F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r33 = bone9.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(0, 25).addBox(-13.1756F, -4.0084F, -16.7827F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r34 = bone9.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(56, 93).addBox(-18.7015F, -4.1084F, -17.9403F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r35 = bone9.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(16, 92).addBox(16.7015F, -4.1084F, -17.9403F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r36 = bone9.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(20, 23).addBox(11.1756F, -4.2084F, -16.7827F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r37 = bone9.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(0, 17).addBox(-7.1534F, -4.7879F, -16.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r38 = bone9.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(0, 0).addBox(3.0F, -5.2765F, -15.8381F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r39 = bone9.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(106, 0).addBox(0.8417F, -4.9616F, -16.0788F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r40 = bone9.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(104, 44).addBox(-5.0F, -4.8946F, -16.0776F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r41 = bone9.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(80, 0).addBox(-7.2095F, 5.6372F, -4.0642F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r42 = bone9.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(104, 44).addBox(-11.3017F, 14.0991F, -17.9888F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r43 = bone9.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(80, 48).addBox(-6.2813F, 17.1264F, -18.9888F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r44 = bone9.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(0, 48).addBox(-9.8875F, 10.551F, -15.0108F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r45 = bone9.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(59, 22).addBox(-6.2813F, 13.2415F, -15.0108F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r46 = bone9.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(0, 89).addBox(-7.2095F, 5.8684F, -15.8915F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r47 = bone9.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(59, 38).addBox(-11.4363F, 14.1699F, -12.079F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r48 = bone9.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(20, 48).addBox(-8.7466F, 8.109F, -16.8491F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r49 = bone9.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(40, 0).addBox(-7.4562F, 13.4212F, -17.7669F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r50 = bone9.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(0, 54).addBox(-7.6471F, 6.8132F, -17.442F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r51 = bone9.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(116, 100).addBox(-5.8278F, 2.1473F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r52 = bone9.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(40, 38).addBox(-5.8278F, 2.1341F, -5.977F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r53 = bone9.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(40, 75).addBox(-7.8278F, 2.304F, -15.9524F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r54 = bone9.addOrReplaceChild("cube_r54", + CubeListBuilder.create().texOffs(28, 43).addBox(-7.5407F, 9.3144F, -18.2046F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 17).addBox(-8.5407F, 9.3144F, -22.2046F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r55 = bone9.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(19, 54).addBox(-8.5407F, 3.0389F, -17.8981F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r56 = bone9.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(18, 19).mirror().addBox(2.8978F, -0.2235F, -16.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r57 = bone9.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(0, 59).mirror().addBox(3.6995F, 1.6408F, -19.0195F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r58 = bone9.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(0, 59).addBox(-5.6995F, 1.6408F, -19.0195F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r59 = bone9.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(59, 17).addBox(-1.0F, 1.8908F, -19.7806F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r60 = bone9.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(104, 44).mirror().addBox(9.3017F, 14.0991F, -17.9888F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r61 = bone9.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(80, 48).mirror().addBox(5.2813F, 17.1264F, -18.9888F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r62 = bone9.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(0, 48).mirror().addBox(7.8875F, 10.551F, -15.0108F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r63 = bone9.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(59, 22).mirror().addBox(5.2813F, 13.2415F, -15.0108F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r64 = bone9.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(0, 89).mirror().addBox(5.2095F, 5.8684F, -15.8915F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r65 = bone9.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(59, 38).mirror().addBox(9.4363F, 14.1699F, -12.079F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r66 = bone9.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(20, 48).mirror().addBox(6.7466F, 8.109F, -16.8491F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r67 = bone9.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(40, 0).mirror().addBox(5.4562F, 13.4212F, -17.7669F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r68 = bone9.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(0, 54).mirror().addBox(5.6471F, 6.8132F, -17.442F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r69 = bone9.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(116, 100).mirror().addBox(3.8278F, 2.1473F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r70 = bone9.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(40, 75).mirror().addBox(5.8278F, 2.304F, -15.9524F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r71 = bone9.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(28, 43).mirror().addBox(6.5407F, 9.3144F, -18.2046F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 17).mirror() + .addBox(7.5407F, 9.3144F, -22.2046F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r72 = bone9.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(19, 54).mirror().addBox(6.5407F, 3.0389F, -17.8981F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r73 = bone9.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(97, 95).addBox(-6.2813F, 7.2554F, -16.0093F, 1.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r74 = bone9.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(97, 95).mirror().addBox(5.2813F, 7.2554F, -16.0093F, 1.0F, 1.0F, 17.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r75 = bone9.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(23, 23).addBox(-4.8978F, -0.2235F, -15.0F, 2.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone6 = bone9.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(0.0F, 1.35F, -29.925F)); + PartDefinition cube_r76 = bone6.addOrReplaceChild("cube_r76", + CubeListBuilder.create().texOffs(20, 8).addBox(-4.9791F, 9.159F, -25.5836F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(28, 48).addBox(-4.9791F, 9.159F, -18.5836F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r77 = bone6.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(28, 48).mirror().addBox(2.9791F, 9.159F, -18.5836F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r78 = bone6.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(107, 114).addBox(-1.0F, 8.409F, -27.1575F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -1.35F, 29.925F, -0.5672F, 0.0F, 0.0F)); + PartDefinition bone7 = bone9.addOrReplaceChild("bone7", + CubeListBuilder.create().texOffs(12, 19).addBox(-0.5F, -6.5F, 1.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 17).addBox(-1.0F, -7.0F, -1.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.0F, -5.0F, 0.0F, 0.0F, 1.0908F)); + PartDefinition wheel = bone7.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.0F, 1.25F, -0.1188F, 0.0552F, 0.4331F)); + PartDefinition mast = bone9.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(80, 65).addBox(-11.0F, -11.5F, -2.0F, 22.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(80, 67) + .addBox(-11.0F, -23.0F, -2.0F, 22.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(3, 19).addBox(-0.75F, -29.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -5.0F, -8.0F, 0.0F, 0.0F, -1.2217F)); + PartDefinition cube_r79 = mast.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(80, 33).addBox(-11.0F, -20.7441F, -20.7238F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, 8.0F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r80 = mast.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(80, 31).addBox(-11.0F, -23.4762F, -15.1675F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, 8.0F, -0.1745F, 0.0F, 0.0F)); + PartDefinition cube_r81 = mast.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(80, 23).addBox(-11.0F, 19.784F, -11.2137F, 22.0F, 4.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, 8.0F, 0.0F, 0.0F, -3.1416F)); + PartDefinition cube_r82 = mast.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(80, 27).addBox(-11.0F, -20.7822F, -2.2923F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, 8.0F, 0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r83 = mast.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(80, 29).addBox(-11.0F, -21.4738F, -7.5942F, 22.0F, 2.0F, 0.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 5.0F, 8.0F, 0.1745F, 0.0F, 0.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -10.5F, -10.1569F)); + PartDefinition cube_r84 = bone2.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(16, 130).addBox(-6.2678F, -30.0F, 4.7678F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 15.5F, 18.1569F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r85 = bone3.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(8, 130).addBox(-20.2066F, -32.0F, 4.9711F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.1569F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r86 = bone3.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(12, 130).addBox(17.8069F, -32.0F, 9.775F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.1569F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r87 = bone4.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(0, 130).addBox(-20.4011F, -32.0F, 19.3077F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.4319F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r88 = bone4.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(4, 130).addBox(28.0819F, -32.0F, -0.225F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.2875F, 17.5F, 18.4319F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r89 = bone5.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(32, 74).addBox(-6.0556F, -32.0F, 19.5109F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r90 = bone5.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(72, 75).addBox(10.2125F, -32.0F, 17.3694F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r91 = bone5.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(110, 75).addBox(18.0819F, -32.0F, -10.5125F, 1.0F, 25.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.575F, 17.5F, 18.4319F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(0, 10).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(9, 15).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -27.0F, 0.1616F, 0.0F, -1.4399F, 0.0F)); + PartDefinition cube_r92 = flag.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(9, 10).addBox(0.2563F, -33.5F, -3.9151F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.3789F, 32.0F, 7.8384F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r93 = flag.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(0, 15).addBox(-1.7297F, -33.5F, -5.4894F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.3789F, 32.0F, 7.8384F, 0.0F, -0.2618F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgraded.java b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgraded.java new file mode 100644 index 0000000..2117f5e --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgraded.java @@ -0,0 +1,333 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelswashbucklerupgraded extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelswashbucklerupgraded"), "main"); + public final ModelPart bone; + public final ModelPart flag; + public final ModelPart mast; + public final ModelPart water; + public final ModelPart wheel; + public final ModelPart cannon; + public final ModelPart chest; + public final ModelPart chestlid; + public final ModelPart bone12; + public final ModelPart bone13; + public final ModelPart bb_main; + + public Modelswashbucklerupgraded(ModelPart root) { + this.bone = root.getChild("bone"); + this.flag = root.getChild("flag"); + this.mast = root.getChild("mast"); + this.water = root.getChild("water"); + this.wheel = root.getChild("wheel"); + this.cannon = root.getChild("cannon"); + this.chest = root.getChild("chest"); + this.chestlid = root.getChild("chestlid"); + this.bone12 = root.getChild("bone12"); + this.bone13 = root.getChild("bone13"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(0, 74).addBox(-8.5305F, 1.6607F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1) + .addBox(-10.5305F, 1.4107F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1).mirror().addBox(-6.5305F, 1.4107F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(7.5305F, 19.5893F, -0.5F)); + PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 59).mirror().addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.5305F, 1.5875F, -26.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 59).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 1.5875F, -26.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(59, 17).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -26.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(80, 0).mirror().addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -2.0F, -10.0F, 0.0105F, 0.0F, -1.309F)); + PartDefinition cube_r5 = bone.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(104, 44).mirror().addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.3234F, -1.8706F, -33.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r6 = bone.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(80, 48).mirror().addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.9F, -3.0F, -30.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r7 = bone.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(78, 76).mirror().addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.75F, -3.0F, -26.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r8 = bone.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 48).mirror().addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.8017F, -1.8706F, -27.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r9 = bone.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(59, 22).mirror().addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.75F, -3.0F, -26.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r10 = bone.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(0, 89).mirror().addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5F, -2.0F, -26.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(59, 38).mirror().addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.2448F, 0.0689F, -30.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(20, 48).mirror().addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-1.2448F, 0.5689F, -26.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r13 = bone.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(40, 0).mirror().addBox(-1.0083F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-3.2448F, 0.5689F, -30.0F, -0.736F, 0.1159F, -0.8374F)); + PartDefinition cube_r14 = bone.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 54).mirror().addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-1.2448F, 0.5689F, -26.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r15 = bone.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(116, 100).mirror().addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(40, 90).mirror() + .addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5305F, 1.9107F, -10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r16 = bone.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(116, 65).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.2448F, 0.8689F, 2.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r17 = bone.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(40, 38).mirror().addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.2448F, 0.8689F, -9.0F, -0.0087F, 0.0F, -0.7854F)); + PartDefinition cube_r18 = bone.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(121, 113).mirror().addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.7687F, -0.4835F, -7.5F, 0.0436F, 0.0F, -0.7854F)); + PartDefinition cube_r19 = bone.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(40, 75).mirror().addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.8306F, -0.5453F, -19.5F, -0.0175F, 0.0F, -0.7854F)); + PartDefinition cube_r20 = bone.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(28, 43).mirror().addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(0, 17).mirror() + .addBox(-0.7346F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-4.0065F, 1.3564F, -30.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r21 = bone.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(19, 54).mirror().addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.694F, 1.6689F, -26.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r22 = bone.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.5305F, 2.4107F, -10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r23 = bone.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(40, 17).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r24 = bone.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(40, 17).addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -2.0F, 0.0F, -0.0192F, 0.0F, 1.309F)); + PartDefinition cube_r25 = bone.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(80, 0).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -2.0F, -10.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r26 = bone.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(104, 44).addBox(-1.25F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.7376F, -1.8706F, -33.0905F, -0.7109F, -0.2332F, 1.3086F)); + PartDefinition cube_r27 = bone.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(80, 48).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.161F, -3.0F, -30.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r28 = bone.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(78, 76).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -3.0F, -26.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r29 = bone.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(0, 48).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2593F, -1.8706F, -27.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r30 = bone.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(59, 22).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -3.0F, -26.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r31 = bone.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 89).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.561F, -2.0F, -26.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r32 = bone.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(59, 38).addBox(-1.8054F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, 0.0689F, -30.0F, -0.7905F, -0.2962F, 1.1949F)); + PartDefinition cube_r33 = bone.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(20, 48).addBox(-2.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, 0.5689F, -26.5F, -0.333F, -0.1111F, 1.0056F)); + PartDefinition cube_r34 = bone.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(40, 0).addBox(-0.9917F, -0.6987F, -5.0843F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.8162F, 0.5689F, -30.0F, -0.736F, -0.1159F, 0.8374F)); + PartDefinition cube_r35 = bone.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(0, 54).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, 0.5689F, -26.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r36 = bone.addOrReplaceChild("cube_r36", + CubeListBuilder.create().texOffs(116, 100).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).texOffs(40, 90).addBox(-3.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.5305F, 1.9107F, -10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r37 = bone.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(116, 65).addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, 0.8689F, 2.0F, 0.0524F, 0.0F, 0.7854F)); + PartDefinition cube_r38 = bone.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(40, 38).addBox(-1.0F, -0.5F, -7.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.8162F, 0.8689F, -9.0F, -0.0087F, 0.0F, 0.7854F)); + PartDefinition cube_r39 = bone.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(121, 113).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2923F, -0.4835F, -7.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r40 = bone.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(40, 75).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2304F, -0.5453F, -19.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r41 = bone.addOrReplaceChild("cube_r41", + CubeListBuilder.create().texOffs(28, 43).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 17).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.0545F, 1.3564F, -30.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r42 = bone.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(19, 54).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.367F, 1.6689F, -26.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r43 = bone.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(0, 0).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 2.4107F, -10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone6 = bone.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r44 = bone6.addOrReplaceChild("cube_r44", + CubeListBuilder.create().texOffs(20, 8).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(28, 48).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -2.0902F, -0.0305F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r45 = bone6.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(28, 48).mirror().addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.3125F, -2.0902F, -0.0305F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r46 = bone6.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(107, 114).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition flag = partdefinition.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(0, 10).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(9, 15).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offset(-0.3789F, -16.0F, -18.8384F)); + PartDefinition cube_r47 = flag.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(9, 10).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r48 = flag.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(0, 15).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(3, 19).addBox(-0.75F, -32.0F, -6.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 14.0F, -13.0F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -13.5F, -6.1569F)); + PartDefinition cube_r49 = bone2.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(16, 130).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r50 = bone3.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(8, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r51 = bone3.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(12, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r52 = bone4.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r53 = bone4.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(4, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r54 = bone5.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(32, 74).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r55 = bone5.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(72, 75).addBox(-0.3625F, -14.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r56 = bone5.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(110, 75).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 4.5F, -6.1569F)); + PartDefinition cube_r57 = bone7.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(16, 130).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r58 = bone8.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(8, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r59 = bone8.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(12, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r60 = bone9.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(0, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r61 = bone9.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(4, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r62 = bone10.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(32, 74).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r63 = bone10.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(72, 75).addBox(-0.3625F, -14.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r64 = bone10.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(110, 75).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition water = partdefinition.addOrReplaceChild("water", CubeListBuilder.create().texOffs(139, 3).addBox(-1.5F, 0.0F, -1.5F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.0F, 15.0F, 6.5F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 11.0F, -4.75F)); + PartDefinition cannon = partdefinition.addOrReplaceChild("cannon", CubeListBuilder.create(), PartPose.offset(-0.1667F, 17.455F, -29.6718F)); + PartDefinition cube_r65 = cannon.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(14, 14).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -4.955F, 0.6718F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r66 = cannon.addOrReplaceChild("cube_r66", + CubeListBuilder.create().texOffs(22, 115).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(47, 118).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -4.455F, -3.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition chest = partdefinition.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(154, 6).addBox(-4.0F, -11.0F, 8.0F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -21.0F)); + PartDefinition chestlid = partdefinition.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 13.0F, -8.0375F, -0.4363F, 0.0F, 0.0F)); + PartDefinition cube_r67 = chestlid.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(21, 148).addBox(-4.0F, -3.8158F, -2.843F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r68 = chestlid.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(21, 148).addBox(-3.99F, -5.2507F, 0.8899F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r69 = chestlid.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(24, 144).mirror().addBox(1.09F, -0.166F, 1.0294F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(59, 142).addBox(-4.11F, + -0.166F, 1.0294F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r70 = chestlid.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(39, 152).addBox(-4.0F, -0.1743F, -0.0076F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r71 = chestlid.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(41, 146).addBox(-4.01F, -5.8452F, 1.8126F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition bone12 = partdefinition.addOrReplaceChild("bone12", + CubeListBuilder.create().texOffs(73, 127).addBox(0.0F, -37.0F, -18.0F, 0.0F, 14.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(53, 88).addBox(-0.625F, -23.0F, -19.0F, 1.0F, 1.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition bone13 = partdefinition.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(53, 88).mirror().addBox(-0.375F, -18.0F, -4.0F, 1.0F, 1.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, -39.0F)); + PartDefinition cube_r72 = bone13.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(72, 141).mirror().addBox(0.0F, -7.0F, -12.0F, 0.0F, 19.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -30.0F, 7.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(80, 38).addBox(3.0F, -7.0F, -11.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)).texOffs(0, 111).addBox(5.0F, -7.0F, -27.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)).texOffs(40, 9) + .addBox(-3.0F, -5.0F, 9.0F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(80, 59).addBox(-7.0F, -8.2625F, 9.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 27) + .addBox(-4.2625F, -9.1125F, 8.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 13).addBox(-0.7375F, -9.175F, 8.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 6) + .addBox(-4.8875F, -5.35F, 9.2875F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(20, 29).addBox(-1.225F, -6.225F, 9.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 31) + .addBox(-3.8875F, -7.75F, 9.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 17).addBox(-1.0F, -14.0F, -7.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(12, 19) + .addBox(-0.5F, -13.5F, -5.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(109, 5).addBox(-5.5F, -10.0F, 5.0F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(43, 34) + .addBox(-2.5F, -9.3F, -31.175F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(43, 34).mirror().addBox(1.5F, -9.3F, -31.175F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r73 = bb_main.addOrReplaceChild("cube_r73", + CubeListBuilder.create().texOffs(5, 144).mirror().addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(5, 144).addBox(-4.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0F, -7.0F, -32.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r74 = bb_main.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(74, 37).mirror().addBox(-0.0795F, 0.2452F, -0.1466F, 0.0F, 24.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-1.0F, -31.25F, -19.5F, -0.0174F, -0.0015F, 0.2618F)); + PartDefinition cube_r75 = bb_main.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(1, 118).addBox(-1.425F, -0.5F, 0.5125F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.7589F, -7.6963F, 5.6688F, 0.0F, 0.6109F, -0.0436F)); + PartDefinition cube_r76 = bb_main.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(1, 118).addBox(-2.0375F, -0.5F, -0.875F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.228F, -7.7604F, 6.25F, 0.0F, -0.6981F, -0.0436F)); + PartDefinition cube_r77 = bb_main.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(0, 118).addBox(-0.75F, -1.05F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, -7.25F, 6.25F, 0.0F, 0.0F, -0.0436F)); + PartDefinition cube_r78 = bb_main.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(21, 135).addBox(-0.5F, -1.0F, 0.5F, 9.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5F, -10.0F, 5.5F, 0.0F, 0.0F, 0.3491F)); + PartDefinition cube_r79 = bb_main.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(6, 26).addBox(-2.0F, 1.0F, -1.5F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.5F, -9.0F, 3.5F, 1.0908F, 0.0F, 0.0F)); + PartDefinition cube_r80 = bb_main.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(74, 37).addBox(0.0795F, 0.2452F, -0.1466F, 0.0F, 24.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(1.0F, -31.25F, -19.5F, -0.0174F, 0.0015F, -0.2618F)); + PartDefinition cube_r81 = bb_main.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(0, 102).addBox(1.0F, -0.25F, -13.5F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r82 = bb_main.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(20, 17).addBox(3.0F, 0.0F, -11.5F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0697F, 0.003F, 0.0435F)); + PartDefinition cube_r83 = bb_main.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(16, 92).addBox(0.7561F, -0.8606F, -11.2451F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.9725F, -6.1184F, -27.0312F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r84 = bb_main.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(20, 23).addBox(-0.9939F, -0.9606F, -4.4951F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.9725F, -6.1184F, -27.0312F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r85 = bb_main.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(56, 93).addBox(-2.7561F, -0.8606F, -11.2451F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.9725F, -6.1184F, -27.0312F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r86 = bb_main.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(0, 25).addBox(-1.0061F, -0.7606F, -4.4951F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.9725F, -6.1184F, -27.0312F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r87 = bb_main.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(0, 37).addBox(-5.0F, 0.0F, -11.5F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r88 = bb_main.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(18, 102).addBox(-3.0F, -0.25F, -13.5F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r89 = bb_main.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(116, 89).addBox(-1.0F, 0.0F, -16.5F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r90 = bb_main.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(40, 33).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.5F, -8.0F, 9.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r91 = bb_main.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(40, 38).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5F, -8.0F, 9.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r92 = bb_main.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(20, 0).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2875F, -6.8875F, 9.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r93 = bb_main.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(20, 3).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2875F, -6.8875F, 9.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r94 = bb_main.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(0, 8).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -2.0F, 9.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r95 = bb_main.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(25, 59).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -2.525F, 9.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r96 = bb_main.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(59, 27).addBox(-3.9347F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, -2.525F, 9.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r97 = bb_main.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(9, 8).addBox(-2.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-3.0F, -2.0F, 9.5F, 0.0F, 0.0F, 0.3054F)); + PartDefinition cube_r98 = bb_main.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(22, 112).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, -6.5F, -2.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r99 = bb_main.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(0, 0).addBox(-1.0F, -0.5F, -8.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.0F, -6.5F, -19.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r100 = bb_main.addOrReplaceChild("cube_r100", CubeListBuilder.create().texOffs(0, 17).addBox(-1.0F, -0.5F, -8.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, -6.5F, -19.0F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r101 = bb_main.addOrReplaceChild("cube_r101", CubeListBuilder.create().texOffs(104, 23).addBox(-1.0F, -0.5F, -8.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, -6.5F, -3.0F, 0.0349F, 0.0F, -0.0524F)); + PartDefinition cube_r102 = bb_main.addOrReplaceChild("cube_r102", CubeListBuilder.create().texOffs(104, 44).addBox(-1.0F, -0.5F, -10.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, -6.5F, -17.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r103 = bb_main.addOrReplaceChild("cube_r103", CubeListBuilder.create().texOffs(0, 37).addBox(-1.0F, -0.5F, -6.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, -6.5F, -1.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r104 = bb_main.addOrReplaceChild("cube_r104", CubeListBuilder.create().texOffs(106, 0).addBox(-1.0F, -0.5F, -10.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0F, -6.5F, -17.0F, -0.0175F, 0.0F, 0.0349F)); + PartDefinition cube_r105 = bb_main.addOrReplaceChild("cube_r105", CubeListBuilder.create().texOffs(40, 0).addBox(-1.0F, -0.5F, -6.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0F, -6.5F, -1.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r106 = bb_main.addOrReplaceChild("cube_r106", CubeListBuilder.create().texOffs(44, 113).addBox(-1.0F, -0.5F, -9.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -6.5F, -18.0F, 0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r107 = bb_main.addOrReplaceChild("cube_r107", CubeListBuilder.create().texOffs(84, 113).addBox(-3.0F, -5.0F, 2.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, -11.0F, 0.0F, 0.0F, 0.0175F)); + PartDefinition cube_r108 = bb_main.addOrReplaceChild("cube_r108", CubeListBuilder.create().texOffs(80, 0).addBox(-1.0F, -0.5F, -9.0F, 2.0F, 1.0F, 22.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -4.0F, -0.0175F, 0.0F, 0.0524F)); + PartDefinition cube_r109 = bb_main.addOrReplaceChild("cube_r109", CubeListBuilder.create().texOffs(0, 74).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, 0.0175F, 0.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + flag.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + water.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + chest.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + chestlid.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone12.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.wheel.zRot = headPitch / (180F / (float) Math.PI); + } +} diff --git a/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgradeddestroyed.java b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgradeddestroyed.java new file mode 100644 index 0000000..4d62fbe --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/model/Modelswashbucklerupgradeddestroyed.java @@ -0,0 +1,278 @@ +package hal.studios.hpm.client.model; + +import net.minecraft.world.entity.Entity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.CubeListBuilder; +import net.minecraft.client.model.geom.builders.CubeDeformation; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.EntityModel; + +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.PoseStack; + +// Made with Blockbench 4.5.2 +// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings +// Paste this class into your mod and generate all required imports +public class Modelswashbucklerupgradeddestroyed extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in + // the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("hpm", "modelswashbucklerupgradeddestroyed"), "main"); + public final ModelPart bone; + public final ModelPart wheel; + public final ModelPart cannon; + public final ModelPart chest; + public final ModelPart mast; + public final ModelPart bone11; + public final ModelPart bb_main; + + public Modelswashbucklerupgradeddestroyed(ModelPart root) { + this.bone = root.getChild("bone"); + this.wheel = root.getChild("wheel"); + this.cannon = root.getChild("cannon"); + this.chest = root.getChild("chest"); + this.mast = root.getChild("mast"); + this.bone11 = root.getChild("bone11"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(0, 74).addBox(-8.5305F, 1.6607F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1) + .addBox(-10.5305F, 1.4107F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).texOffs(40, 1).mirror().addBox(-6.5305F, 1.4107F, -26.5F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(7.5305F, 19.5893F, -0.5F)); + PartDefinition cube_r1 = bone.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 59).mirror().addBox(-2.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.5305F, 1.5875F, -26.39F, -0.1683F, 0.1721F, -0.0291F)); + PartDefinition cube_r2 = bone.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 59).addBox(0.0F, -0.1699F, -3.9726F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 1.5875F, -26.39F, -0.1683F, -0.1721F, 0.0291F)); + PartDefinition cube_r3 = bone.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(59, 17).addBox(-1.0F, -0.75F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.5305F, 2.4107F, -26.5F, -0.1658F, 0.0F, 0.0F)); + PartDefinition cube_r4 = bone.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(104, 44).mirror().addBox(-0.75F, -1.0F, -3.5F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.3234F, -1.8706F, -33.0905F, -0.7109F, 0.2332F, -1.3086F)); + PartDefinition cube_r5 = bone.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(80, 48).mirror().addBox(-0.1294F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.9F, -3.0F, -30.2875F, -0.7418F, 0.0F, -1.5708F)); + PartDefinition cube_r6 = bone.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(78, 76).mirror().addBox(-0.1294F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.75F, -3.0F, -26.5F, 0.0F, 0.0F, -1.5708F)); + PartDefinition cube_r7 = bone.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(0, 48).mirror().addBox(-0.75F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.8017F, -1.8706F, -27.9935F, -0.413F, 0.1451F, -1.2522F)); + PartDefinition cube_r8 = bone.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(59, 22).mirror().addBox(-0.1294F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.75F, -3.0F, -26.5F, -0.4363F, 0.0F, -1.5708F)); + PartDefinition cube_r9 = bone.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(0, 89).mirror().addBox(-1.1294F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.5F, -2.0F, -26.5F, -0.0175F, 0.0F, -1.309F)); + PartDefinition cube_r10 = bone.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(59, 38).mirror().addBox(-0.1946F, -1.0851F, -2.6872F, 2.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.2448F, 0.0689F, -30.0F, -0.7905F, 0.2962F, -1.1949F)); + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(20, 48).mirror().addBox(0.0808F, -0.995F, -3.75F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-1.2448F, 0.5689F, -26.5F, -0.333F, 0.1111F, -1.0056F)); + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(0, 54).mirror().addBox(-1.9192F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-1.2448F, 0.5689F, -26.5F, -0.3079F, 0.1248F, -0.825F)); + PartDefinition cube_r13 = bone.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(116, 100).mirror().addBox(-0.0613F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(40, 90).mirror() + .addBox(1.9387F, -1.0347F, 8.0F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5305F, 1.9107F, -10.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r14 = bone.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(116, 65).mirror().addBox(-1.0F, -0.5F, -3.5F, 2.0F, 1.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.2448F, 0.8689F, 2.0F, 0.0524F, 0.0F, -0.7854F)); + PartDefinition cube_r15 = bone.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(28, 43).mirror().addBox(-1.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.0065F, 1.3564F, -30.25F, -0.59F, 0.2404F, -0.3057F)); + PartDefinition cube_r16 = bone.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(19, 54).mirror().addBox(-1.9659F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-2.694F, 1.6689F, -26.5F, -0.2148F, 0.2404F, -0.3057F)); + PartDefinition cube_r17 = bone.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(0.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-4.5305F, 2.4107F, -10.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r18 = bone.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(40, 17).mirror().addBox(-1.0F, -0.375F, -5.5F, 2.0F, 1.0F, 15.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, -0.0192F, 0.0F, -1.309F)); + PartDefinition cube_r19 = bone.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(80, 0).addBox(-1.0F, -0.5F, -4.5F, 2.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.061F, -2.0F, -10.0F, 0.0105F, 0.0F, 1.309F)); + PartDefinition cube_r20 = bone.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(80, 48).addBox(-0.8706F, -1.1304F, -8.8794F, 1.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.161F, -3.0F, -30.2875F, -0.7418F, 0.0F, 1.5708F)); + PartDefinition cube_r21 = bone.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(78, 76).addBox(-0.8706F, -1.0251F, -0.0093F, 1.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -3.0F, -26.5F, 0.0F, 0.0F, 1.5708F)); + PartDefinition cube_r22 = bone.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 48).addBox(-1.25F, -0.6625F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2593F, -1.8706F, -27.9935F, -0.413F, -0.1451F, 1.2522F)); + PartDefinition cube_r23 = bone.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(59, 22).addBox(-0.8706F, -1.0251F, -4.0093F, 1.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.811F, -3.0F, -26.5F, -0.4363F, 0.0F, 1.5708F)); + PartDefinition cube_r24 = bone.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 89).addBox(-0.8706F, -1.0251F, -0.0093F, 2.0F, 1.0F, 12.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-15.561F, -2.0F, -26.5F, -0.0175F, 0.0F, 1.309F)); + PartDefinition cube_r25 = bone.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(0, 54).addBox(-0.0808F, -0.995F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-13.8162F, 0.5689F, -26.5F, -0.3079F, -0.1248F, 0.825F)); + PartDefinition cube_r26 = bone.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(116, 100).addBox(-1.9387F, -1.0347F, -16.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.5305F, 1.9107F, -10.5F, 0.0F, 0.0F, 0.7854F)); + PartDefinition cube_r27 = bone.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(121, 113).addBox(-1.0F, -0.5F, -5.0F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2923F, -0.4835F, -7.5F, 0.0436F, 0.0F, 0.7854F)); + PartDefinition cube_r28 = bone.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(40, 75).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-14.2304F, -0.5453F, -19.5F, -0.0175F, 0.0F, 0.7854F)); + PartDefinition cube_r29 = bone.addOrReplaceChild("cube_r29", + CubeListBuilder.create().texOffs(28, 43).addBox(0.7346F, -0.9168F, -3.0245F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 17).addBox(-0.2654F, -0.9168F, -7.0245F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-11.0545F, 1.3564F, -30.25F, -0.59F, -0.2404F, 0.3057F)); + PartDefinition cube_r30 = bone.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(19, 54).addBox(-0.0341F, -0.7588F, -4.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-12.367F, 1.6689F, -26.5F, -0.2148F, -0.2404F, 0.3057F)); + PartDefinition cube_r31 = bone.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(0, 0).addBox(-2.0F, -1.0F, -16.0F, 2.0F, 1.0F, 36.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-10.5305F, 2.4107F, -10.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition bone6 = bone.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(-7.5305F, 3.7607F, -30.425F)); + PartDefinition cube_r32 = bone6.addOrReplaceChild("cube_r32", + CubeListBuilder.create().texOffs(20, 8).addBox(0.0F, -0.9388F, -8.9294F, 1.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(28, 48).addBox(0.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.3125F, -2.0902F, -0.0305F, -0.5729F, -0.1323F, 0.0849F)); + PartDefinition cube_r33 = bone6.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(28, 48).mirror().addBox(-2.0F, -0.9388F, -1.9294F, 2.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.3125F, -2.0902F, -0.0305F, -0.5729F, 0.1323F, -0.0849F)); + PartDefinition cube_r34 = bone6.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(107, 114).addBox(-1.0F, -1.7485F, -10.0036F, 2.0F, 2.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition wheel = partdefinition.addOrReplaceChild("wheel", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -4.0F, 0.0F, 8.0F, 8.0F, 0.0F, new CubeDeformation(0.0F)).texOffs(40, 17) + .addBox(-1.0F, -1.0F, -2.25F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(12, 19).addBox(-0.5F, -0.5F, -0.25F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, 19.0F, 0.25F, -1.0472F, 0.0F, -0.829F)); + PartDefinition cannon = partdefinition.addOrReplaceChild("cannon", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.1667F, 17.455F, -27.6718F, 0.3491F, 0.0F, 0.0F)); + PartDefinition cube_r35 = cannon.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(14, 14).addBox(-0.5F, 1.5F, 0.0F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3333F, -4.955F, 0.6718F, 0.829F, 0.0F, 0.0F)); + PartDefinition cube_r36 = cannon.addOrReplaceChild("cube_r36", + CubeListBuilder.create().texOffs(22, 115).addBox(-1.0F, 0.0F, -3.5F, 2.0F, 2.0F, 7.0F, new CubeDeformation(0.0F)).texOffs(47, 118).addBox(-1.5F, -0.5F, 2.5F, 3.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1667F, -4.455F, -3.8282F, -0.1745F, 0.0F, 0.0F)); + PartDefinition chest = partdefinition.addOrReplaceChild("chest", CubeListBuilder.create().texOffs(154, 6).addBox(-4.0F, -2.0F, -2.5F, 8.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 18.0F, -15.5F, -0.9525F, 0.7205F, -0.0631F)); + PartDefinition chestlid = chest.addOrReplaceChild("chestlid", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -2.0F, 2.4625F, -2.3998F, 0.0F, 0.0F)); + PartDefinition cube_r37 = chestlid.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(21, 148).addBox(-4.0F, -3.8158F, -2.843F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, -4.1548F, -0.9948F, 0.0F, 0.0F)); + PartDefinition cube_r38 = chestlid.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(21, 148).addBox(-3.99F, -5.2507F, 0.8899F, 8.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 0.9905F, 0.0F, 0.0F)); + PartDefinition cube_r39 = chestlid.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(24, 144).mirror().addBox(1.09F, -0.166F, 1.0294F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false).texOffs(59, 142).addBox(-4.11F, + -0.166F, 1.0294F, 3.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.01F, 0.5626F, -1.6548F, 2.3562F, 0.0F, 0.0F)); + PartDefinition cube_r40 = chestlid.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(39, 152).addBox(-4.0F, -0.1743F, -0.0076F, 8.0F, 0.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.01F, 2.0626F, -4.1548F, 1.9199F, 0.0F, 0.0F)); + PartDefinition cube_r41 = chestlid.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(41, 146).addBox(-4.01F, -5.8452F, 1.8126F, 8.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 2.0626F, 0.8452F, 1.5708F, 0.0F, 0.0F)); + PartDefinition mast = partdefinition.addOrReplaceChild("mast", CubeListBuilder.create().texOffs(3, 19).addBox(-0.75F, -35.0F, -0.75F, 1.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, 17.0F, -19.0F, 0.0F, 0.0F, -1.2654F)); + PartDefinition bone2 = mast.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(0.0F, -16.5F, -0.1569F)); + PartDefinition cube_r42 = bone2.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(16, 130).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone3 = bone2.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r43 = bone3.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(8, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r44 = bone3.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(12, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone4 = bone2.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r45 = bone4.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(0, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r46 = bone4.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(4, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r47 = bone5.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(32, 74).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r48 = bone5.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(72, 75).addBox(-0.3625F, -14.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r49 = bone5.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(110, 75).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone7 = mast.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 1.5F, -0.1569F)); + PartDefinition cube_r50 = bone7.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(16, 130).addBox(-0.5F, -12.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -2.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r51 = bone8.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(8, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r52 = bone8.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(12, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, -0.275F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r53 = bone9.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(0, 130).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r54 = bone9.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(4, 130).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition bone10 = bone9.addOrReplaceChild("bone10", CubeListBuilder.create(), PartPose.offsetAndRotation(-0.2875F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + PartDefinition cube_r55 = bone10.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(32, 74).addBox(-0.5F, -14.5F, -1.0F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -2.3562F, 0.0F)); + PartDefinition cube_r56 = bone10.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(72, 75).addBox(-0.3625F, -14.5F, -1.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + PartDefinition cube_r57 = bone10.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(110, 75).addBox(0.15F, -14.5F, 0.0625F, 1.0F, 18.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, 0.0F, 0.5F, 0.0F, 1.5708F, 0.0F)); + PartDefinition flag = mast.addOrReplaceChild("flag", + CubeListBuilder.create().texOffs(0, 10).addBox(0.1289F, -1.5F, 5.9009F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(9, 15).addBox(0.1289F, -1.5F, 0.0884F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3789F, -33.0F, 0.1616F, 0.0F, -1.4835F, 0.0F)); + PartDefinition cube_r58 = flag.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(9, 10).addBox(-0.006F, -1.5F, -0.0384F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.3711F, 0.0F, 4.0259F, 0.0F, 0.2618F, 0.0F)); + PartDefinition cube_r59 = flag.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(0, 15).addBox(0.0F, -1.5F, 0.0F, 0.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.1289F, 0.0F, 2.0884F, 0.0F, -0.2618F, 0.0F)); + PartDefinition bone13 = mast.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(53, 88).mirror().addBox(-0.4375F, 4.5F, -22.5F, 1.0F, 1.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(0.0625F, -15.5F, -1.5F, 0.0F, 0.829F, 0.0F)); + PartDefinition cube_r60 = bone13.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(72, 141).mirror().addBox(0.0F, -7.0F, -12.0F, 0.0F, 19.0F, 23.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(-0.0625F, -7.5F, -11.5F, 0.0F, 3.1416F, 0.0F)); + PartDefinition bone12 = mast.addOrReplaceChild("bone12", + CubeListBuilder.create().texOffs(73, 127).addBox(0.0625F, -10.75F, 0.25F, 0.0F, 14.0F, 22.0F, new CubeDeformation(0.0F)).texOffs(53, 88).addBox(-0.5625F, 3.25F, -0.75F, 1.0F, 1.0F, 23.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-0.0625F, -19.25F, 0.75F, 0.0F, -1.0472F, 0.0F)); + PartDefinition bone11 = partdefinition.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(109, 5).addBox(-1.5F, -1.4809F, -0.4435F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, 15.4809F, 5.4435F, 0.0F, 0.0F, -1.9199F)); + PartDefinition cube_r61 = bone11.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(6, 26).addBox(-2.0F, 1.0F, -1.5F, 3.0F, 0.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.5F, -0.4809F, -1.9435F, 1.0908F, 0.0F, 0.0F)); + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", + CubeListBuilder.create().texOffs(80, 59).addBox(-7.0F, -8.2625F, 9.0375F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(40, 27).addBox(-4.2625F, -9.1125F, 8.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(40, 13) + .addBox(-0.7375F, -9.175F, 8.325F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(20, 29).addBox(-1.225F, -6.225F, 9.2125F, 7.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(0, 31) + .addBox(-3.8875F, -7.75F, 9.2875F, 6.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(43, 34).addBox(-2.5F, -9.3F, -31.175F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(43, 34).mirror() + .addBox(1.5F, -9.3F, -31.175F, 1.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r62 = bb_main.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(5, 144).mirror().addBox(-0.5F, -4.0F, 1.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), + PartPose.offsetAndRotation(2.0F, -7.0F, -32.0F, -0.829F, 0.0F, 0.0F)); + PartDefinition cube_r63 = bb_main.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(5, 144).addBox(-0.5F, -4.0F, 2.0F, 1.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -7.0F, -32.0F, -0.5672F, 0.0F, 0.0F)); + PartDefinition cube_r64 = bb_main.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(1, 118).addBox(-1.425F, -0.5F, 0.5125F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(4.7589F, -7.6963F, 5.6688F, 0.0F, 0.6109F, -0.0436F)); + PartDefinition cube_r65 = bb_main.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(1, 118).addBox(-2.0375F, -0.5F, -0.875F, 1.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.228F, -7.7604F, 6.25F, 0.0F, -0.6981F, -0.0436F)); + PartDefinition cube_r66 = bb_main.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(0, 118).addBox(-0.75F, -1.05F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, -7.25F, 6.25F, 0.0F, 0.0F, -0.0436F)); + PartDefinition cube_r67 = bb_main.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(21, 135).addBox(-0.5F, -2.0F, 0.5F, 9.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.5F, -10.0F, 5.5F, 0.0F, 0.0F, 0.5236F)); + PartDefinition cube_r68 = bb_main.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(0, 102).addBox(1.0F, -0.25F, -13.5F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0695F, 0.0061F, 0.0871F)); + PartDefinition cube_r69 = bb_main.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(16, 92).addBox(0.7561F, -0.8606F, -11.2451F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.9725F, -6.1184F, -27.0312F, -0.1034F, 0.8294F, -0.0326F)); + PartDefinition cube_r70 = bb_main.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(20, 23).addBox(-0.9939F, -0.9606F, -4.4951F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.9725F, -6.1184F, -27.0312F, -0.077F, 0.4382F, 0.011F)); + PartDefinition cube_r71 = bb_main.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(56, 93).addBox(-2.7561F, -0.8606F, -11.2451F, 2.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.9725F, -6.1184F, -27.0312F, -0.1034F, -0.8294F, 0.0326F)); + PartDefinition cube_r72 = bb_main.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(0, 25).addBox(-1.0061F, -0.7606F, -4.4951F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.9725F, -6.1184F, -27.0312F, -0.077F, -0.4382F, -0.011F)); + PartDefinition cube_r73 = bb_main.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(0, 37).addBox(-5.0F, 0.0F, -11.5F, 2.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0697F, -0.003F, -0.0435F)); + PartDefinition cube_r74 = bb_main.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(18, 102).addBox(-3.0F, -0.25F, -13.5F, 2.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0695F, -0.0061F, -0.0871F)); + PartDefinition cube_r75 = bb_main.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(116, 89).addBox(-1.0F, 0.0F, -16.5F, 2.0F, 1.0F, 10.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(0.0F, -6.5F, -20.0F, -0.0698F, 0.0F, 0.0F)); + PartDefinition cube_r76 = bb_main.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(40, 33).addBox(-2.5F, -0.5F, -1.2875F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.5F, -8.0F, 9.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r77 = bb_main.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(40, 38).addBox(-2.5F, -0.4F, -1.25F, 5.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.5F, -8.0F, 9.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r78 = bb_main.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(20, 0).addBox(-0.825F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-7.2875F, -6.8875F, 9.5F, 0.0F, 0.0F, -0.2618F)); + PartDefinition cube_r79 = bb_main.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(20, 3).addBox(-1.175F, -0.6375F, -0.5F, 2.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(7.2875F, -6.8875F, 9.5F, 0.0F, 0.0F, 0.2618F)); + PartDefinition cube_r80 = bb_main.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(0, 8).addBox(0.0F, -3.0F, -0.5F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(3.0F, -2.0F, 9.5F, 0.0F, 0.0F, -0.3054F)); + PartDefinition cube_r81 = bb_main.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(25, 59).addBox(-0.0653F, -3.1007F, -0.5F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -2.525F, 9.5F, 0.0F, 0.0F, -0.7854F)); + PartDefinition cube_r82 = bb_main.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(22, 112).addBox(-1.0F, -0.5F, -7.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(6.0F, -6.5F, -2.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r83 = bb_main.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(0, 17).addBox(-1.0F, -0.5F, -8.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, -6.5F, -19.0F, 0.0F, 0.0F, 0.0349F)); + PartDefinition cube_r84 = bb_main.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(104, 23).addBox(-1.0F, 2.5F, -8.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-6.0F, -6.5F, -3.0F, 0.2531F, 0.0F, -0.0524F)); + PartDefinition cube_r85 = bb_main.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(104, 44).addBox(-1.0F, -0.5F, -10.0F, 2.0F, 1.0F, 20.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, -6.5F, -17.0F, -0.0175F, 0.0F, 0.0F)); + PartDefinition cube_r86 = bb_main.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(0, 37).addBox(-1.0F, -0.5F, -6.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-4.0F, -6.5F, -1.0F, 0.0349F, 0.0F, 0.0F)); + PartDefinition cube_r87 = bb_main.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(40, 0).addBox(-1.0F, 0.5F, -6.0F, 2.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(2.0F, -6.5F, -1.0F, 0.3752F, 0.0F, 0.0F)); + PartDefinition cube_r88 = bb_main.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(44, 113).addBox(-1.0F, -0.5F, -9.0F, 2.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-2.0F, -6.5F, -18.0F, 0.0175F, 0.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + wheel.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + cannon.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + chest.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + mast.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone11.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } +} diff --git a/src/main/java/hal/studios/hpm/client/particle/PlankSplinterParticle.java b/src/main/java/hal/studios/hpm/client/particle/PlankSplinterParticle.java new file mode 100644 index 0000000..90704ad --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/particle/PlankSplinterParticle.java @@ -0,0 +1,66 @@ + +package hal.studios.hpm.client.particle; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.multiplayer.ClientLevel; + +@OnlyIn(Dist.CLIENT) +public class PlankSplinterParticle extends TextureSheetParticle { + public static PlankSplinterParticleProvider provider(SpriteSet spriteSet) { + return new PlankSplinterParticleProvider(spriteSet); + } + + public static class PlankSplinterParticleProvider implements ParticleProvider { + private final SpriteSet spriteSet; + + public PlankSplinterParticleProvider(SpriteSet spriteSet) { + this.spriteSet = spriteSet; + } + + public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + return new PlankSplinterParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); + } + } + + private final SpriteSet spriteSet; + + private float angularVelocity; + private float angularAcceleration; + + protected PlankSplinterParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) { + super(world, x, y, z); + this.spriteSet = spriteSet; + this.setSize(0.4f, 0.4f); + this.quadSize *= 1.2f; + this.lifetime = (int) Math.max(1, 46 + (this.random.nextInt(24) - 12)); + this.gravity = 1f; + this.hasPhysics = true; + this.xd = vx * 0.3; + this.yd = vy * 0.3; + this.zd = vz * 0.3; + this.angularVelocity = 0.4f; + this.angularAcceleration = 0.01f; + this.pickSprite(spriteSet); + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; + } + + @Override + public void tick() { + super.tick(); + this.oRoll = this.roll; + this.roll += this.angularVelocity; + this.angularVelocity += this.angularAcceleration; + } +} diff --git a/src/main/java/hal/studios/hpm/client/particle/RippedSailParticle.java b/src/main/java/hal/studios/hpm/client/particle/RippedSailParticle.java new file mode 100644 index 0000000..e918efe --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/particle/RippedSailParticle.java @@ -0,0 +1,66 @@ + +package hal.studios.hpm.client.particle; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.multiplayer.ClientLevel; + +@OnlyIn(Dist.CLIENT) +public class RippedSailParticle extends TextureSheetParticle { + public static RippedSailParticleProvider provider(SpriteSet spriteSet) { + return new RippedSailParticleProvider(spriteSet); + } + + public static class RippedSailParticleProvider implements ParticleProvider { + private final SpriteSet spriteSet; + + public RippedSailParticleProvider(SpriteSet spriteSet) { + this.spriteSet = spriteSet; + } + + public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + return new RippedSailParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); + } + } + + private final SpriteSet spriteSet; + + private float angularVelocity; + private float angularAcceleration; + + protected RippedSailParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) { + super(world, x, y, z); + this.spriteSet = spriteSet; + this.setSize(0.4f, 0.4f); + + this.lifetime = (int) Math.max(1, 40 + (this.random.nextInt(10) - 5)); + this.gravity = 0.3f; + this.hasPhysics = true; + this.xd = vx * 0.1; + this.yd = vy * 0.1; + this.zd = vz * 0.1; + this.angularVelocity = 0.1f; + this.angularAcceleration = 0.03f; + this.pickSprite(spriteSet); + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; + } + + @Override + public void tick() { + super.tick(); + this.oRoll = this.roll; + this.roll += this.angularVelocity; + this.angularVelocity += this.angularAcceleration; + } +} diff --git a/src/main/java/hal/studios/hpm/client/particle/RippedSailPirateParticle.java b/src/main/java/hal/studios/hpm/client/particle/RippedSailPirateParticle.java new file mode 100644 index 0000000..7847ade --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/particle/RippedSailPirateParticle.java @@ -0,0 +1,66 @@ + +package hal.studios.hpm.client.particle; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.multiplayer.ClientLevel; + +@OnlyIn(Dist.CLIENT) +public class RippedSailPirateParticle extends TextureSheetParticle { + public static RippedSailPirateParticleProvider provider(SpriteSet spriteSet) { + return new RippedSailPirateParticleProvider(spriteSet); + } + + public static class RippedSailPirateParticleProvider implements ParticleProvider { + private final SpriteSet spriteSet; + + public RippedSailPirateParticleProvider(SpriteSet spriteSet) { + this.spriteSet = spriteSet; + } + + public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + return new RippedSailPirateParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); + } + } + + private final SpriteSet spriteSet; + + private float angularVelocity; + private float angularAcceleration; + + protected RippedSailPirateParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) { + super(world, x, y, z); + this.spriteSet = spriteSet; + this.setSize(0.4f, 0.4f); + + this.lifetime = (int) Math.max(1, 40 + (this.random.nextInt(10) - 5)); + this.gravity = 0.3f; + this.hasPhysics = true; + this.xd = vx * 0.1; + this.yd = vy * 0.1; + this.zd = vz * 0.1; + this.angularVelocity = 0.1f; + this.angularAcceleration = 0.03f; + this.pickSprite(spriteSet); + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; + } + + @Override + public void tick() { + super.tick(); + this.oRoll = this.roll; + this.roll += this.angularVelocity; + this.angularVelocity += this.angularAcceleration; + } +} diff --git a/src/main/java/hal/studios/hpm/client/particle/SplintersParticle.java b/src/main/java/hal/studios/hpm/client/particle/SplintersParticle.java new file mode 100644 index 0000000..9c3b30e --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/particle/SplintersParticle.java @@ -0,0 +1,66 @@ + +package hal.studios.hpm.client.particle; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.multiplayer.ClientLevel; + +@OnlyIn(Dist.CLIENT) +public class SplintersParticle extends TextureSheetParticle { + public static SplintersParticleProvider provider(SpriteSet spriteSet) { + return new SplintersParticleProvider(spriteSet); + } + + public static class SplintersParticleProvider implements ParticleProvider { + private final SpriteSet spriteSet; + + public SplintersParticleProvider(SpriteSet spriteSet) { + this.spriteSet = spriteSet; + } + + public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + return new SplintersParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); + } + } + + private final SpriteSet spriteSet; + + private float angularVelocity; + private float angularAcceleration; + + protected SplintersParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) { + super(world, x, y, z); + this.spriteSet = spriteSet; + this.setSize(0.4f, 0.4f); + this.quadSize *= 1.2f; + this.lifetime = (int) Math.max(1, 46 + (this.random.nextInt(24) - 12)); + this.gravity = 1f; + this.hasPhysics = true; + this.xd = vx * 0.3; + this.yd = vy * 0.3; + this.zd = vz * 0.3; + this.angularVelocity = 0.4f; + this.angularAcceleration = 0.01f; + this.pickSprite(spriteSet); + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; + } + + @Override + public void tick() { + super.tick(); + this.oRoll = this.roll; + this.roll += this.angularVelocity; + this.angularVelocity += this.angularAcceleration; + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/BarrelDebrisRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/BarrelDebrisRenderer.java new file mode 100644 index 0000000..e26d3f7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/BarrelDebrisRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.BarrelDebrisEntity; +import hal.studios.hpm.client.model.Modelfloating_barrel; + +public class BarrelDebrisRenderer extends MobRenderer> { + public BarrelDebrisRenderer(EntityRendererProvider.Context context) { + super(context, new Modelfloating_barrel(context.bakeLayer(Modelfloating_barrel.LAYER_LOCATION)), 0f); + } + + @Override + public ResourceLocation getTextureLocation(BarrelDebrisEntity entity) { + return new ResourceLocation("hpm:textures/entities/floatingbarrel.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CorvetteSteamshipRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CorvetteSteamshipRenderer.java new file mode 100644 index 0000000..d1b0f48 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CorvetteSteamshipRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CorvetteSteamshipEntity; +import hal.studios.hpm.client.model.Modelcorvetteclass; + +public class CorvetteSteamshipRenderer extends MobRenderer> { + public CorvetteSteamshipRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcorvetteclass(context.bakeLayer(Modelcorvetteclass.LAYER_LOCATION)), 3f); + } + + @Override + public ResourceLocation getTextureLocation(CorvetteSteamshipEntity entity) { + return new ResourceLocation("hpm:textures/entities/corvetteclass.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CorvettesteamshipdamagedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CorvettesteamshipdamagedRenderer.java new file mode 100644 index 0000000..6a71adc --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CorvettesteamshipdamagedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CorvettesteamshipdamagedEntity; +import hal.studios.hpm.client.model.Modelcorvetteclassdamaged; + +public class CorvettesteamshipdamagedRenderer extends MobRenderer> { + public CorvettesteamshipdamagedRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcorvetteclassdamaged(context.bakeLayer(Modelcorvetteclassdamaged.LAYER_LOCATION)), 3f); + } + + @Override + public ResourceLocation getTextureLocation(CorvettesteamshipdamagedEntity entity) { + return new ResourceLocation("hpm:textures/entities/corvetteclassdamaged.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedDamagedSailsRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedDamagedSailsRenderer.java new file mode 100644 index 0000000..1dcee2b --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedDamagedSailsRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterMilitarisedDamagedSailsEntity; +import hal.studios.hpm.client.model.Modelcutterweaponisedremastered; + +public class CutterMilitarisedDamagedSailsRenderer extends MobRenderer> { + public CutterMilitarisedDamagedSailsRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterweaponisedremastered(context.bakeLayer(Modelcutterweaponisedremastered.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterMilitarisedDamagedSailsEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterweaponisedsailsdamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedWreckRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedWreckRenderer.java new file mode 100644 index 0000000..8aa704a --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterMilitarisedWreckRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterMilitarisedWreckEntity; +import hal.studios.hpm.client.model.ModelcutterArmedWreck; + +public class CutterMilitarisedWreckRenderer extends MobRenderer> { + public CutterMilitarisedWreckRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterArmedWreck(context.bakeLayer(ModelcutterArmedWreck.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(CutterMilitarisedWreckEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterweaponiseddamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterPassengerRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterPassengerRenderer.java new file mode 100644 index 0000000..7e8acdd --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterPassengerRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterPassengerEntity; +import hal.studios.hpm.client.model.ModelCutterPassenger; + +public class CutterPassengerRenderer extends MobRenderer> { + public CutterPassengerRenderer(EntityRendererProvider.Context context) { + super(context, new ModelCutterPassenger(context.bakeLayer(ModelCutterPassenger.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterPassengerEntity entity) { + return new ResourceLocation("hpm:textures/entities/transparent.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterPirateDamagedSailsRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterPirateDamagedSailsRenderer.java new file mode 100644 index 0000000..20ba22f --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterPirateDamagedSailsRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterPirateDamagedSailsEntity; +import hal.studios.hpm.client.model.Modelcutterweaponisedremastered; + +public class CutterPirateDamagedSailsRenderer extends MobRenderer> { + public CutterPirateDamagedSailsRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterweaponisedremastered(context.bakeLayer(Modelcutterweaponisedremastered.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterPirateDamagedSailsEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterpiratesailsdamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterPirateRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterPirateRenderer.java new file mode 100644 index 0000000..7d3dc64 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterPirateRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.client.model.Modelcutterweaponisedremastered; + +public class CutterPirateRenderer extends MobRenderer> { + public CutterPirateRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterweaponisedremastered(context.bakeLayer(Modelcutterweaponisedremastered.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterPirateEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterpirateremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterRenderer.java new file mode 100644 index 0000000..604d473 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterEntity; +import hal.studios.hpm.client.model.Modelcutterremastered; + +public class CutterRenderer extends MobRenderer> { + public CutterRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterremastered(context.bakeLayer(Modelcutterremastered.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterSailHitboxRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterSailHitboxRenderer.java new file mode 100644 index 0000000..c59407f --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterSailHitboxRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.client.model.ModelCutterPassenger; + +public class CutterSailHitboxRenderer extends MobRenderer> { + public CutterSailHitboxRenderer(EntityRendererProvider.Context context) { + super(context, new ModelCutterPassenger(context.bakeLayer(ModelCutterPassenger.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterSailHitboxEntity entity) { + return new ResourceLocation("hpm:textures/entities/transparent.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterSailsDamagedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterSailsDamagedRenderer.java new file mode 100644 index 0000000..79e3f82 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterSailsDamagedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterSailsDamagedEntity; +import hal.studios.hpm.client.model.ModelcutterDamagedSails; + +public class CutterSailsDamagedRenderer extends MobRenderer> { + public CutterSailsDamagedRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterDamagedSails(context.bakeLayer(ModelcutterDamagedSails.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterSailsDamagedEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterremasteredsailsdamaged.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterSeatRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterSeatRenderer.java new file mode 100644 index 0000000..a120f3b --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterSeatRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.client.model.ModelCutterPassenger; + +public class CutterSeatRenderer extends MobRenderer> { + public CutterSeatRenderer(EntityRendererProvider.Context context) { + super(context, new ModelCutterPassenger(context.bakeLayer(ModelCutterPassenger.LAYER_LOCATION)), 0f); + } + + @Override + public ResourceLocation getTextureLocation(CutterSeatEntity entity) { + return new ResourceLocation("hpm:textures/entities/transparent.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterdamagedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterdamagedRenderer.java new file mode 100644 index 0000000..e49dcde --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterdamagedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.client.model.Modelcutterdamagedremade; + +public class CutterdamagedRenderer extends MobRenderer> { + public CutterdamagedRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterdamagedremade(context.bakeLayer(Modelcutterdamagedremade.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterdamagedEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterremastereddamaged.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CuttermilitarisedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CuttermilitarisedRenderer.java new file mode 100644 index 0000000..50e1959 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CuttermilitarisedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.client.model.Modelcutterweaponisedremastered; + +public class CuttermilitarisedRenderer extends MobRenderer> { + public CuttermilitarisedRenderer(EntityRendererProvider.Context context) { + super(context, new Modelcutterweaponisedremastered(context.bakeLayer(Modelcutterweaponisedremastered.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CuttermilitarisedEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterweaponisedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CuttermilitariseddamagedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CuttermilitariseddamagedRenderer.java new file mode 100644 index 0000000..535a5cf --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CuttermilitariseddamagedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.client.model.ModelcutterArmedDamaged; + +public class CuttermilitariseddamagedRenderer extends MobRenderer> { + public CuttermilitariseddamagedRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterArmedDamaged(context.bakeLayer(ModelcutterArmedDamaged.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CuttermilitariseddamagedEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterweaponiseddamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterpiratedamagedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterpiratedamagedRenderer.java new file mode 100644 index 0000000..20145af --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterpiratedamagedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterpiratedamagedEntity; +import hal.studios.hpm.client.model.ModelcutterArmedDamaged; + +public class CutterpiratedamagedRenderer extends MobRenderer> { + public CutterpiratedamagedRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterArmedDamaged(context.bakeLayer(ModelcutterArmedDamaged.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(CutterpiratedamagedEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterpiratedamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterpiratewreckRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterpiratewreckRenderer.java new file mode 100644 index 0000000..44f8320 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterpiratewreckRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterpiratewreckEntity; +import hal.studios.hpm.client.model.ModelcutterArmedWreck; + +public class CutterpiratewreckRenderer extends MobRenderer> { + public CutterpiratewreckRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterArmedWreck(context.bakeLayer(ModelcutterArmedWreck.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(CutterpiratewreckEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterpiratedamagedremastered.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterwreckbackRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterwreckbackRenderer.java new file mode 100644 index 0000000..227eb65 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterwreckbackRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterwreckbackEntity; +import hal.studios.hpm.client.model.ModelcutterRearWreckremade; + +public class CutterwreckbackRenderer extends MobRenderer> { + public CutterwreckbackRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterRearWreckremade(context.bakeLayer(ModelcutterRearWreckremade.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(CutterwreckbackEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterremasteredwreck.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/CutterwreckfrontRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/CutterwreckfrontRenderer.java new file mode 100644 index 0000000..50eb332 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/CutterwreckfrontRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.CutterwreckfrontEntity; +import hal.studios.hpm.client.model.ModelcutterdWreckFrontremade; + +public class CutterwreckfrontRenderer extends MobRenderer> { + public CutterwreckfrontRenderer(EntityRendererProvider.Context context) { + super(context, new ModelcutterdWreckFrontremade(context.bakeLayer(ModelcutterdWreckFrontremade.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(CutterwreckfrontEntity entity) { + return new ResourceLocation("hpm:textures/entities/cutterremasteredwreck.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/RaftRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/RaftRenderer.java new file mode 100644 index 0000000..98e9fd9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/RaftRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.RaftEntity; +import hal.studios.hpm.client.model.Modelraft; + +public class RaftRenderer extends MobRenderer> { + public RaftRenderer(EntityRendererProvider.Context context) { + super(context, new Modelraft(context.bakeLayer(Modelraft.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(RaftEntity entity) { + return new ResourceLocation("hpm:textures/entities/raft.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/ShipwreckedraftRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/ShipwreckedraftRenderer.java new file mode 100644 index 0000000..f4bf989 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/ShipwreckedraftRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.ShipwreckedraftEntity; +import hal.studios.hpm.client.model.Modelraftwrecked; + +public class ShipwreckedraftRenderer extends MobRenderer> { + public ShipwreckedraftRenderer(EntityRendererProvider.Context context) { + super(context, new Modelraftwrecked(context.bakeLayer(Modelraftwrecked.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(ShipwreckedraftEntity entity) { + return new ResourceLocation("hpm:textures/entities/raftwrecked.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/ShipwreckswashbucklerRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/ShipwreckswashbucklerRenderer.java new file mode 100644 index 0000000..8d61f61 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/ShipwreckswashbucklerRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.ShipwreckswashbucklerEntity; +import hal.studios.hpm.client.model.Modelswashbucklerdestroyed; + +public class ShipwreckswashbucklerRenderer extends MobRenderer> { + public ShipwreckswashbucklerRenderer(EntityRendererProvider.Context context) { + super(context, new Modelswashbucklerdestroyed(context.bakeLayer(Modelswashbucklerdestroyed.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(ShipwreckswashbucklerEntity entity) { + return new ResourceLocation("hpm:textures/entities/swashbucklerdestroyed.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerRenderer.java new file mode 100644 index 0000000..797f5c3 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.SwashbucklerEntity; +import hal.studios.hpm.client.model.Modelswashbuckler; + +public class SwashbucklerRenderer extends MobRenderer> { + public SwashbucklerRenderer(EntityRendererProvider.Context context) { + super(context, new Modelswashbuckler(context.bakeLayer(Modelswashbuckler.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(SwashbucklerEntity entity) { + return new ResourceLocation("hpm:textures/entities/swashbuckler.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerupgradedRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerupgradedRenderer.java new file mode 100644 index 0000000..eea80af --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/SwashbucklerupgradedRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.SwashbucklerupgradedEntity; +import hal.studios.hpm.client.model.Modelswashbucklerupgraded; + +public class SwashbucklerupgradedRenderer extends MobRenderer> { + public SwashbucklerupgradedRenderer(EntityRendererProvider.Context context) { + super(context, new Modelswashbucklerupgraded(context.bakeLayer(Modelswashbucklerupgraded.LAYER_LOCATION)), 1f); + } + + @Override + public ResourceLocation getTextureLocation(SwashbucklerupgradedEntity entity) { + return new ResourceLocation("hpm:textures/entities/swashbucklerupgraded.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/WoodDebrisRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/WoodDebrisRenderer.java new file mode 100644 index 0000000..6c274b8 --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/WoodDebrisRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.client.model.Modeldrifting_wood; + +public class WoodDebrisRenderer extends MobRenderer> { + public WoodDebrisRenderer(EntityRendererProvider.Context context) { + super(context, new Modeldrifting_wood(context.bakeLayer(Modeldrifting_wood.LAYER_LOCATION)), 0f); + } + + @Override + public ResourceLocation getTextureLocation(WoodDebrisEntity entity) { + return new ResourceLocation("hpm:textures/entities/shipwoodplank.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/client/renderer/WreckedswashbucklerupgradeRenderer.java b/src/main/java/hal/studios/hpm/client/renderer/WreckedswashbucklerupgradeRenderer.java new file mode 100644 index 0000000..340649e --- /dev/null +++ b/src/main/java/hal/studios/hpm/client/renderer/WreckedswashbucklerupgradeRenderer.java @@ -0,0 +1,20 @@ + +package hal.studios.hpm.client.renderer; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; + +import hal.studios.hpm.entity.WreckedswashbucklerupgradeEntity; +import hal.studios.hpm.client.model.Modelswashbucklerupgradeddestroyed; + +public class WreckedswashbucklerupgradeRenderer extends MobRenderer> { + public WreckedswashbucklerupgradeRenderer(EntityRendererProvider.Context context) { + super(context, new Modelswashbucklerupgradeddestroyed(context.bakeLayer(Modelswashbucklerupgradeddestroyed.LAYER_LOCATION)), 0.5f); + } + + @Override + public ResourceLocation getTextureLocation(WreckedswashbucklerupgradeEntity entity) { + return new ResourceLocation("hpm:textures/entities/swashbucklerupgradeddestroyed.png"); + } +} diff --git a/src/main/java/hal/studios/hpm/command/ShipSpeedMultiplierCommand.java b/src/main/java/hal/studios/hpm/command/ShipSpeedMultiplierCommand.java new file mode 100644 index 0000000..6dccdb2 --- /dev/null +++ b/src/main/java/hal/studios/hpm/command/ShipSpeedMultiplierCommand.java @@ -0,0 +1,38 @@ + +package hal.studios.hpm.command; + +import org.checkerframework.checker.units.qual.s; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.RegisterCommandsEvent; +import net.minecraftforge.common.util.FakePlayerFactory; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.Direction; +import net.minecraft.commands.Commands; + +import hal.studios.hpm.procedures.ShipspeedmultiplierprocedureProcedure; + +import com.mojang.brigadier.arguments.DoubleArgumentType; + +@Mod.EventBusSubscriber +public class ShipSpeedMultiplierCommand { + @SubscribeEvent + public static void registerCommand(RegisterCommandsEvent event) { + event.getDispatcher().register(Commands.literal("ShipSpeed").requires(s -> s.hasPermission(2)).then(Commands.argument("speed", DoubleArgumentType.doubleArg(-255, 255)).executes(arguments -> { + ServerLevel world = arguments.getSource().getLevel(); + double x = arguments.getSource().getPosition().x(); + double y = arguments.getSource().getPosition().y(); + double z = arguments.getSource().getPosition().z(); + Entity entity = arguments.getSource().getEntity(); + if (entity == null) + entity = FakePlayerFactory.getMinecraft(world); + Direction direction = entity.getDirection(); + + ShipspeedmultiplierprocedureProcedure.execute(world, arguments); + return 0; + }))); + } +} diff --git a/src/main/java/hal/studios/hpm/entity/BarrelDebrisEntity.java b/src/main/java/hal/studios/hpm/entity/BarrelDebrisEntity.java new file mode 100644 index 0000000..aa566fe --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/BarrelDebrisEntity.java @@ -0,0 +1,163 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.WoodDebrisRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.WoodDebrisOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.WoodDebrisEntityDiesProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class BarrelDebrisEntity extends PathfinderMob { + public BarrelDebrisEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.BARREL_DEBRIS.get(), world); + } + + public BarrelDebrisEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + this.goalSelector.addGoal(1, new FloatGoal(this)); + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + WoodDebrisEntityDiesProcedure.execute(this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + WoodDebrisOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + WoodDebrisRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CorvetteSteamshipEntity.java b/src/main/java/hal/studios/hpm/entity/CorvetteSteamshipEntity.java new file mode 100644 index 0000000..02ca5a7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CorvetteSteamshipEntity.java @@ -0,0 +1,216 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.navigation.WaterBoundPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.control.MoveControl; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.util.Mth; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.IDZeroCheckProcedure; +import hal.studios.hpm.procedures.CorvettedamagedspawnProcedure; +import hal.studios.hpm.procedures.CorvetteSteamshipOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CorvetteSteamshipOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CorvetteSteamshipEntity extends PathfinderMob { + public CorvetteSteamshipEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CORVETTE_STEAMSHIP.get(), world); + } + + public CorvetteSteamshipEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + this.setPathfindingMalus(BlockPathTypes.WATER, 0); + this.moveControl = new MoveControl(this) { + @Override + public void tick() { + if (CorvetteSteamshipEntity.this.isInWater()) + CorvetteSteamshipEntity.this.setDeltaMovement(CorvetteSteamshipEntity.this.getDeltaMovement().add(0, 0.005, 0)); + if (this.operation == MoveControl.Operation.MOVE_TO && !CorvetteSteamshipEntity.this.getNavigation().isDone()) { + double dx = this.wantedX - CorvetteSteamshipEntity.this.getX(); + double dy = this.wantedY - CorvetteSteamshipEntity.this.getY(); + double dz = this.wantedZ - CorvetteSteamshipEntity.this.getZ(); + float f = (float) (Mth.atan2(dz, dx) * (double) (180 / Math.PI)) - 90; + float f1 = (float) (this.speedModifier * CorvetteSteamshipEntity.this.getAttribute(Attributes.MOVEMENT_SPEED).getValue()); + CorvetteSteamshipEntity.this.setYRot(this.rotlerp(CorvetteSteamshipEntity.this.getYRot(), f, 10)); + CorvetteSteamshipEntity.this.yBodyRot = CorvetteSteamshipEntity.this.getYRot(); + CorvetteSteamshipEntity.this.yHeadRot = CorvetteSteamshipEntity.this.getYRot(); + if (CorvetteSteamshipEntity.this.isInWater()) { + CorvetteSteamshipEntity.this.setSpeed((float) CorvetteSteamshipEntity.this.getAttribute(Attributes.MOVEMENT_SPEED).getValue()); + float f2 = -(float) (Mth.atan2(dy, (float) Math.sqrt(dx * dx + dz * dz)) * (180 / Math.PI)); + f2 = Mth.clamp(Mth.wrapDegrees(f2), -85, 85); + CorvetteSteamshipEntity.this.setXRot(this.rotlerp(CorvetteSteamshipEntity.this.getXRot(), f2, 5)); + float f3 = Mth.cos(CorvetteSteamshipEntity.this.getXRot() * (float) (Math.PI / 180.0)); + CorvetteSteamshipEntity.this.setZza(f3 * f1); + CorvetteSteamshipEntity.this.setYya((float) (f1 * dy)); + } else { + CorvetteSteamshipEntity.this.setSpeed(f1 * 0.05F); + } + } else { + CorvetteSteamshipEntity.this.setSpeed(0); + CorvetteSteamshipEntity.this.setYya(0); + CorvetteSteamshipEntity.this.setZza(0); + } + } + }; + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected PathNavigation createNavigation(Level world) { + return new WaterBoundPathNavigation(this, world); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CorvettedamagedspawnProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CorvetteSteamshipOnInitialEntitySpawnProcedure.execute(world, this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + IDZeroCheckProcedure.execute(world, entity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CorvetteSteamshipOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public boolean checkSpawnObstruction(LevelReader world) { + return world.isUnobstructed(this); + } + + @Override + public boolean isPushedByFluid() { + return false; + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.1); + builder = builder.add(Attributes.MAX_HEALTH, 350); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 8); + builder = builder.add(ForgeMod.SWIM_SPEED.get(), 0.1); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CorvettesteamshipdamagedEntity.java b/src/main/java/hal/studios/hpm/entity/CorvettesteamshipdamagedEntity.java new file mode 100644 index 0000000..f8f5a6c --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CorvettesteamshipdamagedEntity.java @@ -0,0 +1,201 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.navigation.WaterBoundPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.control.MoveControl; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.util.Mth; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.CorvetteSteamshipOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CorvetteSteamshipOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CorvettesteamshipdamagedEntity extends PathfinderMob { + public CorvettesteamshipdamagedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CORVETTESTEAMSHIPDAMAGED.get(), world); + } + + public CorvettesteamshipdamagedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + this.setPathfindingMalus(BlockPathTypes.WATER, 0); + this.moveControl = new MoveControl(this) { + @Override + public void tick() { + if (CorvettesteamshipdamagedEntity.this.isInWater()) + CorvettesteamshipdamagedEntity.this.setDeltaMovement(CorvettesteamshipdamagedEntity.this.getDeltaMovement().add(0, 0.005, 0)); + if (this.operation == MoveControl.Operation.MOVE_TO && !CorvettesteamshipdamagedEntity.this.getNavigation().isDone()) { + double dx = this.wantedX - CorvettesteamshipdamagedEntity.this.getX(); + double dy = this.wantedY - CorvettesteamshipdamagedEntity.this.getY(); + double dz = this.wantedZ - CorvettesteamshipdamagedEntity.this.getZ(); + float f = (float) (Mth.atan2(dz, dx) * (double) (180 / Math.PI)) - 90; + float f1 = (float) (this.speedModifier * CorvettesteamshipdamagedEntity.this.getAttribute(Attributes.MOVEMENT_SPEED).getValue()); + CorvettesteamshipdamagedEntity.this.setYRot(this.rotlerp(CorvettesteamshipdamagedEntity.this.getYRot(), f, 10)); + CorvettesteamshipdamagedEntity.this.yBodyRot = CorvettesteamshipdamagedEntity.this.getYRot(); + CorvettesteamshipdamagedEntity.this.yHeadRot = CorvettesteamshipdamagedEntity.this.getYRot(); + if (CorvettesteamshipdamagedEntity.this.isInWater()) { + CorvettesteamshipdamagedEntity.this.setSpeed((float) CorvettesteamshipdamagedEntity.this.getAttribute(Attributes.MOVEMENT_SPEED).getValue()); + float f2 = -(float) (Mth.atan2(dy, (float) Math.sqrt(dx * dx + dz * dz)) * (180 / Math.PI)); + f2 = Mth.clamp(Mth.wrapDegrees(f2), -85, 85); + CorvettesteamshipdamagedEntity.this.setXRot(this.rotlerp(CorvettesteamshipdamagedEntity.this.getXRot(), f2, 5)); + float f3 = Mth.cos(CorvettesteamshipdamagedEntity.this.getXRot() * (float) (Math.PI / 180.0)); + CorvettesteamshipdamagedEntity.this.setZza(f3 * f1); + CorvettesteamshipdamagedEntity.this.setYya((float) (f1 * dy)); + } else { + CorvettesteamshipdamagedEntity.this.setSpeed(f1 * 0.05F); + } + } else { + CorvettesteamshipdamagedEntity.this.setSpeed(0); + CorvettesteamshipdamagedEntity.this.setYya(0); + CorvettesteamshipdamagedEntity.this.setZza(0); + } + } + }; + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected PathNavigation createNavigation(Level world) { + return new WaterBoundPathNavigation(this, world); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CorvetteSteamshipOnInitialEntitySpawnProcedure.execute(world, this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CorvetteSteamshipOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public boolean checkSpawnObstruction(LevelReader world) { + return world.isUnobstructed(this); + } + + @Override + public boolean isPushedByFluid() { + return false; + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.1); + builder = builder.add(Attributes.MAX_HEALTH, 350); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 1); + builder = builder.add(ForgeMod.SWIM_SPEED.get(), 0.1); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterEntity.java b/src/main/java/hal/studios/hpm/entity/CutterEntity.java new file mode 100644 index 0000000..1511248 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.CutterRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.CutterEntityIsHurtProcedure; +import hal.studios.hpm.procedures.CutterEntityDiesProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterEntity extends PathfinderMob { + public CutterEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER.get(), world); + } + + public CutterEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + CutterEntityIsHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterOnInitialEntitySpawnProcedure.execute(world, this.getX(), this.getY(), this.getZ(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterRightClickedOnEntityProcedure.execute(world, x, y, z, entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterMilitarisedDamagedSailsEntity.java b/src/main/java/hal/studios/hpm/entity/CutterMilitarisedDamagedSailsEntity.java new file mode 100644 index 0000000..6f5c024 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterMilitarisedDamagedSailsEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.CutterpirateoninitialspawnProcedure; +import hal.studios.hpm.procedures.CuttermilitariseddamageProcedure; +import hal.studios.hpm.procedures.CuttermilitarisedRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterMilitarisedDamagedSailsEntity extends PathfinderMob { + public CutterMilitarisedDamagedSailsEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_MILITARISED_DAMAGED_SAILS.get(), world); + } + + public CutterMilitarisedDamagedSailsEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CuttermilitariseddamageProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterpirateoninitialspawnProcedure.execute(world, this.getY(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterMilitarisedDamagedSailsEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CuttermilitarisedRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterMilitarisedWreckEntity.java b/src/main/java/hal/studios/hpm/entity/CutterMilitarisedWreckEntity.java new file mode 100644 index 0000000..c74ca4a --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterMilitarisedWreckEntity.java @@ -0,0 +1,143 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckswashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterMilitarisedWreckEntity extends PathfinderMob { + public CutterMilitarisedWreckEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_MILITARISED_WRECK.get(), world); + } + + public CutterMilitarisedWreckEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckswashbucklerRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterPassengerEntity.java b/src/main/java/hal/studios/hpm/entity/CutterPassengerEntity.java new file mode 100644 index 0000000..513fae1 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterPassengerEntity.java @@ -0,0 +1,219 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.CutterPassengerRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterPassengerOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterPassengerOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.CutterPassengerEntityIsHurtProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterPassengerEntity extends PathfinderMob { + public CutterPassengerEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_PASSENGER.get(), world); + } + + public CutterPassengerEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + this.moveControl = new FlyingMoveControl(this, 10, true); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected PathNavigation createNavigation(Level world) { + return new FlyingPathNavigation(this, world); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean causeFallDamage(float l, float d, DamageSource source) { + return false; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + CutterPassengerEntityIsHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterPassengerOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterPassengerRightClickedOnEntityProcedure.execute(world, x, y, z, entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterPassengerOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public boolean checkSpawnObstruction(LevelReader world) { + return world.isUnobstructed(this); + } + + @Override + public boolean isPushedByFluid() { + return false; + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + protected void doPush(Entity entityIn) { + } + + @Override + protected void pushEntities() { + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) { + } + + @Override + public void setNoGravity(boolean ignored) { + super.setNoGravity(true); + } + + public void aiStep() { + super.aiStep(); + this.setNoGravity(true); + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.FLYING_SPEED, 0.3); + builder = builder.add(ForgeMod.SWIM_SPEED.get(), 0.3); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterPirateDamagedSailsEntity.java b/src/main/java/hal/studios/hpm/entity/CutterPirateDamagedSailsEntity.java new file mode 100644 index 0000000..b7ae592 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterPirateDamagedSailsEntity.java @@ -0,0 +1,254 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.CutterPirateRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterPirateEntityDiesProcedure; +import hal.studios.hpm.procedures.CutterOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterPirateDamagedSailsEntity extends PathfinderMob { + public CutterPirateDamagedSailsEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_PIRATE_DAMAGED_SAILS.get(), world); + } + + public CutterPirateDamagedSailsEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterPirateEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterOnInitialEntitySpawnProcedure.execute(world, this.getX(), this.getY(), this.getZ(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterPirateDamagedSailsEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterPirateRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.5); + builder = builder.add(Attributes.MAX_HEALTH, 100); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 128); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterPirateEntity.java b/src/main/java/hal/studios/hpm/entity/CutterPirateEntity.java new file mode 100644 index 0000000..fbe6b9a --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterPirateEntity.java @@ -0,0 +1,254 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.CutterPirateRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterPirateEntityIsHurtProcedure; +import hal.studios.hpm.procedures.CutterPirateEntityDiesProcedure; +import hal.studios.hpm.procedures.CutterOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterPirateEntity extends PathfinderMob { + public CutterPirateEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_PIRATE.get(), world); + } + + public CutterPirateEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + CutterPirateEntityIsHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterPirateEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterOnInitialEntitySpawnProcedure.execute(world, this.getX(), this.getY(), this.getZ(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterPirateEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterPirateRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.5); + builder = builder.add(Attributes.MAX_HEALTH, 100); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 128); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterSailHitboxEntity.java b/src/main/java/hal/studios/hpm/entity/CutterSailHitboxEntity.java new file mode 100644 index 0000000..72dead9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterSailHitboxEntity.java @@ -0,0 +1,211 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.SailTickProcedure; +import hal.studios.hpm.procedures.CutterSailHitboxRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterSailHitboxEntityIsHurtProcedure; +import hal.studios.hpm.procedures.CutterSailHitboxEntityDiesProcedure; +import hal.studios.hpm.procedures.CutterPassengerOnInitialEntitySpawnProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterSailHitboxEntity extends PathfinderMob { + public CutterSailHitboxEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_SAIL_HITBOX.get(), world); + } + + public CutterSailHitboxEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + this.moveControl = new FlyingMoveControl(this, 10, true); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected PathNavigation createNavigation(Level world) { + return new FlyingPathNavigation(this, world); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean causeFallDamage(float l, float d, DamageSource source) { + return false; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + CutterSailHitboxEntityIsHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterSailHitboxEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterPassengerOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterSailHitboxRightClickedOnEntityProcedure.execute(world, x, y, z, entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + SailTickProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public boolean checkSpawnObstruction(LevelReader world) { + return world.isUnobstructed(this); + } + + @Override + public boolean isPushedByFluid() { + return false; + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + protected void doPush(Entity entityIn) { + } + + @Override + protected void pushEntities() { + } + + @Override + protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) { + } + + @Override + public void setNoGravity(boolean ignored) { + super.setNoGravity(true); + } + + public void aiStep() { + super.aiStep(); + this.setNoGravity(true); + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 25); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.FLYING_SPEED, 0.3); + builder = builder.add(ForgeMod.SWIM_SPEED.get(), 0.3); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterSailsDamagedEntity.java b/src/main/java/hal/studios/hpm/entity/CutterSailsDamagedEntity.java new file mode 100644 index 0000000..fa6b853 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterSailsDamagedEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.DamagedcutteroninitialspawnProcedure; +import hal.studios.hpm.procedures.CutterSailsDamagedRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.CutterEntityDiesProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterSailsDamagedEntity extends PathfinderMob { + public CutterSailsDamagedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_SAILS_DAMAGED.get(), world); + } + + public CutterSailsDamagedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + DamagedcutteroninitialspawnProcedure.execute(this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterSailsDamagedEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterSailsDamagedRightClickedOnEntityProcedure.execute(world, x, y, z, entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterSeatEntity.java b/src/main/java/hal/studios/hpm/entity/CutterSeatEntity.java new file mode 100644 index 0000000..cbe0294 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterSeatEntity.java @@ -0,0 +1,202 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.CutterSeatTickProcedure; +import hal.studios.hpm.procedures.CutterPassengerOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterPassengerEntityIsHurtProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterSeatEntity extends PathfinderMob { + public CutterSeatEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTER_SEAT.get(), world); + } + + public CutterSeatEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + this.moveControl = new FlyingMoveControl(this, 10, true); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected PathNavigation createNavigation(Level world) { + return new FlyingPathNavigation(this, world); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.6; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean causeFallDamage(float l, float d, DamageSource source) { + return false; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + CutterPassengerEntityIsHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterPassengerOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterSeatTickProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canBreatheUnderwater() { + return true; + } + + @Override + public boolean checkSpawnObstruction(LevelReader world) { + return world.isUnobstructed(this); + } + + @Override + public boolean isPushedByFluid() { + return false; + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + protected void doPush(Entity entityIn) { + } + + @Override + protected void pushEntities() { + } + + @Override + protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) { + } + + @Override + public void setNoGravity(boolean ignored) { + super.setNoGravity(true); + } + + public void aiStep() { + super.aiStep(); + this.setNoGravity(true); + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.FLYING_SPEED, 0.3); + builder = builder.add(ForgeMod.SWIM_SPEED.get(), 0.3); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterdamagedEntity.java b/src/main/java/hal/studios/hpm/entity/CutterdamagedEntity.java new file mode 100644 index 0000000..7dcd341 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterdamagedEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.DamagedcutteroninitialspawnProcedure; +import hal.studios.hpm.procedures.CutterdestroyedProcedure; +import hal.studios.hpm.procedures.CutterdamagedOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.CutterSailsDamagedRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterdamagedEntity extends PathfinderMob { + public CutterdamagedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERDAMAGED.get(), world); + } + + public CutterdamagedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterdestroyedProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + DamagedcutteroninitialspawnProcedure.execute(this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterdamagedEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterSailsDamagedRightClickedOnEntityProcedure.execute(world, x, y, z, entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterdamagedOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CuttermilitarisedEntity.java b/src/main/java/hal/studios/hpm/entity/CuttermilitarisedEntity.java new file mode 100644 index 0000000..b579ecb --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CuttermilitarisedEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.MilCutterHurtProcedure; +import hal.studios.hpm.procedures.CuttermilitariseddamageProcedure; +import hal.studios.hpm.procedures.CuttermilitarisedRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.CutterOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CuttermilitarisedEntity extends PathfinderMob { + public CuttermilitarisedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERMILITARISED.get(), world); + } + + public CuttermilitarisedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + MilCutterHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CuttermilitariseddamageProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterOnInitialEntitySpawnProcedure.execute(world, this.getX(), this.getY(), this.getZ(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CuttermilitarisedEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CuttermilitarisedRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 50); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CuttermilitariseddamagedEntity.java b/src/main/java/hal/studios/hpm/entity/CuttermilitariseddamagedEntity.java new file mode 100644 index 0000000..a5d7476 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CuttermilitariseddamagedEntity.java @@ -0,0 +1,262 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.monster.RangedAttackMob; +import net.minecraft.world.entity.ai.goal.RangedAttackGoal; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.CutterpirateoninitialspawnProcedure; +import hal.studios.hpm.procedures.CuttermilitariseddamagedEntityDiesProcedure; +import hal.studios.hpm.procedures.CuttermilitarisedRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.CutterdamagedOnEntityTickUpdateProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CuttermilitariseddamagedEntity extends PathfinderMob implements RangedAttackMob { + public CuttermilitariseddamagedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERMILITARISEDDAMAGED.get(), world); + } + + public CuttermilitariseddamagedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25, 20, 10f) { + @Override + public boolean canContinueToUse() { + return this.canUse(); + } + }); + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CuttermilitariseddamagedEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + CutterpirateoninitialspawnProcedure.execute(world, this.getY(), this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CuttermilitariseddamagedEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CuttermilitarisedRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterdamagedOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public void performRangedAttack(LivingEntity target, float flval) { + HandCannonEntity.shoot(this, target); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.5); + builder = builder.add(Attributes.MAX_HEALTH, 100); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 64); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterpiratedamagedEntity.java b/src/main/java/hal/studios/hpm/entity/CutterpiratedamagedEntity.java new file mode 100644 index 0000000..9f25170 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterpiratedamagedEntity.java @@ -0,0 +1,262 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.world.BiomeLoadingEvent; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.biome.MobSpawnSettings; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.CutterinventoryMenu; +import hal.studios.hpm.procedures.SplinterParticlesProcedure; +import hal.studios.hpm.procedures.CutterpiratedwreckProcedure; +import hal.studios.hpm.procedures.CutterpiratedamagedNaturalEntitySpawningConditionProcedure; +import hal.studios.hpm.procedures.CutterdamagedOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.CutterPirateRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +@Mod.EventBusSubscriber +public class CutterpiratedamagedEntity extends PathfinderMob { + @SubscribeEvent + public static void addLivingEntityToBiomes(BiomeLoadingEvent event) { + event.getSpawns().getSpawner(MobCategory.WATER_CREATURE).add(new MobSpawnSettings.SpawnerData(HpmModEntities.CUTTERPIRATEDAMAGED.get(), 1, 1, 1)); + } + + public CutterpiratedamagedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERPIRATEDAMAGED.get(), world); + } + + public CutterpiratedamagedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.5; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SplinterParticlesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + CutterpiratedwreckProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + private final ItemStackHandler inventory = new ItemStackHandler(228) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("cutter"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(CutterpiratedamagedEntity.this.getId()); + return new CutterinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + CutterPirateRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + CutterdamagedOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + SpawnPlacements.register(HpmModEntities.CUTTERPIRATEDAMAGED.get(), SpawnPlacements.Type.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, (entityType, world, reason, pos, random) -> { + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + return CutterpiratedamagedNaturalEntitySpawningConditionProcedure.execute(world, x, y, z); + }); + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.5); + builder = builder.add(Attributes.MAX_HEALTH, 100); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 64); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 2); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterpiratewreckEntity.java b/src/main/java/hal/studios/hpm/entity/CutterpiratewreckEntity.java new file mode 100644 index 0000000..8ec77b5 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterpiratewreckEntity.java @@ -0,0 +1,143 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckswashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterpiratewreckEntity extends PathfinderMob { + public CutterpiratewreckEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERPIRATEWRECK.get(), world); + } + + public CutterpiratewreckEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckswashbucklerRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterwreckbackEntity.java b/src/main/java/hal/studios/hpm/entity/CutterwreckbackEntity.java new file mode 100644 index 0000000..64b91c4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterwreckbackEntity.java @@ -0,0 +1,133 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckswashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterwreckbackEntity extends PathfinderMob { + public CutterwreckbackEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERWRECKBACK.get(), world); + } + + public CutterwreckbackEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckswashbucklerRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/CutterwreckfrontEntity.java b/src/main/java/hal/studios/hpm/entity/CutterwreckfrontEntity.java new file mode 100644 index 0000000..4e207ed --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/CutterwreckfrontEntity.java @@ -0,0 +1,133 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckswashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class CutterwreckfrontEntity extends PathfinderMob { + public CutterwreckfrontEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.CUTTERWRECKFRONT.get(), world); + } + + public CutterwreckfrontEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckswashbucklerRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/HandCannonEntity.java b/src/main/java/hal/studios/hpm/entity/HandCannonEntity.java new file mode 100644 index 0000000..6d442eb --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/HandCannonEntity.java @@ -0,0 +1,114 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ItemSupplier; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.sounds.SoundSource; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import java.util.Random; + +import hal.studios.hpm.procedures.HandCannonProjectileHitsLivingEntityProcedure; +import hal.studios.hpm.procedures.HandCannonProjectileHitsBlockProcedure; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; + +@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class) +public class HandCannonEntity extends AbstractArrow implements ItemSupplier { + public HandCannonEntity(PlayMessages.SpawnEntity packet, Level world) { + super(HpmModEntities.HAND_CANNON.get(), world); + } + + public HandCannonEntity(EntityType type, Level world) { + super(type, world); + } + + public HandCannonEntity(EntityType type, double x, double y, double z, Level world) { + super(type, x, y, z, world); + } + + public HandCannonEntity(EntityType type, LivingEntity entity, Level world) { + super(type, entity, world); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + @OnlyIn(Dist.CLIENT) + public ItemStack getItem() { + return new ItemStack(HpmModItems.CANNONBALL.get()); + } + + @Override + protected ItemStack getPickupItem() { + return new ItemStack(HpmModItems.CANNONBALL.get()); + } + + @Override + protected void doPostHurtEffects(LivingEntity entity) { + super.doPostHurtEffects(entity); + entity.setArrowCount(entity.getArrowCount() - 1); + } + + @Override + public void onHitEntity(EntityHitResult entityHitResult) { + super.onHitEntity(entityHitResult); + HandCannonProjectileHitsLivingEntityProcedure.execute(this.level, entityHitResult.getEntity(), this); + } + + @Override + public void onHitBlock(BlockHitResult blockHitResult) { + super.onHitBlock(blockHitResult); + HandCannonProjectileHitsBlockProcedure.execute(this.level, blockHitResult.getBlockPos().getX(), blockHitResult.getBlockPos().getY(), blockHitResult.getBlockPos().getZ()); + } + + @Override + public void tick() { + super.tick(); + if (this.inGround) + this.discard(); + } + + public static HandCannonEntity shoot(Level world, LivingEntity entity, Random random, float power, double damage, int knockback) { + HandCannonEntity entityarrow = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), entity, world); + entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0); + entityarrow.setSilent(true); + entityarrow.setCritArrow(false); + entityarrow.setBaseDamage(damage); + entityarrow.setKnockback(knockback); + world.addFreshEntity(entityarrow); + world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")), SoundSource.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2)); + return entityarrow; + } + + public static HandCannonEntity shoot(LivingEntity entity, LivingEntity target) { + HandCannonEntity entityarrow = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), entity, entity.level); + double dx = target.getX() - entity.getX(); + double dy = target.getY() + target.getEyeHeight() - 1.1; + double dz = target.getZ() - entity.getZ(); + entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 2.5f * 2, 12.0F); + entityarrow.setSilent(true); + entityarrow.setBaseDamage(3); + entityarrow.setKnockback(0); + entityarrow.setCritArrow(false); + entity.level.addFreshEntity(entityarrow); + entity.level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")), SoundSource.PLAYERS, 1, 1f / (new Random().nextFloat() * 0.5f + 1)); + return entityarrow; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/HandMortarEntity.java b/src/main/java/hal/studios/hpm/entity/HandMortarEntity.java new file mode 100644 index 0000000..fb45628 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/HandMortarEntity.java @@ -0,0 +1,116 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ItemSupplier; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.sounds.SoundSource; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import java.util.Random; + +import hal.studios.hpm.procedures.HandMortarWhileProjectileFlyingTickProcedure; +import hal.studios.hpm.procedures.HandMortarProjectileHitsLivingEntityProcedure; +import hal.studios.hpm.procedures.HandMortarProjectileHitsBlockProcedure; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; + +@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class) +public class HandMortarEntity extends AbstractArrow implements ItemSupplier { + public HandMortarEntity(PlayMessages.SpawnEntity packet, Level world) { + super(HpmModEntities.HAND_MORTAR.get(), world); + } + + public HandMortarEntity(EntityType type, Level world) { + super(type, world); + } + + public HandMortarEntity(EntityType type, double x, double y, double z, Level world) { + super(type, x, y, z, world); + } + + public HandMortarEntity(EntityType type, LivingEntity entity, Level world) { + super(type, entity, world); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + @OnlyIn(Dist.CLIENT) + public ItemStack getItem() { + return new ItemStack(HpmModItems.MORTAR_BALL.get()); + } + + @Override + protected ItemStack getPickupItem() { + return new ItemStack(HpmModItems.MORTAR_BALL.get()); + } + + @Override + protected void doPostHurtEffects(LivingEntity entity) { + super.doPostHurtEffects(entity); + entity.setArrowCount(entity.getArrowCount() - 1); + } + + @Override + public void onHitEntity(EntityHitResult entityHitResult) { + super.onHitEntity(entityHitResult); + HandMortarProjectileHitsLivingEntityProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), entityHitResult.getEntity(), this); + } + + @Override + public void onHitBlock(BlockHitResult blockHitResult) { + super.onHitBlock(blockHitResult); + HandMortarProjectileHitsBlockProcedure.execute(this.level, blockHitResult.getBlockPos().getX(), blockHitResult.getBlockPos().getY(), blockHitResult.getBlockPos().getZ()); + } + + @Override + public void tick() { + super.tick(); + HandMortarWhileProjectileFlyingTickProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this.getOwner()); + if (this.inGround) + this.discard(); + } + + public static HandMortarEntity shoot(Level world, LivingEntity entity, Random random, float power, double damage, int knockback) { + HandMortarEntity entityarrow = new HandMortarEntity(HpmModEntities.HAND_MORTAR.get(), entity, world); + entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0); + entityarrow.setSilent(true); + entityarrow.setCritArrow(false); + entityarrow.setBaseDamage(damage); + entityarrow.setKnockback(knockback); + world.addFreshEntity(entityarrow); + world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")), SoundSource.PLAYERS, 1, 1f / (random.nextFloat() * 0.5f + 1) + (power / 2)); + return entityarrow; + } + + public static HandMortarEntity shoot(LivingEntity entity, LivingEntity target) { + HandMortarEntity entityarrow = new HandMortarEntity(HpmModEntities.HAND_MORTAR.get(), entity, entity.level); + double dx = target.getX() - entity.getX(); + double dy = target.getY() + target.getEyeHeight() - 1.1; + double dz = target.getZ() - entity.getZ(); + entityarrow.shoot(dx, dy - entityarrow.getY() + Math.hypot(dx, dz) * 0.2F, dz, 1.7f * 2, 12.0F); + entityarrow.setSilent(true); + entityarrow.setBaseDamage(5); + entityarrow.setKnockback(0); + entityarrow.setCritArrow(false); + entity.level.addFreshEntity(entityarrow); + entity.level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")), SoundSource.PLAYERS, 1, 1f / (new Random().nextFloat() * 0.5f + 1)); + return entityarrow; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/RaftEntity.java b/src/main/java/hal/studios/hpm/entity/RaftEntity.java new file mode 100644 index 0000000..f7100fe --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/RaftEntity.java @@ -0,0 +1,246 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.RaftinventoryMenu; +import hal.studios.hpm.procedures.SmallShipBuoyancyProcedure; +import hal.studios.hpm.procedures.ShiupwreckraftspawnProcedure; +import hal.studios.hpm.procedures.RaftspeedProcedure; +import hal.studios.hpm.procedures.RaftRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.RaftHurtProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class RaftEntity extends PathfinderMob { + public RaftEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.RAFT.get(), world); + } + + public RaftEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.break_wooden_door")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + RaftHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + ShiupwreckraftspawnProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + RaftspeedProcedure.execute(world, this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(96) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("Raft"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(RaftEntity.this.getId()); + return new RaftinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + RaftRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + SmallShipBuoyancyProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 16); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/ShipwreckedraftEntity.java b/src/main/java/hal/studios/hpm/entity/ShipwreckedraftEntity.java new file mode 100644 index 0000000..1228526 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/ShipwreckedraftEntity.java @@ -0,0 +1,127 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckedraftRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class ShipwreckedraftEntity extends PathfinderMob { + public ShipwreckedraftEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.SHIPWRECKEDRAFT.get(), world); + } + + public ShipwreckedraftEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckedraftRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/ShipwreckswashbucklerEntity.java b/src/main/java/hal/studios/hpm/entity/ShipwreckswashbucklerEntity.java new file mode 100644 index 0000000..13115b0 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/ShipwreckswashbucklerEntity.java @@ -0,0 +1,127 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.ShipwreckswashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class ShipwreckswashbucklerEntity extends PathfinderMob { + public ShipwreckswashbucklerEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.SHIPWRECKSWASHBUCKLER.get(), world); + } + + public ShipwreckswashbucklerEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + ShipwreckswashbucklerRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/SwashbucklerEntity.java b/src/main/java/hal/studios/hpm/entity/SwashbucklerEntity.java new file mode 100644 index 0000000..7fbd0d4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/SwashbucklerEntity.java @@ -0,0 +1,166 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.SwashbuckleroninitialspawnProcedure; +import hal.studios.hpm.procedures.SwashbucklerRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.SwashbucklerHurtProcedure; +import hal.studios.hpm.procedures.SwashbucklerEntityDiesProcedure; +import hal.studios.hpm.procedures.SmallShipBuoyancyProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class SwashbucklerEntity extends PathfinderMob { + public SwashbucklerEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.SWASHBUCKLER.get(), world); + } + + public SwashbucklerEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.4; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + SwashbucklerHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + SwashbucklerEntityDiesProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + SwashbuckleroninitialspawnProcedure.execute(world, this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + SwashbucklerRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + SmallShipBuoyancyProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 25); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/SwashbucklerupgradedEntity.java b/src/main/java/hal/studios/hpm/entity/SwashbucklerupgradedEntity.java new file mode 100644 index 0000000..67892c9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/SwashbucklerupgradedEntity.java @@ -0,0 +1,252 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.items.wrapper.EntityHandsInvWrapper; +import net.minecraftforge.items.wrapper.EntityArmorInvWrapper; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.core.BlockPos; + +import javax.annotation.Nullable; +import javax.annotation.Nonnull; + +import io.netty.buffer.Unpooled; + +import hal.studios.hpm.world.inventory.SwashbucklerinventoryMenu; +import hal.studios.hpm.procedures.UpgradeddestroyedProcedure; +import hal.studios.hpm.procedures.UpgradedSwashbucklerHurtProcedure; +import hal.studios.hpm.procedures.SwashbucklerupgradedRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.SwashbuckleroninitialspawnProcedure; +import hal.studios.hpm.procedures.SmallShipBuoyancyProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class SwashbucklerupgradedEntity extends PathfinderMob { + public SwashbucklerupgradedEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.SWASHBUCKLERUPGRADED.get(), world); + } + + public SwashbucklerupgradedEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.WATER; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() + -0.4; + } + + @Override + public void playStepSound(BlockPos pos, BlockState blockIn) { + this.playSound(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.splash")), 0.15f, 1); + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.zombie.attack_wooden_door")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.generic.explode")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + UpgradedSwashbucklerHurtProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this, source.getEntity()); + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + UpgradeddestroyedProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + SwashbuckleroninitialspawnProcedure.execute(world, this); + return retval; + } + + private final ItemStackHandler inventory = new ItemStackHandler(35) { + @Override + public int getSlotLimit(int slot) { + return 64; + } + }; + private final CombinedInvWrapper combined = new CombinedInvWrapper(inventory, new EntityHandsInvWrapper(this), new EntityArmorInvWrapper(this)); + + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction side) { + if (this.isAlive() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side == null) + return LazyOptional.of(() -> combined).cast(); + return super.getCapability(capability, side); + } + + @Override + protected void dropEquipment() { + super.dropEquipment(); + for (int i = 0; i < inventory.getSlots(); ++i) { + ItemStack itemstack = inventory.getStackInSlot(i); + if (!itemstack.isEmpty() && !EnchantmentHelper.hasVanishingCurse(itemstack)) { + this.spawnAtLocation(itemstack); + } + } + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.put("InventoryCustom", inventory.serializeNBT()); + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + Tag inventoryCustom = compound.get("InventoryCustom"); + if (inventoryCustom instanceof CompoundTag inventoryTag) + inventory.deserializeNBT(inventoryTag); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + if (sourceentity.isSecondaryUseActive()) { + if (sourceentity instanceof ServerPlayer serverPlayer) { + NetworkHooks.openGui(serverPlayer, new MenuProvider() { + @Override + public Component getDisplayName() { + return new TextComponent("Swashbuckler upgraded"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + FriendlyByteBuf packetBuffer = new FriendlyByteBuf(Unpooled.buffer()); + packetBuffer.writeBlockPos(sourceentity.blockPosition()); + packetBuffer.writeByte(0); + packetBuffer.writeVarInt(SwashbucklerupgradedEntity.this.getId()); + return new SwashbucklerinventoryMenu(id, inventory, packetBuffer); + } + }, buf -> { + buf.writeBlockPos(sourceentity.blockPosition()); + buf.writeByte(0); + buf.writeVarInt(this.getId()); + }); + } + return InteractionResult.sidedSuccess(this.level.isClientSide()); + } + super.mobInteract(sourceentity, hand); + sourceentity.startRiding(this); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + SwashbucklerupgradedRightClickedOnEntityProcedure.execute(entity, sourceentity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + SmallShipBuoyancyProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + @Override + public boolean canCollideWith(Entity entity) { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.05); + builder = builder.add(Attributes.MAX_HEALTH, 25); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + builder = builder.add(Attributes.KNOCKBACK_RESISTANCE, 10); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/WoodDebrisEntity.java b/src/main/java/hal/studios/hpm/entity/WoodDebrisEntity.java new file mode 100644 index 0000000..2a2e81a --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/WoodDebrisEntity.java @@ -0,0 +1,159 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.SpawnGroupData; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nullable; + +import hal.studios.hpm.procedures.WoodDebrisRightClickedOnEntityProcedure; +import hal.studios.hpm.procedures.WoodDebrisOnInitialEntitySpawnProcedure; +import hal.studios.hpm.procedures.WoodDebrisOnEntityTickUpdateProcedure; +import hal.studios.hpm.procedures.WoodDebrisEntityDiesProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class WoodDebrisEntity extends PathfinderMob { + public WoodDebrisEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.WOOD_DEBRIS.get(), world); + } + + public WoodDebrisEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + setPersistenceRequired(); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public void die(DamageSource source) { + super.die(source); + WoodDebrisEntityDiesProcedure.execute(this); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType reason, @Nullable SpawnGroupData livingdata, @Nullable CompoundTag tag) { + SpawnGroupData retval = super.finalizeSpawn(world, difficulty, reason, livingdata, tag); + WoodDebrisOnInitialEntitySpawnProcedure.execute(this); + return retval; + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + WoodDebrisRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + @Override + public void baseTick() { + super.baseTick(); + WoodDebrisOnEntityTickUpdateProcedure.execute(this.level, this.getX(), this.getY(), this.getZ(), this); + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/entity/WreckedswashbucklerupgradeEntity.java b/src/main/java/hal/studios/hpm/entity/WreckedswashbucklerupgradeEntity.java new file mode 100644 index 0000000..879a93e --- /dev/null +++ b/src/main/java/hal/studios/hpm/entity/WreckedswashbucklerupgradeEntity.java @@ -0,0 +1,127 @@ + +package hal.studios.hpm.entity; + +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.network.PlayMessages; +import net.minecraftforge.network.NetworkHooks; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.AreaEffectCloud; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.protocol.Packet; + +import hal.studios.hpm.procedures.WreckedswashbucklerupgradeRightClickedOnEntityProcedure; +import hal.studios.hpm.init.HpmModEntities; + +public class WreckedswashbucklerupgradeEntity extends PathfinderMob { + public WreckedswashbucklerupgradeEntity(PlayMessages.SpawnEntity packet, Level world) { + this(HpmModEntities.WRECKEDSWASHBUCKLERUPGRADE.get(), world); + } + + public WreckedswashbucklerupgradeEntity(EntityType type, Level world) { + super(type, world); + maxUpStep = 0.6f; + xpReward = 0; + setNoAi(false); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void registerGoals() { + super.registerGoals(); + + } + + @Override + public MobType getMobType() { + return MobType.UNDEFINED; + } + + @Override + public SoundEvent getHurtSound(DamageSource ds) { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public SoundEvent getDeathSound() { + return ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("")); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof AbstractArrow) + return false; + if (source.getDirectEntity() instanceof Player) + return false; + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source == DamageSource.FALL) + return false; + if (source == DamageSource.CACTUS) + return false; + if (source == DamageSource.DROWN) + return false; + if (source == DamageSource.LIGHTNING_BOLT) + return false; + if (source.isExplosion()) + return false; + if (source.getMsgId().equals("trident")) + return false; + if (source == DamageSource.ANVIL) + return false; + if (source == DamageSource.DRAGON_BREATH) + return false; + if (source == DamageSource.WITHER) + return false; + if (source.getMsgId().equals("witherSkull")) + return false; + return super.hurt(source, amount); + } + + @Override + public InteractionResult mobInteract(Player sourceentity, InteractionHand hand) { + ItemStack itemstack = sourceentity.getItemInHand(hand); + InteractionResult retval = InteractionResult.sidedSuccess(this.level.isClientSide()); + super.mobInteract(sourceentity, hand); + double x = this.getX(); + double y = this.getY(); + double z = this.getZ(); + Entity entity = this; + Level world = this.level; + + WreckedswashbucklerupgradeRightClickedOnEntityProcedure.execute(world, x, y, z, entity); + return retval; + } + + public static void init() { + } + + public static AttributeSupplier.Builder createAttributes() { + AttributeSupplier.Builder builder = Mob.createMobAttributes(); + builder = builder.add(Attributes.MOVEMENT_SPEED, 0.3); + builder = builder.add(Attributes.MAX_HEALTH, 10); + builder = builder.add(Attributes.ARMOR, 0); + builder = builder.add(Attributes.ATTACK_DAMAGE, 3); + builder = builder.add(Attributes.FOLLOW_RANGE, 16); + return builder; + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModEntities.java b/src/main/java/hal/studios/hpm/init/HpmModEntities.java new file mode 100644 index 0000000..aeedd75 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModEntities.java @@ -0,0 +1,218 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; + +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.entity.WreckedswashbucklerupgradeEntity; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.SwashbucklerupgradedEntity; +import hal.studios.hpm.entity.SwashbucklerEntity; +import hal.studios.hpm.entity.ShipwreckswashbucklerEntity; +import hal.studios.hpm.entity.ShipwreckedraftEntity; +import hal.studios.hpm.entity.RaftEntity; +import hal.studios.hpm.entity.HandMortarEntity; +import hal.studios.hpm.entity.HandCannonEntity; +import hal.studios.hpm.entity.CutterwreckfrontEntity; +import hal.studios.hpm.entity.CutterwreckbackEntity; +import hal.studios.hpm.entity.CutterpiratewreckEntity; +import hal.studios.hpm.entity.CutterpiratedamagedEntity; +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailsDamagedEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.entity.CutterPirateDamagedSailsEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; +import hal.studios.hpm.entity.CutterMilitarisedWreckEntity; +import hal.studios.hpm.entity.CutterMilitarisedDamagedSailsEntity; +import hal.studios.hpm.entity.CutterEntity; +import hal.studios.hpm.entity.CorvettesteamshipdamagedEntity; +import hal.studios.hpm.entity.CorvetteSteamshipEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class HpmModEntities { + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.ENTITIES, HpmMod.MODID); + public static final RegistryObject> SWASHBUCKLER = register("swashbuckler", + EntityType.Builder.of(SwashbucklerEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(SwashbucklerEntity::new) + + .sized(1.5f, 0.45f)); + public static final RegistryObject> SWASHBUCKLERUPGRADED = register("swashbucklerupgraded", + EntityType.Builder.of(SwashbucklerupgradedEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(SwashbucklerupgradedEntity::new) + + .sized(1.3f, 0.45f)); + public static final RegistryObject> RAFT = register("raft", + EntityType.Builder.of(RaftEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(RaftEntity::new) + + .sized(2f, 0.4f)); + public static final RegistryObject> CUTTER = register("cutter", + EntityType.Builder.of(CutterEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTER_SAILS_DAMAGED = register("cutter_sails_damaged", + EntityType.Builder.of(CutterSailsDamagedEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterSailsDamagedEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTERDAMAGED = register("cutterdamaged", + EntityType.Builder.of(CutterdamagedEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterdamagedEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTER_PIRATE = register("cutter_pirate", + EntityType.Builder.of(CutterPirateEntity::new, MobCategory.WATER_CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(128).setUpdateInterval(3).setCustomClientFactory(CutterPirateEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTER_PIRATE_DAMAGED_SAILS = register("cutter_pirate_damaged_sails", + EntityType.Builder.of(CutterPirateDamagedSailsEntity::new, MobCategory.WATER_CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(128).setUpdateInterval(3) + .setCustomClientFactory(CutterPirateDamagedSailsEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTERPIRATEDAMAGED = register("cutterpiratedamaged", + EntityType.Builder.of(CutterpiratedamagedEntity::new, MobCategory.WATER_CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(CutterpiratedamagedEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTERMILITARISED = register("cuttermilitarised", + EntityType.Builder.of(CuttermilitarisedEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CuttermilitarisedEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTER_MILITARISED_DAMAGED_SAILS = register("cutter_militarised_damaged_sails", + EntityType.Builder.of(CutterMilitarisedDamagedSailsEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(CutterMilitarisedDamagedSailsEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTERMILITARISEDDAMAGED = register("cuttermilitariseddamaged", + EntityType.Builder.of(CuttermilitariseddamagedEntity::new, MobCategory.WATER_CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(CuttermilitariseddamagedEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CORVETTE_STEAMSHIP = register("corvette_steamship", + EntityType.Builder.of(CorvetteSteamshipEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CorvetteSteamshipEntity::new) + + .sized(4f, 1.3f)); + public static final RegistryObject> CORVETTESTEAMSHIPDAMAGED = register("corvettesteamshipdamaged", + EntityType.Builder.of(CorvettesteamshipdamagedEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(CorvettesteamshipdamagedEntity::new) + + .sized(4f, 1.2f)); + public static final RegistryObject> CUTTER_PASSENGER = register("cutter_passenger", + EntityType.Builder.of(CutterPassengerEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterPassengerEntity::new) + + .sized(1.6f, 0.7f)); + public static final RegistryObject> CUTTER_SEAT = register("cutter_seat", + EntityType.Builder.of(CutterSeatEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterSeatEntity::new) + + .sized(0f, 0f)); + public static final RegistryObject> CUTTER_SAIL_HITBOX = register("cutter_sail_hitbox", + EntityType.Builder.of(CutterSailHitboxEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterSailHitboxEntity::new) + + .sized(1.8f, 2.4f)); + public static final RegistryObject> HAND_CANNON = register("projectile_hand_cannon", + EntityType.Builder.of(HandCannonEntity::new, MobCategory.MISC).setCustomClientFactory(HandCannonEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + public static final RegistryObject> HAND_MORTAR = register("projectile_hand_mortar", + EntityType.Builder.of(HandMortarEntity::new, MobCategory.MISC).setCustomClientFactory(HandMortarEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + public static final RegistryObject> SHIPWRECKSWASHBUCKLER = register("shipwreckswashbuckler", EntityType.Builder.of(ShipwreckswashbucklerEntity::new, MobCategory.MONSTER) + .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(ShipwreckswashbucklerEntity::new).fireImmune().sized(0.6f, 1.8f)); + public static final RegistryObject> SHIPWRECKEDRAFT = register("shipwreckedraft", EntityType.Builder.of(ShipwreckedraftEntity::new, MobCategory.MONSTER) + .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(ShipwreckedraftEntity::new).fireImmune().sized(0.6f, 1.8f)); + public static final RegistryObject> WRECKEDSWASHBUCKLERUPGRADE = register("wreckedswashbucklerupgrade", + EntityType.Builder.of(WreckedswashbucklerupgradeEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(WreckedswashbucklerupgradeEntity::new).fireImmune().sized(0.6f, 1.8f)); + public static final RegistryObject> CUTTERWRECKFRONT = register("cutterwreckfront", EntityType.Builder.of(CutterwreckfrontEntity::new, MobCategory.MONSTER) + .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterwreckfrontEntity::new).fireImmune().sized(1.5f, 1.8f)); + public static final RegistryObject> CUTTERWRECKBACK = register("cutterwreckback", EntityType.Builder.of(CutterwreckbackEntity::new, MobCategory.MONSTER) + .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterwreckbackEntity::new).fireImmune().sized(1.5f, 1.8f)); + public static final RegistryObject> CUTTERPIRATEWRECK = register("cutterpiratewreck", EntityType.Builder.of(CutterpiratewreckEntity::new, MobCategory.MONSTER) + .setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(CutterpiratewreckEntity::new).fireImmune().sized(1.5f, 1f)); + public static final RegistryObject> WOOD_DEBRIS = register("wood_debris", + EntityType.Builder.of(WoodDebrisEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(WoodDebrisEntity::new) + + .sized(0.8f, 0.2f)); + public static final RegistryObject> BARREL_DEBRIS = register("barrel_debris", EntityType.Builder.of(BarrelDebrisEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true) + .setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(BarrelDebrisEntity::new).fireImmune().sized(0.6f, 0.6f)); + public static final RegistryObject> CUTTER_MILITARISED_WRECK = register("cutter_militarised_wreck", + EntityType.Builder.of(CutterMilitarisedWreckEntity::new, MobCategory.MONSTER).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3) + .setCustomClientFactory(CutterMilitarisedWreckEntity::new).fireImmune().sized(1.5f, 1f)); + + private static RegistryObject> register(String registryname, EntityType.Builder entityTypeBuilder) { + return REGISTRY.register(registryname, () -> (EntityType) entityTypeBuilder.build(registryname)); + } + + @SubscribeEvent + public static void init(FMLCommonSetupEvent event) { + event.enqueueWork(() -> { + SwashbucklerEntity.init(); + SwashbucklerupgradedEntity.init(); + RaftEntity.init(); + CutterEntity.init(); + CutterSailsDamagedEntity.init(); + CutterdamagedEntity.init(); + CutterPirateEntity.init(); + CutterPirateDamagedSailsEntity.init(); + CutterpiratedamagedEntity.init(); + CuttermilitarisedEntity.init(); + CutterMilitarisedDamagedSailsEntity.init(); + CuttermilitariseddamagedEntity.init(); + CorvetteSteamshipEntity.init(); + CorvettesteamshipdamagedEntity.init(); + CutterPassengerEntity.init(); + CutterSeatEntity.init(); + CutterSailHitboxEntity.init(); + ShipwreckswashbucklerEntity.init(); + ShipwreckedraftEntity.init(); + WreckedswashbucklerupgradeEntity.init(); + CutterwreckfrontEntity.init(); + CutterwreckbackEntity.init(); + CutterpiratewreckEntity.init(); + WoodDebrisEntity.init(); + BarrelDebrisEntity.init(); + CutterMilitarisedWreckEntity.init(); + }); + } + + @SubscribeEvent + public static void registerAttributes(EntityAttributeCreationEvent event) { + event.put(SWASHBUCKLER.get(), SwashbucklerEntity.createAttributes().build()); + event.put(SWASHBUCKLERUPGRADED.get(), SwashbucklerupgradedEntity.createAttributes().build()); + event.put(RAFT.get(), RaftEntity.createAttributes().build()); + event.put(CUTTER.get(), CutterEntity.createAttributes().build()); + event.put(CUTTER_SAILS_DAMAGED.get(), CutterSailsDamagedEntity.createAttributes().build()); + event.put(CUTTERDAMAGED.get(), CutterdamagedEntity.createAttributes().build()); + event.put(CUTTER_PIRATE.get(), CutterPirateEntity.createAttributes().build()); + event.put(CUTTER_PIRATE_DAMAGED_SAILS.get(), CutterPirateDamagedSailsEntity.createAttributes().build()); + event.put(CUTTERPIRATEDAMAGED.get(), CutterpiratedamagedEntity.createAttributes().build()); + event.put(CUTTERMILITARISED.get(), CuttermilitarisedEntity.createAttributes().build()); + event.put(CUTTER_MILITARISED_DAMAGED_SAILS.get(), CutterMilitarisedDamagedSailsEntity.createAttributes().build()); + event.put(CUTTERMILITARISEDDAMAGED.get(), CuttermilitariseddamagedEntity.createAttributes().build()); + event.put(CORVETTE_STEAMSHIP.get(), CorvetteSteamshipEntity.createAttributes().build()); + event.put(CORVETTESTEAMSHIPDAMAGED.get(), CorvettesteamshipdamagedEntity.createAttributes().build()); + event.put(CUTTER_PASSENGER.get(), CutterPassengerEntity.createAttributes().build()); + event.put(CUTTER_SEAT.get(), CutterSeatEntity.createAttributes().build()); + event.put(CUTTER_SAIL_HITBOX.get(), CutterSailHitboxEntity.createAttributes().build()); + event.put(SHIPWRECKSWASHBUCKLER.get(), ShipwreckswashbucklerEntity.createAttributes().build()); + event.put(SHIPWRECKEDRAFT.get(), ShipwreckedraftEntity.createAttributes().build()); + event.put(WRECKEDSWASHBUCKLERUPGRADE.get(), WreckedswashbucklerupgradeEntity.createAttributes().build()); + event.put(CUTTERWRECKFRONT.get(), CutterwreckfrontEntity.createAttributes().build()); + event.put(CUTTERWRECKBACK.get(), CutterwreckbackEntity.createAttributes().build()); + event.put(CUTTERPIRATEWRECK.get(), CutterpiratewreckEntity.createAttributes().build()); + event.put(WOOD_DEBRIS.get(), WoodDebrisEntity.createAttributes().build()); + event.put(BARREL_DEBRIS.get(), BarrelDebrisEntity.createAttributes().build()); + event.put(CUTTER_MILITARISED_WRECK.get(), CutterMilitarisedWreckEntity.createAttributes().build()); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModEntityRenderers.java b/src/main/java/hal/studios/hpm/init/HpmModEntityRenderers.java new file mode 100644 index 0000000..6ce2ce4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModEntityRenderers.java @@ -0,0 +1,74 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.client.renderer.entity.ThrownItemRenderer; + +import hal.studios.hpm.client.renderer.WreckedswashbucklerupgradeRenderer; +import hal.studios.hpm.client.renderer.WoodDebrisRenderer; +import hal.studios.hpm.client.renderer.SwashbucklerupgradedRenderer; +import hal.studios.hpm.client.renderer.SwashbucklerRenderer; +import hal.studios.hpm.client.renderer.ShipwreckswashbucklerRenderer; +import hal.studios.hpm.client.renderer.ShipwreckedraftRenderer; +import hal.studios.hpm.client.renderer.RaftRenderer; +import hal.studios.hpm.client.renderer.CutterwreckfrontRenderer; +import hal.studios.hpm.client.renderer.CutterwreckbackRenderer; +import hal.studios.hpm.client.renderer.CutterpiratewreckRenderer; +import hal.studios.hpm.client.renderer.CutterpiratedamagedRenderer; +import hal.studios.hpm.client.renderer.CuttermilitariseddamagedRenderer; +import hal.studios.hpm.client.renderer.CuttermilitarisedRenderer; +import hal.studios.hpm.client.renderer.CutterdamagedRenderer; +import hal.studios.hpm.client.renderer.CutterSeatRenderer; +import hal.studios.hpm.client.renderer.CutterSailsDamagedRenderer; +import hal.studios.hpm.client.renderer.CutterSailHitboxRenderer; +import hal.studios.hpm.client.renderer.CutterRenderer; +import hal.studios.hpm.client.renderer.CutterPirateRenderer; +import hal.studios.hpm.client.renderer.CutterPirateDamagedSailsRenderer; +import hal.studios.hpm.client.renderer.CutterPassengerRenderer; +import hal.studios.hpm.client.renderer.CutterMilitarisedWreckRenderer; +import hal.studios.hpm.client.renderer.CutterMilitarisedDamagedSailsRenderer; +import hal.studios.hpm.client.renderer.CorvettesteamshipdamagedRenderer; +import hal.studios.hpm.client.renderer.CorvetteSteamshipRenderer; +import hal.studios.hpm.client.renderer.BarrelDebrisRenderer; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class HpmModEntityRenderers { + @SubscribeEvent + public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(HpmModEntities.SWASHBUCKLER.get(), SwashbucklerRenderer::new); + event.registerEntityRenderer(HpmModEntities.SWASHBUCKLERUPGRADED.get(), SwashbucklerupgradedRenderer::new); + event.registerEntityRenderer(HpmModEntities.RAFT.get(), RaftRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER.get(), CutterRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_SAILS_DAMAGED.get(), CutterSailsDamagedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERDAMAGED.get(), CutterdamagedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_PIRATE.get(), CutterPirateRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_PIRATE_DAMAGED_SAILS.get(), CutterPirateDamagedSailsRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERPIRATEDAMAGED.get(), CutterpiratedamagedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERMILITARISED.get(), CuttermilitarisedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_MILITARISED_DAMAGED_SAILS.get(), CutterMilitarisedDamagedSailsRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERMILITARISEDDAMAGED.get(), CuttermilitariseddamagedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CORVETTE_STEAMSHIP.get(), CorvetteSteamshipRenderer::new); + event.registerEntityRenderer(HpmModEntities.CORVETTESTEAMSHIPDAMAGED.get(), CorvettesteamshipdamagedRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_PASSENGER.get(), CutterPassengerRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_SEAT.get(), CutterSeatRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_SAIL_HITBOX.get(), CutterSailHitboxRenderer::new); + event.registerEntityRenderer(HpmModEntities.HAND_CANNON.get(), ThrownItemRenderer::new); + event.registerEntityRenderer(HpmModEntities.HAND_MORTAR.get(), ThrownItemRenderer::new); + event.registerEntityRenderer(HpmModEntities.SHIPWRECKSWASHBUCKLER.get(), ShipwreckswashbucklerRenderer::new); + event.registerEntityRenderer(HpmModEntities.SHIPWRECKEDRAFT.get(), ShipwreckedraftRenderer::new); + event.registerEntityRenderer(HpmModEntities.WRECKEDSWASHBUCKLERUPGRADE.get(), WreckedswashbucklerupgradeRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERWRECKFRONT.get(), CutterwreckfrontRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERWRECKBACK.get(), CutterwreckbackRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTERPIRATEWRECK.get(), CutterpiratewreckRenderer::new); + event.registerEntityRenderer(HpmModEntities.WOOD_DEBRIS.get(), WoodDebrisRenderer::new); + event.registerEntityRenderer(HpmModEntities.BARREL_DEBRIS.get(), BarrelDebrisRenderer::new); + event.registerEntityRenderer(HpmModEntities.CUTTER_MILITARISED_WRECK.get(), CutterMilitarisedWreckRenderer::new); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModItems.java b/src/main/java/hal/studios/hpm/init/HpmModItems.java new file mode 100644 index 0000000..c1515b6 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModItems.java @@ -0,0 +1,49 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; + +import net.minecraft.world.item.Item; + +import hal.studios.hpm.item.SwashbucklerupgradeItem; +import hal.studios.hpm.item.SwashbuckleritemItem; +import hal.studios.hpm.item.SpannerItem; +import hal.studios.hpm.item.SmallhullItem; +import hal.studios.hpm.item.SmallMastItem; +import hal.studios.hpm.item.RaftitemItem; +import hal.studios.hpm.item.PirateCutterItemItem; +import hal.studios.hpm.item.MortarBallItem; +import hal.studios.hpm.item.LargemastItem; +import hal.studios.hpm.item.LargehullItem; +import hal.studios.hpm.item.HandMortarItem; +import hal.studios.hpm.item.HandCannonItem; +import hal.studios.hpm.item.CuttermilitariseditemItem; +import hal.studios.hpm.item.CutteritemItem; +import hal.studios.hpm.item.CorvetteSteamshipItemItem; +import hal.studios.hpm.item.CannonballItem; +import hal.studios.hpm.HpmMod; + +public class HpmModItems { + public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.ITEMS, HpmMod.MODID); + public static final RegistryObject SMALLHULL = REGISTRY.register("smallhull", () -> new SmallhullItem()); + public static final RegistryObject LARGEHULL = REGISTRY.register("largehull", () -> new LargehullItem()); + public static final RegistryObject SMALL_MAST = REGISTRY.register("small_mast", () -> new SmallMastItem()); + public static final RegistryObject LARGEMAST = REGISTRY.register("largemast", () -> new LargemastItem()); + public static final RegistryObject SPANNER = REGISTRY.register("spanner", () -> new SpannerItem()); + public static final RegistryObject SWASHBUCKLERITEM = REGISTRY.register("swashbuckleritem", () -> new SwashbuckleritemItem()); + public static final RegistryObject RAFTITEM = REGISTRY.register("raftitem", () -> new RaftitemItem()); + public static final RegistryObject SWASHBUCKLERUPGRADE = REGISTRY.register("swashbucklerupgrade", () -> new SwashbucklerupgradeItem()); + public static final RegistryObject CUTTERITEM = REGISTRY.register("cutteritem", () -> new CutteritemItem()); + public static final RegistryObject CUTTERMILITARISEDITEM = REGISTRY.register("cuttermilitariseditem", () -> new CuttermilitariseditemItem()); + public static final RegistryObject PIRATE_CUTTER_ITEM = REGISTRY.register("pirate_cutter_item", () -> new PirateCutterItemItem()); + public static final RegistryObject CORVETTE_STEAMSHIP_ITEM = REGISTRY.register("corvette_steamship_item", () -> new CorvetteSteamshipItemItem()); + public static final RegistryObject CANNONBALL = REGISTRY.register("cannonball", () -> new CannonballItem()); + public static final RegistryObject HAND_CANNON = REGISTRY.register("hand_cannon", () -> new HandCannonItem()); + public static final RegistryObject MORTAR_BALL = REGISTRY.register("mortar_ball", () -> new MortarBallItem()); + public static final RegistryObject HAND_MORTAR = REGISTRY.register("hand_mortar", () -> new HandMortarItem()); +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModKeyMappings.java b/src/main/java/hal/studios/hpm/init/HpmModKeyMappings.java new file mode 100644 index 0000000..285d2b2 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModKeyMappings.java @@ -0,0 +1,148 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import org.lwjgl.glfw.GLFW; + +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.client.event.InputEvent; +import net.minecraftforge.client.ClientRegistry; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.KeyMapping; + +import hal.studios.hpm.network.SailspeedupMessage; +import hal.studios.hpm.network.SailspeeddownMessage; +import hal.studios.hpm.network.RotateshiprightMessage; +import hal.studios.hpm.network.RotateshipleftMessage; +import hal.studios.hpm.network.FireMortarKeyMessage; +import hal.studios.hpm.network.FireMessage; +import hal.studios.hpm.network.CannonRightMessage; +import hal.studios.hpm.network.CannonLeftMessage; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = {Dist.CLIENT}) +public class HpmModKeyMappings { + public static final KeyMapping FIRE = new KeyMapping("key.hpm.fire", GLFW.GLFW_KEY_H, "key.categories.swashbucklers"); + public static final KeyMapping SAILSPEEDUP = new KeyMapping("key.hpm.sailspeedup", GLFW.GLFW_KEY_W, "key.categories.swashbucklers"); + public static final KeyMapping SAILSPEEDDOWN = new KeyMapping("key.hpm.sailspeeddown", GLFW.GLFW_KEY_S, "key.categories.swashbucklers"); + public static final KeyMapping ROTATESHIPLEFT = new KeyMapping("key.hpm.rotateshipleft", GLFW.GLFW_KEY_A, "key.categories.swashbucklers"); + public static final KeyMapping ROTATESHIPRIGHT = new KeyMapping("key.hpm.rotateshipright", GLFW.GLFW_KEY_D, "key.categories.swashbucklers"); + public static final KeyMapping CANNON_LEFT = new KeyMapping("key.hpm.cannon_left", GLFW.GLFW_KEY_G, "key.categories.swashbucklers"); + public static final KeyMapping CANNON_RIGHT = new KeyMapping("key.hpm.cannon_right", GLFW.GLFW_KEY_J, "key.categories.swashbucklers"); + public static final KeyMapping FIRE_MORTAR_KEY = new KeyMapping("key.hpm.fire_mortar_key", GLFW.GLFW_KEY_H, "key.categories.swashbucklers"); + private static long FIRE_LASTPRESS = 0; + private static long SAILSPEEDUP_LASTPRESS = 0; + private static long SAILSPEEDDOWN_LASTPRESS = 0; + private static long ROTATESHIPLEFT_LASTPRESS = 0; + private static long ROTATESHIPRIGHT_LASTPRESS = 0; + private static long CANNON_LEFT_LASTPRESS = 0; + private static long CANNON_RIGHT_LASTPRESS = 0; + private static long FIRE_MORTAR_KEY_LASTPRESS = 0; + + @SubscribeEvent + public static void registerKeyBindings(FMLClientSetupEvent event) { + ClientRegistry.registerKeyBinding(FIRE); + ClientRegistry.registerKeyBinding(SAILSPEEDUP); + ClientRegistry.registerKeyBinding(SAILSPEEDDOWN); + ClientRegistry.registerKeyBinding(ROTATESHIPLEFT); + ClientRegistry.registerKeyBinding(ROTATESHIPRIGHT); + ClientRegistry.registerKeyBinding(CANNON_LEFT); + ClientRegistry.registerKeyBinding(CANNON_RIGHT); + ClientRegistry.registerKeyBinding(FIRE_MORTAR_KEY); + } + + @Mod.EventBusSubscriber({Dist.CLIENT}) + public static class KeyEventListener { + @SubscribeEvent + public static void onKeyInput(InputEvent.KeyInputEvent event) { + if (Minecraft.getInstance().screen == null) { + if (event.getKey() == FIRE.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + FIRE_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - FIRE_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new FireMessage(1, dt)); + FireMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == SAILSPEEDUP.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + HpmMod.PACKET_HANDLER.sendToServer(new SailspeedupMessage(0, 0)); + SailspeedupMessage.pressAction(Minecraft.getInstance().player, 0, 0); + SAILSPEEDUP_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - SAILSPEEDUP_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new SailspeedupMessage(1, dt)); + SailspeedupMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == SAILSPEEDDOWN.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + HpmMod.PACKET_HANDLER.sendToServer(new SailspeeddownMessage(0, 0)); + SailspeeddownMessage.pressAction(Minecraft.getInstance().player, 0, 0); + SAILSPEEDDOWN_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - SAILSPEEDDOWN_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new SailspeeddownMessage(1, dt)); + SailspeeddownMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == ROTATESHIPLEFT.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + HpmMod.PACKET_HANDLER.sendToServer(new RotateshipleftMessage(0, 0)); + RotateshipleftMessage.pressAction(Minecraft.getInstance().player, 0, 0); + ROTATESHIPLEFT_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - ROTATESHIPLEFT_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new RotateshipleftMessage(1, dt)); + RotateshipleftMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == ROTATESHIPRIGHT.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + HpmMod.PACKET_HANDLER.sendToServer(new RotateshiprightMessage(0, 0)); + RotateshiprightMessage.pressAction(Minecraft.getInstance().player, 0, 0); + ROTATESHIPRIGHT_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - ROTATESHIPRIGHT_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new RotateshiprightMessage(1, dt)); + RotateshiprightMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == CANNON_LEFT.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + CANNON_LEFT_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - CANNON_LEFT_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new CannonLeftMessage(1, dt)); + CannonLeftMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == CANNON_RIGHT.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + CANNON_RIGHT_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - CANNON_RIGHT_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new CannonRightMessage(1, dt)); + CannonRightMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + if (event.getKey() == FIRE_MORTAR_KEY.getKey().getValue()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + FIRE_MORTAR_KEY_LASTPRESS = System.currentTimeMillis(); + } else if (event.getAction() == GLFW.GLFW_RELEASE) { + int dt = (int) (System.currentTimeMillis() - FIRE_MORTAR_KEY_LASTPRESS); + HpmMod.PACKET_HANDLER.sendToServer(new FireMortarKeyMessage(1, dt)); + FireMortarKeyMessage.pressAction(Minecraft.getInstance().player, 1, dt); + } + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModMenus.java b/src/main/java/hal/studios/hpm/init/HpmModMenus.java new file mode 100644 index 0000000..937b154 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModMenus.java @@ -0,0 +1,40 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.network.IContainerFactory; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.RegistryEvent; + +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.inventory.AbstractContainerMenu; + +import java.util.List; +import java.util.ArrayList; + +import hal.studios.hpm.world.inventory.SwashbucklerinventoryMenu; +import hal.studios.hpm.world.inventory.RaftinventoryMenu; +import hal.studios.hpm.world.inventory.CutterinventoryMenu; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class HpmModMenus { + private static final List> REGISTRY = new ArrayList<>(); + public static final MenuType SWASHBUCKLERINVENTORY = register("swashbucklerinventory", (id, inv, extraData) -> new SwashbucklerinventoryMenu(id, inv, extraData)); + public static final MenuType RAFTINVENTORY = register("raftinventory", (id, inv, extraData) -> new RaftinventoryMenu(id, inv, extraData)); + public static final MenuType CUTTERINVENTORY = register("cutterinventory", (id, inv, extraData) -> new CutterinventoryMenu(id, inv, extraData)); + + private static MenuType register(String registryname, IContainerFactory containerFactory) { + MenuType menuType = new MenuType(containerFactory); + menuType.setRegistryName(registryname); + REGISTRY.add(menuType); + return menuType; + } + + @SubscribeEvent + public static void registerContainers(RegistryEvent.Register> event) { + event.getRegistry().registerAll(REGISTRY.toArray(new MenuType[0])); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModModels.java b/src/main/java/hal/studios/hpm/init/HpmModModels.java new file mode 100644 index 0000000..fb8ac9f --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModModels.java @@ -0,0 +1,76 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.api.distmarker.Dist; + +import hal.studios.hpm.client.model.Modelswashbucklerupgradeddestroyed; +import hal.studios.hpm.client.model.Modelswashbucklerupgraded; +import hal.studios.hpm.client.model.Modelswashbucklerdestroyed; +import hal.studios.hpm.client.model.Modelswashbuckler; +import hal.studios.hpm.client.model.Modelraftwrecked; +import hal.studios.hpm.client.model.Modelraft; +import hal.studios.hpm.client.model.Modelplankowood; +import hal.studios.hpm.client.model.Modelfloating_barrel; +import hal.studios.hpm.client.model.Modeldrifting_wood; +import hal.studios.hpm.client.model.Modelcutterwreckfront; +import hal.studios.hpm.client.model.Modelcutterwreckback; +import hal.studios.hpm.client.model.Modelcutterweaponisedremastered; +import hal.studios.hpm.client.model.Modelcutterremastered; +import hal.studios.hpm.client.model.Modelcutterpiratewreck; +import hal.studios.hpm.client.model.Modelcutterpiratedplayeramaged; +import hal.studios.hpm.client.model.Modelcutterpiratedamaged; +import hal.studios.hpm.client.model.Modelcutterpirate; +import hal.studios.hpm.client.model.Modelcuttermilitarised; +import hal.studios.hpm.client.model.Modelcutterdamagedremade; +import hal.studios.hpm.client.model.Modelcutterdamaged; +import hal.studios.hpm.client.model.ModelcutterdWreckFrontremade; +import hal.studios.hpm.client.model.ModelcutterRearWreckremade; +import hal.studios.hpm.client.model.ModelcutterDamagedSails; +import hal.studios.hpm.client.model.ModelcutterArmedWreck; +import hal.studios.hpm.client.model.ModelcutterArmedDamaged; +import hal.studios.hpm.client.model.Modelcutter; +import hal.studios.hpm.client.model.Modelcorvetteclassdamaged; +import hal.studios.hpm.client.model.Modelcorvetteclass; +import hal.studios.hpm.client.model.ModelCutterPassenger; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = {Dist.CLIENT}) +public class HpmModModels { + @SubscribeEvent + public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(ModelcutterRearWreckremade.LAYER_LOCATION, ModelcutterRearWreckremade::createBodyLayer); + event.registerLayerDefinition(Modelcutterpiratedamaged.LAYER_LOCATION, Modelcutterpiratedamaged::createBodyLayer); + event.registerLayerDefinition(Modelcutterwreckback.LAYER_LOCATION, Modelcutterwreckback::createBodyLayer); + event.registerLayerDefinition(Modelfloating_barrel.LAYER_LOCATION, Modelfloating_barrel::createBodyLayer); + event.registerLayerDefinition(Modelswashbucklerdestroyed.LAYER_LOCATION, Modelswashbucklerdestroyed::createBodyLayer); + event.registerLayerDefinition(ModelcutterArmedDamaged.LAYER_LOCATION, ModelcutterArmedDamaged::createBodyLayer); + event.registerLayerDefinition(Modelswashbuckler.LAYER_LOCATION, Modelswashbuckler::createBodyLayer); + event.registerLayerDefinition(Modelswashbucklerupgradeddestroyed.LAYER_LOCATION, Modelswashbucklerupgradeddestroyed::createBodyLayer); + event.registerLayerDefinition(Modelcutterwreckfront.LAYER_LOCATION, Modelcutterwreckfront::createBodyLayer); + event.registerLayerDefinition(Modelswashbucklerupgraded.LAYER_LOCATION, Modelswashbucklerupgraded::createBodyLayer); + event.registerLayerDefinition(Modelcutterdamaged.LAYER_LOCATION, Modelcutterdamaged::createBodyLayer); + event.registerLayerDefinition(Modelraftwrecked.LAYER_LOCATION, Modelraftwrecked::createBodyLayer); + event.registerLayerDefinition(ModelcutterDamagedSails.LAYER_LOCATION, ModelcutterDamagedSails::createBodyLayer); + event.registerLayerDefinition(Modelraft.LAYER_LOCATION, Modelraft::createBodyLayer); + event.registerLayerDefinition(Modelcutterweaponisedremastered.LAYER_LOCATION, Modelcutterweaponisedremastered::createBodyLayer); + event.registerLayerDefinition(Modelplankowood.LAYER_LOCATION, Modelplankowood::createBodyLayer); + event.registerLayerDefinition(Modelcuttermilitarised.LAYER_LOCATION, Modelcuttermilitarised::createBodyLayer); + event.registerLayerDefinition(Modelcutterpirate.LAYER_LOCATION, Modelcutterpirate::createBodyLayer); + event.registerLayerDefinition(Modelcorvetteclassdamaged.LAYER_LOCATION, Modelcorvetteclassdamaged::createBodyLayer); + event.registerLayerDefinition(ModelcutterArmedWreck.LAYER_LOCATION, ModelcutterArmedWreck::createBodyLayer); + event.registerLayerDefinition(ModelCutterPassenger.LAYER_LOCATION, ModelCutterPassenger::createBodyLayer); + event.registerLayerDefinition(Modelcutterdamagedremade.LAYER_LOCATION, Modelcutterdamagedremade::createBodyLayer); + event.registerLayerDefinition(Modelcorvetteclass.LAYER_LOCATION, Modelcorvetteclass::createBodyLayer); + event.registerLayerDefinition(Modelcutterpiratedplayeramaged.LAYER_LOCATION, Modelcutterpiratedplayeramaged::createBodyLayer); + event.registerLayerDefinition(Modelcutterpiratewreck.LAYER_LOCATION, Modelcutterpiratewreck::createBodyLayer); + event.registerLayerDefinition(Modelcutterremastered.LAYER_LOCATION, Modelcutterremastered::createBodyLayer); + event.registerLayerDefinition(Modelcutter.LAYER_LOCATION, Modelcutter::createBodyLayer); + event.registerLayerDefinition(ModelcutterdWreckFrontremade.LAYER_LOCATION, ModelcutterdWreckFrontremade::createBodyLayer); + event.registerLayerDefinition(Modeldrifting_wood.LAYER_LOCATION, Modeldrifting_wood::createBodyLayer); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModParticleTypes.java b/src/main/java/hal/studios/hpm/init/HpmModParticleTypes.java new file mode 100644 index 0000000..7bb8a9a --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModParticleTypes.java @@ -0,0 +1,22 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.registries.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.DeferredRegister; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.core.particles.ParticleType; + +import hal.studios.hpm.HpmMod; + +public class HpmModParticleTypes { + public static final DeferredRegister> REGISTRY = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, HpmMod.MODID); + public static final RegistryObject> RIPPED_SAIL = REGISTRY.register("ripped_sail", () -> new SimpleParticleType(false)); + public static final RegistryObject> RIPPED_SAIL_PIRATE = REGISTRY.register("ripped_sail_pirate", () -> new SimpleParticleType(false)); + public static final RegistryObject> PLANK_SPLINTER = REGISTRY.register("plank_splinter", () -> new SimpleParticleType(false)); + public static final RegistryObject> SPLINTERS = REGISTRY.register("splinters", () -> new SimpleParticleType(false)); +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModParticles.java b/src/main/java/hal/studios/hpm/init/HpmModParticles.java new file mode 100644 index 0000000..f6a9ea1 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModParticles.java @@ -0,0 +1,29 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.client.Minecraft; + +import hal.studios.hpm.client.particle.SplintersParticle; +import hal.studios.hpm.client.particle.RippedSailPirateParticle; +import hal.studios.hpm.client.particle.RippedSailParticle; +import hal.studios.hpm.client.particle.PlankSplinterParticle; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class HpmModParticles { + @SubscribeEvent + public static void registerParticles(ParticleFactoryRegisterEvent event) { + Minecraft.getInstance().particleEngine.register((SimpleParticleType) HpmModParticleTypes.RIPPED_SAIL.get(), RippedSailParticle::provider); + Minecraft.getInstance().particleEngine.register((SimpleParticleType) HpmModParticleTypes.RIPPED_SAIL_PIRATE.get(), RippedSailPirateParticle::provider); + Minecraft.getInstance().particleEngine.register((SimpleParticleType) HpmModParticleTypes.PLANK_SPLINTER.get(), PlankSplinterParticle::provider); + Minecraft.getInstance().particleEngine.register((SimpleParticleType) HpmModParticleTypes.SPLINTERS.get(), SplintersParticle::provider); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModScreens.java b/src/main/java/hal/studios/hpm/init/HpmModScreens.java new file mode 100644 index 0000000..53540be --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModScreens.java @@ -0,0 +1,28 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.client.gui.screens.MenuScreens; + +import hal.studios.hpm.client.gui.SwashbucklerinventoryScreen; +import hal.studios.hpm.client.gui.RaftinventoryScreen; +import hal.studios.hpm.client.gui.CutterinventoryScreen; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class HpmModScreens { + @SubscribeEvent + public static void clientLoad(FMLClientSetupEvent event) { + event.enqueueWork(() -> { + MenuScreens.register(HpmModMenus.SWASHBUCKLERINVENTORY, SwashbucklerinventoryScreen::new); + MenuScreens.register(HpmModMenus.RAFTINVENTORY, RaftinventoryScreen::new); + MenuScreens.register(HpmModMenus.CUTTERINVENTORY, CutterinventoryScreen::new); + }); + } +} diff --git a/src/main/java/hal/studios/hpm/init/HpmModTabs.java b/src/main/java/hal/studios/hpm/init/HpmModTabs.java new file mode 100644 index 0000000..3362fb7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/init/HpmModTabs.java @@ -0,0 +1,29 @@ + +/* + * MCreator note: This file will be REGENERATED on each build. + */ +package hal.studios.hpm.init; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.CreativeModeTab; + +public class HpmModTabs { + public static CreativeModeTab TAB_SWASHBUCKLERS; + + public static void load() { + TAB_SWASHBUCKLERS = new CreativeModeTab("tabswashbucklers") { + @Override + public ItemStack makeIcon() { + return new ItemStack(HpmModItems.CORVETTE_STEAMSHIP_ITEM.get()); + } + + @OnlyIn(Dist.CLIENT) + public boolean hasSearchBar() { + return false; + } + }; + } +} diff --git a/src/main/java/hal/studios/hpm/item/CannonballItem.java b/src/main/java/hal/studios/hpm/item/CannonballItem.java new file mode 100644 index 0000000..1da2c1f --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/CannonballItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class CannonballItem extends Item { + public CannonballItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/CorvetteSteamshipItemItem.java b/src/main/java/hal/studios/hpm/item/CorvetteSteamshipItemItem.java new file mode 100644 index 0000000..c7b352d --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/CorvetteSteamshipItemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.CorvetteSteamshipItemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class CorvetteSteamshipItemItem extends Item { + public CorvetteSteamshipItemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + CorvetteSteamshipItemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/CutteritemItem.java b/src/main/java/hal/studios/hpm/item/CutteritemItem.java new file mode 100644 index 0000000..5a7ab79 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/CutteritemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.CutteritemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class CutteritemItem extends Item { + public CutteritemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + CutteritemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/CuttermilitariseditemItem.java b/src/main/java/hal/studios/hpm/item/CuttermilitariseditemItem.java new file mode 100644 index 0000000..69d214d --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/CuttermilitariseditemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.CuttermilitariseditemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class CuttermilitariseditemItem extends Item { + public CuttermilitariseditemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + CuttermilitariseditemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/HandCannonItem.java b/src/main/java/hal/studios/hpm/item/HandCannonItem.java new file mode 100644 index 0000000..f66d623 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/HandCannonItem.java @@ -0,0 +1,86 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.server.level.ServerPlayer; + +import hal.studios.hpm.procedures.HandCannonRangedItemUsedProcedure; +import hal.studios.hpm.procedures.CanUseCannonHandProcedure; +import hal.studios.hpm.init.HpmModTabs; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.entity.HandCannonEntity; + +public class HandCannonItem extends Item { + public HandCannonItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).durability(59)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + entity.startUsingItem(hand); + return new InteractionResultHolder(InteractionResult.SUCCESS, entity.getItemInHand(hand)); + } + + @Override + public UseAnim getUseAnimation(ItemStack itemstack) { + return UseAnim.NONE; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 72000; + } + + @Override + public void releaseUsing(ItemStack itemstack, Level world, LivingEntity entityLiving, int timeLeft) { + if (!world.isClientSide() && entityLiving instanceof ServerPlayer entity) { + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + if (CanUseCannonHandProcedure.execute(entity)) { + ItemStack stack = ProjectileWeaponItem.getHeldProjectile(entity, e -> e.getItem() == HpmModItems.CANNONBALL.get()); + if (stack == ItemStack.EMPTY) { + for (int i = 0; i < entity.getInventory().items.size(); i++) { + ItemStack teststack = entity.getInventory().items.get(i); + if (teststack != null && teststack.getItem() == HpmModItems.CANNONBALL.get()) { + stack = teststack; + break; + } + } + } + if (entity.getAbilities().instabuild || stack != ItemStack.EMPTY) { + HandCannonEntity entityarrow = HandCannonEntity.shoot(world, entity, world.getRandom(), 2.5f, 3, 0); + itemstack.hurtAndBreak(1, entity, e -> e.broadcastBreakEvent(entity.getUsedItemHand())); + if (entity.getAbilities().instabuild) { + entityarrow.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; + } else { + if (new ItemStack(HpmModItems.CANNONBALL.get()).isDamageableItem()) { + if (stack.hurt(1, world.getRandom(), entity)) { + stack.shrink(1); + stack.setDamageValue(0); + if (stack.isEmpty()) + entity.getInventory().removeItem(stack); + } + } else { + stack.shrink(1); + if (stack.isEmpty()) + entity.getInventory().removeItem(stack); + } + } + + HandCannonRangedItemUsedProcedure.execute(world, entity); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/item/HandMortarItem.java b/src/main/java/hal/studios/hpm/item/HandMortarItem.java new file mode 100644 index 0000000..9e46fa0 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/HandMortarItem.java @@ -0,0 +1,86 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.server.level.ServerPlayer; + +import hal.studios.hpm.procedures.HandCannonRangedItemUsedProcedure; +import hal.studios.hpm.procedures.CanUseCannonHandProcedure; +import hal.studios.hpm.init.HpmModTabs; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.entity.HandMortarEntity; + +public class HandMortarItem extends Item { + public HandMortarItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).durability(59)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + entity.startUsingItem(hand); + return new InteractionResultHolder(InteractionResult.SUCCESS, entity.getItemInHand(hand)); + } + + @Override + public UseAnim getUseAnimation(ItemStack itemstack) { + return UseAnim.NONE; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 72000; + } + + @Override + public void releaseUsing(ItemStack itemstack, Level world, LivingEntity entityLiving, int timeLeft) { + if (!world.isClientSide() && entityLiving instanceof ServerPlayer entity) { + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + if (CanUseCannonHandProcedure.execute(entity)) { + ItemStack stack = ProjectileWeaponItem.getHeldProjectile(entity, e -> e.getItem() == HpmModItems.MORTAR_BALL.get()); + if (stack == ItemStack.EMPTY) { + for (int i = 0; i < entity.getInventory().items.size(); i++) { + ItemStack teststack = entity.getInventory().items.get(i); + if (teststack != null && teststack.getItem() == HpmModItems.MORTAR_BALL.get()) { + stack = teststack; + break; + } + } + } + if (entity.getAbilities().instabuild || stack != ItemStack.EMPTY) { + HandMortarEntity entityarrow = HandMortarEntity.shoot(world, entity, world.getRandom(), 1.7f, 5, 0); + itemstack.hurtAndBreak(1, entity, e -> e.broadcastBreakEvent(entity.getUsedItemHand())); + if (entity.getAbilities().instabuild) { + entityarrow.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; + } else { + if (new ItemStack(HpmModItems.MORTAR_BALL.get()).isDamageableItem()) { + if (stack.hurt(1, world.getRandom(), entity)) { + stack.shrink(1); + stack.setDamageValue(0); + if (stack.isEmpty()) + entity.getInventory().removeItem(stack); + } + } else { + stack.shrink(1); + if (stack.isEmpty()) + entity.getInventory().removeItem(stack); + } + } + + HandCannonRangedItemUsedProcedure.execute(world, entity); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/item/LargehullItem.java b/src/main/java/hal/studios/hpm/item/LargehullItem.java new file mode 100644 index 0000000..7ce9d33 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/LargehullItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class LargehullItem extends Item { + public LargehullItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/LargemastItem.java b/src/main/java/hal/studios/hpm/item/LargemastItem.java new file mode 100644 index 0000000..820a9ea --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/LargemastItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class LargemastItem extends Item { + public LargemastItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/MortarBallItem.java b/src/main/java/hal/studios/hpm/item/MortarBallItem.java new file mode 100644 index 0000000..a2fbdf0 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/MortarBallItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class MortarBallItem extends Item { + public MortarBallItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/PirateCutterItemItem.java b/src/main/java/hal/studios/hpm/item/PirateCutterItemItem.java new file mode 100644 index 0000000..5c3c66d --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/PirateCutterItemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.PirateCutterItemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class PirateCutterItemItem extends Item { + public PirateCutterItemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + PirateCutterItemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/RaftitemItem.java b/src/main/java/hal/studios/hpm/item/RaftitemItem.java new file mode 100644 index 0000000..07855a4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/RaftitemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.RaftitemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class RaftitemItem extends Item { + public RaftitemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + RaftitemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/SmallMastItem.java b/src/main/java/hal/studios/hpm/item/SmallMastItem.java new file mode 100644 index 0000000..f40add5 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/SmallMastItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class SmallMastItem extends Item { + public SmallMastItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/SmallhullItem.java b/src/main/java/hal/studios/hpm/item/SmallhullItem.java new file mode 100644 index 0000000..b6929f4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/SmallhullItem.java @@ -0,0 +1,13 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Item; + +import hal.studios.hpm.init.HpmModTabs; + +public class SmallhullItem extends Item { + public SmallhullItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(64).rarity(Rarity.COMMON)); + } +} diff --git a/src/main/java/hal/studios/hpm/item/SpannerItem.java b/src/main/java/hal/studios/hpm/item/SpannerItem.java new file mode 100644 index 0000000..d003347 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/SpannerItem.java @@ -0,0 +1,91 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.core.BlockPos; + +import java.util.List; + +import hal.studios.hpm.procedures.SpannerRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +import com.google.common.collect.Multimap; +import com.google.common.collect.ImmutableMultimap; + +public class SpannerItem extends Item { + public SpannerItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).durability(50)); + } + + @Override + public float getDestroySpeed(ItemStack itemstack, BlockState blockstate) { + return false ? 0.5f : 1; + } + + @Override + public boolean mineBlock(ItemStack itemstack, Level world, BlockState blockstate, BlockPos pos, LivingEntity entity) { + itemstack.hurtAndBreak(1, entity, i -> i.broadcastBreakEvent(EquipmentSlot.MAINHAND)); + return true; + } + + @Override + public boolean hurtEnemy(ItemStack itemstack, LivingEntity entity, LivingEntity sourceentity) { + itemstack.hurtAndBreak(2, entity, i -> i.broadcastBreakEvent(EquipmentSlot.MAINHAND)); + SpannerRightclickedProcedure.execute(entity.level, entity.getX(), entity.getY(), entity.getZ(), entity, sourceentity, itemstack); + return true; + } + + @Override + public int getEnchantmentValue() { + return 0; + } + + @Override + public Multimap getDefaultAttributeModifiers(EquipmentSlot equipmentSlot) { + if (equipmentSlot == EquipmentSlot.MAINHAND) { + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.putAll(super.getDefaultAttributeModifiers(equipmentSlot)); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Tool modifier", 3f, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Tool modifier", -2, AttributeModifier.Operation.ADDITION)); + return builder.build(); + } + return super.getDefaultAttributeModifiers(equipmentSlot); + } + + @Override + public boolean hasContainerItem(ItemStack stack) { + return true; + } + + @Override + public ItemStack getContainerItem(ItemStack itemstack) { + ItemStack retval = new ItemStack(this); + retval.setDamageValue(itemstack.getDamageValue() + 1); + if (retval.getDamageValue() >= retval.getMaxDamage()) { + return ItemStack.EMPTY; + } + return retval; + } + + @Override + public boolean isRepairable(ItemStack itemstack) { + return false; + } + + @Override + public void appendHoverText(ItemStack itemstack, Level world, List list, TooltipFlag flag) { + super.appendHoverText(itemstack, world, list, flag); + list.add(new TextComponent("Used to repair ships")); + } +} diff --git a/src/main/java/hal/studios/hpm/item/SwashbuckleritemItem.java b/src/main/java/hal/studios/hpm/item/SwashbuckleritemItem.java new file mode 100644 index 0000000..718ba8d --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/SwashbuckleritemItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.SwashbuckleritemRightclickedProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class SwashbuckleritemItem extends Item { + public SwashbuckleritemItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + SwashbuckleritemRightclickedProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/item/SwashbucklerupgradeItem.java b/src/main/java/hal/studios/hpm/item/SwashbucklerupgradeItem.java new file mode 100644 index 0000000..fa0d3b7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/item/SwashbucklerupgradeItem.java @@ -0,0 +1,31 @@ + +package hal.studios.hpm.item; + +import net.minecraft.world.level.Level; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionHand; + +import hal.studios.hpm.procedures.SwashbucklerupgradespawnProcedure; +import hal.studios.hpm.init.HpmModTabs; + +public class SwashbucklerupgradeItem extends Item { + public SwashbucklerupgradeItem() { + super(new Item.Properties().tab(HpmModTabs.TAB_SWASHBUCKLERS).stacksTo(1).rarity(Rarity.COMMON)); + } + + @Override + public InteractionResultHolder use(Level world, Player entity, InteractionHand hand) { + InteractionResultHolder ar = super.use(world, entity, hand); + ItemStack itemstack = ar.getObject(); + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + + SwashbucklerupgradespawnProcedure.execute(world, x, y, z, entity); + return ar; + } +} diff --git a/src/main/java/hal/studios/hpm/network/CannonLeftMessage.java b/src/main/java/hal/studios/hpm/network/CannonLeftMessage.java new file mode 100644 index 0000000..088467f --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/CannonLeftMessage.java @@ -0,0 +1,63 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.FireLeftProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class CannonLeftMessage { + int type, pressedms; + + public CannonLeftMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public CannonLeftMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(CannonLeftMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(CannonLeftMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 1) { + + FireLeftProcedure.execute(world, y, entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(CannonLeftMessage.class, CannonLeftMessage::buffer, CannonLeftMessage::new, CannonLeftMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/CannonRightMessage.java b/src/main/java/hal/studios/hpm/network/CannonRightMessage.java new file mode 100644 index 0000000..f5b596d --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/CannonRightMessage.java @@ -0,0 +1,63 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.FirerightProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class CannonRightMessage { + int type, pressedms; + + public CannonRightMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public CannonRightMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(CannonRightMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(CannonRightMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 1) { + + FirerightProcedure.execute(world, y, entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(CannonRightMessage.class, CannonRightMessage::buffer, CannonRightMessage::new, CannonRightMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/FireMessage.java b/src/main/java/hal/studios/hpm/network/FireMessage.java new file mode 100644 index 0000000..50597aa --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/FireMessage.java @@ -0,0 +1,63 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.FireOnKeyReleasedProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class FireMessage { + int type, pressedms; + + public FireMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public FireMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(FireMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(FireMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 1) { + + FireOnKeyReleasedProcedure.execute(world, y, entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(FireMessage.class, FireMessage::buffer, FireMessage::new, FireMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/FireMortarKeyMessage.java b/src/main/java/hal/studios/hpm/network/FireMortarKeyMessage.java new file mode 100644 index 0000000..f2134de --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/FireMortarKeyMessage.java @@ -0,0 +1,63 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.MortarFireProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class FireMortarKeyMessage { + int type, pressedms; + + public FireMortarKeyMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public FireMortarKeyMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(FireMortarKeyMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(FireMortarKeyMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 1) { + + MortarFireProcedure.execute(world, y, entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(FireMortarKeyMessage.class, FireMortarKeyMessage::buffer, FireMortarKeyMessage::new, FireMortarKeyMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/HpmModVariables.java b/src/main/java/hal/studios/hpm/network/HpmModVariables.java new file mode 100644 index 0000000..84143a5 --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/HpmModVariables.java @@ -0,0 +1,355 @@ +package hal.studios.hpm.network; + +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.capabilities.CapabilityToken; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Direction; +import net.minecraft.client.Minecraft; + +import java.util.function.Supplier; + +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class HpmModVariables { + @SubscribeEvent + public static void init(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(SavedDataSyncMessage.class, SavedDataSyncMessage::buffer, SavedDataSyncMessage::new, SavedDataSyncMessage::handler); + HpmMod.addNetworkMessage(PlayerVariablesSyncMessage.class, PlayerVariablesSyncMessage::buffer, PlayerVariablesSyncMessage::new, PlayerVariablesSyncMessage::handler); + } + + @SubscribeEvent + public static void init(RegisterCapabilitiesEvent event) { + event.register(PlayerVariables.class); + } + + @Mod.EventBusSubscriber + public static class EventBusVariableHandlers { + @SubscribeEvent + public static void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) { + if (!event.getPlayer().level.isClientSide()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public static void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) { + if (!event.getPlayer().level.isClientSide()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public static void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) { + if (!event.getPlayer().level.isClientSide()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public static void clonePlayer(PlayerEvent.Clone event) { + event.getOriginal().revive(); + PlayerVariables original = ((PlayerVariables) event.getOriginal().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())); + PlayerVariables clone = ((PlayerVariables) event.getEntity().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())); + clone.sailspeed = original.sailspeed; + clone.sailspeedup = original.sailspeedup; + clone.sailspeeddown = original.sailspeeddown; + clone.left = original.left; + clone.right = original.right; + clone.maxspeed = original.maxspeed; + clone.shipyaw = original.shipyaw; + clone.InventoryNum = original.InventoryNum; + clone.FirstLogOn = original.FirstLogOn; + clone.VersionWarning = original.VersionWarning; + clone.shipPilotingID = original.shipPilotingID; + clone.CanFire = original.CanFire; + clone.CanFireLeft = original.CanFireLeft; + clone.CanFireRight = original.CanFireRight; + if (!event.isWasDeath()) { + } + } + + @SubscribeEvent + public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { + if (!event.getPlayer().level.isClientSide()) { + SavedData mapdata = MapVariables.get(event.getPlayer().level); + SavedData worlddata = WorldVariables.get(event.getPlayer().level); + if (mapdata != null) + HpmMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getPlayer()), new SavedDataSyncMessage(0, mapdata)); + if (worlddata != null) + HpmMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getPlayer()), new SavedDataSyncMessage(1, worlddata)); + } + } + + @SubscribeEvent + public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) { + if (!event.getPlayer().level.isClientSide()) { + SavedData worlddata = WorldVariables.get(event.getPlayer().level); + if (worlddata != null) + HpmMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getPlayer()), new SavedDataSyncMessage(1, worlddata)); + } + } + } + + public static class WorldVariables extends SavedData { + public static final String DATA_NAME = "hpm_worldvars"; + public double shipspeedmultiplier = 0.8; + + public static WorldVariables load(CompoundTag tag) { + WorldVariables data = new WorldVariables(); + data.read(tag); + return data; + } + + public void read(CompoundTag nbt) { + shipspeedmultiplier = nbt.getDouble("shipspeedmultiplier"); + } + + @Override + public CompoundTag save(CompoundTag nbt) { + nbt.putDouble("shipspeedmultiplier", shipspeedmultiplier); + return nbt; + } + + public void syncData(LevelAccessor world) { + this.setDirty(); + if (world instanceof Level level && !level.isClientSide()) + HpmMod.PACKET_HANDLER.send(PacketDistributor.DIMENSION.with(level::dimension), new SavedDataSyncMessage(1, this)); + } + + static WorldVariables clientSide = new WorldVariables(); + + public static WorldVariables get(LevelAccessor world) { + if (world instanceof ServerLevel level) { + return level.getDataStorage().computeIfAbsent(e -> WorldVariables.load(e), WorldVariables::new, DATA_NAME); + } else { + return clientSide; + } + } + } + + public static class MapVariables extends SavedData { + public static final String DATA_NAME = "hpm_mapvars"; + public double IDcounter = 1.0; + + public static MapVariables load(CompoundTag tag) { + MapVariables data = new MapVariables(); + data.read(tag); + return data; + } + + public void read(CompoundTag nbt) { + IDcounter = nbt.getDouble("IDcounter"); + } + + @Override + public CompoundTag save(CompoundTag nbt) { + nbt.putDouble("IDcounter", IDcounter); + return nbt; + } + + public void syncData(LevelAccessor world) { + this.setDirty(); + if (world instanceof Level && !world.isClientSide()) + HpmMod.PACKET_HANDLER.send(PacketDistributor.ALL.noArg(), new SavedDataSyncMessage(0, this)); + } + + static MapVariables clientSide = new MapVariables(); + + public static MapVariables get(LevelAccessor world) { + if (world instanceof ServerLevelAccessor serverLevelAcc) { + return serverLevelAcc.getLevel().getServer().getLevel(Level.OVERWORLD).getDataStorage().computeIfAbsent(e -> MapVariables.load(e), MapVariables::new, DATA_NAME); + } else { + return clientSide; + } + } + } + + public static class SavedDataSyncMessage { + public int type; + public SavedData data; + + public SavedDataSyncMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.data = this.type == 0 ? new MapVariables() : new WorldVariables(); + if (this.data instanceof MapVariables _mapvars) + _mapvars.read(buffer.readNbt()); + else if (this.data instanceof WorldVariables _worldvars) + _worldvars.read(buffer.readNbt()); + } + + public SavedDataSyncMessage(int type, SavedData data) { + this.type = type; + this.data = data; + } + + public static void buffer(SavedDataSyncMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeNbt(message.data.save(new CompoundTag())); + } + + public static void handler(SavedDataSyncMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + if (!context.getDirection().getReceptionSide().isServer()) { + if (message.type == 0) + MapVariables.clientSide = (MapVariables) message.data; + else + WorldVariables.clientSide = (WorldVariables) message.data; + } + }); + context.setPacketHandled(true); + } + } + + public static final Capability PLAYER_VARIABLES_CAPABILITY = CapabilityManager.get(new CapabilityToken() { + }); + + @Mod.EventBusSubscriber + private static class PlayerVariablesProvider implements ICapabilitySerializable { + @SubscribeEvent + public static void onAttachCapabilities(AttachCapabilitiesEvent event) { + if (event.getObject() instanceof Player && !(event.getObject() instanceof FakePlayer)) + event.addCapability(new ResourceLocation("hpm", "player_variables"), new PlayerVariablesProvider()); + } + + private final PlayerVariables playerVariables = new PlayerVariables(); + private final LazyOptional instance = LazyOptional.of(() -> playerVariables); + + @Override + public LazyOptional getCapability(Capability cap, Direction side) { + return cap == PLAYER_VARIABLES_CAPABILITY ? instance.cast() : LazyOptional.empty(); + } + + @Override + public Tag serializeNBT() { + return playerVariables.writeNBT(); + } + + @Override + public void deserializeNBT(Tag nbt) { + playerVariables.readNBT(nbt); + } + } + + public static class PlayerVariables { + public double sailspeed = 0; + public boolean sailspeedup = false; + public boolean sailspeeddown = false; + public boolean left = false; + public boolean right = false; + public double maxspeed = 0; + public double shipyaw = 0; + public double InventoryNum = 0; + public boolean FirstLogOn = true; + public boolean VersionWarning = false; + public double shipPilotingID = 0; + public boolean CanFire = true; + public boolean CanFireLeft = true; + public boolean CanFireRight = true; + + public void syncPlayerVariables(Entity entity) { + if (entity instanceof ServerPlayer serverPlayer) + HpmMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> serverPlayer), new PlayerVariablesSyncMessage(this)); + } + + public Tag writeNBT() { + CompoundTag nbt = new CompoundTag(); + nbt.putDouble("sailspeed", sailspeed); + nbt.putBoolean("sailspeedup", sailspeedup); + nbt.putBoolean("sailspeeddown", sailspeeddown); + nbt.putBoolean("left", left); + nbt.putBoolean("right", right); + nbt.putDouble("maxspeed", maxspeed); + nbt.putDouble("shipyaw", shipyaw); + nbt.putDouble("InventoryNum", InventoryNum); + nbt.putBoolean("FirstLogOn", FirstLogOn); + nbt.putBoolean("VersionWarning", VersionWarning); + nbt.putDouble("shipPilotingID", shipPilotingID); + nbt.putBoolean("CanFire", CanFire); + nbt.putBoolean("CanFireLeft", CanFireLeft); + nbt.putBoolean("CanFireRight", CanFireRight); + return nbt; + } + + public void readNBT(Tag Tag) { + CompoundTag nbt = (CompoundTag) Tag; + sailspeed = nbt.getDouble("sailspeed"); + sailspeedup = nbt.getBoolean("sailspeedup"); + sailspeeddown = nbt.getBoolean("sailspeeddown"); + left = nbt.getBoolean("left"); + right = nbt.getBoolean("right"); + maxspeed = nbt.getDouble("maxspeed"); + shipyaw = nbt.getDouble("shipyaw"); + InventoryNum = nbt.getDouble("InventoryNum"); + FirstLogOn = nbt.getBoolean("FirstLogOn"); + VersionWarning = nbt.getBoolean("VersionWarning"); + shipPilotingID = nbt.getDouble("shipPilotingID"); + CanFire = nbt.getBoolean("CanFire"); + CanFireLeft = nbt.getBoolean("CanFireLeft"); + CanFireRight = nbt.getBoolean("CanFireRight"); + } + } + + public static class PlayerVariablesSyncMessage { + public PlayerVariables data; + + public PlayerVariablesSyncMessage(FriendlyByteBuf buffer) { + this.data = new PlayerVariables(); + this.data.readNBT(buffer.readNbt()); + } + + public PlayerVariablesSyncMessage(PlayerVariables data) { + this.data = data; + } + + public static void buffer(PlayerVariablesSyncMessage message, FriendlyByteBuf buffer) { + buffer.writeNbt((CompoundTag) message.data.writeNBT()); + } + + public static void handler(PlayerVariablesSyncMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + if (!context.getDirection().getReceptionSide().isServer()) { + PlayerVariables variables = ((PlayerVariables) Minecraft.getInstance().player.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())); + variables.sailspeed = message.data.sailspeed; + variables.sailspeedup = message.data.sailspeedup; + variables.sailspeeddown = message.data.sailspeeddown; + variables.left = message.data.left; + variables.right = message.data.right; + variables.maxspeed = message.data.maxspeed; + variables.shipyaw = message.data.shipyaw; + variables.InventoryNum = message.data.InventoryNum; + variables.FirstLogOn = message.data.FirstLogOn; + variables.VersionWarning = message.data.VersionWarning; + variables.shipPilotingID = message.data.shipPilotingID; + variables.CanFire = message.data.CanFire; + variables.CanFireLeft = message.data.CanFireLeft; + variables.CanFireRight = message.data.CanFireRight; + } + }); + context.setPacketHandled(true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/network/RotateshipleftMessage.java b/src/main/java/hal/studios/hpm/network/RotateshipleftMessage.java new file mode 100644 index 0000000..2a127fa --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/RotateshipleftMessage.java @@ -0,0 +1,68 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.ShiprotateleftProcedure; +import hal.studios.hpm.procedures.RotateshipleftkeyliftednotpressedProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class RotateshipleftMessage { + int type, pressedms; + + public RotateshipleftMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public RotateshipleftMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(RotateshipleftMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(RotateshipleftMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 0) { + + ShiprotateleftProcedure.execute(entity); + } + if (type == 1) { + + RotateshipleftkeyliftednotpressedProcedure.execute(entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(RotateshipleftMessage.class, RotateshipleftMessage::buffer, RotateshipleftMessage::new, RotateshipleftMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/RotateshiprightMessage.java b/src/main/java/hal/studios/hpm/network/RotateshiprightMessage.java new file mode 100644 index 0000000..e01348b --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/RotateshiprightMessage.java @@ -0,0 +1,68 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.ShiprotaterightProcedure; +import hal.studios.hpm.procedures.RotaterightnotpressedProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class RotateshiprightMessage { + int type, pressedms; + + public RotateshiprightMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public RotateshiprightMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(RotateshiprightMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(RotateshiprightMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 0) { + + ShiprotaterightProcedure.execute(entity); + } + if (type == 1) { + + RotaterightnotpressedProcedure.execute(entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(RotateshiprightMessage.class, RotateshiprightMessage::buffer, RotateshiprightMessage::new, RotateshiprightMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/SailspeeddownMessage.java b/src/main/java/hal/studios/hpm/network/SailspeeddownMessage.java new file mode 100644 index 0000000..ff6fc01 --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/SailspeeddownMessage.java @@ -0,0 +1,68 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.SailspeeddowntoggleProcedure; +import hal.studios.hpm.procedures.SailspeeddownonkeyreleasedProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class SailspeeddownMessage { + int type, pressedms; + + public SailspeeddownMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public SailspeeddownMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(SailspeeddownMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(SailspeeddownMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 0) { + + SailspeeddowntoggleProcedure.execute(entity); + } + if (type == 1) { + + SailspeeddownonkeyreleasedProcedure.execute(entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(SailspeeddownMessage.class, SailspeeddownMessage::buffer, SailspeeddownMessage::new, SailspeeddownMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/network/SailspeedupMessage.java b/src/main/java/hal/studios/hpm/network/SailspeedupMessage.java new file mode 100644 index 0000000..a648abf --- /dev/null +++ b/src/main/java/hal/studios/hpm/network/SailspeedupMessage.java @@ -0,0 +1,68 @@ + +package hal.studios.hpm.network; + +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import net.minecraft.world.level.Level; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.FriendlyByteBuf; + +import java.util.function.Supplier; + +import hal.studios.hpm.procedures.SailspeedupOnKeyReleasedProcedure; +import hal.studios.hpm.procedures.SailspeedupOnKeyPressedProcedure; +import hal.studios.hpm.HpmMod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class SailspeedupMessage { + int type, pressedms; + + public SailspeedupMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public SailspeedupMessage(FriendlyByteBuf buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(SailspeedupMessage message, FriendlyByteBuf buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(SailspeedupMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + + public static void pressAction(Player entity, int type, int pressedms) { + Level world = entity.level; + double x = entity.getX(); + double y = entity.getY(); + double z = entity.getZ(); + // security measure to prevent arbitrary chunk generation + if (!world.hasChunkAt(entity.blockPosition())) + return; + if (type == 0) { + + SailspeedupOnKeyPressedProcedure.execute(entity); + } + if (type == 1) { + + SailspeedupOnKeyReleasedProcedure.execute(entity); + } + } + + @SubscribeEvent + public static void registerMessage(FMLCommonSetupEvent event) { + HpmMod.addNetworkMessage(SailspeedupMessage.class, SailspeedupMessage::buffer, SailspeedupMessage::new, SailspeedupMessage::handler); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CanUseCannonHandProcedure.java b/src/main/java/hal/studios/hpm/procedures/CanUseCannonHandProcedure.java new file mode 100644 index 0000000..96c20cd --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CanUseCannonHandProcedure.java @@ -0,0 +1,16 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class CanUseCannonHandProcedure { + public static boolean execute(Entity entity) { + if (entity == null) + return false; + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFire) { + return true; + } + return false; + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ChildEntitySmoothingProcedure.java b/src/main/java/hal/studios/hpm/procedures/ChildEntitySmoothingProcedure.java new file mode 100644 index 0000000..feb3775 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ChildEntitySmoothingProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.commands.arguments.EntityAnchorArgument; + +public class ChildEntitySmoothingProcedure { + public static double execute(Entity entity) { + if (entity == null) + return 0; + double good_direction = 0; + double real_direction = 0; + if (!(null == (entity instanceof Mob _mobEnt ? (Entity) _mobEnt.getTarget() : null))) { + real_direction = entity.getYRot(); + entity.lookAt(EntityAnchorArgument.Anchor.EYES, new Vec3(((entity instanceof Mob _mobEnt ? (Entity) _mobEnt.getTarget() : null).getX()), ((entity instanceof Mob _mobEnt ? (Entity) _mobEnt.getTarget() : null).getY()), + ((entity instanceof Mob _mobEnt ? (Entity) _mobEnt.getTarget() : null).getZ()))); + good_direction = entity.getYRot(); + { + Entity _ent = entity; + _ent.setYRot((float) real_direction); + _ent.setXRot(0); + _ent.setYBodyRot(_ent.getYRot()); + _ent.setYHeadRot(_ent.getYRot()); + _ent.yRotO = _ent.getYRot(); + _ent.xRotO = _ent.getXRot(); + if (_ent instanceof LivingEntity _entity) { + _entity.yBodyRotO = _entity.getYRot(); + _entity.yHeadRotO = _entity.getYRot(); + } + } + if (Math.abs(good_direction - real_direction) > Math.abs((good_direction + 360) - real_direction)) { + good_direction = good_direction + 360; + } else if (Math.abs(good_direction - real_direction) > Math.abs((good_direction - 360) - real_direction)) { + good_direction = good_direction - 360; + } + return good_direction - real_direction; + } + return 0; + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipItemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipItemRightclickedProcedure.java new file mode 100644 index 0000000..ada59d8 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipItemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CorvetteSteamshipEntity; + +public class CorvetteSteamshipItemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CorvetteSteamshipEntity(HpmModEntities.CORVETTE_STEAMSHIP.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CORVETTE_STEAMSHIP_ITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnEntityTickUpdateProcedure.java b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnEntityTickUpdateProcedure.java new file mode 100644 index 0000000..aaaf698 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnEntityTickUpdateProcedure.java @@ -0,0 +1,20 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.particles.ParticleTypes; + +public class CorvetteSteamshipOnEntityTickUpdateProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double yawStart = 0; + double size = 0; + Entity followedEntity = null; + world.addParticle(ParticleTypes.LARGE_SMOKE, (entity.getX() - entity.getLookAngle().x * 2 * 1), (y + 4), (entity.getZ() - entity.getLookAngle().z * 2 * 1), 0.1, 0.3, 0.1); + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getX() - entity.getLookAngle().x * 2 * 1) - Math.random()), (y + 4), ((entity.getZ() - entity.getLookAngle().z * 2 * 1) - Math.random()), 0.1, 0.2, 0.1); + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getX() - entity.getLookAngle().x * 2 * 1) - Math.random()), (y + 4), ((entity.getZ() - entity.getLookAngle().z * 2 * 1) - Math.random()), 0.1, 0.2, 0.1); + SmallShipBuoyancyProcedure.execute(world, x, y, z, entity); + ShipRotationProcedure.execute(world, x, y, z, entity); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnInitialEntitySpawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnInitialEntitySpawnProcedure.java new file mode 100644 index 0000000..9b753ee --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CorvetteSteamshipOnInitialEntitySpawnProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class CorvetteSteamshipOnInitialEntitySpawnProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(350); + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CorvettedamagedspawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/CorvettedamagedspawnProcedure.java new file mode 100644 index 0000000..f80af21 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CorvettedamagedspawnProcedure.java @@ -0,0 +1,48 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CorvettesteamshipdamagedEntity; + +public class CorvettedamagedspawnProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CorvettesteamshipdamagedEntity(HpmModEntities.CORVETTESTEAMSHIPDAMAGED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CorvettesteamshipdamagedEntity && entityiterator.getPersistentData().getDouble("id") == 0) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + } + } + } + if (world instanceof Level _level && !_level.isClientSide()) + _level.explode(null, x, (y + 1), z, 3, Explosion.BlockInteraction.NONE); + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterEntityDiesProcedure.java new file mode 100644 index 0000000..091f50c --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterEntityDiesProcedure.java @@ -0,0 +1,74 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CutterEntityDiesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double ItemIterator = 0; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterdamagedEntity(HpmModEntities.CUTTERDAMAGED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CutterdamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 2, 2, 2), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CutterdamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + for (int index0 = 0; index0 < Math.round(2 + 4 * Math.random()); index0++) { + if (Math.random() > 0.1) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.5 + 1.2 * Math.random()), (0.2 + 0.7 * Math.random()), (-0.5 + 1.2 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.2 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterEntityIsHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterEntityIsHurtProcedure.java new file mode 100644 index 0000000..14d138f --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterEntityIsHurtProcedure.java @@ -0,0 +1,168 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterEntityIsHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + double itemiterator = 0; + double iterator = 0; + boolean Passenger = false; + boolean Seat = false; + boolean sail = false; + boolean pilotexists = false; + Entity Pilot = null; + Entity Cutter = null; + Entity NewShip = null; + SplinterParticlesProcedure.execute(world, x, y, z, entity); + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.CUTTERITEM.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } else if ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + Passenger = false; + Seat = false; + sail = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Passenger = true; + } + if (entityiterator instanceof CutterSeatEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Seat = true; + } + if (entityiterator instanceof CutterSailHitboxEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + sail = true; + } + } + } + if (Seat == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !Seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Seat = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship 2nd seat repaired"), true); + } + if (Passenger == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !Passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Passenger = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + if (sail == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailHitboxEntity(HpmModEntities.CUTTER_SAIL_HITBOX.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSailHitboxEntity && !sail) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + sail = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterOnEntityTickUpdateProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterOnEntityTickUpdateProcedure.java new file mode 100644 index 0000000..2d41bfd --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterOnEntityTickUpdateProcedure.java @@ -0,0 +1,23 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; + +public class CutterOnEntityTickUpdateProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + Entity player = null; + if ((world.getBlockState(new BlockPos(x, y + 0.525, z))).getBlock() instanceof LiquidBlock || (world.getBlockState(new BlockPos(x, y + 0.525, z))).getBlock() instanceof SimpleWaterloggedBlock + && ((world.getBlockState(new BlockPos(x, y + 0.525, z))).getBlock().getStateDefinition().getProperty("waterlogged") instanceof BooleanProperty _getbp5 + && (world.getBlockState(new BlockPos(x, y + 0.525, z))).getValue(_getbp5)) == true) { + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), 0.05, (entity.getDeltaMovement().z()))); + } + ShipRotationProcedure.execute(world, x, y, z, entity); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterOnInitialEntitySpawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterOnInitialEntitySpawnProcedure.java new file mode 100644 index 0000000..57c7008 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterOnInitialEntitySpawnProcedure.java @@ -0,0 +1,121 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterOnInitialEntitySpawnProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + boolean seat = false; + boolean passenger = false; + boolean sail = false; + if (!world.getEntitiesOfClass(ServerPlayer.class, AABB.ofSize(new Vec3(x, y, z), 2, 2, 2), e -> true).isEmpty()) { + entity.getPersistentData().putString("owner", "player"); + } + seat = false; + passenger = false; + sail = false; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(50); + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(3 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if (entity instanceof CutterPirateEntity) { + entityiterator.getPersistentData().putBoolean("pirate", true); + } else { + entityiterator.getPersistentData().putBoolean("pirate", false); + } + passenger = true; + } + } + } + } + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(3 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if (entity instanceof CutterPirateEntity) { + entityiterator.getPersistentData().putBoolean("pirate", true); + } else { + entityiterator.getPersistentData().putBoolean("pirate", false); + } + seat = true; + } + } + } + } + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailHitboxEntity(HpmModEntities.CUTTER_SAIL_HITBOX.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(3 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSailHitboxEntity && !sail) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if (entity instanceof CutterPirateEntity) { + entityiterator.getPersistentData().putBoolean("pirate", true); + } else { + entityiterator.getPersistentData().putBoolean("pirate", false); + } + sail = true; + } + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerEntityIsHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerEntityIsHurtProcedure.java new file mode 100644 index 0000000..7d34466 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerEntityIsHurtProcedure.java @@ -0,0 +1,34 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +public class CutterPassengerEntityIsHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship"))) && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.hurt(DamageSource.GENERIC, (float) ((entity instanceof LivingEntity _livEnt ? _livEnt.getMaxHealth() : -1) - (entity instanceof LivingEntity _livEnt ? _livEnt.getHealth() : -1))); + } + } + } + if (entity instanceof LivingEntity _entity) + _entity.setHealth(50); + SplinterParticlesProcedure.execute(world, x, y, z, entity); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnEntityTickUpdateProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnEntityTickUpdateProcedure.java new file mode 100644 index 0000000..357579a --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnEntityTickUpdateProcedure.java @@ -0,0 +1,59 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +public class CutterPassengerOnEntityTickUpdateProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double size = 0; + Entity Parent = null; + size = 2; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(16 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship")))) { + if (entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Parent = entityiterator; + } + } + } + } + if (!(Parent == null)) { + if (Parent.getDeltaMovement().x() > 0 || Parent.getDeltaMovement().x() < 0 || Parent.getDeltaMovement().z() > 0 || Parent.getDeltaMovement().z() < 0) { + size = 2.2; + } + entity.setDeltaMovement(new Vec3((Parent.getDeltaMovement().x()), (Parent.getDeltaMovement().y() + ((Parent.getY() + 0) - y) / 1), (Parent.getDeltaMovement().z()))); + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + if (entity.getY() > Parent.getY() + 0.4 || entity.getY() < Parent.getY() - 0.4) { + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + entity.setDeltaMovement(new Vec3((Parent.getDeltaMovement().x()), (Parent.getDeltaMovement().y()), (Parent.getDeltaMovement().z()))); + } + } else { + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnInitialEntitySpawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnInitialEntitySpawnProcedure.java new file mode 100644 index 0000000..8979b16 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerOnInitialEntitySpawnProcedure.java @@ -0,0 +1,11 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +public class CutterPassengerOnInitialEntitySpawnProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + entity.setNoGravity(true); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..4bd16a2 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerRightClickedOnEntityProcedure.java @@ -0,0 +1,66 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Iterator; +import java.util.Comparator; + +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterEntity; + +public class CutterPassengerRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + sourceentity.startRiding(entityiterator); + } + if ((entityiterator instanceof CutterEntity || entityiterator instanceof CutterdamagedEntity) && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + if (!(sourceentity instanceof ServerPlayer _plr8 && _plr8.level instanceof ServerLevel + && _plr8.getAdvancements().getOrStartProgress(_plr8.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } + if ((entityiterator instanceof CuttermilitarisedEntity || entityiterator instanceof CuttermilitariseddamagedEntity) && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + if (!(sourceentity instanceof ServerPlayer _plr14 && _plr14.level instanceof ServerLevel + && _plr14.getAdvancements().getOrStartProgress(_plr14.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:war_cutter_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:war_cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerSolidBoundingBoxConditionProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerSolidBoundingBoxConditionProcedure.java new file mode 100644 index 0000000..019875f --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerSolidBoundingBoxConditionProcedure.java @@ -0,0 +1,14 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +public class CutterPassengerSolidBoundingBoxConditionProcedure { + public static boolean execute(Entity entity) { + if (entity == null) + return false; + if (entity.getDeltaMovement().z() > 0.1 || entity.getDeltaMovement().x() > 0.1) { + return false; + } + return true; + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPassengerTransparentEntityModelConditionProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPassengerTransparentEntityModelConditionProcedure.java new file mode 100644 index 0000000..8189862 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPassengerTransparentEntityModelConditionProcedure.java @@ -0,0 +1,7 @@ +package hal.studios.hpm.procedures; + +public class CutterPassengerTransparentEntityModelConditionProcedure { + public static boolean execute() { + return true; + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityDiesProcedure.java new file mode 100644 index 0000000..4fa4dbe --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityDiesProcedure.java @@ -0,0 +1,72 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CutterpiratedamagedEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CutterPirateEntityDiesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterpiratedamagedEntity(HpmModEntities.CUTTERPIRATEDAMAGED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CutterpiratedamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if ((entity.getPersistentData().getString("owner")).equals("player")) { + ((Entity) world.getEntitiesOfClass(CutterpiratedamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putString("owner", "player"); + } + for (int index0 = 0; index0 < Math.round(2 + 4 * Math.random()); index0++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityIsHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityIsHurtProcedure.java new file mode 100644 index 0000000..d6536bb --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPirateEntityIsHurtProcedure.java @@ -0,0 +1,163 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterPirateEntityIsHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + boolean Seat = false; + boolean Passenger = false; + boolean sail = false; + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.PIRATE_CUTTER_ITEM.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } else if ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + Passenger = false; + Seat = false; + sail = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Passenger = true; + } + if (entityiterator instanceof CutterSeatEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Seat = true; + } + if (entityiterator instanceof CutterSailHitboxEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + sail = true; + } + } + } + if (Seat == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !Seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Seat = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship 2nd seat repaired"), true); + } + if (Passenger == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !Passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Passenger = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + if (sail == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailHitboxEntity(HpmModEntities.CUTTER_SAIL_HITBOX.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSailHitboxEntity && !sail) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + sail = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + } else { + SplinterParticlesProcedure.execute(world, x, y, z, entity); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPirateRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPirateRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..0a862c3 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPirateRightClickedOnEntityProcedure.java @@ -0,0 +1,45 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class CutterPirateRightClickedOnEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + { + double _setval = entity.getPersistentData().getDouble("id"); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr2 && _plr2.level instanceof ServerLevel + && _plr2.getAdvancements().getOrStartProgress(_plr2.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:pirate_cutter_achievement"))).isDone()) && !(entity.getPersistentData().getString("owner")).equals("player")) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:pirate_cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterPlayerCollidesWithThisEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterPlayerCollidesWithThisEntityProcedure.java new file mode 100644 index 0000000..05ce609 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterPlayerCollidesWithThisEntityProcedure.java @@ -0,0 +1,22 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.entity.Entity; + +public class CutterPlayerCollidesWithThisEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + double Xv = 0; + double Yv = 0; + double Zv = 0; + Yv = sourceentity.getDeltaMovement().y() + 0.01; + Xv = sourceentity.getDeltaMovement().x(); + Zv = sourceentity.getDeltaMovement().z(); + if (entity.getDeltaMovement().x() > 0 || entity.getDeltaMovement().x() < 0 || entity.getDeltaMovement().z() > 0 || entity.getDeltaMovement().z() < 0) { + sourceentity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), (sourceentity.getDeltaMovement().y()), (entity.getDeltaMovement().z()))); + } else if (entity.getDeltaMovement().y() > sourceentity.getDeltaMovement().y() && sourceentity.getY() - entity.getY() < 0.1) { + sourceentity.setDeltaMovement(new Vec3(Xv, (entity.getDeltaMovement().y()), Zv)); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..c848f81 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterRightClickedOnEntityProcedure.java @@ -0,0 +1,157 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Iterator; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + boolean Seat = false; + boolean sail = false; + boolean Passenger = false; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + { + double _setval = entity.getPersistentData().getDouble("id"); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr2 && _plr2.level instanceof ServerLevel && _plr2.getAdvancements().getOrStartProgress(_plr2.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + Passenger = false; + sail = false; + Seat = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Passenger = true; + } + if (entityiterator instanceof CutterSeatEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Seat = true; + } + if (entityiterator instanceof CutterSailHitboxEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + sail = true; + } + } + } + if (Seat == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !Seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Seat = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship 2nd seat repaired"), true); + } + if (Passenger == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !Passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Passenger = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + if (sail == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailHitboxEntity(HpmModEntities.CUTTER_SAIL_HITBOX.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSailHitboxEntity && !sail) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + sail = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityDiesProcedure.java new file mode 100644 index 0000000..1f7ad13 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityDiesProcedure.java @@ -0,0 +1,180 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.entity.CutterSailsDamagedEntity; +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.entity.CutterPirateDamagedSailsEntity; +import hal.studios.hpm.entity.CutterMilitarisedDamagedSailsEntity; +import hal.studios.hpm.entity.CutterEntity; + +public class CutterSailHitboxEntityDiesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double iterator = 0; + Entity NewShip = null; + Entity Pilot = null; + Entity Cutter = null; + boolean pilotexists = false; + boolean Cuttermaritime = false; + boolean CutterWeaponised = false; + boolean CutterPirate = false; + Cuttermaritime = false; + CutterWeaponised = false; + CutterPirate = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(5 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailsDamagedEntity(HpmModEntities.CUTTER_SAILS_DAMAGED.get(), _level); + entityToSpawn.moveTo((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()), entityiterator.getYRot(), 0); + entityToSpawn.setYBodyRot(entityiterator.getYRot()); + entityToSpawn.setYHeadRot(entityiterator.getYRot()); + entityToSpawn.setDeltaMovement((entityiterator.getDeltaMovement().x()), (entityiterator.getDeltaMovement().y()), (entityiterator.getDeltaMovement().z())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CutterSailsDamagedEntity.class, AABB.ofSize(new Vec3((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ())), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()))).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Cutter = entityiterator; + Cuttermaritime = true; + } + if (entityiterator instanceof CutterPirateEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPirateDamagedSailsEntity(HpmModEntities.CUTTER_PIRATE_DAMAGED_SAILS.get(), _level); + entityToSpawn.moveTo((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()), entityiterator.getYRot(), 0); + entityToSpawn.setYBodyRot(entityiterator.getYRot()); + entityToSpawn.setYHeadRot(entityiterator.getYRot()); + entityToSpawn.setDeltaMovement((entityiterator.getDeltaMovement().x()), (entityiterator.getDeltaMovement().y()), (entityiterator.getDeltaMovement().z())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CutterPirateDamagedSailsEntity.class, AABB.ofSize(new Vec3((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ())), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()))).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if ((entityiterator.getPersistentData().getString("owner")).equals("player")) { + ((Entity) world.getEntitiesOfClass(CutterPirateDamagedSailsEntity.class, AABB.ofSize(new Vec3((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ())), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()))).findFirst().orElse(null)).getPersistentData().putString("owner", "player"); + } + Cutter = entityiterator; + CutterPirate = true; + } + if (entityiterator instanceof CuttermilitarisedEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterMilitarisedDamagedSailsEntity(HpmModEntities.CUTTER_MILITARISED_DAMAGED_SAILS.get(), _level); + entityToSpawn.moveTo((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()), entityiterator.getYRot(), 0); + entityToSpawn.setYBodyRot(entityiterator.getYRot()); + entityToSpawn.setYHeadRot(entityiterator.getYRot()); + entityToSpawn.setDeltaMovement((entityiterator.getDeltaMovement().x()), (entityiterator.getDeltaMovement().y()), (entityiterator.getDeltaMovement().z())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CutterMilitarisedDamagedSailsEntity.class, AABB.ofSize(new Vec3((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ())), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf((entityiterator.getX()), (entityiterator.getY()), (entityiterator.getZ()))).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Cutter = entityiterator; + CutterWeaponised = true; + } + } + } + pilotexists = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(5 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (Cuttermaritime && entityiterator instanceof CutterSailsDamagedEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + NewShip = entityiterator; + } + if (CutterWeaponised && entityiterator instanceof CutterMilitarisedDamagedSailsEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + NewShip = entityiterator; + } + if (CutterPirate && entityiterator instanceof CutterPirateDamagedSailsEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + NewShip = entityiterator; + } + if (entityiterator instanceof ServerPlayer + && (entityiterator.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipPilotingID == entity.getPersistentData().getDouble("id")) { + Pilot = entityiterator; + pilotexists = true; + } + } + } + if (!(Cutter.getDisplayName().getString()).equals("cutter")) { + NewShip.setCustomName(new TextComponent((Cutter.getDisplayName().getString()))); + } + if (NewShip instanceof LivingEntity _entity) + _entity.setHealth(Cutter instanceof LivingEntity _livEnt ? _livEnt.getHealth() : -1); + iterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + Cutter.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) iterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) iterator, Cutter)); + _setstack.setCount((itemstackiterator).getCount()); + NewShip.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + iterator = iterator + 1; + } + } + } + if (pilotexists) { + Pilot.startRiding(NewShip); + } + if (!Cutter.level.isClientSide()) + Cutter.discard(); + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityIsHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityIsHurtProcedure.java new file mode 100644 index 0000000..0170c48 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxEntityIsHurtProcedure.java @@ -0,0 +1,48 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModParticleTypes; +import hal.studios.hpm.entity.CutterPirateEntity; + +public class CutterSailHitboxEntityIsHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double Repeat = 0; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(8 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship_pristine"))) && entityiterator instanceof CutterPirateEntity + && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Repeat = Math.round(20 * Math.random()); + for (int index0 = 0; index0 < (int) Repeat; index0++) { + world.addParticle((SimpleParticleType) (HpmModParticleTypes.RIPPED_SAIL_PIRATE.get()), (x + -0.5 + 1 * Math.random()), (y + -1 + 3 * Math.random()), (z + -0.5 + 1 * Math.random()), + (entity.getDeltaMovement().x() + -1 + 2 * Math.random()), (entity.getDeltaMovement().y() + Math.random()), (entity.getDeltaMovement().z() + -1 + 2 * Math.random())); + } + break; + } else if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship_pristine"))) + && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Repeat = Math.round(20 * Math.random()); + for (int index1 = 0; index1 < (int) Repeat; index1++) { + world.addParticle((SimpleParticleType) (HpmModParticleTypes.RIPPED_SAIL.get()), (x + -0.5 + 1 * Math.random()), (y + -1 + 3 * Math.random()), (z + -0.5 + 1 * Math.random()), + (entity.getDeltaMovement().x() + -1 + 2 * Math.random()), (entity.getDeltaMovement().y() + Math.random()), (entity.getDeltaMovement().z() + -1 + 2 * Math.random())); + } + break; + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..770c4fd --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSailHitboxRightClickedOnEntityProcedure.java @@ -0,0 +1,67 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.entity.CutterSeatEntity; + +public class CutterSailHitboxRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + Entity Cutter = null; + Entity FrontSeat = null; + boolean Front = false; + boolean Back = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship"))) && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + Cutter = entityiterator; + if (entityiterator.isVehicle()) { + Back = false; + } else { + Back = true; + } + } + } + } + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && entity.getPersistentData().getDouble("id") == entityiterator.getPersistentData().getDouble("id")) { + FrontSeat = entityiterator; + if (entityiterator.isVehicle()) { + Front = false; + } else { + Front = true; + } + } + } + } + if (Back && !(Cutter == null)) { + { + double _setval = Cutter.getPersistentData().getDouble("id"); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(entity); + }); + } + sourceentity.startRiding(Cutter); + } else if (Front && !(FrontSeat == null)) { + sourceentity.startRiding(FrontSeat); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSailsDamagedRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSailsDamagedRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..2dcd059 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSailsDamagedRightClickedOnEntityProcedure.java @@ -0,0 +1,127 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Iterator; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterSailsDamagedRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + boolean Seat = false; + boolean sail = false; + boolean Passenger = false; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + { + double _setval = entity.getPersistentData().getDouble("id"); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr2 && _plr2.level instanceof ServerLevel && _plr2.getAdvancements().getOrStartProgress(_plr2.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + Passenger = false; + sail = false; + Seat = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Passenger = true; + } + if (entityiterator instanceof CutterSeatEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Seat = true; + } + } + } + if (Seat == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !Seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Seat = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship 2nd seat repaired"), true); + } + if (Passenger == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !Passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Passenger = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSeatEntityIsHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSeatEntityIsHurtProcedure.java new file mode 100644 index 0000000..609e497 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSeatEntityIsHurtProcedure.java @@ -0,0 +1,13 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +public class CutterSeatEntityIsHurtProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(50); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterSeatTickProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterSeatTickProcedure.java new file mode 100644 index 0000000..3367cea --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterSeatTickProcedure.java @@ -0,0 +1,83 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +public class CutterSeatTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + Entity Parent = null; + double size = 0; + double X = 0; + double Z = 0; + size = 1.8; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(16 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship")))) { + if (entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Parent = entityiterator; + } + } + } + } + if (!(Parent == null)) { + if (Parent.getDeltaMovement().x() > 0.01 || Parent.getDeltaMovement().x() < -0.01 || Parent.getDeltaMovement().z() > 0.01 || Parent.getDeltaMovement().z() < -0.01) { + size = 1.8; + entity.setDeltaMovement(new Vec3((Parent.getDeltaMovement().x() + ((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)) - x) / 1), (Parent.getDeltaMovement().y() + ((Parent.getY() + 0.9) - y) / 1), + (Parent.getDeltaMovement().z() + ((Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)) - z) / 1))); + if (entity.getX() > Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1) + 0.2 || entity.getX() < (Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)) - 0.2 + || entity.getZ() > Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1) + 0.2 || entity.getZ() < (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)) - 0.2) { + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + } + if (entity.getY() > Parent.getY() + 1.2 || entity.getY() < Parent.getY() + 0.6) { + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 0.9), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 0.9), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + } + } else { + if (entity.getX() > Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1) + 0.05 || entity.getX() < (Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)) - 0.05 + || entity.getZ() > Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1) + 0.05 || entity.getZ() < (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)) - 0.05) { + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (entity.getY()), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + } + if (entity.getY() > Parent.getY() + 1.05 || entity.getY() < Parent.getY() + 0.75) { + { + Entity _ent = entity; + _ent.teleportTo((entity.getX()), (Parent.getY() + 0.9), (entity.getZ())); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((entity.getX()), (Parent.getY() + 0.9), (entity.getZ()), _ent.getYRot(), _ent.getXRot()); + } + } + entity.setDeltaMovement(new Vec3(0, (Parent.getDeltaMovement().y() + ((Parent.getY() + 0.9) - y) / 10), 0)); + } + } else { + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterdamagedOnEntityTickUpdateProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterdamagedOnEntityTickUpdateProcedure.java new file mode 100644 index 0000000..fe07efa --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterdamagedOnEntityTickUpdateProcedure.java @@ -0,0 +1,29 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.BlockPos; + +public class CutterdamagedOnEntityTickUpdateProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double yawStart = 0; + Entity followedEntity = null; + if (entity.getPersistentData().getDouble("SmokePos") == 0) { + entity.getPersistentData().putDouble("SmokePos", (-1.2 + 4.4 * Math.random())); + } + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, ((entity.getX() + entity.getLookAngle().x * entity.getPersistentData().getDouble("SmokePos") * 1) - Math.random()), y, + ((entity.getZ() + entity.getLookAngle().z * entity.getPersistentData().getDouble("SmokePos") * 1) - Math.random()), 0.03, 0.1, 0.03); + if ((world.getBlockState(new BlockPos(x, y + 0.425, z))).getBlock() == Blocks.WATER || (world.getBlockState(new BlockPos(x, y + 0.425, z))).getBlock() instanceof SimpleWaterloggedBlock + && (world.getBlockState(new BlockPos(x, y + 0.425, z))).getBlock().getStateDefinition().getProperty("waterlogged") instanceof BooleanProperty _getbp14 && (world.getBlockState(new BlockPos(x, y + 0.425, z))).getValue(_getbp14)) { + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), 0.03, (entity.getDeltaMovement().z()))); + } + ShipRotationProcedure.execute(world, x, y, z, entity); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterdestroyedProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterdestroyedProcedure.java new file mode 100644 index 0000000..a1f439b --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterdestroyedProcedure.java @@ -0,0 +1,81 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.core.particles.ParticleTypes; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CutterwreckfrontEntity; +import hal.studios.hpm.entity.CutterwreckbackEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CutterdestroyedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double random = 0; + random = 0.3 * Math.random(); + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterwreckbackEntity(HpmModEntities.CUTTERWRECKBACK.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement((entity.getLookAngle().x * (-1) * random), Math.random(), (entity.getLookAngle().z * (-1) * random)); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterwreckfrontEntity(HpmModEntities.CUTTERWRECKFRONT.get(), _level); + entityToSpawn.moveTo((x + entity.getLookAngle().x * 1.5), y, (z + entity.getLookAngle().z * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement((entity.getLookAngle().x * random), Math.random(), (entity.getLookAngle().z * random)); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < 25; index0++) { + world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, (x + Math.random()), (y + Math.random()), (z - Math.random()), 0.1, 0.3, 0.1); + world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, (x + 1), (y + Math.random()), (z + 1), 0.1, 0.3, 0.1); + world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, (x - 1), (y + Math.random()), (z - 1), 0.1, 0.3, 0.1); + world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, (x - 2), (y + Math.random()), (z - 2), 0.1, 0.3, 0.1); + world.addParticle(ParticleTypes.CAMPFIRE_SIGNAL_SMOKE, (x + 2), (y + Math.random()), (z + 2), 0.1, 0.3, 0.1); + } + for (int index1 = 0; index1 < Math.round(3 + 7 * Math.random()); index1++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (world instanceof Level _level && !_level.isClientSide()) + _level.explode(null, (x + entity.getLookAngle().x * 0.7), y, (z + entity.getLookAngle().z * 0.7), (float) 0.5, Explosion.BlockInteraction.BREAK); + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutteritemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutteritemRightclickedProcedure.java new file mode 100644 index 0000000..2799327 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutteritemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterEntity; + +public class CutteritemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterEntity(HpmModEntities.CUTTER.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CUTTERITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CuttermilitarisedRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/CuttermilitarisedRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..ebfd13a --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CuttermilitarisedRightClickedOnEntityProcedure.java @@ -0,0 +1,38 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class CuttermilitarisedRightClickedOnEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr1 && _plr1.level instanceof ServerLevel + && _plr1.getAdvancements().getOrStartProgress(_plr1.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:war_cutter_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:war_cutter_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamageProcedure.java b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamageProcedure.java new file mode 100644 index 0000000..0820897 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamageProcedure.java @@ -0,0 +1,74 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CuttermilitariseddamageProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double ItemIterator = 0; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CuttermilitariseddamagedEntity(HpmModEntities.CUTTERMILITARISEDDAMAGED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + ((Entity) world.getEntitiesOfClass(CuttermilitariseddamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 2, 2, 2), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CuttermilitariseddamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + for (int index0 = 0; index0 < Math.round(2 + 4 * Math.random()); index0++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamagedEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamagedEntityDiesProcedure.java new file mode 100644 index 0000000..8d1ea79 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseddamagedEntityDiesProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CutterMilitarisedWreckEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CuttermilitariseddamagedEntityDiesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterMilitarisedWreckEntity(HpmModEntities.CUTTER_MILITARISED_WRECK.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < Math.round(3 + 7 * Math.random()); index0++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CuttermilitariseditemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseditemRightclickedProcedure.java new file mode 100644 index 0000000..9492cea --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CuttermilitariseditemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CuttermilitarisedEntity; + +public class CuttermilitariseditemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CuttermilitarisedEntity(HpmModEntities.CUTTERMILITARISED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CUTTERMILITARISEDITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterpiratedamagedNaturalEntitySpawningConditionProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterpiratedamagedNaturalEntitySpawningConditionProcedure.java new file mode 100644 index 0000000..9c22539 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterpiratedamagedNaturalEntitySpawningConditionProcedure.java @@ -0,0 +1,21 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.core.BlockPos; + +import hal.studios.hpm.entity.CutterpiratedamagedEntity; + +public class CutterpiratedamagedNaturalEntitySpawningConditionProcedure { + public static boolean execute(LevelAccessor world, double x, double y, double z) { + if (!world.getEntitiesOfClass(CutterpiratedamagedEntity.class, AABB.ofSize(new Vec3(x, y, z), 64, 64, 64), e -> true).isEmpty() == false) { + if ((world.getBlockState(new BlockPos(x, y + 1, z))).getBlock() == Blocks.AIR && (world.getBlockState(new BlockPos(x, y, z))).getBlock() == Blocks.WATER + || (world.getBlockState(new BlockPos(x, y - 1, z))).getBlock() == Blocks.WATER && (world.getBlockState(new BlockPos(x, y, z))).getBlock() == Blocks.AIR) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterpiratedwreckProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterpiratedwreckProcedure.java new file mode 100644 index 0000000..21f0d29 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterpiratedwreckProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.CutterpiratewreckEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class CutterpiratedwreckProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterpiratewreckEntity(HpmModEntities.CUTTERPIRATEWRECK.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < Math.round(3 + 7 * Math.random()); index0++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/CutterpirateoninitialspawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/CutterpirateoninitialspawnProcedure.java new file mode 100644 index 0000000..9785349 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/CutterpirateoninitialspawnProcedure.java @@ -0,0 +1,71 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class CutterpirateoninitialspawnProcedure { + public static void execute(LevelAccessor world, double y, Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(100); + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (HpmModVariables.MapVariables.get(world).IDcounter - 1)); + } + } + } + } + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (HpmModVariables.MapVariables.get(world).IDcounter - 1)); + } + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/DamagedcutteroninitialspawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/DamagedcutteroninitialspawnProcedure.java new file mode 100644 index 0000000..784e219 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/DamagedcutteroninitialspawnProcedure.java @@ -0,0 +1,16 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.common.ForgeMod; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +public class DamagedcutteroninitialspawnProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(50); + ((LivingEntity) entity).getAttribute(ForgeMod.SWIM_SPEED.get()).setBaseValue(1.5); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/FireLeftProcedure.java b/src/main/java/hal/studios/hpm/procedures/FireLeftProcedure.java new file mode 100644 index 0000000..43e402f --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/FireLeftProcedure.java @@ -0,0 +1,192 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.GameType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.Registry; +import net.minecraft.client.Minecraft; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.HandCannonEntity; + +public class FireLeftProcedure { + public static void execute(LevelAccessor world, double y, Entity entity) { + if (entity == null) + return; + double vectorY = 0; + double vectorX = 0; + if (entity.isPassenger() && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFireLeft) { + if ((entity instanceof Player _playerHasItem ? _playerHasItem.getInventory().contains(new ItemStack(HpmModItems.CANNONBALL.get())) : false) || new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.CREATIVE; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.CREATIVE; + } + return false; + } + }.checkGamemode(entity)) { + if (!(entity instanceof ServerPlayer _plr3 && _plr3.level instanceof ServerLevel + && _plr3.getAdvancements().getOrStartProgress(_plr3.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement"))).isDone())) { + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + if ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:side_cannons")))) { + vectorX = (entity.getVehicle()).getLookAngle().x * Math.cos(Math.toRadians(-90)) - (entity.getVehicle()).getLookAngle().z * Math.sin(Math.toRadians(-90)); + vectorY = (entity.getVehicle()).getLookAngle().x * Math.sin(Math.toRadians(-90)) + (entity.getVehicle()).getLookAngle().z * Math.cos(Math.toRadians(-90)); + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback, byte piercing) { + AbstractArrow entityToSpawn = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setPierceLevel(piercing); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 4, 0, (byte) 2); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1.1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1)); + _entityToSpawn.shoot(vectorX, 0.05, vectorY, 3, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireLeft = _setval; + capability.syncPlayerVariables(entity); + }); + } + for (int index0 = 0; index0 < 15; index0++) { + for (int index1 = 0; index1 < 3; index1++) { + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1), + ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1), ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.5 * (0.7 + 0.3 * Math.random())), (-0.1 + 0.2 * Math.random()), + ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.5 * (0.7 + 0.3 * Math.random()))); + } + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1), + ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.3 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.3 * Math.random())); + world.addParticle(ParticleTypes.FLAME, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 1), + ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.1 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.1 * Math.random())); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CANNONBALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireLeft = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 20); + } else { + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) { + AbstractArrow entityToSpawn = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setCritArrow(true); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 4, 0); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 1)); + _entityToSpawn.shoot(((entity.getVehicle()).getLookAngle().x), 0.1, ((entity.getVehicle()).getLookAngle().z), 3, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CANNONBALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + } + } else { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Missing Cannon Ammunition"), true); + } + } else if (!(entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFireLeft) { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Cannons on cooldown"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/FireOnKeyReleasedProcedure.java b/src/main/java/hal/studios/hpm/procedures/FireOnKeyReleasedProcedure.java new file mode 100644 index 0000000..4e611af --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/FireOnKeyReleasedProcedure.java @@ -0,0 +1,161 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.GameType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.Registry; +import net.minecraft.client.Minecraft; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.HandCannonEntity; + +public class FireOnKeyReleasedProcedure { + public static void execute(LevelAccessor world, double y, Entity entity) { + if (entity == null) + return; + double vectorY = 0; + double vectorX = 0; + Entity ship = null; + if (entity.isPassenger() && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFire) { + ship = entity.getVehicle(); + if ((entity instanceof Player _playerHasItem ? _playerHasItem.getInventory().contains(new ItemStack(HpmModItems.CANNONBALL.get())) : false) || new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.CREATIVE; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.CREATIVE; + } + return false; + } + }.checkGamemode(entity)) { + if (!(entity instanceof ServerPlayer _plr4 && _plr4.level instanceof ServerLevel + && _plr4.getAdvancements().getOrStartProgress(_plr4.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement"))).isDone())) { + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + if ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:front_cannon")))) { + vectorX = (entity.getVehicle()).getLookAngle().x; + vectorY = (entity.getVehicle()).getLookAngle().z; + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback, byte piercing) { + AbstractArrow entityToSpawn = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setPierceLevel(piercing); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 4, 0, (byte) 2); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2)); + _entityToSpawn.shoot(vectorX, 0.1, vectorY, 3, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + for (int index0 = 0; index0 < 15; index0++) { + for (int index1 = 0; index1 < 3; index1++) { + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1), + ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.5 * (0.7 + 0.3 * Math.random())), (-0.1 + 0.2 * Math.random()), + ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.5 * (0.7 + 0.3 * Math.random()))); + } + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), + ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.3 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.3 * Math.random())); + world.addParticle(ParticleTypes.FLAME, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), + ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.1 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.1 * Math.random())); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CANNONBALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 20); + } + } else { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Missing cannon ammunition"), true); + } + } else if (!(entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFire + && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:front_cannon")))) { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Cannon on cooldown"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/FirerightProcedure.java b/src/main/java/hal/studios/hpm/procedures/FirerightProcedure.java new file mode 100644 index 0000000..5f93b11 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/FirerightProcedure.java @@ -0,0 +1,195 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.GameType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.Registry; +import net.minecraft.client.Minecraft; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.HandCannonEntity; + +public class FirerightProcedure { + public static void execute(LevelAccessor world, double y, Entity entity) { + if (entity == null) + return; + double vectorX = 0; + double vectorY = 0; + double yawStart = 0; + double size = 0; + Entity followedEntity = null; + if (entity.isPassenger() && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFireRight) { + if ((entity instanceof Player _playerHasItem ? _playerHasItem.getInventory().contains(new ItemStack(HpmModItems.CANNONBALL.get())) : false) || new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.CREATIVE; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.CREATIVE; + } + return false; + } + }.checkGamemode(entity)) { + if (!(entity instanceof ServerPlayer _plr3 && _plr3.level instanceof ServerLevel + && _plr3.getAdvancements().getOrStartProgress(_plr3.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement"))).isDone())) { + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + if ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:side_cannons")))) { + vectorX = (entity.getVehicle()).getLookAngle().x * Math.cos(Math.toRadians(90)) - (entity.getVehicle()).getLookAngle().z * Math.sin(Math.toRadians(90)); + vectorY = (entity.getVehicle()).getLookAngle().x * Math.sin(Math.toRadians(90)) + (entity.getVehicle()).getLookAngle().z * Math.cos(Math.toRadians(90)); + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback, byte piercing) { + AbstractArrow entityToSpawn = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setPierceLevel(piercing); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 4, 0, (byte) 2); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1.1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1)); + _entityToSpawn.shoot(vectorX, 0.05, vectorY, 3, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireRight = _setval; + capability.syncPlayerVariables(entity); + }); + } + for (int index0 = 0; index0 < 15; index0++) { + for (int index1 = 0; index1 < 3; index1++) { + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1), + ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1), ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.5 * (0.7 + 0.3 * Math.random())), (-0.1 + 0.2 * Math.random()), + ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.5 * (0.7 + 0.3 * Math.random()))); + } + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 1.9 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 1.9 * 1), + ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.3 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.3 * Math.random())); + world.addParticle(ParticleTypes.FLAME, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 1), + ((entity.getVehicle()).getDeltaMovement().x() + vectorX * 0.1 * Math.random()), (-0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getDeltaMovement().z() + vectorY * 0.1 * Math.random())); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CANNONBALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireRight = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 20); + } else { + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) { + AbstractArrow entityToSpawn = new HandCannonEntity(HpmModEntities.HAND_CANNON.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setCritArrow(true); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 4, 0); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 1), (y + 1), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 1)); + _entityToSpawn.shoot(((entity.getVehicle()).getLookAngle().x), 0.1, ((entity.getVehicle()).getLookAngle().z), 3, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.CANNONBALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + } + } else { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Missing Cannon Ammunition"), true); + } + } else if (!(entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFireRight) { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Cannons on cooldown"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsBlockProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsBlockProcedure.java new file mode 100644 index 0000000..dab218e --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsBlockProcedure.java @@ -0,0 +1,21 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.core.BlockPos; + +public class HandCannonProjectileHitsBlockProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (!((world.getBlockState(new BlockPos(x, y + 1, z))).getBlock() instanceof LiquidBlock) + && !((world.getBlockState(new BlockPos(x, y, z))).getBlock().getStateDefinition().getProperty("waterlogged") instanceof BooleanProperty _getbp3 && (world.getBlockState(new BlockPos(x, y, z))).getValue(_getbp3)) + && !((world.getBlockState(new BlockPos(x, y, z))).getBlock() instanceof LiquidBlock)) { + { + BlockPos _pos = new BlockPos(x, y, z); + Block.dropResources(world.getBlockState(_pos), world, new BlockPos(x, y, z), null); + world.destroyBlock(_pos, false); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsLivingEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsLivingEntityProcedure.java new file mode 100644 index 0000000..1dc8869 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandCannonProjectileHitsLivingEntityProcedure.java @@ -0,0 +1,20 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +public class HandCannonProjectileHitsLivingEntityProcedure { + public static void execute(LevelAccessor world, Entity entity, Entity immediatesourceentity) { + if (entity == null || immediatesourceentity == null) + return; + entity.hurt(DamageSource.GENERIC, 1); + if (entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:ship_hull")))) { + if (!immediatesourceentity.level.isClientSide()) + immediatesourceentity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandCannonRangedItemUsedProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandCannonRangedItemUsedProcedure.java new file mode 100644 index 0000000..4164e78 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandCannonRangedItemUsedProcedure.java @@ -0,0 +1,74 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class HandCannonRangedItemUsedProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (!(entity instanceof ServerPlayer _plr0 && _plr0.level instanceof ServerLevel && _plr0.getAdvancements().getOrStartProgress(_plr0.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement"))).isDone())) { + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + HandMortarCanUseRangedItemProcedure.execute(entity); + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 20); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandMortarCanUseRangedItemProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandMortarCanUseRangedItemProcedure.java new file mode 100644 index 0000000..30c1f10 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandMortarCanUseRangedItemProcedure.java @@ -0,0 +1,12 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.entity.Entity; + +public class HandMortarCanUseRangedItemProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x() + entity.getLookAngle().x * 2), (entity.getDeltaMovement().y()), (entity.getDeltaMovement().z() + entity.getLookAngle().z * 2))); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsBlockProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsBlockProcedure.java new file mode 100644 index 0000000..c1216d3 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsBlockProcedure.java @@ -0,0 +1,12 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.Explosion; + +public class HandMortarProjectileHitsBlockProcedure { + public static void execute(LevelAccessor world, double x, double y, double z) { + if (world instanceof Level _level && !_level.isClientSide()) + _level.explode(null, x, y, z, 3, Explosion.BlockInteraction.BREAK); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsLivingEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsLivingEntityProcedure.java new file mode 100644 index 0000000..9f42ed0 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandMortarProjectileHitsLivingEntityProcedure.java @@ -0,0 +1,23 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +public class HandMortarProjectileHitsLivingEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity immediatesourceentity) { + if (entity == null || immediatesourceentity == null) + return; + entity.setSecondsOnFire(3); + if (entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:ship_hull")))) { + if (world instanceof Level _level && !_level.isClientSide()) + _level.explode(null, x, y, z, 2, Explosion.BlockInteraction.BREAK); + if (!immediatesourceentity.level.isClientSide()) + immediatesourceentity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/HandMortarWhileProjectileFlyingTickProcedure.java b/src/main/java/hal/studios/hpm/procedures/HandMortarWhileProjectileFlyingTickProcedure.java new file mode 100644 index 0000000..ea331c6 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/HandMortarWhileProjectileFlyingTickProcedure.java @@ -0,0 +1,13 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.particles.ParticleTypes; + +public class HandMortarWhileProjectileFlyingTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + world.addParticle(ParticleTypes.CLOUD, x, y, z, (entity.getDeltaMovement().x()), (entity.getDeltaMovement().y()), (entity.getDeltaMovement().z())); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/IDZeroCheckProcedure.java b/src/main/java/hal/studios/hpm/procedures/IDZeroCheckProcedure.java new file mode 100644 index 0000000..c27ff24 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/IDZeroCheckProcedure.java @@ -0,0 +1,18 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class IDZeroCheckProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (entity.getPersistentData().getDouble("id") == 0) { + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/MilCutterHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/MilCutterHurtProcedure.java new file mode 100644 index 0000000..9e444c4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/MilCutterHurtProcedure.java @@ -0,0 +1,163 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.network.chat.TextComponent; + +import java.util.stream.Collectors; +import java.util.concurrent.atomic.AtomicReference; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterSeatEntity; +import hal.studios.hpm.entity.CutterSailHitboxEntity; +import hal.studios.hpm.entity.CutterPassengerEntity; + +public class MilCutterHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + boolean Seat = false; + boolean Passenger = false; + boolean sail = false; + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.CUTTERMILITARISEDITEM.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } else if ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + Passenger = false; + Seat = false; + sail = false; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(4 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Passenger = true; + } + if (entityiterator instanceof CutterSeatEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Seat = true; + } + if (entityiterator instanceof CutterSailHitboxEntity && entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + sail = true; + } + } + } + if (Seat == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSeatEntity(HpmModEntities.CUTTER_SEAT.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSeatEntity && !Seat) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Seat = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship 2nd seat repaired"), true); + } + if (Passenger == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPassengerEntity(HpmModEntities.CUTTER_PASSENGER.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1), y, (entity.getZ() + entity.getLookAngle().z * 2 * 1)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterPassengerEntity && !Passenger) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + Passenger = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + if (sail == false) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterSailHitboxEntity(HpmModEntities.CUTTER_SAIL_HITBOX.get(), _level); + entityToSpawn.moveTo((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5), entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + final Vec3 _center = new Vec3((entity.getX() + entity.getLookAngle().x * 2 * 1.5), (y + 1.4), (entity.getZ() + entity.getLookAngle().z * 2 * 1.5)); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(1 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof CutterSailHitboxEntity && !sail) { + if (0 == entityiterator.getPersistentData().getDouble("id")) { + entityiterator.getPersistentData().putDouble("id", (entity.getPersistentData().getDouble("id"))); + sail = true; + } + } + } + } + if (sourceentity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Ship Front Hitbox repaired"), true); + } + } else { + SplinterParticlesProcedure.execute(world, x, y, z, entity); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/MortarFireProcedure.java b/src/main/java/hal/studios/hpm/procedures/MortarFireProcedure.java new file mode 100644 index 0000000..a74f578 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/MortarFireProcedure.java @@ -0,0 +1,161 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.GameType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.Registry; +import net.minecraft.client.Minecraft; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.HandMortarEntity; + +public class MortarFireProcedure { + public static void execute(LevelAccessor world, double y, Entity entity) { + if (entity == null) + return; + double vectorY = 0; + double vectorX = 0; + Entity ship = null; + if (entity.isPassenger() && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFire) { + ship = entity.getVehicle(); + if ((entity instanceof Player _playerHasItem ? _playerHasItem.getInventory().contains(new ItemStack(HpmModItems.MORTAR_BALL.get())) : false) || new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.CREATIVE; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.CREATIVE; + } + return false; + } + }.checkGamemode(entity)) { + if (!(entity instanceof ServerPlayer _plr4 && _plr4.level instanceof ServerLevel + && _plr4.getAdvancements().getOrStartProgress(_plr4.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement"))).isDone())) { + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:warfare_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + if ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:front_mortar")))) { + vectorX = (entity.getVehicle()).getLookAngle().x; + vectorY = (entity.getVehicle()).getLookAngle().z; + if (world instanceof ServerLevel projectileLevel) { + Projectile _entityToSpawn = new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback, byte piercing) { + AbstractArrow entityToSpawn = new HandMortarEntity(HpmModEntities.HAND_MORTAR.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + entityToSpawn.setPierceLevel(piercing); + entityToSpawn.pickup = AbstractArrow.Pickup.ALLOWED; + return entityToSpawn; + } + }.getArrow(projectileLevel, (entity.getVehicle()), 6, 0, (byte) 2); + _entityToSpawn.setPos(((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1.4), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2)); + _entityToSpawn.shoot(vectorX, 0.3, vectorY, 2, 0); + projectileLevel.addFreshEntity(_entityToSpawn); + } + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + for (int index0 = 0; index0 < 15; index0++) { + for (int index1 = 0; index1 < 3; index1++) { + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1.4), + ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.5 * (0.7 + 0.3 * Math.random())), (0.3 + -0.1 + 0.2 * Math.random()), + ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.5 * (0.7 + 0.3 * Math.random()))); + } + world.addParticle(ParticleTypes.LARGE_SMOKE, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1.4), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), + ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.3 * Math.random()), (0.3 + -0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.3 * Math.random())); + world.addParticle(ParticleTypes.FLAME, ((entity.getVehicle()).getX() + (entity.getVehicle()).getLookAngle().x * 2 * 2), (y + 1.4), ((entity.getVehicle()).getZ() + (entity.getVehicle()).getLookAngle().z * 2 * 2), + ((entity.getVehicle()).getLookAngle().x * 2 * 1 * 0.1 * Math.random()), (0.3 + -0.1 + 0.2 * Math.random()), ((entity.getVehicle()).getLookAngle().z * 2 * 1 * 0.1 * Math.random())); + } + if (new Object() { + public boolean checkGamemode(Entity _ent) { + if (_ent instanceof ServerPlayer _serverPlayer) { + return _serverPlayer.gameMode.getGameModeForPlayer() == GameType.SURVIVAL; + } else if (_ent.level.isClientSide() && _ent instanceof Player _player) { + return Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()) != null + && Minecraft.getInstance().getConnection().getPlayerInfo(_player.getGameProfile().getId()).getGameMode() == GameType.SURVIVAL; + } + return false; + } + }.checkGamemode(entity)) { + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.MORTAR_BALL.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 60); + } + } else { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("You are missing Mortar ammunition"), true); + } + } else if (!(entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).CanFire + && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:front_mortar")))) { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Mortar on cooldown"), true); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/OnPlayerJoinProcedure.java b/src/main/java/hal/studios/hpm/procedures/OnPlayerJoinProcedure.java new file mode 100644 index 0000000..0b50ad2 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/OnPlayerJoinProcedure.java @@ -0,0 +1,50 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.entity.player.PlayerEvent; + +import net.minecraft.world.entity.Entity; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class OnPlayerJoinProcedure { + @SubscribeEvent + public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { + execute(event, event.getPlayer()); + } + + public static void execute(Entity entity) { + execute(null, entity); + } + + private static void execute(@Nullable Event event, Entity entity) { + if (entity == null) + return; + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireLeft = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireRight = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/OnPlayerLeaveProcedure.java b/src/main/java/hal/studios/hpm/procedures/OnPlayerLeaveProcedure.java new file mode 100644 index 0000000..8c1cdc4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/OnPlayerLeaveProcedure.java @@ -0,0 +1,58 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.entity.player.PlayerEvent; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class OnPlayerLeaveProcedure { + @SubscribeEvent + public static void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) { + execute(event, event.getPlayer()); + } + + public static void execute(Entity entity) { + execute(null, entity); + } + + private static void execute(@Nullable Event event, Entity entity) { + if (entity == null) + return; + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFire = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireLeft = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.CanFireRight = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity.isPassenger()) { + if ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:hals_ship_seat")))) { + entity.stopRiding(); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/PirateCutterItemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/PirateCutterItemRightclickedProcedure.java new file mode 100644 index 0000000..d260f4b --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/PirateCutterItemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterPirateEntity; + +public class PirateCutterItemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPirateEntity(HpmModEntities.CUTTER_PIRATE.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.PIRATE_CUTTER_ITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RaftHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/RaftHurtProcedure.java new file mode 100644 index 0000000..d31c0a9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RaftHurtProcedure.java @@ -0,0 +1,48 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import java.util.concurrent.atomic.AtomicReference; + +import hal.studios.hpm.init.HpmModItems; + +public class RaftHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + MortarFireProcedure.execute(world, y, entity); + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.RAFTITEM.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RaftRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/RaftRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..74f71fe --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RaftRightClickedOnEntityProcedure.java @@ -0,0 +1,37 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class RaftRightClickedOnEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr1 && _plr1.level instanceof ServerLevel && _plr1.getAdvancements().getOrStartProgress(_plr1.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:raft_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:raft_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RaftboyancyProcedure.java b/src/main/java/hal/studios/hpm/procedures/RaftboyancyProcedure.java new file mode 100644 index 0000000..6c3ce75 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RaftboyancyProcedure.java @@ -0,0 +1,14 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.entity.Entity; + +public class RaftboyancyProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity.isInWaterOrBubble()) { + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), 0.03, (entity.getDeltaMovement().z()))); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RaftitemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/RaftitemRightclickedProcedure.java new file mode 100644 index 0000000..5e4cf5c --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RaftitemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.RaftEntity; + +public class RaftitemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new RaftEntity(HpmModEntities.RAFT.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.RAFTITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RaftspeedProcedure.java b/src/main/java/hal/studios/hpm/procedures/RaftspeedProcedure.java new file mode 100644 index 0000000..fcb949e --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RaftspeedProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class RaftspeedProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(16); + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RotaterightnotpressedProcedure.java b/src/main/java/hal/studios/hpm/procedures/RotaterightnotpressedProcedure.java new file mode 100644 index 0000000..099da2c --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RotaterightnotpressedProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class RotaterightnotpressedProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.right = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/RotateshipleftkeyliftednotpressedProcedure.java b/src/main/java/hal/studios/hpm/procedures/RotateshipleftkeyliftednotpressedProcedure.java new file mode 100644 index 0000000..b586a43 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/RotateshipleftkeyliftednotpressedProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class RotateshipleftkeyliftednotpressedProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.left = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailTickProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailTickProcedure.java new file mode 100644 index 0000000..d93d2d4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailTickProcedure.java @@ -0,0 +1,58 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +public class SailTickProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double size = 0; + Entity Parent = null; + size = 1.5; + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(16 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))).collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:cutter_ship_pristine")))) { + if (entityiterator.getPersistentData().getDouble("id") == entity.getPersistentData().getDouble("id")) { + Parent = entityiterator; + } + } + } + } + if (!(Parent == null)) { + if (Parent.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:maritime_cutter")))) { + entity.setDeltaMovement(new Vec3((Parent.getDeltaMovement().x()), (Parent.getDeltaMovement().y()), (Parent.getDeltaMovement().z()))); + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 1.4), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 1.4), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + } + if (Parent.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:weaponised_cutter")))) { + entity.setDeltaMovement(new Vec3((Parent.getDeltaMovement().x()), (Parent.getDeltaMovement().y()), (Parent.getDeltaMovement().z()))); + { + Entity _ent = entity; + _ent.teleportTo((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 2), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1))); + if (_ent instanceof ServerPlayer _serverPlayer) + _serverPlayer.connection.teleport((Parent.getX() + Parent.getLookAngle().x * 2 * (size - 1)), (Parent.getY() + 2), (Parent.getZ() + Parent.getLookAngle().z * 2 * (size - 1)), _ent.getYRot(), _ent.getXRot()); + } + } + } else { + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailspeedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailspeedProcedure.java new file mode 100644 index 0000000..cf134a7 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailspeedProcedure.java @@ -0,0 +1,89 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.TickEvent; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class SailspeedProcedure { + @SubscribeEvent + public static void onPlayerTick(TickEvent.PlayerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + execute(event, event.player); + } + } + + public static void execute(Entity entity) { + execute(null, entity); + } + + private static void execute(@Nullable Event event, Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:small_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:medium_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:large_ship"))))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeedup == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed < 100) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed + 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeeddown == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > -40) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed - 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 8 && (entity.getVehicle()).getDeltaMovement().z() == 0 + && (entity.getVehicle()).getDeltaMovement().x() == 0) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed < -5 && (entity.getVehicle()).getDeltaMovement().z() == 0 + && (entity.getVehicle()).getDeltaMovement().x() == 0) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } else { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 0 + || (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed < 0) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailspeeddownonkeyreleasedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailspeeddownonkeyreleasedProcedure.java new file mode 100644 index 0000000..909f98f --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailspeeddownonkeyreleasedProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class SailspeeddownonkeyreleasedProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeeddown = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailspeeddowntoggleProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailspeeddowntoggleProcedure.java new file mode 100644 index 0000000..5878ea1 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailspeeddowntoggleProcedure.java @@ -0,0 +1,26 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import hal.studios.hpm.network.HpmModVariables; + +public class SailspeeddowntoggleProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > -40) { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeeddown = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyPressedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyPressedProcedure.java new file mode 100644 index 0000000..1d24aad --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyPressedProcedure.java @@ -0,0 +1,26 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import hal.studios.hpm.network.HpmModVariables; + +public class SailspeedupOnKeyPressedProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed < 100) { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeedup = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyReleasedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyReleasedProcedure.java new file mode 100644 index 0000000..37ebe71 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SailspeedupOnKeyReleasedProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class SailspeedupOnKeyReleasedProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sailspeedup = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipIDRegisterToPlayerProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipIDRegisterToPlayerProcedure.java new file mode 100644 index 0000000..e01ff77 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipIDRegisterToPlayerProcedure.java @@ -0,0 +1,50 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class ShipIDRegisterToPlayerProcedure { + @SubscribeEvent + public static void onRightClickEntity(PlayerInteractEvent.EntityInteract event) { + if (event.getHand() != event.getPlayer().getUsedItemHand()) + return; + execute(event, event.getWorld(), event.getTarget(), event.getPlayer()); + } + + public static void execute(LevelAccessor world, Entity entity, Entity sourceentity) { + execute(null, world, entity, sourceentity); + } + + private static void execute(@Nullable Event event, LevelAccessor world, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + if (entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship"))) || entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:small_ship"))) + || entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:medium_ship"))) || entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:large_ship")))) { + if (entity.getPersistentData().getDouble("id") == 0) { + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + } + { + double _setval = entity.getPersistentData().getDouble("id"); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipRotationProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipRotationProcedure.java new file mode 100644 index 0000000..a9bba34 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipRotationProcedure.java @@ -0,0 +1,46 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; + +import java.util.stream.Collectors; +import java.util.List; +import java.util.Comparator; + +import hal.studios.hpm.network.HpmModVariables; + +public class ShipRotationProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (entity.isVehicle()) { + { + final Vec3 _center = new Vec3(x, y, z); + List _entfound = world.getEntitiesOfClass(Entity.class, new AABB(_center, _center).inflate(2 / 2d), e -> true).stream().sorted(Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_center))) + .collect(Collectors.toList()); + for (Entity entityiterator : _entfound) { + if (entityiterator instanceof ServerPlayer + && (entityiterator.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipPilotingID == entity.getPersistentData().getDouble("id")) { + { + Entity _ent = entity; + _ent.setYRot((float) (entityiterator.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw); + _ent.setXRot((float) (360 - (entityiterator.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw)); + _ent.setYBodyRot(_ent.getYRot()); + _ent.setYHeadRot(_ent.getYRot()); + _ent.yRotO = _ent.getYRot(); + _ent.xRotO = _ent.getXRot(); + if (_ent instanceof LivingEntity _entity) { + _entity.yBodyRotO = _entity.getYRot(); + _entity.yHeadRotO = _entity.getYRot(); + } + } + } + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipmovementProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipmovementProcedure.java new file mode 100644 index 0000000..e9dd5ae --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipmovementProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.TickEvent; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class ShipmovementProcedure { + @SubscribeEvent + public static void onPlayerTick(TickEvent.PlayerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + execute(event, event.player.level, event.player); + } + } + + public static void execute(LevelAccessor world, Entity entity) { + execute(null, world, entity); + } + + private static void execute(@Nullable Event event, LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:large_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:medium_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:small_ship"))))) { + if ((entity.getVehicle()).isInWaterOrBubble()) { + (entity.getVehicle()).setDeltaMovement(new Vec3( + (HpmModVariables.WorldVariables.get(world).shipspeedmultiplier * (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed + * ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed / 100) * (entity.getVehicle()).getLookAngle().x), + ((entity.getVehicle()).getDeltaMovement().y()), + (HpmModVariables.WorldVariables.get(world).shipspeedmultiplier * (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed + * ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed / 100) * (entity.getVehicle()).getLookAngle().z))); + } + } else if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipPilotingID > 0) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipPilotingID = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShiprotateleftProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShiprotateleftProcedure.java new file mode 100644 index 0000000..d8c0170 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShiprotateleftProcedure.java @@ -0,0 +1,26 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import hal.studios.hpm.network.HpmModVariables; + +public class ShiprotateleftProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 1) { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.left = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShiprotaterightProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShiprotaterightProcedure.java new file mode 100644 index 0000000..291d162 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShiprotaterightProcedure.java @@ -0,0 +1,26 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import hal.studios.hpm.network.HpmModVariables; + +public class ShiprotaterightProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 1) { + { + boolean _setval = true; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.right = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplieresetProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplieresetProcedure.java new file mode 100644 index 0000000..ce4f769 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplieresetProcedure.java @@ -0,0 +1,12 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; + +import hal.studios.hpm.network.HpmModVariables; + +public class ShipspeedmultiplieresetProcedure { + public static void execute(LevelAccessor world) { + HpmModVariables.WorldVariables.get(world).shipspeedmultiplier = 1; + HpmModVariables.WorldVariables.get(world).syncData(world); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplierprocedureProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplierprocedureProcedure.java new file mode 100644 index 0000000..e2d7ee4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipspeedmultiplierprocedureProcedure.java @@ -0,0 +1,16 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.commands.CommandSourceStack; + +import hal.studios.hpm.network.HpmModVariables; + +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.arguments.DoubleArgumentType; + +public class ShipspeedmultiplierprocedureProcedure { + public static void execute(LevelAccessor world, CommandContext arguments) { + HpmModVariables.WorldVariables.get(world).shipspeedmultiplier = DoubleArgumentType.getDouble(arguments, "speed"); + HpmModVariables.WorldVariables.get(world).syncData(world); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipspeedsettingsProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipspeedsettingsProcedure.java new file mode 100644 index 0000000..56bd44b --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipspeedsettingsProcedure.java @@ -0,0 +1,178 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.TickEvent; + +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.entity.SwashbucklerupgradedEntity; +import hal.studios.hpm.entity.SwashbucklerEntity; +import hal.studios.hpm.entity.RaftEntity; +import hal.studios.hpm.entity.CutterpiratedamagedEntity; +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.entity.CutterSailsDamagedEntity; +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.entity.CutterPirateDamagedSailsEntity; +import hal.studios.hpm.entity.CutterMilitarisedDamagedSailsEntity; +import hal.studios.hpm.entity.CutterEntity; +import hal.studios.hpm.entity.CorvettesteamshipdamagedEntity; +import hal.studios.hpm.entity.CorvetteSteamshipEntity; + +@Mod.EventBusSubscriber +public class ShipspeedsettingsProcedure { + @SubscribeEvent + public static void onPlayerTick(TickEvent.PlayerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + execute(event, event.player); + } + } + + public static void execute(Entity entity) { + execute(null, entity); + } + + private static void execute(@Nullable Event event, Entity entity) { + if (entity == null) + return; + if (entity.isPassenger() && ((entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:small_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:medium_ship"))) + || (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:large_ship"))))) { + if ((entity.getVehicle()) instanceof SwashbucklerEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.6) { + { + double _setval = 0.6; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof SwashbucklerupgradedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.7) { + { + double _setval = 0.7; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof RaftEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.45) { + { + double _setval = 0.45; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.65) { + { + double _setval = 0.55; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterdamagedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.25) { + { + double _setval = 0.25; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterSailsDamagedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.25) { + { + double _setval = 0.25; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CuttermilitarisedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.65) { + { + double _setval = 0.65; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterPirateEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.68) { + { + double _setval = 0.68; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterpiratedamagedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.28) { + { + double _setval = 0.28; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CuttermilitariseddamagedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.25) { + { + double _setval = 0.25; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterMilitarisedDamagedSailsEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.25) { + { + double _setval = 0.25; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CutterPirateDamagedSailsEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.25) { + { + double _setval = 0.25; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CorvetteSteamshipEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.8) { + { + double _setval = 0.8; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getVehicle()) instanceof CorvettesteamshipdamagedEntity && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).maxspeed != 0.4) { + { + double _setval = 0.4; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.maxspeed = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipwreckedraftRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipwreckedraftRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..64abe35 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipwreckedraftRightClickedOnEntityProcedure.java @@ -0,0 +1,49 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.Entity; + +public class ShipwreckedraftRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + for (int index0 = 0; index0 < 7; index0++) { + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_LOG)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.WHITE_WOOL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.WHITE_WOOL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.WHITE_WOOL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.BARREL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.BARREL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipwreckswashbucklerRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipwreckswashbucklerRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..ea5c901 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipwreckswashbucklerRightClickedOnEntityProcedure.java @@ -0,0 +1,36 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.Entity; + +public class ShipwreckswashbucklerRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + for (int index0 = 0; index0 < 4; index0++) { + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_PLANKS)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.WHITE_WOOL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + for (int index1 = 0; index1 < 2; index1++) { + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_LOG)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShipyawtickProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShipyawtickProcedure.java new file mode 100644 index 0000000..d3a0621 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShipyawtickProcedure.java @@ -0,0 +1,211 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Registry; + +import javax.annotation.Nullable; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class ShipyawtickProcedure { + @SubscribeEvent + public static void onPlayerTick(TickEvent.PlayerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + execute(event, event.player.level, event.player); + } + } + + public static void execute(LevelAccessor world, Entity entity) { + execute(null, world, entity); + } + + private static void execute(@Nullable Event event, LevelAccessor world, Entity entity) { + if (entity == null) + return; + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 0.1 && entity.isPassenger() + && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:small_ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).left == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > -1) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw - 3; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).right == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 361) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw + 3; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > 360) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 0) { + { + double _setval = 360; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 0.1 && entity.isPassenger() + && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:medium_ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).left == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > -1) { + for (int index0 = 0; index0 < 3; index0++) { + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw - 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 1); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).right == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 361) { + for (int index1 = 0; index1 < 3; index1++) { + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw + 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 1); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > 360) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 0) { + { + double _setval = 360; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).sailspeed > 0.1 && entity.isPassenger() + && (entity.getVehicle()).getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("forge:large_ship")))) { + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).left == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > -1) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw - 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).right == true + && (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 361) { + { + double _setval = (entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw + 1; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw > 360) { + { + double _setval = 0; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).shipyaw < 0) { + { + double _setval = 360; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ShiupwreckraftspawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/ShiupwreckraftspawnProcedure.java new file mode 100644 index 0000000..e419cea --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ShiupwreckraftspawnProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.ShipwreckedraftEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class ShiupwreckraftspawnProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new ShipwreckedraftEntity(HpmModEntities.SHIPWRECKEDRAFT.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < Math.round(3 + 7 * Math.random()); index0++) { + if (Math.random() > 0.7) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SmallShipBuoyancyProcedure.java b/src/main/java/hal/studios/hpm/procedures/SmallShipBuoyancyProcedure.java new file mode 100644 index 0000000..4fe8a3c --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SmallShipBuoyancyProcedure.java @@ -0,0 +1,21 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; + +public class SmallShipBuoyancyProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if ((world.getBlockState(new BlockPos(x, y + 0.3, z))).getBlock() instanceof LiquidBlock || (world.getBlockState(new BlockPos(x, y + 0.3, z))).getBlock() instanceof SimpleWaterloggedBlock + && ((world.getBlockState(new BlockPos(x, y + 0.3, z))).getBlock().getStateDefinition().getProperty("waterlogged") instanceof BooleanProperty _getbp5 && (world.getBlockState(new BlockPos(x, y + 0.3, z))).getValue(_getbp5)) == true) { + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), 0.03, (entity.getDeltaMovement().z()))); + } + ShipRotationProcedure.execute(world, x, y, z, entity); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SpannerRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SpannerRightclickedProcedure.java new file mode 100644 index 0000000..e9abd53 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SpannerRightclickedProcedure.java @@ -0,0 +1,505 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.tags.TagKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.core.Registry; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.Random; +import java.util.Iterator; +import java.util.Comparator; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.CutterpiratedamagedEntity; +import hal.studios.hpm.entity.CuttermilitariseddamagedEntity; +import hal.studios.hpm.entity.CuttermilitarisedEntity; +import hal.studios.hpm.entity.CutterdamagedEntity; +import hal.studios.hpm.entity.CutterSailsDamagedEntity; +import hal.studios.hpm.entity.CutterPirateEntity; +import hal.studios.hpm.entity.CutterPirateDamagedSailsEntity; +import hal.studios.hpm.entity.CutterMilitarisedDamagedSailsEntity; +import hal.studios.hpm.entity.CutterEntity; +import hal.studios.hpm.entity.CorvettesteamshipdamagedEntity; +import hal.studios.hpm.entity.CorvetteSteamshipEntity; + +public class SpannerRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity, ItemStack itemstack) { + if (entity == null || sourceentity == null) + return; + double ItemIterator = 0; + if (entity.getType().is(TagKey.create(Registry.ENTITY_TYPE_REGISTRY, new ResourceLocation("hpm:ship")))) { + if (entity instanceof LivingEntity _entity) + _entity.setHealth(entity instanceof LivingEntity _livEnt ? _livEnt.getMaxHealth() : -1); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + if (!(entity instanceof ServerPlayer _plr5 && _plr5.level instanceof ServerLevel + && _plr5.getAdvancements().getOrStartProgress(_plr5.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:spanner_use_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:spanner_use_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } + if (entity instanceof CutterdamagedEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterEntity(HpmModEntities.CUTTER.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CutterEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CutterEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CutterSailsDamagedEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterEntity(HpmModEntities.CUTTER.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CutterEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CutterEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CuttermilitariseddamagedEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CuttermilitarisedEntity(HpmModEntities.CUTTERMILITARISED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CuttermilitarisedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CuttermilitarisedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CutterMilitarisedDamagedSailsEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CuttermilitarisedEntity(HpmModEntities.CUTTERMILITARISED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CuttermilitarisedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CuttermilitarisedEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CutterpiratedamagedEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPirateEntity(HpmModEntities.CUTTER_PIRATE.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if ((entity.getPersistentData().getString("owner")).equals("player")) { + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putString("owner", "player"); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CorvettesteamshipdamagedEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CorvetteSteamshipEntity(HpmModEntities.CORVETTE_STEAMSHIP.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!(entity.getDisplayName().getString()).equals("Corvette Steamship")) { + ((Entity) world.getEntitiesOfClass(CorvetteSteamshipEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CorvetteSteamshipEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + if (entity instanceof CutterPirateDamagedSailsEntity) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new CutterPirateEntity(HpmModEntities.CUTTER_PIRATE.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if ((entity.getPersistentData().getString("owner")).equals("player")) { + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getPersistentData().putString("owner", "player"); + } + if (!(entity.getDisplayName().getString()).equals("cutter")) { + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).setCustomName(new TextComponent((entity.getDisplayName().getString()))); + } + ItemIterator = 0; + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + { + final int _slotid = (int) ItemIterator; + final ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid, Entity entity) { + AtomicReference _retval = new AtomicReference<>(ItemStack.EMPTY); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + _retval.set(capability.getStackInSlot(sltid).copy()); + }); + return _retval.get(); + } + }.getItemStack((int) ItemIterator, entity)); + _setstack.setCount((itemstackiterator).getCount()); + ((Entity) world.getEntitiesOfClass(CutterPirateEntity.class, AABB.ofSize(new Vec3(x, y, z), 1, 1, 1), e -> true).stream().sorted(new Object() { + Comparator compareDistOf(double _x, double _y, double _z) { + return Comparator.comparingDouble(_entcnd -> _entcnd.distanceToSqr(_x, _y, _z)); + } + }.compareDistOf(x, y, z)).findFirst().orElse(null)).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + if (capability instanceof IItemHandlerModifiable _modHandler) + _modHandler.setStackInSlot(_slotid, _setstack); + }); + } + ItemIterator = ItemIterator + 1; + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + { + ItemStack _ist = itemstack; + if (_ist.hurt(1, new Random(), null)) { + _ist.shrink(1); + _ist.setDamageValue(0); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SplinterParticlesProcedure.java b/src/main/java/hal/studios/hpm/procedures/SplinterParticlesProcedure.java new file mode 100644 index 0000000..65b8127 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SplinterParticlesProcedure.java @@ -0,0 +1,30 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.core.particles.ParticleTypes; + +import hal.studios.hpm.init.HpmModParticleTypes; + +public class SplinterParticlesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + double Repeat = 0; + Repeat = Math.round(20 * Math.random()); + for (int index0 = 0; index0 < (int) Repeat; index0++) { + world.addParticle((SimpleParticleType) (HpmModParticleTypes.SPLINTERS.get()), (x + -1 + 2 * Math.random()), (y + -1 + 3 * Math.random()), (z + -1 + 2 * Math.random()), (entity.getDeltaMovement().x() + -0.3 + 0.6 * Math.random()), + (entity.getDeltaMovement().y() + Math.random()), (entity.getDeltaMovement().z() + -0.3 + 0.6 * Math.random())); + } + for (int index1 = 0; index1 < (int) Repeat; index1++) { + world.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, (x + -0.5 + 1 * Math.random()), (y + -0.5 + 1 * Math.random()), (z + -0.5 + 1 * Math.random()), (entity.getDeltaMovement().x() + -0.05 + 0.1 * Math.random()), + (entity.getDeltaMovement().y()), (entity.getDeltaMovement().z() + -0.05 + 0.1 * Math.random())); + } + Repeat = Math.round(13 * Math.random()); + for (int index2 = 0; index2 < (int) Repeat; index2++) { + world.addParticle((SimpleParticleType) (HpmModParticleTypes.PLANK_SPLINTER.get()), (x + -1 + 2 * Math.random()), (y + -1 + 3 * Math.random()), (z + -1 + 2 * Math.random()), (entity.getDeltaMovement().x() + -0.3 + 0.6 * Math.random()), + (entity.getDeltaMovement().y() + Math.random()), (entity.getDeltaMovement().z() + -0.3 + 0.6 * Math.random())); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbucklerEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbucklerEntityDiesProcedure.java new file mode 100644 index 0000000..4dd671e --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbucklerEntityDiesProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.ShipwreckswashbucklerEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class SwashbucklerEntityDiesProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new ShipwreckswashbucklerEntity(HpmModEntities.SHIPWRECKSWASHBUCKLER.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + if (!entity.level.isClientSide()) + entity.discard(); + for (int index0 = 0; index0 < Math.round(2 + 4 * Math.random()); index0++) { + if (Math.random() > 0.2) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.6 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.6 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbucklerHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbucklerHurtProcedure.java new file mode 100644 index 0000000..ba320ee --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbucklerHurtProcedure.java @@ -0,0 +1,48 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import java.util.concurrent.atomic.AtomicReference; + +import hal.studios.hpm.init.HpmModItems; + +public class SwashbucklerHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + SplinterParticlesProcedure.execute(world, x, y, z, entity); + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.SWASHBUCKLERITEM.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbucklerRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbucklerRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..209b334 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbucklerRightClickedOnEntityProcedure.java @@ -0,0 +1,38 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class SwashbucklerRightClickedOnEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr1 && _plr1.level instanceof ServerLevel + && _plr1.getAdvancements().getOrStartProgress(_plr1.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:swashbuckler_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:swashbuckler_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbuckleritemRightclickedProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbuckleritemRightclickedProcedure.java new file mode 100644 index 0000000..3334d5b --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbuckleritemRightclickedProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.SwashbucklerEntity; + +public class SwashbuckleritemRightclickedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new SwashbucklerEntity(HpmModEntities.SWASHBUCKLER.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.SWASHBUCKLERITEM.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbuckleroninitialspawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbuckleroninitialspawnProcedure.java new file mode 100644 index 0000000..0240a84 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbuckleroninitialspawnProcedure.java @@ -0,0 +1,19 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.network.HpmModVariables; + +public class SwashbuckleroninitialspawnProcedure { + public static void execute(LevelAccessor world, Entity entity) { + if (entity == null) + return; + if (entity instanceof LivingEntity _entity) + _entity.setHealth(25); + entity.getPersistentData().putDouble("id", HpmModVariables.MapVariables.get(world).IDcounter); + HpmModVariables.MapVariables.get(world).IDcounter = HpmModVariables.MapVariables.get(world).IDcounter + 1; + HpmModVariables.MapVariables.get(world).syncData(world); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradedRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradedRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..0d3e3c8 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradedRightClickedOnEntityProcedure.java @@ -0,0 +1,38 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +public class SwashbucklerupgradedRightClickedOnEntityProcedure { + public static void execute(Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + { + double _setval = entity.getYRot(); + sourceentity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(sourceentity); + }); + } + if (!(sourceentity instanceof ServerPlayer _plr1 && _plr1.level instanceof ServerLevel + && _plr1.getAdvancements().getOrStartProgress(_plr1.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:u_swashbuckler_achievement"))).isDone())) { + if (sourceentity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:u_swashbuckler_achievement")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradespawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradespawnProcedure.java new file mode 100644 index 0000000..5d93940 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/SwashbucklerupgradespawnProcedure.java @@ -0,0 +1,42 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.network.HpmModVariables; +import hal.studios.hpm.init.HpmModItems; +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.SwashbucklerupgradedEntity; + +public class SwashbucklerupgradespawnProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new SwashbucklerupgradedEntity(HpmModEntities.SWASHBUCKLERUPGRADED.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), 0); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + { + double _setval = entity.getYRot(); + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shipyaw = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof Player _player) { + ItemStack _stktoremove = new ItemStack(HpmModItems.SWASHBUCKLERUPGRADE.get()); + _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/ThankYouForInstallingProcedure.java b/src/main/java/hal/studios/hpm/procedures/ThankYouForInstallingProcedure.java new file mode 100644 index 0000000..f9f3f1e --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/ThankYouForInstallingProcedure.java @@ -0,0 +1,121 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.advancements.AdvancementProgress; +import net.minecraft.advancements.Advancement; + +import javax.annotation.Nullable; + +import java.util.Iterator; + +import hal.studios.hpm.network.HpmModVariables; + +@Mod.EventBusSubscriber +public class ThankYouForInstallingProcedure { + @SubscribeEvent + public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { + execute(event, event.getPlayer().level, event.getPlayer()); + } + + public static void execute(LevelAccessor world, Entity entity) { + execute(null, world, entity); + } + + private static void execute(@Nullable Event event, LevelAccessor world, Entity entity) { + if (entity == null) + return; + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).FirstLogOn) { + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("Thank You For Installing Swashbucklers! (Hals Pirate mod, modID: hpm), if you are ever confused, make sure to check out the wiki on the github page!"), false); + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("https://github.com/halbear/Swashbucklers/wiki"), false); + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 60); + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.FirstLogOn = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if ((entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new HpmModVariables.PlayerVariables())).VersionWarning) { + new Object() { + private int ticks = 0; + private float waitTicks; + private LevelAccessor world; + + public void start(LevelAccessor world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + if (entity instanceof Player _player && !_player.level.isClientSide()) + _player.displayClientMessage(new TextComponent("if this is updated from version 2.6.5, your existing cutter ships will now need to be repaired using the spanner to fix the child entities that were added in 2.6.6"), false); + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, 60); + { + boolean _setval = false; + entity.getCapability(HpmModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.VersionWarning = _setval; + capability.syncPlayerVariables(entity); + }); + } + } + if (entity instanceof ServerPlayer _player) { + Advancement _adv = _player.server.getAdvancements().getAdvancement(new ResourceLocation("hpm:swashbucklers_advancement_branch")); + AdvancementProgress _ap = _player.getAdvancements().getOrStartProgress(_adv); + if (!_ap.isDone()) { + Iterator _iterator = _ap.getRemainingCriteria().iterator(); + while (_iterator.hasNext()) + _player.getAdvancements().award(_adv, (String) _iterator.next()); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/UpgradedSwashbucklerHurtProcedure.java b/src/main/java/hal/studios/hpm/procedures/UpgradedSwashbucklerHurtProcedure.java new file mode 100644 index 0000000..8ba26f4 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/UpgradedSwashbucklerHurtProcedure.java @@ -0,0 +1,48 @@ +package hal.studios.hpm.procedures; + +import net.minecraftforge.items.ItemHandlerHelper; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +import java.util.concurrent.atomic.AtomicReference; + +import hal.studios.hpm.init.HpmModItems; + +public class UpgradedSwashbucklerHurtProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity, Entity sourceentity) { + if (entity == null || sourceentity == null) + return; + SplinterParticlesProcedure.execute(world, x, y, z, entity); + if (sourceentity.isShiftKeyDown() && (sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == HpmModItems.SPANNER.get()) { + { + AtomicReference _iitemhandlerref = new AtomicReference<>(); + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> _iitemhandlerref.set(capability)); + if (_iitemhandlerref.get() != null) { + for (int _idx = 0; _idx < _iitemhandlerref.get().getSlots(); _idx++) { + ItemStack itemstackiterator = _iitemhandlerref.get().getStackInSlot(_idx).copy(); + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, itemstackiterator); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + } + } + if (sourceentity instanceof Player _player) { + ItemStack _setstack = new ItemStack(HpmModItems.SWASHBUCKLERUPGRADE.get()); + _setstack.setCount(1); + ItemHandlerHelper.giveItemToPlayer(_player, _setstack); + } + if (!entity.level.isClientSide()) + entity.discard(); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/UpgradeddestroyedProcedure.java b/src/main/java/hal/studios/hpm/procedures/UpgradeddestroyedProcedure.java new file mode 100644 index 0000000..5006894 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/UpgradeddestroyedProcedure.java @@ -0,0 +1,56 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerLevel; + +import hal.studios.hpm.init.HpmModEntities; +import hal.studios.hpm.entity.WreckedswashbucklerupgradeEntity; +import hal.studios.hpm.entity.WoodDebrisEntity; +import hal.studios.hpm.entity.BarrelDebrisEntity; + +public class UpgradeddestroyedProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WreckedswashbucklerupgradeEntity(HpmModEntities.WRECKEDSWASHBUCKLERUPGRADE.get(), _level); + entityToSpawn.moveTo(x, y, z, entity.getYRot(), entity.getXRot()); + entityToSpawn.setYBodyRot(entity.getYRot()); + entityToSpawn.setYHeadRot(entity.getYRot()); + entityToSpawn.setDeltaMovement(0, 0, 0); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < Math.round(3 + 7 * Math.random()); index0++) { + if (Math.random() > 0.3) { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new WoodDebrisEntity(HpmModEntities.WOOD_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } else { + if (world instanceof ServerLevel _level) { + Entity entityToSpawn = new BarrelDebrisEntity(HpmModEntities.BARREL_DEBRIS.get(), _level); + entityToSpawn.moveTo(x, (1 + y), z, (float) (360 * Math.random()), 0); + entityToSpawn.setYBodyRot((float) (360 * Math.random())); + entityToSpawn.setYHeadRot((float) (360 * Math.random())); + entityToSpawn.setDeltaMovement((-0.4 + 0.8 * Math.random()), (0.1 + 0.7 * Math.random()), (-0.4 + 0.8 * Math.random())); + if (entityToSpawn instanceof Mob _mobToSpawn) + _mobToSpawn.finalizeSpawn(_level, world.getCurrentDifficultyAt(entityToSpawn.blockPosition()), MobSpawnType.MOB_SUMMONED, null, null); + world.addFreshEntity(entityToSpawn); + } + } + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/WoodDebrisEntityDiesProcedure.java b/src/main/java/hal/studios/hpm/procedures/WoodDebrisEntityDiesProcedure.java new file mode 100644 index 0000000..3982943 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/WoodDebrisEntityDiesProcedure.java @@ -0,0 +1,12 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.Entity; + +public class WoodDebrisEntityDiesProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnEntityTickUpdateProcedure.java b/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnEntityTickUpdateProcedure.java new file mode 100644 index 0000000..9950dc9 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnEntityTickUpdateProcedure.java @@ -0,0 +1,17 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; + +public class WoodDebrisOnEntityTickUpdateProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if ((world.getBlockState(new BlockPos(x, y + 0.2, z))).getBlock() instanceof LiquidBlock) { + entity.setDeltaMovement(new Vec3((entity.getDeltaMovement().x()), 0.1, (entity.getDeltaMovement().z()))); + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnInitialEntitySpawnProcedure.java b/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnInitialEntitySpawnProcedure.java new file mode 100644 index 0000000..c033a6d --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/WoodDebrisOnInitialEntitySpawnProcedure.java @@ -0,0 +1,24 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; + +public class WoodDebrisOnInitialEntitySpawnProcedure { + public static void execute(Entity entity) { + if (entity == null) + return; + { + Entity _ent = entity; + _ent.setYRot((float) (360 * Math.random())); + _ent.setXRot(0); + _ent.setYBodyRot(_ent.getYRot()); + _ent.setYHeadRot(_ent.getYRot()); + _ent.yRotO = _ent.getYRot(); + _ent.xRotO = _ent.getXRot(); + if (_ent instanceof LivingEntity _entity) { + _entity.yBodyRotO = _entity.getYRot(); + _entity.yHeadRotO = _entity.getYRot(); + } + } + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/WoodDebrisRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/WoodDebrisRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..f17fd3f --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/WoodDebrisRightClickedOnEntityProcedure.java @@ -0,0 +1,22 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.Entity; + +public class WoodDebrisRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_PLANKS)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/procedures/WreckedswashbucklerupgradeRightClickedOnEntityProcedure.java b/src/main/java/hal/studios/hpm/procedures/WreckedswashbucklerupgradeRightClickedOnEntityProcedure.java new file mode 100644 index 0000000..362c251 --- /dev/null +++ b/src/main/java/hal/studios/hpm/procedures/WreckedswashbucklerupgradeRightClickedOnEntityProcedure.java @@ -0,0 +1,53 @@ +package hal.studios.hpm.procedures; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.Entity; + +import hal.studios.hpm.init.HpmModItems; + +public class WreckedswashbucklerupgradeRightClickedOnEntityProcedure { + public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { + if (entity == null) + return; + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_LOG)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_LOG)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + for (int index0 = 0; index0 < 4; index0++) { + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.OAK_PLANKS)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(HpmModItems.HAND_CANNON.get())); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + for (int index1 = 0; index1 < 4; index1++) { + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.WHITE_WOOL)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + } + if (world instanceof Level _level && !_level.isClientSide()) { + ItemEntity entityToSpawn = new ItemEntity(_level, x, y, z, new ItemStack(Blocks.CHEST)); + entityToSpawn.setPickUpDelay(10); + _level.addFreshEntity(entityToSpawn); + } + if (!entity.level.isClientSide()) + entity.discard(); + } +} diff --git a/src/main/java/hal/studios/hpm/world/inventory/CutterinventoryMenu.java b/src/main/java/hal/studios/hpm/world/inventory/CutterinventoryMenu.java new file mode 100644 index 0000000..03207f3 --- /dev/null +++ b/src/main/java/hal/studios/hpm/world/inventory/CutterinventoryMenu.java @@ -0,0 +1,919 @@ + +package hal.studios.hpm.world.inventory; + +import net.minecraftforge.items.SlotItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import hal.studios.hpm.init.HpmModMenus; + +public class CutterinventoryMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public CutterinventoryMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(HpmModMenus.CUTTERINVENTORY, id); + this.entity = inv.player; + this.world = inv.player.level; + this.internal = new ItemStackHandler(229); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 13, 14) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 31, 14) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 49, 14) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 67, 14) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 85, 14) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 103, 14) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 121, 14) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 139, 14) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 157, 14) { + private final int slot = 8; + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 175, 14) { + private final int slot = 9; + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 193, 14) { + private final int slot = 10; + })); + this.customSlots.put(11, this.addSlot(new SlotItemHandler(internal, 11, 211, 14) { + private final int slot = 11; + })); + this.customSlots.put(12, this.addSlot(new SlotItemHandler(internal, 12, 229, 14) { + private final int slot = 12; + })); + this.customSlots.put(13, this.addSlot(new SlotItemHandler(internal, 13, 247, 14) { + private final int slot = 13; + })); + this.customSlots.put(14, this.addSlot(new SlotItemHandler(internal, 14, 265, 14) { + private final int slot = 14; + })); + this.customSlots.put(15, this.addSlot(new SlotItemHandler(internal, 15, 283, 14) { + private final int slot = 15; + })); + this.customSlots.put(16, this.addSlot(new SlotItemHandler(internal, 16, 301, 14) { + private final int slot = 16; + })); + this.customSlots.put(17, this.addSlot(new SlotItemHandler(internal, 17, 319, 14) { + private final int slot = 17; + })); + this.customSlots.put(18, this.addSlot(new SlotItemHandler(internal, 18, 337, 14) { + private final int slot = 18; + })); + this.customSlots.put(19, this.addSlot(new SlotItemHandler(internal, 19, 355, 14) { + private final int slot = 19; + })); + this.customSlots.put(20, this.addSlot(new SlotItemHandler(internal, 20, 373, 14) { + private final int slot = 20; + })); + this.customSlots.put(21, this.addSlot(new SlotItemHandler(internal, 21, 391, 14) { + private final int slot = 21; + })); + this.customSlots.put(22, this.addSlot(new SlotItemHandler(internal, 22, 13, 32) { + private final int slot = 22; + })); + this.customSlots.put(23, this.addSlot(new SlotItemHandler(internal, 23, 31, 32) { + private final int slot = 23; + })); + this.customSlots.put(24, this.addSlot(new SlotItemHandler(internal, 24, 49, 32) { + private final int slot = 24; + })); + this.customSlots.put(25, this.addSlot(new SlotItemHandler(internal, 25, 67, 32) { + private final int slot = 25; + })); + this.customSlots.put(26, this.addSlot(new SlotItemHandler(internal, 26, 85, 32) { + private final int slot = 26; + })); + this.customSlots.put(27, this.addSlot(new SlotItemHandler(internal, 27, 103, 32) { + private final int slot = 27; + })); + this.customSlots.put(28, this.addSlot(new SlotItemHandler(internal, 28, 121, 32) { + private final int slot = 28; + })); + this.customSlots.put(29, this.addSlot(new SlotItemHandler(internal, 29, 139, 32) { + private final int slot = 29; + })); + this.customSlots.put(30, this.addSlot(new SlotItemHandler(internal, 30, 157, 32) { + private final int slot = 30; + })); + this.customSlots.put(31, this.addSlot(new SlotItemHandler(internal, 31, 175, 32) { + private final int slot = 31; + })); + this.customSlots.put(32, this.addSlot(new SlotItemHandler(internal, 32, 193, 32) { + private final int slot = 32; + })); + this.customSlots.put(33, this.addSlot(new SlotItemHandler(internal, 33, 211, 32) { + private final int slot = 33; + })); + this.customSlots.put(34, this.addSlot(new SlotItemHandler(internal, 34, 229, 32) { + private final int slot = 34; + })); + this.customSlots.put(35, this.addSlot(new SlotItemHandler(internal, 35, 247, 32) { + private final int slot = 35; + })); + this.customSlots.put(36, this.addSlot(new SlotItemHandler(internal, 36, 265, 32) { + private final int slot = 36; + })); + this.customSlots.put(37, this.addSlot(new SlotItemHandler(internal, 37, 283, 32) { + private final int slot = 37; + })); + this.customSlots.put(38, this.addSlot(new SlotItemHandler(internal, 38, 301, 32) { + private final int slot = 38; + })); + this.customSlots.put(39, this.addSlot(new SlotItemHandler(internal, 39, 319, 32) { + private final int slot = 39; + })); + this.customSlots.put(40, this.addSlot(new SlotItemHandler(internal, 40, 337, 32) { + private final int slot = 40; + })); + this.customSlots.put(41, this.addSlot(new SlotItemHandler(internal, 41, 355, 32) { + private final int slot = 41; + })); + this.customSlots.put(42, this.addSlot(new SlotItemHandler(internal, 42, 373, 32) { + private final int slot = 42; + })); + this.customSlots.put(43, this.addSlot(new SlotItemHandler(internal, 43, 391, 32) { + private final int slot = 43; + })); + this.customSlots.put(44, this.addSlot(new SlotItemHandler(internal, 44, 13, 50) { + private final int slot = 44; + })); + this.customSlots.put(45, this.addSlot(new SlotItemHandler(internal, 45, 31, 50) { + private final int slot = 45; + })); + this.customSlots.put(46, this.addSlot(new SlotItemHandler(internal, 46, 49, 50) { + private final int slot = 46; + })); + this.customSlots.put(47, this.addSlot(new SlotItemHandler(internal, 47, 67, 50) { + private final int slot = 47; + })); + this.customSlots.put(48, this.addSlot(new SlotItemHandler(internal, 48, 85, 50) { + private final int slot = 48; + })); + this.customSlots.put(49, this.addSlot(new SlotItemHandler(internal, 49, 103, 50) { + private final int slot = 49; + })); + this.customSlots.put(50, this.addSlot(new SlotItemHandler(internal, 50, 121, 50) { + private final int slot = 50; + })); + this.customSlots.put(51, this.addSlot(new SlotItemHandler(internal, 51, 139, 50) { + private final int slot = 51; + })); + this.customSlots.put(52, this.addSlot(new SlotItemHandler(internal, 52, 157, 50) { + private final int slot = 52; + })); + this.customSlots.put(53, this.addSlot(new SlotItemHandler(internal, 53, 175, 50) { + private final int slot = 53; + })); + this.customSlots.put(54, this.addSlot(new SlotItemHandler(internal, 54, 193, 50) { + private final int slot = 54; + })); + this.customSlots.put(55, this.addSlot(new SlotItemHandler(internal, 55, 211, 50) { + private final int slot = 55; + })); + this.customSlots.put(56, this.addSlot(new SlotItemHandler(internal, 56, 229, 50) { + private final int slot = 56; + })); + this.customSlots.put(57, this.addSlot(new SlotItemHandler(internal, 57, 247, 50) { + private final int slot = 57; + })); + this.customSlots.put(58, this.addSlot(new SlotItemHandler(internal, 58, 265, 50) { + private final int slot = 58; + })); + this.customSlots.put(59, this.addSlot(new SlotItemHandler(internal, 59, 283, 50) { + private final int slot = 59; + })); + this.customSlots.put(60, this.addSlot(new SlotItemHandler(internal, 60, 301, 50) { + private final int slot = 60; + })); + this.customSlots.put(61, this.addSlot(new SlotItemHandler(internal, 61, 319, 50) { + private final int slot = 61; + })); + this.customSlots.put(62, this.addSlot(new SlotItemHandler(internal, 62, 337, 50) { + private final int slot = 62; + })); + this.customSlots.put(63, this.addSlot(new SlotItemHandler(internal, 63, 355, 50) { + private final int slot = 63; + })); + this.customSlots.put(64, this.addSlot(new SlotItemHandler(internal, 64, 373, 50) { + private final int slot = 64; + })); + this.customSlots.put(65, this.addSlot(new SlotItemHandler(internal, 65, 391, 50) { + private final int slot = 65; + })); + this.customSlots.put(66, this.addSlot(new SlotItemHandler(internal, 66, 13, 68) { + private final int slot = 66; + })); + this.customSlots.put(67, this.addSlot(new SlotItemHandler(internal, 67, 31, 68) { + private final int slot = 67; + })); + this.customSlots.put(68, this.addSlot(new SlotItemHandler(internal, 68, 49, 68) { + private final int slot = 68; + })); + this.customSlots.put(69, this.addSlot(new SlotItemHandler(internal, 69, 67, 68) { + private final int slot = 69; + })); + this.customSlots.put(70, this.addSlot(new SlotItemHandler(internal, 70, 85, 68) { + private final int slot = 70; + })); + this.customSlots.put(71, this.addSlot(new SlotItemHandler(internal, 71, 103, 68) { + private final int slot = 71; + })); + this.customSlots.put(72, this.addSlot(new SlotItemHandler(internal, 72, 121, 68) { + private final int slot = 72; + })); + this.customSlots.put(73, this.addSlot(new SlotItemHandler(internal, 73, 139, 68) { + private final int slot = 73; + })); + this.customSlots.put(74, this.addSlot(new SlotItemHandler(internal, 74, 157, 68) { + private final int slot = 74; + })); + this.customSlots.put(75, this.addSlot(new SlotItemHandler(internal, 75, 175, 68) { + private final int slot = 75; + })); + this.customSlots.put(76, this.addSlot(new SlotItemHandler(internal, 76, 193, 68) { + private final int slot = 76; + })); + this.customSlots.put(77, this.addSlot(new SlotItemHandler(internal, 77, 211, 68) { + private final int slot = 77; + })); + this.customSlots.put(78, this.addSlot(new SlotItemHandler(internal, 78, 229, 68) { + private final int slot = 78; + })); + this.customSlots.put(79, this.addSlot(new SlotItemHandler(internal, 79, 247, 68) { + private final int slot = 79; + })); + this.customSlots.put(80, this.addSlot(new SlotItemHandler(internal, 80, 265, 68) { + private final int slot = 80; + })); + this.customSlots.put(81, this.addSlot(new SlotItemHandler(internal, 81, 283, 68) { + private final int slot = 81; + })); + this.customSlots.put(82, this.addSlot(new SlotItemHandler(internal, 82, 301, 68) { + private final int slot = 82; + })); + this.customSlots.put(83, this.addSlot(new SlotItemHandler(internal, 83, 319, 68) { + private final int slot = 83; + })); + this.customSlots.put(84, this.addSlot(new SlotItemHandler(internal, 84, 337, 68) { + private final int slot = 84; + })); + this.customSlots.put(85, this.addSlot(new SlotItemHandler(internal, 85, 355, 68) { + private final int slot = 85; + })); + this.customSlots.put(86, this.addSlot(new SlotItemHandler(internal, 86, 373, 68) { + private final int slot = 86; + })); + this.customSlots.put(87, this.addSlot(new SlotItemHandler(internal, 87, 391, 68) { + private final int slot = 87; + })); + this.customSlots.put(88, this.addSlot(new SlotItemHandler(internal, 88, 13, 86) { + private final int slot = 88; + })); + this.customSlots.put(89, this.addSlot(new SlotItemHandler(internal, 89, 31, 86) { + private final int slot = 89; + })); + this.customSlots.put(90, this.addSlot(new SlotItemHandler(internal, 90, 49, 86) { + private final int slot = 90; + })); + this.customSlots.put(91, this.addSlot(new SlotItemHandler(internal, 91, 67, 86) { + private final int slot = 91; + })); + this.customSlots.put(92, this.addSlot(new SlotItemHandler(internal, 92, 85, 86) { + private final int slot = 92; + })); + this.customSlots.put(93, this.addSlot(new SlotItemHandler(internal, 93, 103, 86) { + private final int slot = 93; + })); + this.customSlots.put(94, this.addSlot(new SlotItemHandler(internal, 94, 121, 86) { + private final int slot = 94; + })); + this.customSlots.put(95, this.addSlot(new SlotItemHandler(internal, 95, 139, 86) { + private final int slot = 95; + })); + this.customSlots.put(96, this.addSlot(new SlotItemHandler(internal, 96, 157, 86) { + private final int slot = 96; + })); + this.customSlots.put(97, this.addSlot(new SlotItemHandler(internal, 97, 175, 86) { + private final int slot = 97; + })); + this.customSlots.put(98, this.addSlot(new SlotItemHandler(internal, 98, 193, 86) { + private final int slot = 98; + })); + this.customSlots.put(99, this.addSlot(new SlotItemHandler(internal, 99, 211, 86) { + private final int slot = 99; + })); + this.customSlots.put(100, this.addSlot(new SlotItemHandler(internal, 100, 229, 86) { + private final int slot = 100; + })); + this.customSlots.put(101, this.addSlot(new SlotItemHandler(internal, 101, 247, 86) { + private final int slot = 101; + })); + this.customSlots.put(102, this.addSlot(new SlotItemHandler(internal, 102, 265, 86) { + private final int slot = 102; + })); + this.customSlots.put(103, this.addSlot(new SlotItemHandler(internal, 103, 283, 86) { + private final int slot = 103; + })); + this.customSlots.put(104, this.addSlot(new SlotItemHandler(internal, 104, 301, 86) { + private final int slot = 104; + })); + this.customSlots.put(105, this.addSlot(new SlotItemHandler(internal, 105, 319, 86) { + private final int slot = 105; + })); + this.customSlots.put(106, this.addSlot(new SlotItemHandler(internal, 106, 337, 86) { + private final int slot = 106; + })); + this.customSlots.put(107, this.addSlot(new SlotItemHandler(internal, 107, 355, 86) { + private final int slot = 107; + })); + this.customSlots.put(108, this.addSlot(new SlotItemHandler(internal, 108, 373, 86) { + private final int slot = 108; + })); + this.customSlots.put(109, this.addSlot(new SlotItemHandler(internal, 109, 391, 86) { + private final int slot = 109; + })); + this.customSlots.put(110, this.addSlot(new SlotItemHandler(internal, 110, 13, 104) { + private final int slot = 110; + })); + this.customSlots.put(111, this.addSlot(new SlotItemHandler(internal, 111, 31, 104) { + private final int slot = 111; + })); + this.customSlots.put(112, this.addSlot(new SlotItemHandler(internal, 112, 49, 104) { + private final int slot = 112; + })); + this.customSlots.put(113, this.addSlot(new SlotItemHandler(internal, 113, 67, 104) { + private final int slot = 113; + })); + this.customSlots.put(114, this.addSlot(new SlotItemHandler(internal, 114, 85, 104) { + private final int slot = 114; + })); + this.customSlots.put(115, this.addSlot(new SlotItemHandler(internal, 115, 103, 104) { + private final int slot = 115; + })); + this.customSlots.put(116, this.addSlot(new SlotItemHandler(internal, 116, 121, 104) { + private final int slot = 116; + })); + this.customSlots.put(117, this.addSlot(new SlotItemHandler(internal, 117, 139, 104) { + private final int slot = 117; + })); + this.customSlots.put(118, this.addSlot(new SlotItemHandler(internal, 118, 157, 104) { + private final int slot = 118; + })); + this.customSlots.put(119, this.addSlot(new SlotItemHandler(internal, 119, 175, 104) { + private final int slot = 119; + })); + this.customSlots.put(120, this.addSlot(new SlotItemHandler(internal, 120, 193, 104) { + private final int slot = 120; + })); + this.customSlots.put(121, this.addSlot(new SlotItemHandler(internal, 121, 211, 104) { + private final int slot = 121; + })); + this.customSlots.put(122, this.addSlot(new SlotItemHandler(internal, 122, 229, 104) { + private final int slot = 122; + })); + this.customSlots.put(123, this.addSlot(new SlotItemHandler(internal, 123, 247, 104) { + private final int slot = 123; + })); + this.customSlots.put(124, this.addSlot(new SlotItemHandler(internal, 124, 265, 104) { + private final int slot = 124; + })); + this.customSlots.put(125, this.addSlot(new SlotItemHandler(internal, 125, 283, 104) { + private final int slot = 125; + })); + this.customSlots.put(126, this.addSlot(new SlotItemHandler(internal, 126, 301, 104) { + private final int slot = 126; + })); + this.customSlots.put(127, this.addSlot(new SlotItemHandler(internal, 127, 319, 104) { + private final int slot = 127; + })); + this.customSlots.put(128, this.addSlot(new SlotItemHandler(internal, 128, 337, 104) { + private final int slot = 128; + })); + this.customSlots.put(129, this.addSlot(new SlotItemHandler(internal, 129, 355, 104) { + private final int slot = 129; + })); + this.customSlots.put(130, this.addSlot(new SlotItemHandler(internal, 130, 373, 104) { + private final int slot = 130; + })); + this.customSlots.put(131, this.addSlot(new SlotItemHandler(internal, 131, 391, 104) { + private final int slot = 131; + })); + this.customSlots.put(132, this.addSlot(new SlotItemHandler(internal, 132, 13, 122) { + private final int slot = 132; + })); + this.customSlots.put(133, this.addSlot(new SlotItemHandler(internal, 133, 31, 122) { + private final int slot = 133; + })); + this.customSlots.put(134, this.addSlot(new SlotItemHandler(internal, 134, 49, 122) { + private final int slot = 134; + })); + this.customSlots.put(135, this.addSlot(new SlotItemHandler(internal, 135, 67, 122) { + private final int slot = 135; + })); + this.customSlots.put(136, this.addSlot(new SlotItemHandler(internal, 136, 85, 122) { + private final int slot = 136; + })); + this.customSlots.put(137, this.addSlot(new SlotItemHandler(internal, 137, 103, 122) { + private final int slot = 137; + })); + this.customSlots.put(138, this.addSlot(new SlotItemHandler(internal, 138, 121, 122) { + private final int slot = 138; + })); + this.customSlots.put(139, this.addSlot(new SlotItemHandler(internal, 139, 139, 122) { + private final int slot = 139; + })); + this.customSlots.put(140, this.addSlot(new SlotItemHandler(internal, 140, 157, 122) { + private final int slot = 140; + })); + this.customSlots.put(141, this.addSlot(new SlotItemHandler(internal, 141, 175, 122) { + private final int slot = 141; + })); + this.customSlots.put(142, this.addSlot(new SlotItemHandler(internal, 142, 193, 122) { + private final int slot = 142; + })); + this.customSlots.put(143, this.addSlot(new SlotItemHandler(internal, 143, 211, 122) { + private final int slot = 143; + })); + this.customSlots.put(144, this.addSlot(new SlotItemHandler(internal, 144, 229, 122) { + private final int slot = 144; + })); + this.customSlots.put(145, this.addSlot(new SlotItemHandler(internal, 145, 247, 122) { + private final int slot = 145; + })); + this.customSlots.put(146, this.addSlot(new SlotItemHandler(internal, 146, 265, 122) { + private final int slot = 146; + })); + this.customSlots.put(147, this.addSlot(new SlotItemHandler(internal, 147, 283, 122) { + private final int slot = 147; + })); + this.customSlots.put(148, this.addSlot(new SlotItemHandler(internal, 148, 301, 122) { + private final int slot = 148; + })); + this.customSlots.put(149, this.addSlot(new SlotItemHandler(internal, 149, 319, 122) { + private final int slot = 149; + })); + this.customSlots.put(150, this.addSlot(new SlotItemHandler(internal, 150, 337, 122) { + private final int slot = 150; + })); + this.customSlots.put(151, this.addSlot(new SlotItemHandler(internal, 151, 355, 122) { + private final int slot = 151; + })); + this.customSlots.put(152, this.addSlot(new SlotItemHandler(internal, 152, 373, 122) { + private final int slot = 152; + })); + this.customSlots.put(153, this.addSlot(new SlotItemHandler(internal, 153, 391, 122) { + private final int slot = 153; + })); + this.customSlots.put(154, this.addSlot(new SlotItemHandler(internal, 154, 13, 140) { + private final int slot = 154; + })); + this.customSlots.put(155, this.addSlot(new SlotItemHandler(internal, 155, 31, 140) { + private final int slot = 155; + })); + this.customSlots.put(156, this.addSlot(new SlotItemHandler(internal, 156, 31, 140) { + private final int slot = 156; + })); + this.customSlots.put(157, this.addSlot(new SlotItemHandler(internal, 157, 49, 140) { + private final int slot = 157; + })); + this.customSlots.put(158, this.addSlot(new SlotItemHandler(internal, 158, 67, 140) { + private final int slot = 158; + })); + this.customSlots.put(159, this.addSlot(new SlotItemHandler(internal, 159, 85, 140) { + private final int slot = 159; + })); + this.customSlots.put(160, this.addSlot(new SlotItemHandler(internal, 160, 103, 140) { + private final int slot = 160; + })); + this.customSlots.put(161, this.addSlot(new SlotItemHandler(internal, 161, 121, 140) { + private final int slot = 161; + })); + this.customSlots.put(162, this.addSlot(new SlotItemHandler(internal, 162, 139, 140) { + private final int slot = 162; + })); + this.customSlots.put(163, this.addSlot(new SlotItemHandler(internal, 163, 157, 140) { + private final int slot = 163; + })); + this.customSlots.put(164, this.addSlot(new SlotItemHandler(internal, 164, 175, 140) { + private final int slot = 164; + })); + this.customSlots.put(165, this.addSlot(new SlotItemHandler(internal, 165, 193, 140) { + private final int slot = 165; + })); + this.customSlots.put(166, this.addSlot(new SlotItemHandler(internal, 166, 211, 140) { + private final int slot = 166; + })); + this.customSlots.put(167, this.addSlot(new SlotItemHandler(internal, 167, 229, 140) { + private final int slot = 167; + })); + this.customSlots.put(168, this.addSlot(new SlotItemHandler(internal, 168, 247, 140) { + private final int slot = 168; + })); + this.customSlots.put(169, this.addSlot(new SlotItemHandler(internal, 169, 265, 140) { + private final int slot = 169; + })); + this.customSlots.put(170, this.addSlot(new SlotItemHandler(internal, 170, 283, 140) { + private final int slot = 170; + })); + this.customSlots.put(171, this.addSlot(new SlotItemHandler(internal, 171, 301, 140) { + private final int slot = 171; + })); + this.customSlots.put(172, this.addSlot(new SlotItemHandler(internal, 172, 319, 140) { + private final int slot = 172; + })); + this.customSlots.put(173, this.addSlot(new SlotItemHandler(internal, 173, 337, 140) { + private final int slot = 173; + })); + this.customSlots.put(174, this.addSlot(new SlotItemHandler(internal, 174, 355, 140) { + private final int slot = 174; + })); + this.customSlots.put(175, this.addSlot(new SlotItemHandler(internal, 175, 373, 140) { + private final int slot = 175; + })); + this.customSlots.put(176, this.addSlot(new SlotItemHandler(internal, 176, 391, 140) { + private final int slot = 176; + })); + this.customSlots.put(177, this.addSlot(new SlotItemHandler(internal, 177, 175, 158) { + private final int slot = 177; + })); + this.customSlots.put(178, this.addSlot(new SlotItemHandler(internal, 178, 193, 158) { + private final int slot = 178; + })); + this.customSlots.put(179, this.addSlot(new SlotItemHandler(internal, 179, 211, 158) { + private final int slot = 179; + })); + this.customSlots.put(180, this.addSlot(new SlotItemHandler(internal, 180, 229, 158) { + private final int slot = 180; + })); + this.customSlots.put(181, this.addSlot(new SlotItemHandler(internal, 181, 247, 158) { + private final int slot = 181; + })); + this.customSlots.put(182, this.addSlot(new SlotItemHandler(internal, 182, 265, 158) { + private final int slot = 182; + })); + this.customSlots.put(183, this.addSlot(new SlotItemHandler(internal, 183, 283, 158) { + private final int slot = 183; + })); + this.customSlots.put(184, this.addSlot(new SlotItemHandler(internal, 184, 301, 158) { + private final int slot = 184; + })); + this.customSlots.put(185, this.addSlot(new SlotItemHandler(internal, 185, 319, 158) { + private final int slot = 185; + })); + this.customSlots.put(186, this.addSlot(new SlotItemHandler(internal, 186, 337, 158) { + private final int slot = 186; + })); + this.customSlots.put(187, this.addSlot(new SlotItemHandler(internal, 187, 355, 158) { + private final int slot = 187; + })); + this.customSlots.put(188, this.addSlot(new SlotItemHandler(internal, 188, 373, 158) { + private final int slot = 188; + })); + this.customSlots.put(189, this.addSlot(new SlotItemHandler(internal, 189, 391, 158) { + private final int slot = 189; + })); + this.customSlots.put(190, this.addSlot(new SlotItemHandler(internal, 190, 175, 176) { + private final int slot = 190; + })); + this.customSlots.put(191, this.addSlot(new SlotItemHandler(internal, 191, 193, 176) { + private final int slot = 191; + })); + this.customSlots.put(192, this.addSlot(new SlotItemHandler(internal, 192, 211, 176) { + private final int slot = 192; + })); + this.customSlots.put(193, this.addSlot(new SlotItemHandler(internal, 193, 229, 176) { + private final int slot = 193; + })); + this.customSlots.put(194, this.addSlot(new SlotItemHandler(internal, 194, 247, 176) { + private final int slot = 194; + })); + this.customSlots.put(195, this.addSlot(new SlotItemHandler(internal, 195, 265, 176) { + private final int slot = 195; + })); + this.customSlots.put(196, this.addSlot(new SlotItemHandler(internal, 196, 283, 176) { + private final int slot = 196; + })); + this.customSlots.put(197, this.addSlot(new SlotItemHandler(internal, 197, 301, 176) { + private final int slot = 197; + })); + this.customSlots.put(198, this.addSlot(new SlotItemHandler(internal, 198, 319, 176) { + private final int slot = 198; + })); + this.customSlots.put(199, this.addSlot(new SlotItemHandler(internal, 199, 337, 176) { + private final int slot = 199; + })); + this.customSlots.put(200, this.addSlot(new SlotItemHandler(internal, 200, 355, 176) { + private final int slot = 200; + })); + this.customSlots.put(201, this.addSlot(new SlotItemHandler(internal, 201, 373, 176) { + private final int slot = 201; + })); + this.customSlots.put(202, this.addSlot(new SlotItemHandler(internal, 202, 391, 176) { + private final int slot = 202; + })); + this.customSlots.put(203, this.addSlot(new SlotItemHandler(internal, 203, 175, 194) { + private final int slot = 203; + })); + this.customSlots.put(204, this.addSlot(new SlotItemHandler(internal, 204, 193, 194) { + private final int slot = 204; + })); + this.customSlots.put(205, this.addSlot(new SlotItemHandler(internal, 205, 211, 194) { + private final int slot = 205; + })); + this.customSlots.put(206, this.addSlot(new SlotItemHandler(internal, 206, 229, 194) { + private final int slot = 206; + })); + this.customSlots.put(207, this.addSlot(new SlotItemHandler(internal, 207, 247, 194) { + private final int slot = 207; + })); + this.customSlots.put(208, this.addSlot(new SlotItemHandler(internal, 208, 265, 194) { + private final int slot = 208; + })); + this.customSlots.put(209, this.addSlot(new SlotItemHandler(internal, 209, 283, 194) { + private final int slot = 209; + })); + this.customSlots.put(210, this.addSlot(new SlotItemHandler(internal, 210, 301, 194) { + private final int slot = 210; + })); + this.customSlots.put(211, this.addSlot(new SlotItemHandler(internal, 211, 319, 194) { + private final int slot = 211; + })); + this.customSlots.put(212, this.addSlot(new SlotItemHandler(internal, 212, 337, 194) { + private final int slot = 212; + })); + this.customSlots.put(213, this.addSlot(new SlotItemHandler(internal, 213, 355, 194) { + private final int slot = 213; + })); + this.customSlots.put(214, this.addSlot(new SlotItemHandler(internal, 214, 373, 194) { + private final int slot = 214; + })); + this.customSlots.put(215, this.addSlot(new SlotItemHandler(internal, 215, 391, 194) { + private final int slot = 215; + })); + this.customSlots.put(216, this.addSlot(new SlotItemHandler(internal, 216, 175, 212) { + private final int slot = 216; + })); + this.customSlots.put(217, this.addSlot(new SlotItemHandler(internal, 217, 193, 212) { + private final int slot = 217; + })); + this.customSlots.put(218, this.addSlot(new SlotItemHandler(internal, 218, 211, 212) { + private final int slot = 218; + })); + this.customSlots.put(219, this.addSlot(new SlotItemHandler(internal, 219, 229, 212) { + private final int slot = 219; + })); + this.customSlots.put(220, this.addSlot(new SlotItemHandler(internal, 220, 247, 212) { + private final int slot = 220; + })); + this.customSlots.put(221, this.addSlot(new SlotItemHandler(internal, 221, 265, 212) { + private final int slot = 221; + })); + this.customSlots.put(222, this.addSlot(new SlotItemHandler(internal, 222, 283, 212) { + private final int slot = 222; + })); + this.customSlots.put(223, this.addSlot(new SlotItemHandler(internal, 223, 301, 212) { + private final int slot = 223; + })); + this.customSlots.put(224, this.addSlot(new SlotItemHandler(internal, 224, 319, 212) { + private final int slot = 224; + })); + this.customSlots.put(225, this.addSlot(new SlotItemHandler(internal, 225, 337, 212) { + private final int slot = 225; + })); + this.customSlots.put(226, this.addSlot(new SlotItemHandler(internal, 226, 355, 212) { + private final int slot = 226; + })); + this.customSlots.put(227, this.addSlot(new SlotItemHandler(internal, 227, 373, 212) { + private final int slot = 227; + })); + this.customSlots.put(228, this.addSlot(new SlotItemHandler(internal, 228, 391, 212) { + private final int slot = 228; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 4 + 8 + sj * 18, 84 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 4 + 8 + si * 18, 84 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 229) { + if (!this.moveItemStackTo(itemstack1, 229, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 229, false)) { + if (index < 229 + 27) { + if (!this.moveItemStackTo(itemstack1, 229 + 27, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + } else { + if (!this.moveItemStackTo(itemstack1, 229, 229 + 27, false)) { + return ItemStack.EMPTY; + } + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.set(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.set(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/hal/studios/hpm/world/inventory/RaftinventoryMenu.java b/src/main/java/hal/studios/hpm/world/inventory/RaftinventoryMenu.java new file mode 100644 index 0000000..f5d3b91 --- /dev/null +++ b/src/main/java/hal/studios/hpm/world/inventory/RaftinventoryMenu.java @@ -0,0 +1,460 @@ + +package hal.studios.hpm.world.inventory; + +import net.minecraftforge.items.SlotItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import hal.studios.hpm.init.HpmModMenus; + +public class RaftinventoryMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public RaftinventoryMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(HpmModMenus.RAFTINVENTORY, id); + this.entity = inv.player; + this.world = inv.player.level; + this.internal = new ItemStackHandler(97); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 105, 16) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 123, 16) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 141, 16) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 159, 16) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 177, 16) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 195, 16) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 213, 16) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 231, 16) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 249, 16) { + private final int slot = 8; + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 105, 34) { + private final int slot = 9; + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 123, 34) { + private final int slot = 10; + })); + this.customSlots.put(11, this.addSlot(new SlotItemHandler(internal, 11, 141, 34) { + private final int slot = 11; + })); + this.customSlots.put(12, this.addSlot(new SlotItemHandler(internal, 12, 159, 34) { + private final int slot = 12; + })); + this.customSlots.put(13, this.addSlot(new SlotItemHandler(internal, 13, 177, 34) { + private final int slot = 13; + })); + this.customSlots.put(14, this.addSlot(new SlotItemHandler(internal, 14, 195, 34) { + private final int slot = 14; + })); + this.customSlots.put(15, this.addSlot(new SlotItemHandler(internal, 15, 213, 34) { + private final int slot = 15; + })); + this.customSlots.put(16, this.addSlot(new SlotItemHandler(internal, 16, 231, 34) { + private final int slot = 16; + })); + this.customSlots.put(17, this.addSlot(new SlotItemHandler(internal, 17, 249, 34) { + private final int slot = 17; + })); + this.customSlots.put(18, this.addSlot(new SlotItemHandler(internal, 18, 105, 52) { + private final int slot = 18; + })); + this.customSlots.put(19, this.addSlot(new SlotItemHandler(internal, 19, 123, 52) { + private final int slot = 19; + })); + this.customSlots.put(20, this.addSlot(new SlotItemHandler(internal, 20, 141, 52) { + private final int slot = 20; + })); + this.customSlots.put(21, this.addSlot(new SlotItemHandler(internal, 21, 159, 52) { + private final int slot = 21; + })); + this.customSlots.put(22, this.addSlot(new SlotItemHandler(internal, 22, 177, 52) { + private final int slot = 22; + })); + this.customSlots.put(23, this.addSlot(new SlotItemHandler(internal, 23, 195, 52) { + private final int slot = 23; + })); + this.customSlots.put(24, this.addSlot(new SlotItemHandler(internal, 24, 213, 52) { + private final int slot = 24; + })); + this.customSlots.put(25, this.addSlot(new SlotItemHandler(internal, 25, 231, 52) { + private final int slot = 25; + })); + this.customSlots.put(26, this.addSlot(new SlotItemHandler(internal, 26, 249, 52) { + private final int slot = 26; + })); + this.customSlots.put(27, this.addSlot(new SlotItemHandler(internal, 27, 105, 70) { + private final int slot = 27; + })); + this.customSlots.put(28, this.addSlot(new SlotItemHandler(internal, 28, 123, 70) { + private final int slot = 28; + })); + this.customSlots.put(29, this.addSlot(new SlotItemHandler(internal, 29, 141, 70) { + private final int slot = 29; + })); + this.customSlots.put(30, this.addSlot(new SlotItemHandler(internal, 30, 159, 70) { + private final int slot = 30; + })); + this.customSlots.put(31, this.addSlot(new SlotItemHandler(internal, 31, 177, 70) { + private final int slot = 31; + })); + this.customSlots.put(32, this.addSlot(new SlotItemHandler(internal, 32, 195, 70) { + private final int slot = 32; + })); + this.customSlots.put(33, this.addSlot(new SlotItemHandler(internal, 33, 213, 70) { + private final int slot = 33; + })); + this.customSlots.put(34, this.addSlot(new SlotItemHandler(internal, 34, 231, 70) { + private final int slot = 34; + })); + this.customSlots.put(35, this.addSlot(new SlotItemHandler(internal, 35, 249, 70) { + private final int slot = 35; + })); + this.customSlots.put(36, this.addSlot(new SlotItemHandler(internal, 36, 267, 16) { + private final int slot = 36; + })); + this.customSlots.put(37, this.addSlot(new SlotItemHandler(internal, 37, 285, 16) { + private final int slot = 37; + })); + this.customSlots.put(38, this.addSlot(new SlotItemHandler(internal, 38, 303, 16) { + private final int slot = 38; + })); + this.customSlots.put(39, this.addSlot(new SlotItemHandler(internal, 39, 321, 16) { + private final int slot = 39; + })); + this.customSlots.put(40, this.addSlot(new SlotItemHandler(internal, 40, 339, 16) { + private final int slot = 40; + })); + this.customSlots.put(49, this.addSlot(new SlotItemHandler(internal, 49, 285, 52) { + private final int slot = 49; + })); + this.customSlots.put(50, this.addSlot(new SlotItemHandler(internal, 50, 303, 52) { + private final int slot = 50; + })); + this.customSlots.put(51, this.addSlot(new SlotItemHandler(internal, 51, 321, 52) { + private final int slot = 51; + })); + this.customSlots.put(52, this.addSlot(new SlotItemHandler(internal, 52, 339, 52) { + private final int slot = 52; + })); + this.customSlots.put(64, this.addSlot(new SlotItemHandler(internal, 64, 15, 16) { + private final int slot = 64; + })); + this.customSlots.put(66, this.addSlot(new SlotItemHandler(internal, 66, 87, 34) { + private final int slot = 66; + })); + this.customSlots.put(67, this.addSlot(new SlotItemHandler(internal, 67, 69, 34) { + private final int slot = 67; + })); + this.customSlots.put(68, this.addSlot(new SlotItemHandler(internal, 68, 51, 34) { + private final int slot = 68; + })); + this.customSlots.put(69, this.addSlot(new SlotItemHandler(internal, 69, 33, 16) { + private final int slot = 69; + })); + this.customSlots.put(70, this.addSlot(new SlotItemHandler(internal, 70, 33, 34) { + private final int slot = 70; + })); + this.customSlots.put(71, this.addSlot(new SlotItemHandler(internal, 71, 15, 34) { + private final int slot = 71; + })); + this.customSlots.put(74, this.addSlot(new SlotItemHandler(internal, 74, 15, 52) { + private final int slot = 74; + })); + this.customSlots.put(75, this.addSlot(new SlotItemHandler(internal, 75, 33, 52) { + private final int slot = 75; + })); + this.customSlots.put(76, this.addSlot(new SlotItemHandler(internal, 76, 51, 52) { + private final int slot = 76; + })); + this.customSlots.put(77, this.addSlot(new SlotItemHandler(internal, 77, 69, 52) { + private final int slot = 77; + })); + this.customSlots.put(78, this.addSlot(new SlotItemHandler(internal, 78, 87, 52) { + private final int slot = 78; + })); + this.customSlots.put(80, this.addSlot(new SlotItemHandler(internal, 80, 15, 70) { + private final int slot = 80; + })); + this.customSlots.put(81, this.addSlot(new SlotItemHandler(internal, 81, 33, 70) { + private final int slot = 81; + })); + this.customSlots.put(82, this.addSlot(new SlotItemHandler(internal, 82, 51, 70) { + private final int slot = 82; + })); + this.customSlots.put(83, this.addSlot(new SlotItemHandler(internal, 83, 69, 70) { + private final int slot = 83; + })); + this.customSlots.put(84, this.addSlot(new SlotItemHandler(internal, 84, 87, 70) { + private final int slot = 84; + })); + this.customSlots.put(62, this.addSlot(new SlotItemHandler(internal, 62, 51, 16) { + private final int slot = 62; + })); + this.customSlots.put(60, this.addSlot(new SlotItemHandler(internal, 60, 87, 16) { + private final int slot = 60; + })); + this.customSlots.put(85, this.addSlot(new SlotItemHandler(internal, 85, 267, 34) { + private final int slot = 85; + })); + this.customSlots.put(86, this.addSlot(new SlotItemHandler(internal, 86, 285, 34) { + private final int slot = 86; + })); + this.customSlots.put(87, this.addSlot(new SlotItemHandler(internal, 87, 303, 34) { + private final int slot = 87; + })); + this.customSlots.put(88, this.addSlot(new SlotItemHandler(internal, 88, 321, 34) { + private final int slot = 88; + })); + this.customSlots.put(89, this.addSlot(new SlotItemHandler(internal, 89, 339, 34) { + private final int slot = 89; + })); + this.customSlots.put(90, this.addSlot(new SlotItemHandler(internal, 90, 267, 52) { + private final int slot = 90; + })); + this.customSlots.put(91, this.addSlot(new SlotItemHandler(internal, 91, 267, 70) { + private final int slot = 91; + })); + this.customSlots.put(92, this.addSlot(new SlotItemHandler(internal, 92, 285, 70) { + private final int slot = 92; + })); + this.customSlots.put(93, this.addSlot(new SlotItemHandler(internal, 93, 303, 70) { + private final int slot = 93; + })); + this.customSlots.put(94, this.addSlot(new SlotItemHandler(internal, 94, 321, 70) { + private final int slot = 94; + })); + this.customSlots.put(95, this.addSlot(new SlotItemHandler(internal, 95, 69, 16) { + private final int slot = 95; + })); + this.customSlots.put(96, this.addSlot(new SlotItemHandler(internal, 96, 339, 70) { + private final int slot = 96; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 97 + 8 + sj * 18, 17 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 97 + 8 + si * 18, 17 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 76) { + if (!this.moveItemStackTo(itemstack1, 76, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 76, false)) { + if (index < 76 + 27) { + if (!this.moveItemStackTo(itemstack1, 76 + 27, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + } else { + if (!this.moveItemStackTo(itemstack1, 76, 76 + 27, false)) { + return ItemStack.EMPTY; + } + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.set(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.set(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/java/hal/studios/hpm/world/inventory/SwashbucklerinventoryMenu.java b/src/main/java/hal/studios/hpm/world/inventory/SwashbucklerinventoryMenu.java new file mode 100644 index 0000000..85acb97 --- /dev/null +++ b/src/main/java/hal/studios/hpm/world/inventory/SwashbucklerinventoryMenu.java @@ -0,0 +1,340 @@ + +package hal.studios.hpm.world.inventory; + +import net.minecraftforge.items.SlotItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.Entity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.core.BlockPos; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +import hal.studios.hpm.init.HpmModMenus; + +public class SwashbucklerinventoryMenu extends AbstractContainerMenu implements Supplier> { + public final static HashMap guistate = new HashMap<>(); + public final Level world; + public final Player entity; + public int x, y, z; + private ContainerLevelAccess access = ContainerLevelAccess.NULL; + private IItemHandler internal; + private final Map customSlots = new HashMap<>(); + private boolean bound = false; + private Supplier boundItemMatcher = null; + private Entity boundEntity = null; + private BlockEntity boundBlockEntity = null; + + public SwashbucklerinventoryMenu(int id, Inventory inv, FriendlyByteBuf extraData) { + super(HpmModMenus.SWASHBUCKLERINVENTORY, id); + this.entity = inv.player; + this.world = inv.player.level; + this.internal = new ItemStackHandler(36); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + access = ContainerLevelAccess.create(world, pos); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack = hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem(); + this.boundItemMatcher = () -> itemstack == (hand == 0 ? this.entity.getMainHandItem() : this.entity.getOffhandItem()); + itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { // bound to entity + extraData.readByte(); // drop padding + boundEntity = world.getEntity(extraData.readVarInt()); + if (boundEntity != null) + boundEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + boundBlockEntity = this.world.getBlockEntity(pos); + if (boundBlockEntity != null) + boundBlockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 7, 12) { + private final int slot = 0; + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 25, 12) { + private final int slot = 1; + })); + this.customSlots.put(2, this.addSlot(new SlotItemHandler(internal, 2, 43, 12) { + private final int slot = 2; + })); + this.customSlots.put(3, this.addSlot(new SlotItemHandler(internal, 3, 61, 12) { + private final int slot = 3; + })); + this.customSlots.put(4, this.addSlot(new SlotItemHandler(internal, 4, 79, 12) { + private final int slot = 4; + })); + this.customSlots.put(5, this.addSlot(new SlotItemHandler(internal, 5, 97, 12) { + private final int slot = 5; + })); + this.customSlots.put(6, this.addSlot(new SlotItemHandler(internal, 6, 115, 12) { + private final int slot = 6; + })); + this.customSlots.put(7, this.addSlot(new SlotItemHandler(internal, 7, 133, 12) { + private final int slot = 7; + })); + this.customSlots.put(8, this.addSlot(new SlotItemHandler(internal, 8, 151, 12) { + private final int slot = 8; + })); + this.customSlots.put(9, this.addSlot(new SlotItemHandler(internal, 9, 7, 30) { + private final int slot = 9; + })); + this.customSlots.put(10, this.addSlot(new SlotItemHandler(internal, 10, 25, 30) { + private final int slot = 10; + })); + this.customSlots.put(11, this.addSlot(new SlotItemHandler(internal, 11, 43, 30) { + private final int slot = 11; + })); + this.customSlots.put(12, this.addSlot(new SlotItemHandler(internal, 12, 61, 30) { + private final int slot = 12; + })); + this.customSlots.put(13, this.addSlot(new SlotItemHandler(internal, 13, 79, 30) { + private final int slot = 13; + })); + this.customSlots.put(14, this.addSlot(new SlotItemHandler(internal, 14, 97, 30) { + private final int slot = 14; + })); + this.customSlots.put(15, this.addSlot(new SlotItemHandler(internal, 15, 115, 30) { + private final int slot = 15; + })); + this.customSlots.put(16, this.addSlot(new SlotItemHandler(internal, 16, 133, 30) { + private final int slot = 16; + })); + this.customSlots.put(17, this.addSlot(new SlotItemHandler(internal, 17, 151, 30) { + private final int slot = 17; + })); + this.customSlots.put(18, this.addSlot(new SlotItemHandler(internal, 18, 7, 48) { + private final int slot = 18; + })); + this.customSlots.put(19, this.addSlot(new SlotItemHandler(internal, 19, 25, 48) { + private final int slot = 19; + })); + this.customSlots.put(20, this.addSlot(new SlotItemHandler(internal, 20, 43, 48) { + private final int slot = 20; + })); + this.customSlots.put(21, this.addSlot(new SlotItemHandler(internal, 21, 61, 48) { + private final int slot = 21; + })); + this.customSlots.put(22, this.addSlot(new SlotItemHandler(internal, 22, 79, 48) { + private final int slot = 22; + })); + this.customSlots.put(23, this.addSlot(new SlotItemHandler(internal, 23, 97, 48) { + private final int slot = 23; + })); + this.customSlots.put(24, this.addSlot(new SlotItemHandler(internal, 24, 115, 48) { + private final int slot = 24; + })); + this.customSlots.put(25, this.addSlot(new SlotItemHandler(internal, 25, 133, 48) { + private final int slot = 25; + })); + this.customSlots.put(26, this.addSlot(new SlotItemHandler(internal, 26, 151, 48) { + private final int slot = 26; + })); + this.customSlots.put(27, this.addSlot(new SlotItemHandler(internal, 27, 7, 66) { + private final int slot = 27; + })); + this.customSlots.put(28, this.addSlot(new SlotItemHandler(internal, 28, 25, 66) { + private final int slot = 28; + })); + this.customSlots.put(29, this.addSlot(new SlotItemHandler(internal, 29, 43, 66) { + private final int slot = 29; + })); + this.customSlots.put(30, this.addSlot(new SlotItemHandler(internal, 30, 61, 66) { + private final int slot = 30; + })); + this.customSlots.put(31, this.addSlot(new SlotItemHandler(internal, 31, 79, 66) { + private final int slot = 31; + })); + this.customSlots.put(32, this.addSlot(new SlotItemHandler(internal, 32, 97, 66) { + private final int slot = 32; + })); + this.customSlots.put(33, this.addSlot(new SlotItemHandler(internal, 33, 115, 66) { + private final int slot = 33; + })); + this.customSlots.put(34, this.addSlot(new SlotItemHandler(internal, 34, 133, 66) { + private final int slot = 34; + })); + this.customSlots.put(35, this.addSlot(new SlotItemHandler(internal, 35, 151, 66) { + private final int slot = 35; + })); + for (int si = 0; si < 3; ++si) + for (int sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 11 + 84 + si * 18)); + for (int si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 11 + 142)); + } + + @Override + public boolean stillValid(Player player) { + if (this.bound) { + if (this.boundItemMatcher != null) + return this.boundItemMatcher.get(); + else if (this.boundBlockEntity != null) + return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock()); + else if (this.boundEntity != null) + return this.boundEntity.isAlive(); + } + return true; + } + + @Override + public ItemStack quickMoveStack(Player playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index < 36) { + if (!this.moveItemStackTo(itemstack1, 36, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + slot.onQuickCraft(itemstack1, itemstack); + } else if (!this.moveItemStackTo(itemstack1, 0, 36, false)) { + if (index < 36 + 27) { + if (!this.moveItemStackTo(itemstack1, 36 + 27, this.slots.size(), true)) { + return ItemStack.EMPTY; + } + } else { + if (!this.moveItemStackTo(itemstack1, 36, 36 + 27, false)) { + return ItemStack.EMPTY; + } + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override + protected boolean moveItemStackTo(ItemStack p_38904_, int p_38905_, int p_38906_, boolean p_38907_) { + boolean flag = false; + int i = p_38905_; + if (p_38907_) { + i = p_38906_ - 1; + } + if (p_38904_.isStackable()) { + while (!p_38904_.isEmpty()) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot = this.slots.get(i); + ItemStack itemstack = slot.getItem(); + if (slot.mayPlace(itemstack) && !itemstack.isEmpty() && ItemStack.isSameItemSameTags(p_38904_, itemstack)) { + int j = itemstack.getCount() + p_38904_.getCount(); + int maxSize = Math.min(slot.getMaxStackSize(), p_38904_.getMaxStackSize()); + if (j <= maxSize) { + p_38904_.setCount(0); + itemstack.setCount(j); + slot.set(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + p_38904_.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.set(itemstack); + flag = true; + } + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + if (!p_38904_.isEmpty()) { + if (p_38907_) { + i = p_38906_ - 1; + } else { + i = p_38905_; + } + while (true) { + if (p_38907_) { + if (i < p_38905_) { + break; + } + } else if (i >= p_38906_) { + break; + } + Slot slot1 = this.slots.get(i); + ItemStack itemstack1 = slot1.getItem(); + if (itemstack1.isEmpty() && slot1.mayPlace(p_38904_)) { + if (p_38904_.getCount() > slot1.getMaxStackSize()) { + slot1.set(p_38904_.split(slot1.getMaxStackSize())); + } else { + slot1.set(p_38904_.split(p_38904_.getCount())); + } + slot1.setChanged(); + flag = true; + break; + } + if (p_38907_) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void removed(Player playerIn) { + super.removed(playerIn); + if (!bound && playerIn instanceof ServerPlayer serverPlayer) { + if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + playerIn.drop(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + playerIn.getInventory().placeItemBackInInventory(internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + public Map get() { + return customSlots; + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..d50b594 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,24 @@ +modLoader="javafml" +loaderVersion="[40,)" +license="All Rights Reserved" + +[[mods]] +modId="hpm" +version="2.6.6" +displayName="HalsPirateMod" +credits="Halbear1" +displayURL="https://halbear.net/" +logoFile="logo.png" +authors="Halbear" +description="a small ship mod containing 6 ships and a weapon" + +[[dependencies.hpm]] + modId="minecraft" + mandatory=true + versionRange="[1.18.2]" + ordering="NONE" + side="BOTH" + + + + diff --git a/src/main/resources/assets/hpm/lang/en_us.json b/src/main/resources/assets/hpm/lang/en_us.json new file mode 100644 index 0000000..e544636 --- /dev/null +++ b/src/main/resources/assets/hpm/lang/en_us.json @@ -0,0 +1,80 @@ +{ + "item.hpm.spanner": "Spanner", + "advancements.piracy_achievement.title": "To the dark side...", + "advancements.war_cutter_achievement.descr": "hoist the masts, ready the cannons, we\u0027ve got a proper military ship now!", + "key.hpm.rotateshipleft": "Rotate Ship Left", + "advancements.cannonballcraft.title": "An Explosive Advancement", + "item.hpm.raftitem": "Raft", + "advancements.cannonballcraft.descr": "Obtain Cannonballs", + "entity.hpm.shipwreckswashbuckler": "Shipwreckswashbuckler", + "advancements.piracy_achievement.descr": "Become a pirate by making your own pirate ship", + "entity.hpm.cutter": "cutter", + "item.hpm.swashbucklerupgrade": "Swashbuckler upgraded", + "key.hpm.rotateshipright": "Rotate Ship Right", + "advancements.swashbucklers_advancement_branch.descr": "Venture the open seas!", + "entity.hpm.cutter_seat": "Cutter Passenger", + "item.hpm.cutteritem": "Cutter", + "item.hpm.pirate_cutter_item": "Cutter Pirate", + "advancements.spanner_use_achievement.descr": "repair a damaged ship using a spanner", + "item.hpm.smallhull": "Small hull", + "advancements.war_cutter_achievement.title": "A fine navy vessel", + "entity.hpm.cutterpiratedamaged": "cutter", + "advancements.spanner_use_achievement.title": "If it broke, fix it", + "key.hpm.fire": "Fire main cannon", + "item.hpm.largemast": "Large Mast", + "advancements.warfare_achievement.title": "No Mercy", + "entity.hpm.cuttermilitarised": "cutter", + "key.hpm.sailspeeddown": "Sail speed down", + "entity.hpm.swashbuckler": "Swashbuckler", + "entity.hpm.cutter_sail_hitbox": "Cutter Passenger", + "item.hpm.cannonball": "Cannon ball", + "item.hpm.corvette_steamship_item": "Corvette Steamship", + "advancements.u_swashbuckler_achievement.descr": "Sticks and stones can break bones", + "advancements.cannon_craft.title": "Advanced Warfare", + "entity.hpm.cutter_militarised_wreck": "cutterwarwreck", + "entity.hpm.cutter_militarised_damaged_sails": "cutter", + "advancements.spanner_achievement.title": "Maintenance is key", + "advancements.cutter_achievement.title": "Expanding Horizons", + "advancements.swashbuckler_achievement.descr": "sail using the swashbucklers", + "advancements.pirate_cutter_achievement.descr": "Commandeer a pirate ship", + "entity.hpm.shipwreckedraft": "Shipwreckraft", + "item.hpm.largehull": "Large hull", + "itemGroup.tabswashbucklers": "Swashbucklers!", + "advancements.raft_achievement.descr": "sail using the raft", + "advancements.pirate_cutter_achievement.title": "Jack Sparrow Who?", + "item.hpm.swashbuckleritem": "Swashbuckler", + "advancements.swashbuckler_achievement.title": "Well she ain\u0027t much...", + "advancements.cutter_achievement.descr": "Sail the seas using the Cutter trading ship", + "entity.hpm.cutterwreckfront": "cutterwreckfront", + "advancements.spanner_achievement.descr": "Obtain a spanner", + "entity.hpm.wreckedswashbucklerupgrade": "Shipwreckswashbucklerupgraded", + "item.hpm.cuttermilitariseditem": "Cutter Militarised", + "entity.hpm.cutterdamaged": "cutter", + "key.hpm.fire_mortar_key": "Fire Mortar", + "entity.hpm.swashbucklerupgraded": "Swashbuckler upgraded", + "entity.hpm.cutter_pirate": "cutter", + "entity.hpm.barrel_debris": "Wood Debris", + "entity.hpm.cutter_passenger": "Cutter Passenger", + "key.categories.swashbucklers": "Hal\u0027s Swashbucklers!", + "advancements.u_swashbuckler_achievement.title": "Glass Cannon", + "entity.hpm.cutter_pirate_damaged_sails": "cutter", + "item.hpm.hand_mortar": "Hand mortar", + "key.hpm.sailspeedup": "Sail speed up", + "advancements.swashbucklers_advancement_branch.title": "Swashbucklers!", + "entity.hpm.corvette_steamship": "Corvette Steamship", + "item.hpm.small_mast": "Small Mast", + "entity.hpm.cutterwreckback": "cutterwreckback", + "entity.hpm.cuttermilitariseddamaged": "cutter", + "advancements.cannon_craft.descr": "Create a hand Cannon", + "item.hpm.mortar_ball": "Mortar ball", + "entity.hpm.wood_debris": "Wood Debris", + "advancements.raft_achievement.title": "Crude Beginnings", + "entity.hpm.corvettesteamshipdamaged": "Corvette Steamship damaged", + "key.hpm.cannon_right": "Fire Right Cannon ", + "entity.hpm.cutter_sails_damaged": "cutter", + "entity.hpm.cutterpiratewreck": "cutterpiratewreck", + "item.hpm.hand_cannon": "Hand Cannon", + "key.hpm.cannon_left": "Fire Left Cannon", + "entity.hpm.raft": "Raft", + "advancements.warfare_achievement.descr": "Use a cannon of any kind" +} \ No newline at end of file diff --git a/src/main/resources/assets/hpm/particles/plank_splinter.json b/src/main/resources/assets/hpm/particles/plank_splinter.json new file mode 100644 index 0000000..cbef5c3 --- /dev/null +++ b/src/main/resources/assets/hpm/particles/plank_splinter.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "hpm:plank_splinter" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/hpm/particles/ripped_sail.json b/src/main/resources/assets/hpm/particles/ripped_sail.json new file mode 100644 index 0000000..55871c2 --- /dev/null +++ b/src/main/resources/assets/hpm/particles/ripped_sail.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "hpm:ripped_sail" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/hpm/particles/ripped_sail_pirate.json b/src/main/resources/assets/hpm/particles/ripped_sail_pirate.json new file mode 100644 index 0000000..cb0668a --- /dev/null +++ b/src/main/resources/assets/hpm/particles/ripped_sail_pirate.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "hpm:ripped_sail_pirate" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/hpm/particles/splinters.json b/src/main/resources/assets/hpm/particles/splinters.json new file mode 100644 index 0000000..ce41e2d --- /dev/null +++ b/src/main/resources/assets/hpm/particles/splinters.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "hpm:splinters" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/hpm/textures/blocks/cannonball.png b/src/main/resources/assets/hpm/textures/blocks/cannonball.png new file mode 100644 index 0000000..7bf6f32 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/blocks/cannonball.png differ diff --git a/src/main/resources/assets/hpm/textures/blocks/handcannon.png b/src/main/resources/assets/hpm/textures/blocks/handcannon.png new file mode 100644 index 0000000..e7fbd1d Binary files /dev/null and b/src/main/resources/assets/hpm/textures/blocks/handcannon.png differ diff --git a/src/main/resources/assets/hpm/textures/blocks/handmortar.png b/src/main/resources/assets/hpm/textures/blocks/handmortar.png new file mode 100644 index 0000000..779332c Binary files /dev/null and b/src/main/resources/assets/hpm/textures/blocks/handmortar.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/corvetteclass.png b/src/main/resources/assets/hpm/textures/entities/corvetteclass.png new file mode 100644 index 0000000..0234a62 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/corvetteclass.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/corvetteclassdamaged.png b/src/main/resources/assets/hpm/textures/entities/corvetteclassdamaged.png new file mode 100644 index 0000000..f26322f Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/corvetteclassdamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutter.png b/src/main/resources/assets/hpm/textures/entities/cutter.png new file mode 100644 index 0000000..54c29fd Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutter.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpirate.png b/src/main/resources/assets/hpm/textures/entities/cutterpirate.png new file mode 100644 index 0000000..f9f3743 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpirate.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpiratedamaged.png b/src/main/resources/assets/hpm/textures/entities/cutterpiratedamaged.png new file mode 100644 index 0000000..6f2b9aa Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpiratedamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpiratedamagedremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterpiratedamagedremastered.png new file mode 100644 index 0000000..349afc4 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpiratedamagedremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpiratedwrecked.png b/src/main/resources/assets/hpm/textures/entities/cutterpiratedwrecked.png new file mode 100644 index 0000000..410dad0 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpiratedwrecked.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpirateremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterpirateremastered.png new file mode 100644 index 0000000..b812bc9 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpirateremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterpiratesailsdamagedremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterpiratesailsdamagedremastered.png new file mode 100644 index 0000000..8362856 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterpiratesailsdamagedremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterremastered.png new file mode 100644 index 0000000..09df86b Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterremastereddamaged.png b/src/main/resources/assets/hpm/textures/entities/cutterremastereddamaged.png new file mode 100644 index 0000000..f737ea6 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterremastereddamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterremasteredsailsdamaged.png b/src/main/resources/assets/hpm/textures/entities/cutterremasteredsailsdamaged.png new file mode 100644 index 0000000..54c90e4 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterremasteredsailsdamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterremasteredwreck.png b/src/main/resources/assets/hpm/textures/entities/cutterremasteredwreck.png new file mode 100644 index 0000000..9b5faa5 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterremasteredwreck.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterwardamaged.png b/src/main/resources/assets/hpm/textures/entities/cutterwardamaged.png new file mode 100644 index 0000000..6da4cdf Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterwardamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterweaponiseddamagedremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterweaponiseddamagedremastered.png new file mode 100644 index 0000000..6fc22df Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterweaponiseddamagedremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterweaponisedremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterweaponisedremastered.png new file mode 100644 index 0000000..fe0337a Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterweaponisedremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterweaponisedsailsdamagedremastered.png b/src/main/resources/assets/hpm/textures/entities/cutterweaponisedsailsdamagedremastered.png new file mode 100644 index 0000000..ae6e703 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterweaponisedsailsdamagedremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/cutterwrecked.png b/src/main/resources/assets/hpm/textures/entities/cutterwrecked.png new file mode 100644 index 0000000..2ed814c Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/cutterwrecked.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/floatingbarrel.png b/src/main/resources/assets/hpm/textures/entities/floatingbarrel.png new file mode 100644 index 0000000..afa9454 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/floatingbarrel.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/plankbroekein.png b/src/main/resources/assets/hpm/textures/entities/plankbroekein.png new file mode 100644 index 0000000..c3e89c2 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/plankbroekein.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/raft.png b/src/main/resources/assets/hpm/textures/entities/raft.png new file mode 100644 index 0000000..4e946e6 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/raft.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/raftwrecked.png b/src/main/resources/assets/hpm/textures/entities/raftwrecked.png new file mode 100644 index 0000000..f8f0e8c Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/raftwrecked.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/shipwoodplank.png b/src/main/resources/assets/hpm/textures/entities/shipwoodplank.png new file mode 100644 index 0000000..5ac23e1 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/shipwoodplank.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/swashbuckler.png b/src/main/resources/assets/hpm/textures/entities/swashbuckler.png new file mode 100644 index 0000000..f4ad63e Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/swashbuckler.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/swashbucklerdestroyed.png b/src/main/resources/assets/hpm/textures/entities/swashbucklerdestroyed.png new file mode 100644 index 0000000..b943559 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/swashbucklerdestroyed.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/swashbucklerupgraded.png b/src/main/resources/assets/hpm/textures/entities/swashbucklerupgraded.png new file mode 100644 index 0000000..5da969b Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/swashbucklerupgraded.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/swashbucklerupgradeddestroyed.png b/src/main/resources/assets/hpm/textures/entities/swashbucklerupgradeddestroyed.png new file mode 100644 index 0000000..4ac2c8b Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/swashbucklerupgradeddestroyed.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/temp.png b/src/main/resources/assets/hpm/textures/entities/temp.png new file mode 100644 index 0000000..418dfdf Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/temp.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/transparent.png b/src/main/resources/assets/hpm/textures/entities/transparent.png new file mode 100644 index 0000000..462b608 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/transparent.png differ diff --git a/src/main/resources/assets/hpm/textures/entities/warcutter.png b/src/main/resources/assets/hpm/textures/entities/warcutter.png new file mode 100644 index 0000000..0c6986d Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entities/warcutter.png differ diff --git a/src/main/resources/assets/hpm/textures/entity_icon/corvetteclass.png b/src/main/resources/assets/hpm/textures/entity_icon/corvetteclass.png new file mode 100644 index 0000000..1125fc8 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entity_icon/corvetteclass.png differ diff --git a/src/main/resources/assets/hpm/textures/entity_icon/corvetteclassdamaged.png b/src/main/resources/assets/hpm/textures/entity_icon/corvetteclassdamaged.png new file mode 100644 index 0000000..1125fc8 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entity_icon/corvetteclassdamaged.png differ diff --git a/src/main/resources/assets/hpm/textures/entity_icon/cutterpirateremastered.png b/src/main/resources/assets/hpm/textures/entity_icon/cutterpirateremastered.png new file mode 100644 index 0000000..62f6b97 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entity_icon/cutterpirateremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered - Copy.png b/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered - Copy.png new file mode 100644 index 0000000..3427110 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered - Copy.png differ diff --git a/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered.png b/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered.png new file mode 100644 index 0000000..3427110 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/entity_icon/cutterremastered.png differ diff --git a/src/main/resources/assets/hpm/textures/items/cannonball.png b/src/main/resources/assets/hpm/textures/items/cannonball.png new file mode 100644 index 0000000..85560ec Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/cannonball.png differ diff --git a/src/main/resources/assets/hpm/textures/items/cutter.png b/src/main/resources/assets/hpm/textures/items/cutter.png new file mode 100644 index 0000000..3427110 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/cutter.png differ diff --git a/src/main/resources/assets/hpm/textures/items/cutteritem.png b/src/main/resources/assets/hpm/textures/items/cutteritem.png new file mode 100644 index 0000000..b57b0e5 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/cutteritem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/handcannon.png b/src/main/resources/assets/hpm/textures/items/handcannon.png new file mode 100644 index 0000000..e7fbd1d Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/handcannon.png differ diff --git a/src/main/resources/assets/hpm/textures/items/handmortar.png b/src/main/resources/assets/hpm/textures/items/handmortar.png new file mode 100644 index 0000000..779332c Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/handmortar.png differ diff --git a/src/main/resources/assets/hpm/textures/items/hull.png b/src/main/resources/assets/hpm/textures/items/hull.png new file mode 100644 index 0000000..9adfaff Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/hull.png differ diff --git a/src/main/resources/assets/hpm/textures/items/largehull.png b/src/main/resources/assets/hpm/textures/items/largehull.png new file mode 100644 index 0000000..09da2e7 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/largehull.png differ diff --git a/src/main/resources/assets/hpm/textures/items/largesail.png b/src/main/resources/assets/hpm/textures/items/largesail.png new file mode 100644 index 0000000..88f3dd5 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/largesail.png differ diff --git a/src/main/resources/assets/hpm/textures/items/mast.png b/src/main/resources/assets/hpm/textures/items/mast.png new file mode 100644 index 0000000..86faa85 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/mast.png differ diff --git a/src/main/resources/assets/hpm/textures/items/milcutteritem.png b/src/main/resources/assets/hpm/textures/items/milcutteritem.png new file mode 100644 index 0000000..367ce70 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/milcutteritem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/mortarball.png b/src/main/resources/assets/hpm/textures/items/mortarball.png new file mode 100644 index 0000000..220a25e Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/mortarball.png differ diff --git a/src/main/resources/assets/hpm/textures/items/piratecutteritem.png b/src/main/resources/assets/hpm/textures/items/piratecutteritem.png new file mode 100644 index 0000000..62f6b97 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/piratecutteritem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/raft.png b/src/main/resources/assets/hpm/textures/items/raft.png new file mode 100644 index 0000000..7dc4147 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/raft.png differ diff --git a/src/main/resources/assets/hpm/textures/items/raftitem.png b/src/main/resources/assets/hpm/textures/items/raftitem.png new file mode 100644 index 0000000..48d1f9c Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/raftitem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/spanner.png b/src/main/resources/assets/hpm/textures/items/spanner.png new file mode 100644 index 0000000..419fb3f Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/spanner.png differ diff --git a/src/main/resources/assets/hpm/textures/items/spanner2.png b/src/main/resources/assets/hpm/textures/items/spanner2.png new file mode 100644 index 0000000..918a167 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/spanner2.png differ diff --git a/src/main/resources/assets/hpm/textures/items/steamshipitem.png b/src/main/resources/assets/hpm/textures/items/steamshipitem.png new file mode 100644 index 0000000..1125fc8 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/steamshipitem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/swashbuckler.png b/src/main/resources/assets/hpm/textures/items/swashbuckler.png new file mode 100644 index 0000000..55094dd Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/swashbuckler.png differ diff --git a/src/main/resources/assets/hpm/textures/items/swashbuckleritem.png b/src/main/resources/assets/hpm/textures/items/swashbuckleritem.png new file mode 100644 index 0000000..795a431 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/swashbuckleritem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditem.png b/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditem.png new file mode 100644 index 0000000..a9fa98a Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditem.png differ diff --git a/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditewm.png b/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditewm.png new file mode 100644 index 0000000..6e06820 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/swashbucklerupgradeditewm.png differ diff --git a/src/main/resources/assets/hpm/textures/items/warcutter.png b/src/main/resources/assets/hpm/textures/items/warcutter.png new file mode 100644 index 0000000..ac4f226 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/warcutter.png differ diff --git a/src/main/resources/assets/hpm/textures/items/workinprogresstexture.png b/src/main/resources/assets/hpm/textures/items/workinprogresstexture.png new file mode 100644 index 0000000..b5cf2c6 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/items/workinprogresstexture.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/plank_splinter.png b/src/main/resources/assets/hpm/textures/particle/plank_splinter.png new file mode 100644 index 0000000..90e2da1 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/plank_splinter.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/planksplinter.png b/src/main/resources/assets/hpm/textures/particle/planksplinter.png new file mode 100644 index 0000000..90e2da1 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/planksplinter.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/ripped_sail.png b/src/main/resources/assets/hpm/textures/particle/ripped_sail.png new file mode 100644 index 0000000..c1c1915 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/ripped_sail.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/ripped_sail_pirate.png b/src/main/resources/assets/hpm/textures/particle/ripped_sail_pirate.png new file mode 100644 index 0000000..bf87087 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/ripped_sail_pirate.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/rippedsailpirate.png b/src/main/resources/assets/hpm/textures/particle/rippedsailpirate.png new file mode 100644 index 0000000..bf87087 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/rippedsailpirate.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/splinter.png b/src/main/resources/assets/hpm/textures/particle/splinter.png new file mode 100644 index 0000000..c1c1915 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/splinter.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/splinterersplinter.png b/src/main/resources/assets/hpm/textures/particle/splinterersplinter.png new file mode 100644 index 0000000..d8729a5 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/splinterersplinter.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/splinters.png b/src/main/resources/assets/hpm/textures/particle/splinters.png new file mode 100644 index 0000000..d8729a5 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/splinters.png differ diff --git a/src/main/resources/assets/hpm/textures/particle/wood_splinter.png b/src/main/resources/assets/hpm/textures/particle/wood_splinter.png new file mode 100644 index 0000000..c1c1915 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/particle/wood_splinter.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/barrel.png b/src/main/resources/assets/hpm/textures/screens/barrel.png new file mode 100644 index 0000000..e8925d9 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/barrel.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/barrelfilled.png b/src/main/resources/assets/hpm/textures/screens/barrelfilled.png new file mode 100644 index 0000000..6eb05dc Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/barrelfilled.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/caustics.png b/src/main/resources/assets/hpm/textures/screens/caustics.png new file mode 100644 index 0000000..1f96cbd Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/caustics.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/cutterinventory.png b/src/main/resources/assets/hpm/textures/screens/cutterinventory.png new file mode 100644 index 0000000..fe8b782 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/cutterinventory.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/raftinventory.png b/src/main/resources/assets/hpm/textures/screens/raftinventory.png new file mode 100644 index 0000000..9873ab6 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/raftinventory.png differ diff --git a/src/main/resources/assets/hpm/textures/screens/swashbucklerinventory.png b/src/main/resources/assets/hpm/textures/screens/swashbucklerinventory.png new file mode 100644 index 0000000..23312ca Binary files /dev/null and b/src/main/resources/assets/hpm/textures/screens/swashbucklerinventory.png differ diff --git a/src/main/resources/assets/hpm/textures/swashbucklerlogo.png b/src/main/resources/assets/hpm/textures/swashbucklerlogo.png new file mode 100644 index 0000000..8bb5e44 Binary files /dev/null and b/src/main/resources/assets/hpm/textures/swashbucklerlogo.png differ diff --git a/src/main/resources/data/forge/tags/entity_types/cutter_ship.json b/src/main/resources/data/forge/tags/entity_types/cutter_ship.json new file mode 100644 index 0000000..210ec5c --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/cutter_ship.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:cutter_sails_damaged", + "hpm:cutterdamaged", + "hpm:cutter_militarised_damaged_sails", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails", + "hpm:cutter" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/cutter_ship_pristine.json b/src/main/resources/data/forge/tags/entity_types/cutter_ship_pristine.json new file mode 100644 index 0000000..804af6c --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/cutter_ship_pristine.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutter_pirate", + "hpm:cutter" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/front_cannon.json b/src/main/resources/data/forge/tags/entity_types/front_cannon.json new file mode 100644 index 0000000..a92fc9c --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/front_cannon.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "hpm:swashbucklerupgraded" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/front_mortar.json b/src/main/resources/data/forge/tags/entity_types/front_mortar.json new file mode 100644 index 0000000..225b08b --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/front_mortar.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:cutter_militarised_damaged_sails", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/hals_ship_seat.json b/src/main/resources/data/forge/tags/entity_types/hals_ship_seat.json new file mode 100644 index 0000000..528308b --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/hals_ship_seat.json @@ -0,0 +1,18 @@ +{ + "replace": false, + "values": [ + "hpm:raft", + "hpm:swashbuckler", + "hpm:cutter_militarised_damaged_sails", + "hpm:cutter", + "hpm:cutter_seat", + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:cutter_sails_damaged", + "hpm:cutterdamaged", + "hpm:swashbucklerupgraded", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/large_ship.json b/src/main/resources/data/forge/tags/entity_types/large_ship.json new file mode 100644 index 0000000..ada23dd --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/large_ship.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "hpm:corvette_steamship", + "hpm:corvettesteamshipdamaged" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/maritime_cutter.json b/src/main/resources/data/forge/tags/entity_types/maritime_cutter.json new file mode 100644 index 0000000..edb7368 --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/maritime_cutter.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "hpm:cutter" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/medium_ship.json b/src/main/resources/data/forge/tags/entity_types/medium_ship.json new file mode 100644 index 0000000..210ec5c --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/medium_ship.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:cutter_sails_damaged", + "hpm:cutterdamaged", + "hpm:cutter_militarised_damaged_sails", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails", + "hpm:cutter" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/ship_hull.json b/src/main/resources/data/forge/tags/entity_types/ship_hull.json new file mode 100644 index 0000000..ca02b39 --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/ship_hull.json @@ -0,0 +1,20 @@ +{ + "replace": false, + "values": [ + "hpm:raft", + "hpm:cutter_passenger", + "hpm:swashbuckler", + "hpm:cutter_militarised_damaged_sails", + "hpm:corvettesteamshipdamaged", + "hpm:cutter", + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:corvette_steamship", + "hpm:cutter_sails_damaged", + "hpm:cutterdamaged", + "hpm:swashbucklerupgraded", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/side_cannons.json b/src/main/resources/data/forge/tags/entity_types/side_cannons.json new file mode 100644 index 0000000..225b08b --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/side_cannons.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:cutter_militarised_damaged_sails", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/small_ship.json b/src/main/resources/data/forge/tags/entity_types/small_ship.json new file mode 100644 index 0000000..9e090b2 --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/small_ship.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "hpm:raft", + "hpm:swashbuckler", + "hpm:swashbucklerupgraded" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/entity_types/weaponised_cutter.json b/src/main/resources/data/forge/tags/entity_types/weaponised_cutter.json new file mode 100644 index 0000000..655c1f0 --- /dev/null +++ b/src/main/resources/data/forge/tags/entity_types/weaponised_cutter.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "hpm:cuttermilitarised", + "hpm:cutter_pirate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/cannon_craft.json b/src/main/resources/data/hpm/advancements/cannon_craft.json new file mode 100644 index 0000000..81af387 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/cannon_craft.json @@ -0,0 +1,36 @@ +{ + "display": { + "icon": { + "item": "hpm:hand_cannon" + }, + "title": { + "translate": "advancements.cannon_craft.title" + }, + "description": { + "translate": "advancements.cannon_craft.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "cannon_craft": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "hpm:hand_cannon" + ], + "count": { + "min": 1, + "max": 37 + } + } + ] + } + } + }, + "parent": "hpm:cannonballcraft" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/cannonballcraft.json b/src/main/resources/data/hpm/advancements/cannonballcraft.json new file mode 100644 index 0000000..8f289ee --- /dev/null +++ b/src/main/resources/data/hpm/advancements/cannonballcraft.json @@ -0,0 +1,36 @@ +{ + "display": { + "icon": { + "item": "hpm:cannonball" + }, + "title": { + "translate": "advancements.cannonballcraft.title" + }, + "description": { + "translate": "advancements.cannonballcraft.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "cannonballcraft": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "hpm:cannonball" + ], + "count": { + "min": 1, + "max": 2328 + } + } + ] + } + } + }, + "parent": "hpm:swashbucklers_advancement_branch" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/cutter_achievement.json b/src/main/resources/data/hpm/advancements/cutter_achievement.json new file mode 100644 index 0000000..67c6612 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/cutter_achievement.json @@ -0,0 +1,29 @@ +{ + "display": { + "icon": { + "item": "hpm:cutteritem" + }, + "title": { + "translate": "advancements.cutter_achievement.title" + }, + "description": { + "translate": "advancements.cutter_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "cutter_achievement": { + "trigger": "minecraft:impossible" + } + }, + "rewards": { + "experience": 0, + "recipes": [ + "hpm:cuttermilitary" + ] + }, + "parent": "hpm:u_swashbuckler_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/piracy_achievement.json b/src/main/resources/data/hpm/advancements/piracy_achievement.json new file mode 100644 index 0000000..4f6f6dc --- /dev/null +++ b/src/main/resources/data/hpm/advancements/piracy_achievement.json @@ -0,0 +1,36 @@ +{ + "display": { + "icon": { + "item": "hpm:pirate_cutter_item" + }, + "title": { + "translate": "advancements.piracy_achievement.title" + }, + "description": { + "translate": "advancements.piracy_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "piracy_achievement": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "hpm:pirate_cutter_item" + ], + "count": { + "min": 1, + "max": 37 + } + } + ] + } + } + }, + "parent": "hpm:cutter_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/pirate_cutter_achievement.json b/src/main/resources/data/hpm/advancements/pirate_cutter_achievement.json new file mode 100644 index 0000000..7a2c70c --- /dev/null +++ b/src/main/resources/data/hpm/advancements/pirate_cutter_achievement.json @@ -0,0 +1,23 @@ +{ + "display": { + "icon": { + "item": "hpm:pirate_cutter_item" + }, + "title": { + "translate": "advancements.pirate_cutter_achievement.title" + }, + "description": { + "translate": "advancements.pirate_cutter_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "pirate_cutter_achievement": { + "trigger": "minecraft:impossible" + } + }, + "parent": "hpm:warfare_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/raft_achievement.json b/src/main/resources/data/hpm/advancements/raft_achievement.json new file mode 100644 index 0000000..ccd67bd --- /dev/null +++ b/src/main/resources/data/hpm/advancements/raft_achievement.json @@ -0,0 +1,31 @@ +{ + "display": { + "icon": { + "item": "hpm:raftitem" + }, + "title": { + "translate": "advancements.raft_achievement.title" + }, + "description": { + "translate": "advancements.raft_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "raft_achievement": { + "trigger": "minecraft:impossible" + } + }, + "rewards": { + "experience": 0, + "recipes": [ + "hpm:swashbucklerupgradedrecipe", + "hpm:cannonballrecipe_4", + "hpm:handcannonrecipe" + ] + }, + "parent": "hpm:swashbuckler_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/spanner_achievement.json b/src/main/resources/data/hpm/advancements/spanner_achievement.json new file mode 100644 index 0000000..c89eaae --- /dev/null +++ b/src/main/resources/data/hpm/advancements/spanner_achievement.json @@ -0,0 +1,36 @@ +{ + "display": { + "icon": { + "item": "hpm:spanner" + }, + "title": { + "translate": "advancements.spanner_achievement.title" + }, + "description": { + "translate": "advancements.spanner_achievement.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "spanner_achievement": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "hpm:spanner" + ], + "count": { + "min": 1, + "max": 64 + } + } + ] + } + } + }, + "parent": "hpm:swashbucklers_advancement_branch" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/spanner_use_achievement.json b/src/main/resources/data/hpm/advancements/spanner_use_achievement.json new file mode 100644 index 0000000..fa0e993 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/spanner_use_achievement.json @@ -0,0 +1,23 @@ +{ + "display": { + "icon": { + "item": "hpm:spanner" + }, + "title": { + "translate": "advancements.spanner_use_achievement.title" + }, + "description": { + "translate": "advancements.spanner_use_achievement.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "spanner_use_achievement": { + "trigger": "minecraft:impossible" + } + }, + "parent": "hpm:spanner_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/swashbuckler_achievement.json b/src/main/resources/data/hpm/advancements/swashbuckler_achievement.json new file mode 100644 index 0000000..e993799 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/swashbuckler_achievement.json @@ -0,0 +1,31 @@ +{ + "display": { + "icon": { + "item": "hpm:swashbuckleritem" + }, + "title": { + "translate": "advancements.swashbuckler_achievement.title" + }, + "description": { + "translate": "advancements.swashbuckler_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "swashbuckler_achievement": { + "trigger": "minecraft:impossible" + } + }, + "rewards": { + "experience": 0, + "recipes": [ + "hpm:swashbucklerupgradedrecipe", + "hpm:cannonballrecipe_4", + "hpm:handcannonrecipe" + ] + }, + "parent": "hpm:swashbucklers_advancement_branch" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/swashbucklers_advancement_branch.json b/src/main/resources/data/hpm/advancements/swashbucklers_advancement_branch.json new file mode 100644 index 0000000..bee63ed --- /dev/null +++ b/src/main/resources/data/hpm/advancements/swashbucklers_advancement_branch.json @@ -0,0 +1,31 @@ +{ + "display": { + "background": "hpm:textures/screens/caustics.png", + "icon": { + "item": "hpm:corvette_steamship_item" + }, + "title": { + "translate": "advancements.swashbucklers_advancement_branch.title" + }, + "description": { + "translate": "advancements.swashbucklers_advancement_branch.descr" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false + }, + "criteria": { + "swashbucklers_advancement_branch": { + "trigger": "minecraft:impossible" + } + }, + "rewards": { + "experience": 0, + "recipes": [ + "hpm:swashbucklerrecipe", + "hpm:smallhullrecipe", + "hpm:mastrecipe" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/u_swashbuckler_achievement.json b/src/main/resources/data/hpm/advancements/u_swashbuckler_achievement.json new file mode 100644 index 0000000..bff1929 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/u_swashbuckler_achievement.json @@ -0,0 +1,32 @@ +{ + "display": { + "icon": { + "item": "hpm:swashbucklerupgrade" + }, + "title": { + "translate": "advancements.u_swashbuckler_achievement.title" + }, + "description": { + "translate": "advancements.u_swashbuckler_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "u_swashbuckler_achievement": { + "trigger": "minecraft:impossible" + } + }, + "rewards": { + "experience": 0, + "recipes": [ + "hpm:cutterrecipe_4", + "hpm:largemastrecipe", + "hpm:largehullrecipe", + "hpm:spanner_recipe" + ] + }, + "parent": "hpm:swashbuckler_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/war_cutter_achievement.json b/src/main/resources/data/hpm/advancements/war_cutter_achievement.json new file mode 100644 index 0000000..d13b025 --- /dev/null +++ b/src/main/resources/data/hpm/advancements/war_cutter_achievement.json @@ -0,0 +1,23 @@ +{ + "display": { + "icon": { + "item": "hpm:cuttermilitariseditem" + }, + "title": { + "translate": "advancements.war_cutter_achievement.title" + }, + "description": { + "translate": "advancements.war_cutter_achievement.descr" + }, + "frame": "goal", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "war_cutter_achievement": { + "trigger": "minecraft:impossible" + } + }, + "parent": "hpm:cutter_achievement" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/advancements/warfare_achievement.json b/src/main/resources/data/hpm/advancements/warfare_achievement.json new file mode 100644 index 0000000..65ca38b --- /dev/null +++ b/src/main/resources/data/hpm/advancements/warfare_achievement.json @@ -0,0 +1,23 @@ +{ + "display": { + "icon": { + "item": "hpm:hand_cannon" + }, + "title": { + "translate": "advancements.warfare_achievement.title" + }, + "description": { + "translate": "advancements.warfare_achievement.descr" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "warfare_achievement": { + "trigger": "minecraft:impossible" + } + }, + "parent": "hpm:cannon_craft" +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/cannonballrecipe_4.json b/src/main/resources/data/hpm/recipes/cannonballrecipe_4.json new file mode 100644 index 0000000..b7ac402 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/cannonballrecipe_4.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "minecraft:smooth_stone" + }, + "1": { + "item": "minecraft:tnt" + }, + "2": { + "item": "minecraft:smooth_stone" + }, + "3": { + "item": "minecraft:tnt" + }, + "4": { + "item": "minecraft:tnt" + }, + "5": { + "item": "minecraft:tnt" + }, + "6": { + "item": "minecraft:smooth_stone" + }, + "7": { + "item": "minecraft:tnt" + }, + "8": { + "item": "minecraft:smooth_stone" + } + }, + "result": { + "item": "hpm:cannonball", + "count": 16 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/cuttermilitary.json b/src/main/resources/data/hpm/recipes/cuttermilitary.json new file mode 100644 index 0000000..6eacb60 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/cuttermilitary.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "hpm:small_mast" + }, + "1": { + "item": "hpm:largemast" + }, + "2": { + "item": "minecraft:iron_ingot" + }, + "3": { + "item": "hpm:largehull" + }, + "4": { + "item": "hpm:cutteritem" + }, + "5": { + "item": "hpm:largehull" + }, + "6": { + "item": "hpm:hand_mortar" + }, + "7": { + "item": "hpm:hand_cannon" + }, + "8": { + "item": "hpm:hand_cannon" + } + }, + "result": { + "item": "hpm:cuttermilitariseditem", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/cutterrecipe_4.json b/src/main/resources/data/hpm/recipes/cutterrecipe_4.json new file mode 100644 index 0000000..2ca9a30 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/cutterrecipe_4.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "hpm:largemast" + }, + "1": { + "item": "hpm:largemast" + }, + "2": { + "item": "hpm:largemast" + }, + "3": { + "tag": "minecraft:logs" + }, + "4": { + "item": "hpm:largehull" + }, + "5": { + "tag": "minecraft:logs" + }, + "6": { + "item": "minecraft:barrel" + }, + "7": { + "item": "minecraft:barrel" + }, + "8": { + "item": "minecraft:barrel" + } + }, + "result": { + "item": "hpm:cutteritem", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/hand_mortar_recipe.json b/src/main/resources/data/hpm/recipes/hand_mortar_recipe.json new file mode 100644 index 0000000..829e021 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/hand_mortar_recipe.json @@ -0,0 +1,38 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + " 45", + "678" + ], + "key": { + "0": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "1": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "2": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "4": { + "item": "hpm:mortar_ball" + }, + "5": { + "item": "minecraft:gunpowder" + }, + "6": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "7": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "8": { + "item": "minecraft:cobbled_deepslate_slab" + } + }, + "result": { + "item": "hpm:hand_mortar", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/handcannonrecipe.json b/src/main/resources/data/hpm/recipes/handcannonrecipe.json new file mode 100644 index 0000000..b3c5927 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/handcannonrecipe.json @@ -0,0 +1,38 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + " 45", + "678" + ], + "key": { + "0": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "1": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "2": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "4": { + "item": "hpm:cannonball" + }, + "5": { + "item": "minecraft:gunpowder" + }, + "6": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "7": { + "item": "minecraft:cobbled_deepslate_slab" + }, + "8": { + "item": "minecraft:cobbled_deepslate_slab" + } + }, + "result": { + "item": "hpm:hand_cannon", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/largehullrecipe.json b/src/main/resources/data/hpm/recipes/largehullrecipe.json new file mode 100644 index 0000000..13b2dd8 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/largehullrecipe.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " 1 ", + "345", + "678" + ], + "key": { + "1": { + "item": "minecraft:iron_block" + }, + "3": { + "tag": "minecraft:logs" + }, + "4": { + "item": "hpm:smallhull" + }, + "5": { + "tag": "minecraft:logs" + }, + "6": { + "tag": "minecraft:logs" + }, + "7": { + "tag": "minecraft:logs" + }, + "8": { + "tag": "minecraft:logs" + } + }, + "result": { + "item": "hpm:largehull", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/largemastrecipe.json b/src/main/resources/data/hpm/recipes/largemastrecipe.json new file mode 100644 index 0000000..e0cfa3b --- /dev/null +++ b/src/main/resources/data/hpm/recipes/largemastrecipe.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "hpm:small_mast" + }, + { + "item": "hpm:small_mast" + } + ], + "result": { + "item": "hpm:largemast", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/mastrecipe.json b/src/main/resources/data/hpm/recipes/mastrecipe.json new file mode 100644 index 0000000..47141a9 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/mastrecipe.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + " 7 " + ], + "key": { + "0": { + "tag": "minecraft:wool" + }, + "1": { + "tag": "minecraft:wool" + }, + "2": { + "tag": "minecraft:wool" + }, + "3": { + "tag": "minecraft:wool" + }, + "4": { + "tag": "minecraft:logs" + }, + "5": { + "tag": "minecraft:wool" + }, + "7": { + "tag": "minecraft:logs" + } + }, + "result": { + "item": "hpm:small_mast", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/mortar_ball_recipe.json b/src/main/resources/data/hpm/recipes/mortar_ball_recipe.json new file mode 100644 index 0000000..9c02e59 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/mortar_ball_recipe.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "minecraft:smooth_stone" + }, + "1": { + "item": "minecraft:tnt" + }, + "2": { + "item": "minecraft:smooth_stone" + }, + "3": { + "item": "minecraft:tnt" + }, + "4": { + "item": "hpm:cannonball" + }, + "5": { + "item": "minecraft:tnt" + }, + "6": { + "item": "minecraft:smooth_stone" + }, + "7": { + "item": "minecraft:tnt" + }, + "8": { + "item": "minecraft:smooth_stone" + } + }, + "result": { + "item": "hpm:mortar_ball", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/pirate_cutter_recipe.json b/src/main/resources/data/hpm/recipes/pirate_cutter_recipe.json new file mode 100644 index 0000000..ccef0e6 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/pirate_cutter_recipe.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "minecraft:black_dye" + }, + "1": { + "item": "minecraft:black_dye" + }, + "2": { + "item": "minecraft:black_dye" + }, + "3": { + "item": "minecraft:black_dye" + }, + "4": { + "item": "minecraft:white_dye" + }, + "5": { + "item": "minecraft:black_dye" + }, + "6": { + "item": "minecraft:black_dye" + }, + "7": { + "item": "hpm:cuttermilitariseditem" + }, + "8": { + "item": "minecraft:black_dye" + } + }, + "result": { + "item": "hpm:pirate_cutter_item", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/raftrecipe.json b/src/main/resources/data/hpm/recipes/raftrecipe.json new file mode 100644 index 0000000..59041c6 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/raftrecipe.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345", + "678" + ], + "key": { + "0": { + "item": "minecraft:barrel" + }, + "1": { + "item": "hpm:small_mast" + }, + "2": { + "item": "minecraft:barrel" + }, + "3": { + "tag": "minecraft:logs" + }, + "4": { + "tag": "minecraft:logs" + }, + "5": { + "tag": "minecraft:logs" + }, + "6": { + "tag": "minecraft:logs" + }, + "7": { + "tag": "minecraft:logs" + }, + "8": { + "tag": "minecraft:logs" + } + }, + "result": { + "item": "hpm:raftitem", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/smallhullrecipe.json b/src/main/resources/data/hpm/recipes/smallhullrecipe.json new file mode 100644 index 0000000..98b01e7 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/smallhullrecipe.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "012", + "345" + ], + "key": { + "0": { + "tag": "minecraft:planks" + }, + "1": { + "tag": "minecraft:logs" + }, + "2": { + "tag": "minecraft:planks" + }, + "3": { + "tag": "minecraft:planks" + }, + "4": { + "tag": "minecraft:planks" + }, + "5": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "hpm:smallhull", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/spanner_recipe.json b/src/main/resources/data/hpm/recipes/spanner_recipe.json new file mode 100644 index 0000000..0be0c26 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/spanner_recipe.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " 12", + " 45", + "6 " + ], + "key": { + "1": { + "item": "minecraft:iron_ingot" + }, + "2": { + "item": "hpm:smallhull" + }, + "4": { + "item": "minecraft:iron_ingot" + }, + "5": { + "item": "minecraft:iron_nugget" + }, + "6": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "hpm:spanner", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/swashbucklerrecipe.json b/src/main/resources/data/hpm/recipes/swashbucklerrecipe.json new file mode 100644 index 0000000..42d547c --- /dev/null +++ b/src/main/resources/data/hpm/recipes/swashbucklerrecipe.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "hpm:small_mast" + }, + { + "item": "hpm:smallhull" + } + ], + "result": { + "item": "hpm:swashbuckleritem", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/recipes/swashbucklerupgradedrecipe.json b/src/main/resources/data/hpm/recipes/swashbucklerupgradedrecipe.json new file mode 100644 index 0000000..dc89764 --- /dev/null +++ b/src/main/resources/data/hpm/recipes/swashbucklerupgradedrecipe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "hpm:hand_cannon" + }, + { + "item": "hpm:swashbuckleritem" + }, + { + "item": "minecraft:chest" + } + ], + "result": { + "item": "hpm:swashbucklerupgrade", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/hpm/tags/entity_types/ship.json b/src/main/resources/data/hpm/tags/entity_types/ship.json new file mode 100644 index 0000000..5f0be1f --- /dev/null +++ b/src/main/resources/data/hpm/tags/entity_types/ship.json @@ -0,0 +1,19 @@ +{ + "replace": false, + "values": [ + "hpm:raft", + "hpm:swashbuckler", + "hpm:cutter_militarised_damaged_sails", + "hpm:corvettesteamshipdamaged", + "hpm:cutter", + "hpm:cuttermilitarised", + "hpm:cutterpiratedamaged", + "hpm:corvette_steamship", + "hpm:cutter_sails_damaged", + "hpm:cutterdamaged", + "hpm:swashbucklerupgraded", + "hpm:cuttermilitariseddamaged", + "hpm:cutter_pirate", + "hpm:cutter_pirate_damaged_sails" + ] +} \ No newline at end of file diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png new file mode 100644 index 0000000..8bb5e44 Binary files /dev/null and b/src/main/resources/logo.png differ diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..f37c4cb --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "hpm mod resources", + "pack_format": 9 + } +} \ No newline at end of file