diff options
author | Dico <dico.karssiens@gmail.com> | 2018-09-26 12:38:55 +0100 |
---|---|---|
committer | Dico <dico.karssiens@gmail.com> | 2018-09-26 12:38:55 +0100 |
commit | ed3c85951a768a4f151d44a8b9c63f4a6175c756 (patch) | |
tree | 044284d95b179c4912810e4c64ff2d908d20e755 /src | |
parent | c6c1bbf6701eb407eb72bc6cd04af7c1dadc5d8e (diff) |
Tweaks
Diffstat (limited to 'src')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt b/src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt index 8ba2d93..5c38b06 100644 --- a/src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt +++ b/src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt @@ -1,9 +1,6 @@ package io.dico.parcels2.command -import io.dico.dicore.command.Command -import io.dico.dicore.command.CommandException -import io.dico.dicore.command.ExecutionContext -import io.dico.dicore.command.IContextFilter +import io.dico.dicore.command.* import io.dico.dicore.command.parameter.type.ParameterTypes import io.dico.parcels2.Interactables import io.dico.parcels2.ParcelProvider @@ -14,17 +11,38 @@ import org.bukkit.entity.Player class ParcelOptionsInteractCommand(val parcelProvider: ParcelProvider) : Command() { init { + setShortDescription("View and/or change the setting") + setDescription(shortDescription) addContextFilter(IContextFilter.PLAYER_ONLY) addContextFilter(IContextFilter.INHERIT_PERMISSIONS) - addParameter("allowed", "allowed", ParameterTypes.BOOLEAN) + addParameter("allowed", "new setting", ParameterTypes.BOOLEAN) + requiredParameters(0) } override fun execute(sender: CommandSender, context: ExecutionContext): String? { - val parcel = parcelProvider.getParcelRequired(sender as Player, Privilege.CAN_MANAGE) - val interactableClassName = context.address.mainKey - val allowed: Boolean = context.get("allowed") - val change = parcel.interactableConfig.setInteractable(Interactables[interactableClassName], allowed) + val interactableClass = Interactables[context.address.mainKey] + val allowed: Boolean? = context.get("allowed") + val parcel = parcelProvider.getParcelRequired(sender as Player, + if (allowed == null) Privilege.DEFAULT else Privilege.CAN_MANAGE) + + if (allowed == null) { + val setting = parcel.interactableConfig.isInteractable(interactableClass) + val default = setting == interactableClass.interactableByDefault + + val canColor = context.address.chatController.getChatFormatForType(EMessageType.BAD_NEWS) + val cannotColor = context.address.chatController.getChatFormatForType(EMessageType.GOOD_NEWS) + val resetColor = context.address.chatController.getChatFormatForType(EMessageType.RESULT) + + val settingString = (if (setting) "${canColor}can" else "${cannotColor}cannot") + resetColor + val defaultString = if (default) " (default)" else "" + + return "Players $settingString interact with ${interactableClass.name} on this parcel$defaultString" + } + + val change = parcel.interactableConfig.setInteractable(interactableClass, allowed) + + val interactableClassName = interactableClass.name return when { allowed && change -> "Other players can now interact with $interactableClassName" allowed && !change -> err("Other players could already interact with $interactableClassName") |