// Path: src/simpleserver/Coordinate.java
// public enum Dimension {
//   EARTH(0),
//   NETHER(-1),
//   END(1),
//   LIMBO;
// 
//   private int index;
// 
//   Dimension(int index) {
//     this.index = index;
//   }
// 
//   Dimension() {
//   }
// 
//   @Override
//   public String toString() {
//     String name = super.toString();
//     return name.substring(0, 1) + name.substring(1).toLowerCase();
//   }
// 
//   private boolean isNamed(String name) {
//     return super.toString().equals(name.toUpperCase());
//   }
// 
//   public int index() {
//     return index;
//   }
// 
//   public static Dimension get(int index) {
//     for (Dimension dim : Dimension.values()) {
//       if (dim.index == index) {
//         return dim;
//       }
//     }
//     return Dimension.LIMBO;
//   }
// 
//   public static Dimension get(String name) {
//     for (Dimension dim : Dimension.values()) {
//       if (dim.isNamed(name)) {
//         return dim;
//       }
//     }
//     return Dimension.LIMBO;
//   }
// 
// }
// 
// Path: src/simpleserver/nbt/NBTByte.java
// public class NBTByte extends NBTag {
//   private Byte value;
// 
//   NBTByte() {
//     super();
//   }
// 
//   NBTByte(DataInputStream in, Boolean named) throws Exception {
//     super(in, named);
//   }
// 
//   public NBTByte(byte value) {
//     set(value);
//   }
// 
//   public NBTByte(String name, byte value) {
//     super(name);
//     set(value);
//   }
// 
//   @Override
//   protected byte id() {
//     return 1;
//   }
// 
//   @Override
//   public Byte get() {
//     return value;
//   }
// 
//   @Override
//   void set(String value) {
//     if (value.startsWith("0x")) {
//       this.value = Integer.valueOf(value.substring(2), 16).byteValue();
//     } else {
//       this.value = Integer.valueOf(value).byteValue();
//     }
//   }
// 
//   public void set(byte value) {
//     this.value = value;
//   }
// 
//   @Override
//   protected void loadValue(DataInputStream in) throws IOException {
//     value = in.readByte();
//   }
// 
//   @Override
//   protected void saveValue(DataOutputStream out) throws IOException {
//     out.writeByte(value);
//   }
// 
//   @Override
//   protected String valueToString(int level) {
//     return String.format("0x%1$02x (%1$d)", get());
//   }
// }


import java.io.DataOutputStream;
import java.io.IOException;
import simpleserver.Coordinate.Dimension;
import simpleserver.nbt.NBTByte;
import simpleserver.nbt.NBTCompound;
import simpleserver.nbt.NBTDouble;
import simpleserver.nbt.NBTFloat;
import simpleserver.nbt.NBTInt;
  private final static String Z = "z";
  private final static String YAW = "yaw";
  private final static String PITCH = "pitch";
  private static final String POSITION = "position";

  public double x;
  public double y;
  public double z;
  public double stance;
  public Dimension dimension;
  public float yaw;
  public float pitch;
  public boolean onGround;

  public Position() {
    dimension = Dimension.EARTH;
    onGround = true;
  }

  public Position(double x, double y, double z, Dimension dimension) {
    this(x, y, z, dimension, 0, 0);
  }

  public Position(double x, double y, double z, Dimension dimension, float yaw, float pitch) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.dimension = dimension;
    this.yaw = yaw;
    this.pitch = pitch;
// Path: src/simpleserver/Coordinate.java
// public enum Dimension {
//   EARTH(0),
//   NETHER(-1),
//   END(1),
//   LIMBO;
// 
//   private int index;
// 
//   Dimension(int index) {
//     this.index = index;
//   }
// 
//   Dimension() {
//   }
// 
//   @Override
//   public String toString() {
//     String name = super.toString();
//     return name.substring(0, 1) + name.substring(1).toLowerCase();
//   }
// 
//   private boolean isNamed(String name) {
//     return super.toString().equals(name.toUpperCase());
//   }
// 
//   public int index() {
//     return index;
//   }
// 
//   public static Dimension get(int index) {
//     for (Dimension dim : Dimension.values()) {
//       if (dim.index == index) {
//         return dim;
//       }
//     }
//     return Dimension.LIMBO;
//   }
// 
//   public static Dimension get(String name) {
//     for (Dimension dim : Dimension.values()) {
//       if (dim.isNamed(name)) {
//         return dim;
//       }
//     }
//     return Dimension.LIMBO;
//   }
// 
// }
// 
// Path: src/simpleserver/nbt/NBTByte.java
// public class NBTByte extends NBTag {
//   private Byte value;
// 
//   NBTByte() {
//     super();
//   }
// 
//   NBTByte(DataInputStream in, Boolean named) throws Exception {
//     super(in, named);
//   }
// 
//   public NBTByte(byte value) {
//     set(value);
//   }
// 
//   public NBTByte(String name, byte value) {
//     super(name);
//     set(value);
//   }
// 
//   @Override
//   protected byte id() {
//     return 1;
//   }
// 
//   @Override
//   public Byte get() {
//     return value;
//   }
// 
//   @Override
//   void set(String value) {
//     if (value.startsWith("0x")) {
//       this.value = Integer.valueOf(value.substring(2), 16).byteValue();
//     } else {
//       this.value = Integer.valueOf(value).byteValue();
//     }
//   }
// 
//   public void set(byte value) {
//     this.value = value;
//   }
// 
//   @Override
//   protected void loadValue(DataInputStream in) throws IOException {
//     value = in.readByte();
//   }
// 
//   @Override
//   protected void saveValue(DataOutputStream out) throws IOException {
//     out.writeByte(value);
//   }
// 
//   @Override
//   protected String valueToString(int level) {
//     return String.format("0x%1$02x (%1$d)", get());
//   }
// }


// Path: src/simpleserver/Position.java
import java.io.DataOutputStream;
import java.io.IOException;
import simpleserver.Coordinate.Dimension;
import simpleserver.nbt.NBTByte;
import simpleserver.nbt.NBTCompound;
import simpleserver.nbt.NBTDouble;
import simpleserver.nbt.NBTFloat;
import simpleserver.nbt.NBTInt;

  private final static String Z = "z";
  private final static String YAW = "yaw";
  private final static String PITCH = "pitch";
  private static final String POSITION = "position";

  public double x;
  public double y;
  public double z;
  public double stance;
  public Dimension dimension;
  public float yaw;
  public float pitch;
  public boolean onGround;

  public Position() {
    dimension = Dimension.EARTH;
    onGround = true;
  }

  public Position(double x, double y, double z, Dimension dimension) {
    this(x, y, z, dimension, 0, 0);
  }

  public Position(double x, double y, double z, Dimension dimension, float yaw, float pitch) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.dimension = dimension;
    this.yaw = yaw;
    this.pitch = pitch;
    onGround = true;