{"body":"def forWorld[T <: WorldData : ClassTag](world: World)(implicit ctag: ClassTag[T]): T = {\n\t\tval dataClass = ctag.runtimeClass.asInstanceOf[Class[T]]\n\t\tval key = this.classesAndKeys(dataClass)\n\t\tif (key == null) throw new NoSuchElementException(\n\t\t\t\"Data class \" + dataClass + \" was not registered.\")\n\n\t\tval greyList = this.dimensionGreyList(dataClass)\n\t\tif (greyList == null) throw new NoSuchElementException(\n\t\t\t\"Data class \" + dataClass.getCanonicalName + \" was not registered.\")\n\t\tval dim = world.provider.getDimensionId\n\t\tif (greyList._1.nonEmpty && !greyList._1.contains(dim))return dataClass.cast(null)\n\t\tif (greyList._2.nonEmpty && greyList._2.contains(dim)) return dataClass.cast(null)\n\n\t\tval storage: MapStorage = world.getPerWorldStorage\n\t\tvar data = storage.loadData(dataClass, key)\n\t\tif (data == null)\n\t\t\ttry {\n\t\t\t\tdata = dataClass.getConstructor(classOf[String]).newInstance(key)\n\t\t\t\tdataClass.cast(data).setWorld(world)\n\t\t\t\tstorage.setData(key, data)\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tcase e: Exception =>\n\t\t\t\t\te.printStackTrace()\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\"Could not instantiate \" + dataClass.getCanonicalName)\n\t\t\t}\n\t\tdataClass.cast(data)\n\t}","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/J0IrYbEz","modified":1452976647,"id":"J0IrYbEz","size":1159,"lines":29,"own_paste":false,"theme":"","date":1452976647}