Tweaks
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user