summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt b/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt
index 4a168f5..a54e519 100644
--- a/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt
+++ b/src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt
@@ -7,21 +7,21 @@ import io.dico.parcels2.blockvisitor.WorktimeLimiter
import io.dico.parcels2.options.RuntimeWorldOptions
import io.dico.parcels2.storage.Storage
import org.bukkit.World
+import org.joda.time.DateTime
import java.util.UUID
-class ParcelWorldImpl private
-constructor(override val world: World,
- override val generator: ParcelGenerator,
- override var options: RuntimeWorldOptions,
- override val storage: Storage,
- override val globalAddedData: GlobalAddedDataManager,
- containerFactory: ParcelContainerFactory,
- blockManager: ParcelBlockManager)
+class ParcelWorldImpl(override val world: World,
+ override val generator: ParcelGenerator,
+ override var options: RuntimeWorldOptions,
+ override val storage: Storage,
+ override val globalAddedData: GlobalAddedDataManager,
+ containerFactory: ParcelContainerFactory,
+ worktimeLimiter: WorktimeLimiter)
: ParcelWorld,
ParcelWorldId,
- ParcelContainer, // missing delegation
- ParcelLocator, // missing delegation
- ParcelBlockManager by blockManager {
+ ParcelContainer, /* missing delegation */
+ ParcelLocator /* missing delegation */ {
+
override val id: ParcelWorldId get() = this
override val uid: UUID? get() = world.uid
@@ -33,10 +33,14 @@ constructor(override val world: World,
override val name: String = world.name!!
override val container: ParcelContainer = containerFactory(this)
- override val locator: ParcelLocator = generator.makeParcelLocator(container)
- override val blockManager: ParcelBlockManager = blockManager
+ override val locator: ParcelLocator
+ override val blockManager: ParcelBlockManager
init {
+ val pair = generator.makeParcelLocatorAndBlockManager(id, container, worktimeLimiter)
+ locator = pair.first
+ blockManager = pair.second
+
enforceOptions()
}
@@ -55,24 +59,13 @@ constructor(override val world: World,
world.setGameRuleValue("doTileDrops", "${options.doTileDrops}")
}
+ // Updated by ParcelProviderImpl
+ override var creationTime: DateTime? = null
+
/*
Interface delegation needs to be implemented manually because JetBrains has yet to fix it.
*/
- companion object {
- // Use this to be able to delegate blockManager and assign it to a property too, at least.
- operator fun invoke(world: World,
- generator: ParcelGenerator,
- options: RuntimeWorldOptions,
- storage: Storage,
- globalAddedData: GlobalAddedDataManager,
- containerFactory: ParcelContainerFactory,
- worktimeLimiter: WorktimeLimiter): ParcelWorldImpl {
- val blockManager = generator.makeParcelBlockManager(worktimeLimiter)
- return ParcelWorldImpl(world, generator, options, storage, globalAddedData, containerFactory, blockManager)
- }
- }
-
// ParcelLocator interface
override fun getParcelAt(x: Int, z: Int): Parcel? {
return locator.getParcelAt(x, z)