Add a vclip command
parent
f64139b600
commit
b88928d58a
|
@ -5,6 +5,7 @@ import codes.som.hibiscus.api.command.CommandManager
|
||||||
|
|
||||||
fun allCommandClasses(): Array<() -> Command> = arrayOf(
|
fun allCommandClasses(): Array<() -> Command> = arrayOf(
|
||||||
::Reload,
|
::Reload,
|
||||||
|
::Vclip,
|
||||||
)
|
)
|
||||||
|
|
||||||
class CommandRegistry : CommandManager() {
|
class CommandRegistry : CommandManager() {
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package codes.som.hibiscus.commands
|
||||||
|
|
||||||
|
import codes.som.hibiscus.api.command.Command
|
||||||
|
import codes.som.hibiscus.player
|
||||||
|
import codes.som.hibiscus.world
|
||||||
|
|
||||||
|
class Vclip : Command("vclip") {
|
||||||
|
init {
|
||||||
|
branch { y: Double ->
|
||||||
|
player.updatePosition(player.x, player.y + y, player.z)
|
||||||
|
}
|
||||||
|
|
||||||
|
branch("up") {
|
||||||
|
val collisionTests = (2..10).map { n ->
|
||||||
|
world.getBlockCollisions(null, player.boundingBox.offset(0.0, n.toDouble(), 0.0)).all { it.isEmpty }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (collisionTests.all { it }) {
|
||||||
|
player.updatePosition(player.x, player.y + 10, player.z)
|
||||||
|
} else {
|
||||||
|
val n = collisionTests.indexOf(true)
|
||||||
|
if (n != -1)
|
||||||
|
player.updatePosition(player.x, player.y + n + 2, player.z)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
branch("down") {
|
||||||
|
val collisionTests = (2..10).map { n ->
|
||||||
|
world.getBlockCollisions(null, player.boundingBox.offset(0.0, -n.toDouble(), 0.0)).all { it.isEmpty }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (collisionTests.all { it }) {
|
||||||
|
player.updatePosition(player.x, player.y - 10, player.z)
|
||||||
|
} else {
|
||||||
|
val n = collisionTests.indexOf(true)
|
||||||
|
if (n != -1)
|
||||||
|
player.updatePosition(player.x, player.y - n - 2, player.z)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue