// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.math.vector;

import com.hypixel.hytale.math.util.HashUtil;
import javax.annotation.Nullable;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.Axis;
import com.hypixel.hytale.math.util.TrigMathUtil;
import java.util.Random;
import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class Vector3f
{
    @Nonnull
    public static final BuilderCodec<Vector3f> CODEC;
    @Nonnull
    public static final BuilderCodec<Vector3f> ROTATION;
    public static final Vector3f ZERO;
    public static final Vector3f UP;
    public static final Vector3f POS_Y;
    public static final Vector3f DOWN;
    public static final Vector3f NEG_Y;
    public static final Vector3f FORWARD;
    public static final Vector3f NEG_Z;
    public static final Vector3f NORTH;
    public static final Vector3f BACKWARD;
    public static final Vector3f POS_Z;
    public static final Vector3f SOUTH;
    public static final Vector3f RIGHT;
    public static final Vector3f POS_X;
    public static final Vector3f EAST;
    public static final Vector3f LEFT;
    public static final Vector3f NEG_X;
    public static final Vector3f WEST;
    public static final Vector3f ALL_ONES;
    public static final Vector3f MIN;
    public static final Vector3f MAX;
    public static final Vector3f NaN;
    public static final Vector3f[] BLOCK_SIDES;
    public static final Vector3f[] BLOCK_EDGES;
    public static final Vector3f[] BLOCK_CORNERS;
    public static final Vector3f[][] BLOCK_PARTS;
    public static final Vector3f[] CARDINAL_DIRECTIONS;
    public float x;
    public float y;
    public float z;
    private transient int hash;
    
    public Vector3f() {
        this(0.0f, 0.0f, 0.0f);
    }
    
    public Vector3f(@Nonnull final Vector3f v) {
        this(v.x, v.y, v.z);
    }
    
    public Vector3f(@Nonnull final Vector3i v) {
        this((float)v.x, (float)v.y, (float)v.z);
    }
    
    public Vector3f(final float x, final float y, final float z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
    }
    
    public Vector3f(final float yaw, final float pitch) {
        this();
        this.assign(yaw, pitch);
    }
    
    public Vector3f(@Nonnull final Random random, final float length) {
        this(random.nextFloat() * 6.2831855f, random.nextFloat() * 6.2831855f);
        this.scale(length);
    }
    
    public float getX() {
        return this.x;
    }
    
    public float getPitch() {
        return this.x;
    }
    
    public void setX(final float x) {
        this.x = x;
        this.hash = 0;
    }
    
    public void setPitch(final float pitch) {
        this.x = pitch;
        this.hash = 0;
    }
    
    public float getY() {
        return this.y;
    }
    
    public float getYaw() {
        return this.y;
    }
    
    public void setY(final float y) {
        this.y = y;
        this.hash = 0;
    }
    
    public void setYaw(final float yaw) {
        this.y = yaw;
        this.hash = 0;
    }
    
    public float getZ() {
        return this.z;
    }
    
    public float getRoll() {
        return this.z;
    }
    
    public void setZ(final float z) {
        this.z = z;
        this.hash = 0;
    }
    
    public void setRoll(final float roll) {
        this.z = roll;
        this.hash = 0;
    }
    
    @Nonnull
    public Vector3f assign(@Nonnull final Vector3f v) {
        this.x = v.x;
        this.y = v.y;
        this.z = v.z;
        this.hash = v.hash;
        return this;
    }
    
    @Nonnull
    public Vector3f assign(final float v) {
        this.x = v;
        this.y = v;
        this.z = v;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f assign(@Nonnull final float[] v) {
        this.x = v[0];
        this.y = v[1];
        this.z = v[2];
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f assign(final float yaw, final float pitch) {
        final float len = TrigMathUtil.cos(pitch);
        final float x = len * -TrigMathUtil.sin(yaw);
        final float y = TrigMathUtil.sin(pitch);
        final float z = len * -TrigMathUtil.cos(yaw);
        return this.assign(x, y, z);
    }
    
    @Nonnull
    public Vector3f assign(final float x, final float y, final float z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f add(@Nonnull final Vector3f v) {
        this.x += v.x;
        this.y += v.y;
        this.z += v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f add(@Nonnull final Vector3i v) {
        this.x += v.x;
        this.y += v.y;
        this.z += v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f add(final float x, final float y, final float z) {
        this.x += x;
        this.y += y;
        this.z += z;
        this.hash = 0;
        return this;
    }
    
    public void addPitch(final float pitch) {
        this.x += pitch;
        this.hash = 0;
    }
    
    public void addYaw(final float yaw) {
        this.y += yaw;
        this.hash = 0;
    }
    
    public void addRoll(final float roll) {
        this.z += roll;
        this.hash = 0;
    }
    
    @Nonnull
    public Vector3f addScaled(@Nonnull final Vector3f v, final float s) {
        this.x += v.x * s;
        this.y += v.y * s;
        this.z += v.z * s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f subtract(@Nonnull final Vector3f v) {
        this.x -= v.x;
        this.y -= v.y;
        this.z -= v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f subtract(@Nonnull final Vector3i v) {
        this.x -= v.x;
        this.y -= v.y;
        this.z -= v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f subtract(final float x, final float y, final float z) {
        this.x -= x;
        this.y -= y;
        this.z -= z;
        this.hash = 0;
        return this;
    }
    
    public void addRotationOnAxis(@Nonnull final Axis axis, final int angle) {
        final float rad = 0.017453292f * angle;
        switch (axis) {
            case X: {
                this.setPitch(this.getPitch() + rad);
                break;
            }
            case Y: {
                this.setYaw(this.getYaw() + rad);
                break;
            }
            case Z: {
                this.setRoll(this.getRoll() + rad);
                break;
            }
        }
    }
    
    public void flipRotationOnAxis(@Nonnull final Axis axis) {
        this.addRotationOnAxis(axis, 180);
    }
    
    @Nonnull
    public Vector3f negate() {
        this.x = -this.x;
        this.y = -this.y;
        this.z = -this.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f scale(final float s) {
        this.x *= s;
        this.y *= s;
        this.z *= s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f scale(@Nonnull final Vector3f p) {
        this.x *= p.x;
        this.y *= p.y;
        this.z *= p.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f cross(@Nonnull final Vector3f v) {
        final float x0 = this.y * v.z - this.z * v.y;
        final float y0 = this.z * v.x - this.x * v.z;
        final float z0 = this.x * v.y - this.y * v.x;
        return new Vector3f(x0, y0, z0);
    }
    
    @Nonnull
    public Vector3f cross(@Nonnull final Vector3f v, @Nonnull final Vector3f res) {
        res.assign(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);
        return this;
    }
    
    public float dot(@Nonnull final Vector3f other) {
        return this.x * other.x + this.y * other.y + this.z * other.z;
    }
    
    public float distanceTo(@Nonnull final Vector3f v) {
        return (float)Math.sqrt(this.distanceSquaredTo(v));
    }
    
    public float distanceTo(@Nonnull final Vector3i v) {
        return (float)Math.sqrt(this.distanceSquaredTo(v));
    }
    
    public float distanceTo(final float x, final float y, final float z) {
        return (float)Math.sqrt(this.distanceSquaredTo(x, y, z));
    }
    
    public float distanceSquaredTo(@Nonnull final Vector3f v) {
        final float x0 = v.x - this.x;
        final float y0 = v.y - this.y;
        final float z0 = v.z - this.z;
        return x0 * x0 + y0 * y0 + z0 * z0;
    }
    
    public float distanceSquaredTo(@Nonnull final Vector3i v) {
        final float x0 = v.x - this.x;
        final float y0 = v.y - this.y;
        final float z0 = v.z - this.z;
        return x0 * x0 + y0 * y0 + z0 * z0;
    }
    
    public float distanceSquaredTo(final float x, final float y, final float z) {
        final float dx = x - this.x;
        final float dy = y - this.y;
        final float dz = z - this.z;
        return dx * dx + dy * dy + dz * dz;
    }
    
    @Nonnull
    public Vector3f normalize() {
        return this.setLength(1.0f);
    }
    
    public float length() {
        return (float)Math.sqrt(this.squaredLength());
    }
    
    public float squaredLength() {
        return this.x * this.x + this.y * this.y + this.z * this.z;
    }
    
    @Nonnull
    public Vector3f setLength(final float newLen) {
        return this.scale(newLen / this.length());
    }
    
    @Nonnull
    public Vector3f clampLength(final float maxLength) {
        final float length = this.length();
        if (maxLength > length) {
            return this;
        }
        return this.scale(maxLength / length);
    }
    
    @Nonnull
    public Vector3f rotateX(final float angle) {
        final float cos = TrigMathUtil.cos(angle);
        final float sin = TrigMathUtil.sin(angle);
        final float cy = this.y * cos - this.z * sin;
        final float cz = this.y * sin + this.z * cos;
        this.y = cy;
        this.z = cz;
        return this;
    }
    
    @Nonnull
    public Vector3f rotateY(final float angle) {
        final float cos = TrigMathUtil.cos(angle);
        final float sin = TrigMathUtil.sin(angle);
        final float cx = this.x * cos + this.z * sin;
        final float cz = this.x * -sin + this.z * cos;
        this.x = cx;
        this.z = cz;
        return this;
    }
    
    @Nonnull
    public Vector3f rotateZ(final float angle) {
        final float cos = TrigMathUtil.cos(angle);
        final float sin = TrigMathUtil.sin(angle);
        final float cx = this.x * cos - this.y * sin;
        final float cy = this.x * sin + this.y * cos;
        this.x = cx;
        this.y = cy;
        return this;
    }
    
    @Nonnull
    public Vector3f floor() {
        this.x = (float)MathUtil.fastFloor(this.x);
        this.y = (float)MathUtil.fastFloor(this.y);
        this.z = (float)MathUtil.fastFloor(this.z);
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f ceil() {
        this.x = (float)MathUtil.fastCeil(this.x);
        this.y = (float)MathUtil.fastCeil(this.y);
        this.z = (float)MathUtil.fastCeil(this.z);
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f clipToZero(final float epsilon) {
        this.x = MathUtil.clipToZero(this.x, epsilon);
        this.y = MathUtil.clipToZero(this.y, epsilon);
        this.z = MathUtil.clipToZero(this.z, epsilon);
        this.hash = 0;
        return this;
    }
    
    public boolean closeToZero(final float epsilon) {
        return MathUtil.closeToZero(this.x, epsilon) && MathUtil.closeToZero(this.y, epsilon) && MathUtil.closeToZero(this.z, epsilon);
    }
    
    public boolean isInside(final int x, final int y, final int z) {
        final float dx = this.x - x;
        final float dy = this.y - y;
        final float dz = this.z - z;
        return dx >= 0.0f && dx < 1.0f && dy >= 0.0f && dy < 1.0f && dz >= 0.0f && dz < 1.0f;
    }
    
    public boolean isFinite() {
        return Float.isFinite(this.x) && Float.isFinite(this.y) && Float.isFinite(this.z);
    }
    
    @Nonnull
    public Vector3f dropHash() {
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3f clone() {
        return new Vector3f(this.x, this.y, this.z);
    }
    
    @Override
    public boolean equals(@Nullable final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        final Vector3f vector3f = (Vector3f)o;
        return (vector3f.x == this.x && vector3f.y == this.y && vector3f.z == this.z) || (Float.isNaN(vector3f.x) && Float.isNaN(this.x) && Float.isNaN(vector3f.y) && Float.isNaN(this.y) && Float.isNaN(vector3f.z) && Float.isNaN(this.z));
    }
    
    public boolean equals(@Nullable final Vector3f o) {
        return o != null && ((o.x == this.x && o.y == this.y && o.z == this.z) || (Float.isNaN(o.x) && Float.isNaN(this.x) && Float.isNaN(o.y) && Float.isNaN(this.y) && Float.isNaN(o.z) && Float.isNaN(this.z)));
    }
    
    @Override
    public int hashCode() {
        if (this.hash == 0) {
            this.hash = (int)HashUtil.hash(Float.floatToIntBits(this.x), Float.floatToIntBits(this.y), Float.floatToIntBits(this.z));
        }
        return this.hash;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "Vector3f{x=" + this.x + ", y=" + this.y + ", z=" + this.z;
    }
    
    @Nonnull
    public Vector3d toVector3d() {
        return new Vector3d(this.x, this.y, this.z);
    }
    
    @Nonnull
    public static Vector3f max(@Nonnull final Vector3f a, @Nonnull final Vector3f b) {
        return new Vector3f(Math.max(a.x, b.x), Math.max(a.y, b.y), Math.max(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3f min(@Nonnull final Vector3f a, @Nonnull final Vector3f b) {
        return new Vector3f(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3f lerp(@Nonnull final Vector3f a, @Nonnull final Vector3f b, final float t) {
        return lerpUnclamped(a, b, MathUtil.clamp(t, 0.0f, 1.0f));
    }
    
    @Nonnull
    public static Vector3f lerpUnclamped(@Nonnull final Vector3f a, @Nonnull final Vector3f b, final float t) {
        return new Vector3f(a.x + t * (b.x - a.x), a.y + t * (b.y - a.y), a.z + t * (b.z - a.z));
    }
    
    @Nonnull
    public static Vector3f lerpAngle(@Nonnull final Vector3f a, @Nonnull final Vector3f b, final float t) {
        return lerpAngle(a, b, t, new Vector3f());
    }
    
    @Nonnull
    public static Vector3f lerpAngle(@Nonnull final Vector3f a, @Nonnull final Vector3f b, final float t, @Nonnull final Vector3f target) {
        target.assign(MathUtil.lerpAngle(a.x, b.x, t), MathUtil.lerpAngle(a.y, b.y, t), MathUtil.lerpAngle(a.z, b.z, t));
        return target;
    }
    
    @Nonnull
    public static Vector3f directionTo(@Nonnull final Vector3f from, @Nonnull final Vector3f to) {
        return to.clone().subtract(from).normalize();
    }
    
    @Nonnull
    public static Vector3f add(@Nonnull final Vector3f one, @Nonnull final Vector3f two) {
        return new Vector3f().add(one).add(two);
    }
    
    @Nonnull
    public static Vector3f add(@Nonnull final Vector3f one, @Nonnull final Vector3f two, @Nonnull final Vector3f three) {
        return new Vector3f().add(one).add(two).add(three);
    }
    
    @Nonnull
    public static Vector3f lookAt(@Nonnull final Vector3d relative) {
        return lookAt(relative, new Vector3f());
    }
    
    @Nonnull
    public static Vector3f lookAt(@Nonnull final Vector3d relative, @Nonnull final Vector3f result) {
        if (!MathUtil.closeToZero(relative.x) || !MathUtil.closeToZero(relative.z)) {
            final float yaw = TrigMathUtil.atan2((float)(-relative.x), (float)(-relative.z));
            result.setY(MathUtil.wrapAngle(yaw));
        }
        final double length = relative.squaredLength();
        if (length > 0.0) {
            final float pitch = 1.5707964f - (float)Math.acos(relative.y / Math.sqrt(length));
            result.setX(MathUtil.clamp(pitch, -1.5707964f + MathUtil.PITCH_EDGE_PADDING, 1.5707964f - MathUtil.PITCH_EDGE_PADDING));
        }
        return result;
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     2: invokedynamic   BootstrapMethod #1, get:()Ljava/util/function/Supplier;
        //     7: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    10: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode.COMPACT:Lcom/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode;
        //    13: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.metadata:(Lcom/hypixel/hytale/codec/schema/metadata/Metadata;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    16: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    19: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    22: dup            
        //    23: ldc_w           "X"
        //    26: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //    29: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    32: invokedynamic   BootstrapMethod #2, accept:()Ljava/util/function/BiConsumer;
        //    37: invokedynamic   BootstrapMethod #3, apply:()Ljava/util/function/Function;
        //    42: invokedynamic   BootstrapMethod #4, accept:()Ljava/util/function/BiConsumer;
        //    47: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    50: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    53: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    56: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    59: dup            
        //    60: ldc_w           "Y"
        //    63: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //    66: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    69: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
        //    74: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
        //    79: invokedynamic   BootstrapMethod #7, accept:()Ljava/util/function/BiConsumer;
        //    84: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    87: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    90: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    93: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    96: dup            
        //    97: ldc_w           "Z"
        //   100: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //   103: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   106: invokedynamic   BootstrapMethod #8, accept:()Ljava/util/function/BiConsumer;
        //   111: invokedynamic   BootstrapMethod #9, apply:()Ljava/util/function/Function;
        //   116: invokedynamic   BootstrapMethod #10, accept:()Ljava/util/function/BiConsumer;
        //   121: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   124: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   127: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   130: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   133: putstatic       com/hypixel/hytale/math/vector/Vector3f.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   136: ldc             Lcom/hypixel/hytale/math/vector/Vector3f;.class
        //   138: invokedynamic   BootstrapMethod #11, get:()Ljava/util/function/Supplier;
        //   143: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   146: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode.COMPACT:Lcom/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode;
        //   149: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.metadata:(Lcom/hypixel/hytale/codec/schema/metadata/Metadata;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   152: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   155: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   158: dup            
        //   159: ldc_w           "Pitch"
        //   162: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //   165: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   168: invokedynamic   BootstrapMethod #12, accept:()Ljava/util/function/BiConsumer;
        //   173: invokedynamic   BootstrapMethod #13, apply:()Ljava/util/function/Function;
        //   178: invokedynamic   BootstrapMethod #14, accept:()Ljava/util/function/BiConsumer;
        //   183: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   186: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   189: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   192: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   195: dup            
        //   196: ldc_w           "Yaw"
        //   199: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //   202: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   205: invokedynamic   BootstrapMethod #15, accept:()Ljava/util/function/BiConsumer;
        //   210: invokedynamic   BootstrapMethod #16, apply:()Ljava/util/function/Function;
        //   215: invokedynamic   BootstrapMethod #17, accept:()Ljava/util/function/BiConsumer;
        //   220: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   223: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   226: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   229: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   232: dup            
        //   233: ldc_w           "Roll"
        //   236: getstatic       com/hypixel/hytale/codec/Codec.FLOAT:Lcom/hypixel/hytale/codec/codecs/simple/FloatCodec;
        //   239: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   242: invokedynamic   BootstrapMethod #18, accept:()Ljava/util/function/BiConsumer;
        //   247: invokedynamic   BootstrapMethod #19, apply:()Ljava/util/function/Function;
        //   252: invokedynamic   BootstrapMethod #20, accept:()Ljava/util/function/BiConsumer;
        //   257: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   260: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   263: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   266: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   269: putstatic       com/hypixel/hytale/math/vector/Vector3f.ROTATION:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   272: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   275: dup            
        //   276: fconst_0       
        //   277: fconst_0       
        //   278: fconst_0       
        //   279: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   282: putstatic       com/hypixel/hytale/math/vector/Vector3f.ZERO:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   285: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   288: dup            
        //   289: fconst_0       
        //   290: fconst_1       
        //   291: fconst_0       
        //   292: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   295: putstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   298: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   301: putstatic       com/hypixel/hytale/math/vector/Vector3f.POS_Y:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   304: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   307: dup            
        //   308: fconst_0       
        //   309: ldc_w           -1.0
        //   312: fconst_0       
        //   313: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   316: putstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   319: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   322: putstatic       com/hypixel/hytale/math/vector/Vector3f.NEG_Y:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   325: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   328: dup            
        //   329: fconst_0       
        //   330: fconst_0       
        //   331: ldc_w           -1.0
        //   334: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   337: putstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   340: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   343: putstatic       com/hypixel/hytale/math/vector/Vector3f.NEG_Z:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   346: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   349: putstatic       com/hypixel/hytale/math/vector/Vector3f.NORTH:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   352: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   355: dup            
        //   356: fconst_0       
        //   357: fconst_0       
        //   358: fconst_1       
        //   359: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   362: putstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   365: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   368: putstatic       com/hypixel/hytale/math/vector/Vector3f.POS_Z:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   371: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   374: putstatic       com/hypixel/hytale/math/vector/Vector3f.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   377: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   380: dup            
        //   381: fconst_1       
        //   382: fconst_0       
        //   383: fconst_0       
        //   384: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   387: putstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   390: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   393: putstatic       com/hypixel/hytale/math/vector/Vector3f.POS_X:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   396: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   399: putstatic       com/hypixel/hytale/math/vector/Vector3f.EAST:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   402: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   405: dup            
        //   406: ldc_w           -1.0
        //   409: fconst_0       
        //   410: fconst_0       
        //   411: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   414: putstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   417: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   420: putstatic       com/hypixel/hytale/math/vector/Vector3f.NEG_X:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   423: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   426: putstatic       com/hypixel/hytale/math/vector/Vector3f.WEST:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   429: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   432: dup            
        //   433: fconst_1       
        //   434: fconst_1       
        //   435: fconst_1       
        //   436: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   439: putstatic       com/hypixel/hytale/math/vector/Vector3f.ALL_ONES:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   442: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   445: dup            
        //   446: ldc_w           -3.4028235E38
        //   449: ldc_w           -3.4028235E38
        //   452: ldc_w           -3.4028235E38
        //   455: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   458: putstatic       com/hypixel/hytale/math/vector/Vector3f.MIN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   461: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   464: dup            
        //   465: ldc_w           3.4028235E38
        //   468: ldc_w           3.4028235E38
        //   471: ldc_w           3.4028235E38
        //   474: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   477: putstatic       com/hypixel/hytale/math/vector/Vector3f.MAX:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   480: new             Lcom/hypixel/hytale/math/vector/Vector3f;
        //   483: dup            
        //   484: ldc             NaN
        //   486: ldc             NaN
        //   488: ldc             NaN
        //   490: invokespecial   com/hypixel/hytale/math/vector/Vector3f.<init>:(FFF)V
        //   493: putstatic       com/hypixel/hytale/math/vector/Vector3f.NaN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   496: bipush          6
        //   498: anewarray       Lcom/hypixel/hytale/math/vector/Vector3f;
        //   501: dup            
        //   502: iconst_0       
        //   503: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   506: aastore        
        //   507: dup            
        //   508: iconst_1       
        //   509: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   512: aastore        
        //   513: dup            
        //   514: iconst_2       
        //   515: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   518: aastore        
        //   519: dup            
        //   520: iconst_3       
        //   521: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   524: aastore        
        //   525: dup            
        //   526: iconst_4       
        //   527: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   530: aastore        
        //   531: dup            
        //   532: iconst_5       
        //   533: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   536: aastore        
        //   537: putstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   540: bipush          12
        //   542: anewarray       Lcom/hypixel/hytale/math/vector/Vector3f;
        //   545: dup            
        //   546: iconst_0       
        //   547: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   550: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   553: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   556: aastore        
        //   557: dup            
        //   558: iconst_1       
        //   559: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   562: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   565: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   568: aastore        
        //   569: dup            
        //   570: iconst_2       
        //   571: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   574: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   577: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   580: aastore        
        //   581: dup            
        //   582: iconst_3       
        //   583: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   586: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   589: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   592: aastore        
        //   593: dup            
        //   594: iconst_4       
        //   595: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   598: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   601: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   604: aastore        
        //   605: dup            
        //   606: iconst_5       
        //   607: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   610: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   613: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   616: aastore        
        //   617: dup            
        //   618: bipush          6
        //   620: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   623: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   626: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   629: aastore        
        //   630: dup            
        //   631: bipush          7
        //   633: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   636: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   639: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   642: aastore        
        //   643: dup            
        //   644: bipush          8
        //   646: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   649: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   652: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   655: aastore        
        //   656: dup            
        //   657: bipush          9
        //   659: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   662: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   665: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   668: aastore        
        //   669: dup            
        //   670: bipush          10
        //   672: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   675: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   678: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   681: aastore        
        //   682: dup            
        //   683: bipush          11
        //   685: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   688: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   691: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   694: aastore        
        //   695: putstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   698: bipush          8
        //   700: anewarray       Lcom/hypixel/hytale/math/vector/Vector3f;
        //   703: dup            
        //   704: iconst_0       
        //   705: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   708: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   711: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   714: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   717: aastore        
        //   718: dup            
        //   719: iconst_1       
        //   720: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   723: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   726: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   729: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   732: aastore        
        //   733: dup            
        //   734: iconst_2       
        //   735: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   738: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   741: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   744: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   747: aastore        
        //   748: dup            
        //   749: iconst_3       
        //   750: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   753: getstatic       com/hypixel/hytale/math/vector/Vector3f.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   756: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   759: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   762: aastore        
        //   763: dup            
        //   764: iconst_4       
        //   765: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   768: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   771: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   774: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   777: aastore        
        //   778: dup            
        //   779: iconst_5       
        //   780: getstatic       com/hypixel/hytale/math/vector/Vector3f.UP:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   783: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   786: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   789: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   792: aastore        
        //   793: dup            
        //   794: bipush          6
        //   796: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   799: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   802: getstatic       com/hypixel/hytale/math/vector/Vector3f.LEFT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   805: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   808: aastore        
        //   809: dup            
        //   810: bipush          7
        //   812: getstatic       com/hypixel/hytale/math/vector/Vector3f.DOWN:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   815: getstatic       com/hypixel/hytale/math/vector/Vector3f.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   818: getstatic       com/hypixel/hytale/math/vector/Vector3f.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   821: invokestatic    com/hypixel/hytale/math/vector/Vector3f.add:(Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;Lcom/hypixel/hytale/math/vector/Vector3f;)Lcom/hypixel/hytale/math/vector/Vector3f;
        //   824: aastore        
        //   825: putstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   828: iconst_3       
        //   829: anewarray       [Lcom/hypixel/hytale/math/vector/Vector3f;
        //   832: dup            
        //   833: iconst_0       
        //   834: getstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   837: aastore        
        //   838: dup            
        //   839: iconst_1       
        //   840: getstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   843: aastore        
        //   844: dup            
        //   845: iconst_2       
        //   846: getstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   849: aastore        
        //   850: putstatic       com/hypixel/hytale/math/vector/Vector3f.BLOCK_PARTS:[[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   853: iconst_4       
        //   854: anewarray       Lcom/hypixel/hytale/math/vector/Vector3f;
        //   857: dup            
        //   858: iconst_0       
        //   859: getstatic       com/hypixel/hytale/math/vector/Vector3f.NORTH:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   862: aastore        
        //   863: dup            
        //   864: iconst_1       
        //   865: getstatic       com/hypixel/hytale/math/vector/Vector3f.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   868: aastore        
        //   869: dup            
        //   870: iconst_2       
        //   871: getstatic       com/hypixel/hytale/math/vector/Vector3f.EAST:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   874: aastore        
        //   875: dup            
        //   876: iconst_3       
        //   877: getstatic       com/hypixel/hytale/math/vector/Vector3f.WEST:Lcom/hypixel/hytale/math/vector/Vector3f;
        //   880: aastore        
        //   881: putstatic       com/hypixel/hytale/math/vector/Vector3f.CARDINAL_DIRECTIONS:[Lcom/hypixel/hytale/math/vector/Vector3f;
        //   884: return         
        // 
        // The error that occurred was:
        // 
        // java.lang.UnsupportedOperationException: The requested operation is not supported.
        //     at com.strobel.util.ContractUtils.unsupported(ContractUtils.java:27)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:284)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:279)
        //     at com.strobel.assembler.metadata.TypeReference.makeGenericType(TypeReference.java:154)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:225)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
        //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:211)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
        //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitMethod(TypeSubstitutionVisitor.java:314)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2611)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1083)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:684)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:667)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:373)
        //     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:95)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:344)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:206)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:93)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:868)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:761)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:638)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:605)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:195)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:162)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:137)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
        //     at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:333)
        //     at com.strobel.decompiler.DecompilerDriver.decompileJar(DecompilerDriver.java:254)
        //     at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:129)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
}
