ClayLump read(NBTTagCompound tag) {
   minX = tag.getByte("lx");
   minY = tag.getByte("ly");
   minZ = tag.getByte("lz");
   maxX = tag.getByte("hx");
   maxY = tag.getByte("hy");
   maxZ = tag.getByte("hz");
   if (tag.hasKey("icon_id")) {
     icon_id = DataUtil.getBlock(tag.getShort("icon_id"));
   } else {
     icon_id = DataUtil.getBlockFromName(tag.getString("icon_idC"));
   }
   icon_md = tag.getByte("icon_md");
   if (tag.hasKey("icon_sd")) {
     icon_side = tag.getByte("icon_sd");
   } else {
     icon_side = -1;
   }
   quat = Quaternion.loadFromTag(tag, "r");
   return this;
 }
 void write(ArrayList<Object> out) {
   out.add(minX);
   out.add(minY);
   out.add(minZ);
   out.add(maxX);
   out.add(maxY);
   out.add(maxZ);
   out.add((short) DataUtil.getId(icon_id));
   out.add(icon_md);
   out.add(icon_side);
   out.add(quat);
 }
 ClayLump read(ByteBuf in) throws IOException {
   minX = in.readByte();
   minY = in.readByte();
   minZ = in.readByte();
   maxX = in.readByte();
   maxY = in.readByte();
   maxZ = in.readByte();
   icon_id = DataUtil.getBlock(in.readShort());
   icon_md = in.readByte();
   icon_side = in.readByte();
   quat = Quaternion.read(in);
   return this;
 }
 void write(NBTTagCompound tag) {
   tag.setByte("lx", minX);
   tag.setByte("ly", minY);
   tag.setByte("lz", minZ);
   tag.setByte("hx", maxX);
   tag.setByte("hy", maxY);
   tag.setByte("hz", maxZ);
   // tag.setShort("icon_id", (short) FzUtil.getId(icon_id));
   String iname = DataUtil.getName(icon_id);
   if (iname != null) {
     tag.setString("icon_idC", iname);
   }
   tag.setByte("icon_md", icon_md);
   tag.setByte("icon_sd", icon_side);
   quat.writeToTag(tag, "r");
 }