@Override
 public String toString() {
   return red_position.toString()
       + "["
       + new Integer(red_links.size())
       + "]"
       + "-"
       + green_position.toString()
       + "["
       + new Integer(green_links.size())
       + "]";
 }
 public void setMarker(String aName, BlockPosition aPos) {
   Marker lMarker = getMarker(aName);
   if (lMarker == null) {
     lMarker = new Marker();
     lMarker.name = aName;
     addRecord(lMarker);
   }
   lMarker.pos = aPos.clone();
 }
 public void calcPositions() {
   mid_position =
       new BlockPosition(
           Math.round((red_position.x + green_position.x) / 2),
           Math.round((red_position.y + green_position.y) / 2),
           Math.round((red_position.z + green_position.z) / 2));
   if (red_position.distance(green_position) <= 8.0f) {
     way_red_position.cloneFrom(mid_position);
     way_green_position.cloneFrom(mid_position);
   } else {
     way_red_position =
         new BlockPosition(
             Math.round((((red_position.x + mid_position.x) / 2) + mid_position.x) / 2),
             Math.round((((red_position.y + mid_position.y) / 2) + mid_position.y) / 2),
             Math.round((((red_position.z + mid_position.z) / 2) + mid_position.z) / 2));
     way_green_position =
         new BlockPosition(
             Math.round((((green_position.x + mid_position.x) / 2) + mid_position.x) / 2),
             Math.round((((green_position.y + mid_position.y) / 2) + mid_position.y) / 2),
             Math.round((((green_position.z + mid_position.z) / 2) + mid_position.z) / 2));
   }
 }
 public Vector getVector() {
   return mid_position.getVector();
 }
 @Override
 protected void fromCSVInternal(DBRecordCSVArray aCols) {
   super.fromCSVInternal(aCols);
   red_position.x = aCols.popInt();
   red_position.y = aCols.popInt();
   red_position.z = aCols.popInt();
   green_position.x = aCols.popInt();
   green_position.y = aCols.popInt();
   green_position.z = aCols.popInt();
   mid_position.x = aCols.popInt();
   mid_position.y = aCols.popInt();
   mid_position.z = aCols.popInt();
   way_red_position.x = aCols.popInt();
   way_red_position.y = aCols.popInt();
   way_red_position.z = aCols.popInt();
   way_green_position.x = aCols.popInt();
   way_green_position.y = aCols.popInt();
   way_green_position.z = aCols.popInt();
   aCols.popKeys(red_links);
   aCols.popKeys(green_links);
   player = aCols.pop();
   swapRedToGreen = Boolean.parseBoolean(aCols.pop());
   swapGreenToRed = Boolean.parseBoolean(aCols.pop());
 }