summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt
diff options
context:
space:
mode:
authorDico <dico.karssiens@gmail.com>2018-09-27 07:03:02 +0100
committerDico <dico.karssiens@gmail.com>2018-09-27 07:03:02 +0100
commit842e52bd92f0c67aa1906b899ce600ecb3b26bda (patch)
treef0e03e66ba0dfeb8d3aee58a09acd6889f5ee20e /src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt
parent307b7aee4af34e47139259db7049a85c682b7be2 (diff)
Fixes n tweaks
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt b/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt
index ff2fcd4..1edf849 100644
--- a/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt
+++ b/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelProviderImpl.kt
@@ -58,8 +58,10 @@ class ParcelProviderImpl(val plugin: ParcelsPlugin) : ParcelProvider {
if (worldExists) Bukkit.getWorld(worldName)!!
else WorldCreator(worldName).generator(generator).createWorld().also { logger.info("Creating world $worldName") }
- parcelWorld = ParcelWorldImpl(bukkitWorld, generator, worldOptions.runtime, plugin.storage,
- plugin.globalPrivileges, ::DefaultParcelContainer, plugin, plugin.workDispatcher)
+ parcelWorld = ParcelWorldImpl(
+ bukkitWorld, generator, worldOptions.runtime, plugin.storage,
+ plugin.globalPrivileges, ::DefaultParcelContainer, plugin, plugin.jobDispatcher
+ )
if (!worldExists) {
val time = DateTime.now()
@@ -95,11 +97,18 @@ class ParcelProviderImpl(val plugin: ParcelsPlugin) : ParcelProvider {
logger.info("Loading all parcel data...")
val channel = plugin.storage.transmitAllParcelData()
- do {
- val pair = channel.receiveOrNull() ?: break
- val parcel = getParcelById(pair.first) ?: continue
- pair.second?.let { parcel.copyDataIgnoringDatabase(it) }
- } while (true)
+ while (true) {
+ val (id, data) = channel.receiveOrNull() ?: break
+ val parcel = getParcelById(id) ?: continue
+ data?.let { parcel.copyDataIgnoringDatabase(it) }
+ }
+
+ val channel2 = plugin.storage.transmitAllGlobalPrivileges()
+ while (true) {
+ val (profile, data) = channel2.receiveOrNull() ?: break
+ val key = profile as? PrivilegeKey ?: continue
+ (plugin.globalPrivileges[key] as PrivilegesHolder).copyPrivilegesFrom(data)
+ }
logger.info("Loading data completed")
_dataIsLoaded = true