ZoneGuard.kt

Branches > main > latest > files / src / main / kotlin / net / bowmap / handlers / ZoneGuard.kt

package net.bowmap.handlers

import net.bowmap.stormbow.*
import net.bowmap.stormbow.game.*
import net.bowmap.server.fact.*

// data class Region(val from: Location, val to: Location) {
//   init {
//     require(from.world == to.world) {
//       "Regions can only exist in a single world"
//     }
//   }
// }
//
// // TODO hmm...
// // Would prefer if I didn't have to just rely on this
// val spawn = Region(Location(5, spawnWorld.minHeight.toDouble(), -5.0), Location(spawnWorld, -5.0, spawnWorld.maxHeight - 1.0, 5.0))
//
// fun isInsideRegion(region: Region, location: Location): Boolean {
//     if (location.world != region.from.world) return false
//
//     val minX = minOf(region.from.blockX, region.to.blockX)
//     val maxX = maxOf(region.from.blockX, region.to.blockX)
//
//     val minY = minOf(region.from.blockY, region.to.blockY)
//     val maxY = maxOf(region.from.blockY, region.to.blockY)
//
//     val minZ = minOf(region.from.blockZ, region.to.blockZ)
//     val maxZ = maxOf(region.from.blockZ, region.to.blockZ)
//
//     return location.blockX in minX..maxX &&
//            location.blockY in minY..maxY &&
//            location.blockZ in minZ..maxZ
// }

fun isBlockInSpawn(b: Block): Boolean =
  // isInsideRegion(spawn, b.location)
  false

fun handleBlockBreak(f: PlayerBrokeBlock): Effects =
  if (isBlockInSpawn(f.block)) {
    Effects(Cancel())
  } else {
    Effects()
  }