diff options
author | Dico <dico.karssiens@gmail.com> | 2018-08-02 03:42:48 +0100 |
---|---|---|
committer | Dico <dico.karssiens@gmail.com> | 2018-08-02 03:42:48 +0100 |
commit | 6513ad9237dbda0244a52608ae639fee5822b3ee (patch) | |
tree | 1cde86912f1131d7a318687a8fcca9ba9b2f568a | |
parent | 3917855a72c60d1c78632949b4fea21471873347 (diff) |
Fix bugs
15 files changed, 118 insertions, 100 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt b/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt index 69bc07f..1528d21 100644 --- a/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt +++ b/src/main/kotlin/io/dico/parcels2/GlobalAddedData.kt @@ -39,7 +39,7 @@ class GlobalAddedDataManagerImpl(val plugin: ParcelsPlugin) : GlobalAddedDataMan } private companion object { - val emptyData = mapOf<UUID, AddedStatus>() as MutableMap<UUID, AddedStatus> + val emptyData = Collections.emptyMap<UUID, AddedStatus>() as MutableMap<UUID, AddedStatus> } } diff --git a/src/main/kotlin/io/dico/parcels2/Parcel.kt b/src/main/kotlin/io/dico/parcels2/Parcel.kt index 712c32f..335b415 100644 --- a/src/main/kotlin/io/dico/parcels2/Parcel.kt +++ b/src/main/kotlin/io/dico/parcels2/Parcel.kt @@ -31,8 +31,13 @@ class Parcel(val world: ParcelWorld, val pos: Vec2i) : ParcelData { } fun copyData(data: ParcelData) { - world.storage.setParcelData(this, data) copyDataIgnoringDatabase(data) + world.storage.setParcelData(this, data) + } + + fun dispose() { + copyDataIgnoringDatabase(ParcelDataHolder()) + world.storage.setParcelData(this, null) } override val addedMap: Map<UUID, AddedStatus> get() = data.addedMap diff --git a/src/main/kotlin/io/dico/parcels2/ParcelWorld.kt b/src/main/kotlin/io/dico/parcels2/ParcelWorld.kt index c94d273..5e7187b 100644 --- a/src/main/kotlin/io/dico/parcels2/ParcelWorld.kt +++ b/src/main/kotlin/io/dico/parcels2/ParcelWorld.kt @@ -3,8 +3,8 @@ package io.dico.parcels2 import io.dico.parcels2.storage.SerializableParcel import io.dico.parcels2.storage.SerializableWorld import io.dico.parcels2.storage.Storage +import io.dico.parcels2.storage.getParcelBySerializedValue import io.dico.parcels2.util.Vec2i -import io.dico.parcels2.util.doAwait import io.dico.parcels2.util.floor import kotlinx.coroutines.experimental.launch import org.bukkit.Bukkit @@ -17,8 +17,6 @@ import org.bukkit.entity.Player import java.util.* import kotlin.coroutines.experimental.buildIterator import kotlin.coroutines.experimental.buildSequence -import kotlin.reflect.jvm.javaMethod -import kotlin.reflect.jvm.kotlinFunction class Worlds(val plugin: ParcelsPlugin) { val worlds: Map<String, ParcelWorld> get() = _worlds @@ -42,11 +40,6 @@ class Worlds(val plugin: ParcelsPlugin) { } } - init { - val function = ::loadWorlds - function.javaMethod!!.kotlinFunction - } - operator fun SerializableParcel.invoke(): Parcel? { return world()?.parcelByID(pos) } @@ -72,31 +65,28 @@ class Worlds(val plugin: ParcelsPlugin) { continue } - _worlds.put(worldName, world) - - if (Bukkit.getWorld(worldName) == null) { - plugin.doAwait { - cond = { - try { - // server.getDefaultGameMode() throws an error before any worlds are initialized. - // createWorld() below calls that method. - // Plugin needs to load on STARTUP for generators to be registered correctly. - // Means we need to await the initial worlds getting loaded. - - plugin.server.defaultGameMode; true - } catch (ex: Throwable) { - false - } - } - - onSuccess = { - val bworld = WorldCreator(worldName).generator(world.generator).createWorld() - val spawn = world.generator.getFixedSpawnLocation(bworld, null) - bworld.setSpawnLocation(spawn.x.floor(), spawn.y.floor(), spawn.z.floor()) - } + _worlds[worldName] = world + } + + plugin.functionHelper.schedule(10) { + println("Parcels generating worlds now") + for ((name, world) in _worlds) { + if (Bukkit.getWorld(name) == null) { + val bworld = WorldCreator(name).generator(world.generator).createWorld() + val spawn = world.generator.getFixedSpawnLocation(bworld, null) + bworld.setSpawnLocation(spawn.x.floor(), spawn.y.floor(), spawn.z.floor()) } } + val channel = plugin.storage.readAllParcelData() + val job = plugin.functionHelper.launchLazilyOnMainThread { + do { + val pair = channel.receiveOrNull() ?: break + val parcel = getParcelBySerializedValue(pair.first) ?: continue + pair.second?.let { parcel.copyDataIgnoringDatabase(it) } + } while (true) + } + job.start() } } @@ -205,7 +195,8 @@ class DefaultParcelContainer(private val world: ParcelWorld, buildIterator { val center = world.options.axisLimit for (radius in 0..center) { - var x = center - radius; var z = center - radius + var x = center - radius; + var z = center - radius repeat(radius * 2) { yield(parcels[x++][z]) } repeat(radius * 2) { yield(parcels[x][z++]) } repeat(radius * 2) { yield(parcels[x--][z]) } diff --git a/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt b/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt index d55320e..2533277 100644 --- a/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt +++ b/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt @@ -12,14 +12,13 @@ import io.dico.parcels2.storage.Storage import io.dico.parcels2.storage.yamlObjectMapper import io.dico.parcels2.util.FunctionHelper import io.dico.parcels2.util.tryCreate -import kotlinx.coroutines.experimental.asCoroutineDispatcher import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin +import org.slf4j.Logger import org.slf4j.LoggerFactory import java.io.File -import java.util.concurrent.Executor -val logger = LoggerFactory.getLogger("ParcelsPlugin") +val logger: Logger = LoggerFactory.getLogger("ParcelsPlugin") private inline val plogger get() = logger class ParcelsPlugin : JavaPlugin() { @@ -64,14 +63,14 @@ class ParcelsPlugin : JavaPlugin() { return false } + globalAddedData = GlobalAddedDataManagerImpl(this) worlds.loadWorlds(options) + entityTracker = ParcelEntityTracker(worlds) } catch (ex: Exception) { plogger.error("Error loading options", ex) return false } - globalAddedData = GlobalAddedDataManagerImpl(this) - entityTracker = ParcelEntityTracker(worlds) registerListeners() registerCommands() @@ -79,21 +78,23 @@ class ParcelsPlugin : JavaPlugin() { } fun loadOptions(): Boolean { - if (optionsFile.exists()) { - yamlObjectMapper.readerForUpdating(options).readValue<Options>(optionsFile) - } else if (optionsFile.tryCreate()) { - options.addWorld("parcels", WorldOptions()) - try { - yamlObjectMapper.writeValue(optionsFile, options) - } catch (ex: Throwable) { - optionsFile.delete() - throw ex + when { + optionsFile.exists() -> yamlObjectMapper.readerForUpdating(options).readValue<Options>(optionsFile) + optionsFile.tryCreate() -> { + options.addWorld("parcels", WorldOptions()) + try { + yamlObjectMapper.writeValue(optionsFile, options) + } catch (ex: Throwable) { + optionsFile.delete() + throw ex + } + plogger.warn("Created options file with a world template. Please review it before next start.") + return false + } + else -> { + plogger.error("Failed to save options file ${optionsFile.canonicalPath}") + return false } - plogger.warn("Created options file with a world template. Please review it before next start.") - return false - } else { - plogger.error("Failed to save options file ${optionsFile.canonicalPath}") - return false } return true } @@ -105,7 +106,7 @@ class ParcelsPlugin : JavaPlugin() { } private fun registerListeners() { - if (listeners != null) { + if (listeners == null) { listeners = ParcelListeners(worlds, entityTracker) registrator.registerListeners(listeners!!) } diff --git a/src/main/kotlin/io/dico/parcels2/blockvisitor/RegionTraversal.kt b/src/main/kotlin/io/dico/parcels2/blockvisitor/RegionTraversal.kt index 19eb7ee..85fe946 100644 --- a/src/main/kotlin/io/dico/parcels2/blockvisitor/RegionTraversal.kt +++ b/src/main/kotlin/io/dico/parcels2/blockvisitor/RegionTraversal.kt @@ -20,7 +20,7 @@ enum class RegionTraversal(private val builder: suspend SequenceBuilder<Vec3i>.( }), - UPDARD({ region -> + UPWARD({ region -> val origin = region.origin val size = region.size diff --git a/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt b/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt index 2cee99a..f712d00 100644 --- a/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt +++ b/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt @@ -4,10 +4,10 @@ import io.dico.dicore.command.CommandException import io.dico.dicore.command.ExecutionContext import io.dico.dicore.command.ICommandReceiver import io.dico.parcels2.ParcelOwner +import io.dico.parcels2.ParcelWorld import io.dico.parcels2.ParcelsPlugin import io.dico.parcels2.util.hasAdminManage import io.dico.parcels2.util.parcelLimit -import io.dico.parcels2.util.uuid import org.bukkit.entity.Player import org.bukkit.plugin.Plugin import java.lang.reflect.Method @@ -29,9 +29,10 @@ abstract class AbstractParcelCommands(val plugin: ParcelsPlugin) : ICommandRecei if (!plugin.storage.isConnected) error("Parcels cannot $action right now because of a database error") } - protected suspend fun checkParcelLimit(player: Player) { + protected suspend fun checkParcelLimit(player: Player, world: ParcelWorld) { if (player.hasAdminManage) return - val numOwnedParcels = plugin.storage.getNumParcels(ParcelOwner(uuid = player.uuid)).await() + val numOwnedParcels = plugin.storage.getOwnedParcels(ParcelOwner(player)).await() + .filter { it.world.world == world.world }.size val limit = player.parcelLimit if (numOwnedParcels >= limit) { diff --git a/src/main/kotlin/io/dico/parcels2/command/CommandsAddedStatus.kt b/src/main/kotlin/io/dico/parcels2/command/CommandsAddedStatus.kt index adc8e60..997044a 100644 --- a/src/main/kotlin/io/dico/parcels2/command/CommandsAddedStatus.kt +++ b/src/main/kotlin/io/dico/parcels2/command/CommandsAddedStatus.kt @@ -15,7 +15,7 @@ class CommandsAddedStatus(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin shortVersion = "allows a player to build on this parcel") @ParcelRequire(owner = true) fun ParcelScope.cmdAllow(sender: Player, player: OfflinePlayer): Any? { - Validate.isTrue(parcel.owner != null && !sender.hasAdminManage, "This parcel is unowned") + Validate.isTrue(parcel.owner != null || sender.hasAdminManage, "This parcel is unowned") Validate.isTrue(!parcel.owner!!.matches(player), "The target already owns the parcel") Validate.isTrue(parcel.allow(player), "${player.name} is already allowed to build on this parcel") return "${player.name} is now allowed to build on this parcel" @@ -37,7 +37,7 @@ class CommandsAddedStatus(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin shortVersion = "bans a player from this parcel") @ParcelRequire(owner = true) fun ParcelScope.cmdBan(sender: Player, player: OfflinePlayer): Any? { - Validate.isTrue(parcel.owner != null && !sender.hasAdminManage, "This parcel is unowned") + Validate.isTrue(parcel.owner != null || sender.hasAdminManage, "This parcel is unowned") Validate.isTrue(!parcel.owner!!.matches(player), "The owner cannot be banned from the parcel") Validate.isTrue(parcel.ban(player), "${player.name} is already banned from this parcel") return "${player.name} is now banned from this parcel" diff --git a/src/main/kotlin/io/dico/parcels2/command/CommandsDebug.kt b/src/main/kotlin/io/dico/parcels2/command/CommandsDebug.kt index 8f7f6ba..9493d26 100644 --- a/src/main/kotlin/io/dico/parcels2/command/CommandsDebug.kt +++ b/src/main/kotlin/io/dico/parcels2/command/CommandsDebug.kt @@ -1,12 +1,17 @@ package io.dico.parcels2.command import io.dico.dicore.command.CommandException +import io.dico.dicore.command.EMessageType +import io.dico.dicore.command.ExecutionContext import io.dico.dicore.command.annotation.Cmd import io.dico.parcels2.ParcelsPlugin +import io.dico.parcels2.blockvisitor.RegionTraversal import org.bukkit.Bukkit +import org.bukkit.Material import org.bukkit.entity.Player +import java.util.* -class CommandsDebug(val plugin: ParcelsPlugin) { +class CommandsDebug(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { @Cmd("reloadoptions") fun reloadOptions() { @@ -23,4 +28,23 @@ class CommandsDebug(val plugin: ParcelsPlugin) { return "Teleported you to $worldName spawn" } + @Cmd("make_mess") + @ParcelRequire(owner = true) + fun ParcelScope.cmdMakeMess(context: ExecutionContext) { + val server = plugin.server + val blockDatas = arrayOf( + server.createBlockData(Material.STICKY_PISTON), + server.createBlockData(Material.GLASS), + server.createBlockData(Material.STONE_SLAB), + server.createBlockData(Material.QUARTZ_BLOCK) + ) + val random = Random() + world.generator.doBlockOperation(parcel, direction = RegionTraversal.UPWARD) { block -> + block.blockData = blockDatas[random.nextInt(4)] + }.onProgressUpdate(1000, 1000) { progress, elapsedTime -> + context.sendMessage(EMessageType.INFORMATIVE, "Mess progress: %.02f%%, %.2fs elapsed" + .format(progress * 100, elapsedTime / 1000.0)) + } + } + }
\ No newline at end of file diff --git a/src/main/kotlin/io/dico/parcels2/command/CommandsGeneral.kt b/src/main/kotlin/io/dico/parcels2/command/CommandsGeneral.kt index 929b0c7..bfa1f6c 100644 --- a/src/main/kotlin/io/dico/parcels2/command/CommandsGeneral.kt +++ b/src/main/kotlin/io/dico/parcels2/command/CommandsGeneral.kt @@ -8,16 +8,12 @@ import io.dico.dicore.command.annotation.Flag import io.dico.dicore.command.annotation.RequireParameters import io.dico.parcels2.ParcelOwner import io.dico.parcels2.ParcelsPlugin -import io.dico.parcels2.blockvisitor.RegionTraversal import io.dico.parcels2.storage.getParcelBySerializedValue import io.dico.parcels2.util.hasAdminManage import io.dico.parcels2.util.hasParcelHomeOthers import io.dico.parcels2.util.uuid -import org.bukkit.Material import org.bukkit.entity.Player -import java.util.* -//@Suppress("unused") class CommandsGeneral(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { @Cmd("auto") @@ -26,7 +22,7 @@ class CommandsGeneral(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { shortVersion = "sets you up with a fresh, unclaimed parcel") suspend fun WorldScope.cmdAuto(player: Player): Any? { checkConnected("be claimed") - checkParcelLimit(player) + checkParcelLimit(player, world) val parcel = world.nextEmptyParcel() ?: error("This world is full, please ask an admin to upsize it") @@ -58,7 +54,7 @@ class CommandsGeneral(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { val ownedParcels = ownedParcelsResult .map { worlds.getParcelBySerializedValue(it) } - .filter { it != null && ownerTarget.world == it.world && ownerTarget.owner == it.owner } + .filter { it != null && ownerTarget.world == it.world } val targetMatch = ownedParcels.getOrNull(target.index) ?: error("The specified parcel could not be matched") @@ -76,11 +72,19 @@ class CommandsGeneral(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { error(if (it.matches(player)) "You already own this parcel" else "This parcel is not available") } - checkParcelLimit(player) + checkParcelLimit(player, world) parcel.owner = ParcelOwner(player) return "Enjoy your new parcel!" } + @Cmd("unclaim") + @Desc("Unclaims this parcel") + @ParcelRequire(owner = true) + fun ParcelScope.cmdUnclaim(player: Player): Any? { + parcel.dispose() + return "Your parcel has been disposed" + } + @Cmd("clear") @ParcelRequire(owner = true) fun ParcelScope.cmdClear(context: ExecutionContext, @Flag sure: Boolean): Any? { @@ -101,23 +105,4 @@ class CommandsGeneral(plugin: ParcelsPlugin) : AbstractParcelCommands(plugin) { TODO() } - @Cmd("make_mess") - @ParcelRequire(owner = true) - fun ParcelScope.cmdMakeMess(context: ExecutionContext) { - val server = plugin.server - val blockDatas = arrayOf( - server.createBlockData(Material.STICKY_PISTON), - server.createBlockData(Material.GLASS), - server.createBlockData(Material.STONE_SLAB), - server.createBlockData(Material.QUARTZ_BLOCK) - ) - val random = Random() - world.generator.doBlockOperation(parcel, direction = RegionTraversal.UPDARD) { block -> - block.blockData = blockDatas[random.nextInt(4)] - }.onProgressUpdate(1000, 1000) { progress, elapsedTime -> - context.sendMessage(EMessageType.INFORMATIVE, "Mess progress: %.02f%%, %.2fs elapsed" - .format(progress * 100, elapsedTime / 1000.0)) - } - } - }
\ No newline at end of file diff --git a/src/main/kotlin/io/dico/parcels2/command/ParcelCommandBuilder.kt b/src/main/kotlin/io/dico/parcels2/command/ParcelCommandBuilder.kt index 2ba16e2..f3bd63c 100644 --- a/src/main/kotlin/io/dico/parcels2/command/ParcelCommandBuilder.kt +++ b/src/main/kotlin/io/dico/parcels2/command/ParcelCommandBuilder.kt @@ -15,7 +15,7 @@ fun getParcelCommands(plugin: ParcelsPlugin): ICommandDispatcher { return CommandBuilder() .setChatController(ParcelsChatController()) .addParameterType(false, ParcelParameterType(plugin.worlds)) - .addParameterType(true, ParcelHomeParameterType(plugin.worlds)) + .addParameterType(true, ParcelTarget.PType(plugin.worlds)) .group("parcel", "plot", "plots", "p") .registerCommands(CommandsGeneral(plugin)) diff --git a/src/main/kotlin/io/dico/parcels2/storage/SerializableTypes.kt b/src/main/kotlin/io/dico/parcels2/storage/SerializableTypes.kt index 8d8d938..1f659fb 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/SerializableTypes.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/SerializableTypes.kt @@ -17,6 +17,8 @@ data class SerializableWorld(val name: String? = null, val world: World? by lazy { uid?.let { Bukkit.getWorld(it) } ?: name?.let { Bukkit.getWorld(it) } } //val parcelWorld: ParcelWorld? by lazy { TODO() } + + constructor(world: World) : this(world.name, world.uid) } /** @@ -33,5 +35,6 @@ fun Worlds.getWorldBySerializedValue(input: SerializableWorld): ParcelWorld? { } fun Worlds.getParcelBySerializedValue(input: SerializableParcel): Parcel? { - return getWorldBySerializedValue(input.world)?.parcelByID(input.pos) + return getWorldBySerializedValue(input.world) + ?.parcelByID(input.pos) }
\ No newline at end of file diff --git a/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedBacking.kt b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedBacking.kt index 729bbff..483bb16 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedBacking.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedBacking.kt @@ -4,9 +4,13 @@ package io.dico.parcels2.storage.exposed import com.zaxxer.hikari.HikariDataSource import io.dico.parcels2.* -import io.dico.parcels2.storage.* +import io.dico.parcels2.storage.Backing +import io.dico.parcels2.storage.SerializableParcel import io.dico.parcels2.util.toUUID +import kotlinx.coroutines.experimental.CoroutineStart +import kotlinx.coroutines.experimental.Unconfined import kotlinx.coroutines.experimental.channels.ProducerScope +import kotlinx.coroutines.experimental.launch import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.SchemaUtils.create import org.jetbrains.exposed.sql.transactions.transaction @@ -35,6 +39,12 @@ class ExposedBacking(private val dataSourceFactory: suspend () -> DataSource) : private fun <T> transaction(statement: Transaction.() -> T) = transaction(database!!, statement) + private suspend fun transactionLaunch(statement: suspend Transaction.() -> Unit): Unit = transaction(database!!) { + launch(context = Unconfined, start = CoroutineStart.UNDISPATCHED) { + statement(this@transaction) + } + } + override suspend fun init() { if (isShutdown) throw IllegalStateException() dataSource = dataSourceFactory() @@ -61,7 +71,7 @@ class ExposedBacking(private val dataSourceFactory: suspend () -> DataSource) : channel.close() } - override suspend fun ProducerScope<Pair<SerializableParcel, ParcelData?>>.produceAllParcelData() { + override suspend fun ProducerScope<Pair<SerializableParcel, ParcelData?>>.produceAllParcelData() = transactionLaunch { ParcelsT.selectAll().forEach { row -> val parcel = ParcelsT.getSerializable(row) ?: return@forEach val data = rowToParcelData(row) @@ -150,13 +160,13 @@ class ExposedBacking(private val dataSourceFactory: suspend () -> DataSource) : } } - override suspend fun ProducerScope<Pair<ParcelOwner, MutableMap<UUID, AddedStatus>>>.produceAllGlobalAddedData() { + override suspend fun ProducerScope<Pair<ParcelOwner, MutableMap<UUID, AddedStatus>>>.produceAllGlobalAddedData() = transactionLaunch { AddedGlobalT.sendAllAddedData(channel) channel.close() } - override suspend fun readGlobalAddedData(owner: ParcelOwner): MutableMap<UUID, AddedStatus> { - return AddedGlobalT.readAddedData(OwnersT.getId(owner) ?: return hashMapOf()) + override suspend fun readGlobalAddedData(owner: ParcelOwner): MutableMap<UUID, AddedStatus> = transaction { + return@transaction AddedGlobalT.readAddedData(OwnersT.getId(owner) ?: return@transaction hashMapOf()) } override suspend fun setGlobalPlayerStatus(owner: ParcelOwner, player: UUID, status: AddedStatus) = transaction { diff --git a/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt index 816ff97..e20e11b 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt @@ -1,4 +1,4 @@ -package io.dico.parcels2.storage +package io.dico.parcels2.storage.exposed import org.jetbrains.exposed.sql.Column import org.jetbrains.exposed.sql.Index diff --git a/src/main/kotlin/io/dico/parcels2/storage/exposed/IdTables.kt b/src/main/kotlin/io/dico/parcels2/storage/exposed/IdTables.kt index e19fd3f..60e9bc0 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/exposed/IdTables.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/exposed/IdTables.kt @@ -7,7 +7,6 @@ import io.dico.parcels2.ParcelOwner import io.dico.parcels2.ParcelWorld import io.dico.parcels2.storage.SerializableParcel import io.dico.parcels2.storage.SerializableWorld -import io.dico.parcels2.storage.uniqueIndexR import io.dico.parcels2.util.Vec2i import io.dico.parcels2.util.toByteArray import io.dico.parcels2.util.toUUID @@ -42,7 +41,7 @@ sealed class IdTransactionsTable<TableT : IdTransactionsTable<TableT, QueryObj, object WorldsT : IdTransactionsTable<WorldsT, ParcelWorld, SerializableWorld>("parcel_worlds", "world_id") { val name = varchar("name", 50) - val uid = binary("uid", 2) + val uid = binary("uid", 16) val index_uid = uniqueIndexR("index_uid", uid) internal inline fun getId(binaryUid: ByteArray): Int? = getId { uid eq binaryUid } @@ -90,7 +89,7 @@ object ParcelsT : IdTransactionsTable<ParcelsT, Parcel, SerializableParcel>("par } object OwnersT : IdTransactionsTable<OwnersT, ParcelOwner, ParcelOwner>("parcel_owners", "owner_id") { - val uuid = binary("uuid", 2).nullable() + val uuid = binary("uuid", 16).nullable() val name = varchar("name", 32) val index_pair = uniqueIndexR("index_pair", uuid, name) diff --git a/src/main/kotlin/io/dico/parcels2/storage/exposed/ListTables.kt b/src/main/kotlin/io/dico/parcels2/storage/exposed/ListTables.kt index ca2943d..3e1438a 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/exposed/ListTables.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/exposed/ListTables.kt @@ -6,8 +6,6 @@ import io.dico.parcels2.AddedStatus import io.dico.parcels2.Parcel import io.dico.parcels2.ParcelOwner import io.dico.parcels2.storage.SerializableParcel -import io.dico.parcels2.storage.uniqueIndexR -import io.dico.parcels2.storage.upsert import io.dico.parcels2.util.toByteArray import io.dico.parcels2.util.toUUID import kotlinx.coroutines.experimental.channels.SendChannel @@ -55,6 +53,7 @@ sealed class AddedTable<AttachT, SerializableT>(name: String, val idTable: IdTra } suspend fun sendAllAddedData(channel: AddedStatusSendChannel<SerializableT>) { + /* val iterator = selectAll().orderBy(attach_id).iterator() if (iterator.hasNext()) { @@ -96,7 +95,7 @@ sealed class AddedTable<AttachT, SerializableT>(name: String, val idTable: IdTra } sendIfPresent() - } + }*/ } private inline fun Boolean?.asAddedStatus() = if (this == null) AddedStatus.DEFAULT else if (this) AddedStatus.ALLOWED else AddedStatus.BANNED |