summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDico <dico.karssiens@gmail.com>2018-09-26 12:38:55 +0100
committerDico <dico.karssiens@gmail.com>2018-09-26 12:38:55 +0100
commited3c85951a768a4f151d44a8b9c63f4a6175c756 (patch)
tree044284d95b179c4912810e4c64ff2d908d20e755 /src
parentc6c1bbf6701eb407eb72bc6cd04af7c1dadc5d8e (diff)
Tweaks
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/io/dico/parcels2/command/ParcelOptionsInteractCommand.kt36
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")