public void addTile(CrystalNetworkTile te) {
    if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
      WorldLocation loc = PylonFinder.getLocation(te);
      CrystalNetworkTile old = tiles.get(loc);
      if (old != null) { // cache cleaning; old TEs may get out of sync for things like charge
        this.removeTile(old);
      }
      tiles.put(loc, te);
      if (te instanceof TileEntityCrystalPylon) {
        this.addPylon((TileEntityCrystalPylon) te);
      }
      this.verifyTileAt(te, loc);

      for (NotifiedNetworkTile tile : notifyCache) {
        tile.onTileNetworkTopologyChange(te, false);
      }

      if (te instanceof NotifiedNetworkTile) {
        notifyCache.add((NotifiedNetworkTile) te);
      }

      WorldCrystalNetworkData.initNetworkData(te.getWorld()).setDirty(true);
      if (te instanceof TileEntityCrystalPylon) {
        PylonLocationData.initNetworkData(te.getWorld()).setDirty(true);
      }
    }
  }
 public void addControlRod(TileEntityControlRod rod) {
   if (minX > rod.xCoord) minX = rod.xCoord;
   if (maxX < rod.xCoord) maxX = rod.xCoord;
   if (minY > rod.yCoord) minY = rod.yCoord;
   if (maxY < rod.yCoord) maxY = rod.yCoord;
   if (minZ > rod.zCoord) minZ = rod.zCoord;
   if (maxZ < rod.zCoord) maxZ = rod.zCoord;
   controls.put(rod);
 }
 private void addPylon(TileEntityCrystalPylon te) {
   CrystalElement e = te.getColor();
   TileEntityCache<TileEntityCrystalPylon> c = pylons.get(e);
   if (c == null) {
     c = new TileEntityCache();
     pylons.put(e, c);
   }
   c.put(te);
 }