//simple set command by LloydPL aka. llazuli_ //commands: //!set selection - switches selection mode (currently works on every item), prefered using any type of sword to select //!set - sets blocks between selected points to certain block //!set gettype - sends type of block under you command("!set block") { val sender = this.sender val type = text("block").replace("_", " ") if(sender is Player){ val loc = sender.location if(type == "selection"){ if(!selectionEnabled.contains(sender.name)){ sender.message("Selection mode enabled!") selectionEnabled.add(sender.name) } else{ sender.message("Selection mode disabled!") selectionEnabled.remove(sender.name) } } else if(type == "gettype"){ val blockType = loc.world.blockAt((loc.x - 1).toLong(), (loc.y - 1).toLong(), loc.z.toLong()).type sender.message("Type of block under you is ${blockType}") } else{ val l1 = leftSelection.get(sender.name) val l2 = rightSelection.get(sender.name) if(l1 == null){ sender.message("First selection not set!") } else if(l2 == null){ sender.message("Second selection not set!") } else{ val xDiff = abs(l1.x - l2.x) + 1 val yDiff = abs(l1.y - l2.y) + 1 val zDiff = abs(l1.z - l2.z) + 1 try{ for(x in 1..xDiff.toInt()){ for(y in 1..yDiff.toInt()){ for(z in 1..zDiff.toInt()){ val cX = getSmaller(l1.x, l2.x) + x - 1 val cY = getSmaller(l1.y, l2.y) + y - 1 val cZ = getSmaller(l1.z, l2.z) + z - 1 loc.world.blockAt(cX.toLong(), cY.toLong(), cZ.toLong()).type = type } } } sender.message("Blocks from (${l1.x}, ${l1.y}, ${l1.z}) to (${l2.x}, ${l2.y}, ${l2.z}) have been set to ${type}!") } catch(x: Exception){ sender.message("${type} is not a placeable block!") } } } } else{ sender.message("You have to be player to use this command!") } } fun abs(db: Double): Double { if(db < 0){ return (db * (-1)) } return db } fun getSmaller(dba: Double, dbb: Double): Double { if(dba > dbb){ return dbb } return dba } val doubleClickFix: MutableList = mutableListOf() val leftSelection: HashMap = hashMapOf() val rightSelection: HashMap = hashMapOf() val selectionEnabled: MutableList = mutableListOf() onBlockClick { val p = player if(selectionEnabled.contains(p.name)){ val loc = block.location if(this.right){ if(doubleClickFix.contains(p.name)){ doubleClickFix.add(p.name) } else{ doubleClickFix.remove(p.name) leftSelection.remove(p.name) leftSelection.put(p.name, loc) player.message("Second selection (${loc.x}, ${loc.y}, ${loc.z})") } } else{ rightSelection.remove(p.name) rightSelection.put(p.name, loc) player.message("First selection (${loc.x}, ${loc.y}, ${loc.z})") } } }