diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt b/src/main/kotlin/io/dico/parcels2/command/AbstractParcelCommands.kt index 2cee99a..2fceb5b 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 @@ -16,10 +16,10 @@ abstract class AbstractParcelCommands(val plugin: ParcelsPlugin) : ICommandRecei override fun getPlugin(): Plugin = plugin override fun getReceiver(context: ExecutionContext, target: Method, cmdName: String): ICommandReceiver { - return getParcelCommandReceiver(plugin.worlds, context, target, cmdName) + return getParcelCommandReceiver(plugin.parcelProvider, context, target, cmdName) } - protected inline val worlds get() = plugin.worlds + protected inline val worlds get() = plugin.parcelProvider protected fun error(message: String): Nothing { throw CommandException(message) @@ -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.worldId.equals(world.id) }.size val limit = player.parcelLimit if (numOwnedParcels >= limit) { |