diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/defaultimpl/ParcelWorldImpl.kt | 47 |
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) |