tests/testthat/test_blocks.R

dbpath <- rbedrock_example_world("example1.mcworld")
db <- bedrockdb(dbpath)

test_that("SubChunkBlocks is chunk tag 47.", {
    expect_equal(chunk_tag_int("SubChunkBlocks"), 47L)
    expect_equal(chunk_tag_str(47L), "SubChunkBlocks")
})

test_that("write_subchunk_layers_value() encodes subchunk data.", {
    raw1_orig <- get_value(db, "chunk:31:2:0:47:0")
    layer1 <- read_subchunk_layers_value(raw1_orig)
    raw1_test <- write_subchunk_layers_value(layer1, version = 8L)

    expect_equal(raw1_test, raw1_orig)
})

test_that(".block_nbt() and .block_string() are inverses.", {
    dat <- get_subchunk_layers_value(db, "chunk:31:2:0:47:4")
    pal_orig <- dat[[1]]$palette
    text <- purrr::map_chr(pal_orig, .block_string)
    pal_test <- purrr::map(text, .block_nbt)

    expect_equal(pal_orig, pal_test)
})

test_that("put_subchunk_blocks_value() writes subchunk data.", {
    val <- array("minecraft:air", c(16, 16, 16))
    val[, 1, ] <- "minecraft:bedrock@infiniburn_bit=false"
    val[, 2, ] <- "minecraft:stone@stone_type=stone"
    val[, 3, ] <- "minecraft:iron_ore"
    val[, 4, ] <- "minecraft:snow_layer@height=5@covered_bit=true"
    attr(val, "offset") <- 0L

    put_subchunk_blocks_value(db, 0, 0, 0, 0, val, version = 8L)
    dat <- get_subchunk_blocks_value(db, 0, 0, 0, 0)
    expect_equal(dat, val)

    put_subchunk_blocks_value(db, 0, 0, 0, 0, val)
    dat <- get_subchunk_blocks_value(db, 0, 0, 0, 0)
    expect_equal(dat, val)
})

test_that("put_subchunk_blocks_values() writes subchunk data.", {
    val <- array("minecraft:air", c(16, 16, 16))
    val[, 1, ] <- "minecraft:bedrock@infiniburn_bit=false"
    val[, 2, ] <- "minecraft:stone@stone_type=granite"
    val[, 3, ] <- "minecraft:iron_ore"
    val[, 4, ] <- "minecraft:snow_layer@height=5@covered_bit=true"
    attr(val, "offset") <- NA_integer_

    put_subchunk_blocks_values(db, 0, 0, 0, 1:4, list(val), version = 8L)
    dat <- get_subchunk_blocks_data(db, 0, 0, 0, 1:4)

    val <- rlang::set_names(
        rep(list(val), 4),
        stringr::str_glue("chunk:0:0:0:47:{1:4}")
    )
    for (i in seq_along(val)) {
        attr(val[[i]], "offset") <- i
    }

    expect_equal(dat, val)
})

test_that("put_subchunk_blocks_data() writes subchunk data.", {
    val <- array("minecraft:air", c(16, 16, 16))
    val[, 1, ] <- "minecraft:bedrock@infiniburn_bit=false"
    val[, 2, ] <- "minecraft:stone@stone_type=andesite"
    val[, 3, ] <- "minecraft:iron_ore"
    val[, 4, ] <- "minecraft:snow_layer@height=5@covered_bit=true"
    attr(val, "offset") <- NA_integer_

    val <- rlang::set_names(
        rep(list(val), 4),
        stringr::str_glue("chunk:1:1:0:47:{1:4}")
    )
    for (i in seq_along(val)) {
        attr(val[[i]], "offset") <- i
    }

    put_subchunk_blocks_data(db, val, version = 8L)
    dat <- get_subchunk_blocks_data(db, names(val))

    expect_equal(dat, val)

    names(val) <- stringr::str_glue("chunk:1:2:0:47:{-4:-1}")
    for (i in seq_along(val)) {
        attr(val[[i]], "offset") <- i - 5
    }
    put_subchunk_blocks_data(db, val)
    dat <- get_subchunk_blocks_data(db, names(val))

    expect_equal(dat, val)
})

test_that("put_chunk_blocks_value() writes chunk data.", {
    val <- array("minecraft:air", c(16, 32, 16))
    val[, 21, ] <- "minecraft:bedrock@infiniburn_bit=false"
    val[, 22, ] <- "minecraft:stone@stone_type=andesite"
    val[, 23, ] <- "minecraft:iron_ore"
    val[, 24, ] <- "minecraft:snow_layer@height=5@covered_bit=true"
    chunk_origin(val) <- c(10, 0, 12) * 16L

    put_chunk_blocks_value(db, "chunk:10:12:0:47", value = val, version = 8L)
    dat <- get_chunk_blocks_value(db, "chunk:10:12:0:47")

    expect_equal(dat, val)

    dat <- get_keys(db, starts_with = "chunk:10:12:0:47")
    expect_equal(dat, "chunk:10:12:0:47:1")

    chunk_origin(val) <- c(10, 0, 13) * 16L
    put_chunk_blocks_value(db, "chunk:10:13:0:47", value = val)
    dat <- get_chunk_blocks_value(db, "chunk:10:13:0:47")

    expect_equal(dat, val)

    dat <- get_keys(db, starts_with = "chunk:10:13:0:47")
    expect_equal(dat, "chunk:10:13:0:47:1")
})

test_that("put_chunk_blocks_value() overwrites chunk data.", {
    dat <- get_chunk_blocks_value(db, 31, 4, 0)
    val <- dat[, 1:32 + 5, ]
    chunk_origin(val) <- c(31, 0, 4) * 16L

    put_chunk_blocks_value(db, 31, 4, 0, val, version = 8L)

    dat <- get_chunk_blocks_value(db, 31, 4, 0)

    expect_equal(dat, val)

    dat <- get_keys(db, starts_with = "chunk:31:4:0:47")
    expect_equal(dat, c("chunk:31:4:0:47:0", "chunk:31:4:0:47:1"))
})

test_that("put_chunk_blocks_values() writes chunk data.", {
    val <- array("minecraft:air", c(16, 32, 16))
    val[, 21, ] <- "minecraft:bedrock@infiniburn_bit=false"
    val[, 22, ] <- "minecraft:stone@stone_type=andesite"
    val[, 23, ] <- "minecraft:iron_ore"
    val[, 24, ] <- "minecraft:snow_layer@height=5@covered_bit=true"
    chunk_origin(val) <- c(11, 0, 12) * 16L

    put_chunk_blocks_values(db, 11:12, 12, 0, value = list(val), version = 8L)
    dat <- get_chunk_blocks_values(db, 11:12, 12, 0)

    expect_equal(dat[[1]], val)

    chunk_origin(val) <- c(12, 0, 12) * 16L
    expect_equal(dat[[2]], val)

    dat <- get_keys(db, starts_with = "chunk:11:12:0:47")
    expect_equal(dat, "chunk:11:12:0:47:1")
    dat <- get_keys(db, starts_with = "chunk:12:12:0:47")
    expect_equal(dat, "chunk:12:12:0:47:1")
})

test_that("put_chunk_blocks_data() writes chunk data.", {
    val <- list()
    val[["chunk:13:12:0:47"]] <- array("minecraft:air", c(16, 32, 16))
    val[["chunk:14:12:0:47"]] <- array("minecraft:air", c(16, 32, 16))
    chunk_origin(val[[1]]) <- c(13, 0, 12) * 16L
    chunk_origin(val[[2]]) <- c(14, 0, 12) * 16L

    val[["chunk:13:12:0:47"]][, 21, ] <-
        "minecraft:bedrock@infiniburn_bit=false"
    val[["chunk:14:12:0:47"]][, 1, ] <-
        "minecraft:bedrock@infiniburn_bit=false"

    put_chunk_blocks_data(db, val, version = 8L)

    val[["chunk:14:12:0:47"]] <- val[["chunk:14:12:0:47"]][, 1:16, ]
    chunk_origin(val[[2]]) <- c(14, 0, 12) * 16L

    dat <- get_chunk_blocks_values(db, c(
        "chunk:13:12:0:47",
        "chunk:14:12:0:47"
    ))

    expect_equal(dat, val)

    dat <- get_keys(db, starts_with = "chunk:13:12:0:47")
    expect_equal(dat, "chunk:13:12:0:47:1")
    dat <- get_keys(db, starts_with = "chunk:14:12:0:47")
    expect_equal(dat, "chunk:14:12:0:47:0")
})

test_that("read_subchunk_layers_value() decodes subchunk data", {
    dat <- c(
        9, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 51, 51, 65, 2, 0, 19, 17, 17, 51, 51, 68, 51, 51, 19, 17,
        17, 102, 51, 68, 52, 51, 17, 17, 17, 19, 17, 68, 68, 17, 17, 17, 17,
        17, 17, 65, 20, 17, 17, 17, 49, 17, 17, 72, 52, 51, 17, 17, 51, 17, 17,
        136, 51, 51, 17, 17, 51, 17, 51, 51, 51, 51, 17, 17, 51, 49, 51, 51,
        51, 51, 17, 17, 51, 49, 51, 51, 53, 68, 20, 17, 51, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 51, 51, 68, 52, 48, 17, 17, 17, 102, 51, 68, 68, 19, 17, 17, 17,
        19, 51, 68, 68, 17, 17, 17, 17, 19, 129, 68, 68, 17, 17, 17, 17, 17,
        129, 68, 68, 19, 17, 17, 51, 17, 129, 68, 68, 51, 17, 49, 51, 17, 49,
        67, 52, 51, 17, 49, 51, 49, 51, 51, 51, 51, 17, 49, 51, 49, 51, 51, 51,
        67, 17, 17, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 102,
        51, 68, 68, 16, 17, 17, 17, 51, 51, 68, 68, 17, 17, 17, 17, 19, 67, 68,
        68, 17, 17, 17, 17, 17, 65, 68, 68, 17, 17, 49, 51, 17, 129, 68, 68,
        51, 17, 49, 51, 17, 51, 68, 68, 51, 17, 51, 51, 68, 51, 115, 52, 51,
        17, 49, 51, 68, 51, 51, 51, 51, 17, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 0, 0, 0, 0, 51, 67, 68, 4, 0, 0, 16,
        49, 51, 68, 68, 68, 19, 17, 17, 49, 68, 65, 68, 68, 19, 17, 49, 51, 68,
        65, 68, 68, 19, 17, 51, 51, 68, 53, 68, 68, 51, 17, 51, 51, 68, 52, 67,
        52, 51, 17, 51, 51, 68, 51, 51, 51, 51, 17, 49, 51, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 51, 3, 0, 0, 0,
        0, 0, 0, 68, 68, 68, 0, 0, 0, 0, 0, 68, 68, 68, 52, 51, 17, 17, 17, 68,
        68, 68, 20, 17, 17, 49, 51, 68, 84, 69, 52, 19, 17, 51, 51, 68, 52, 83,
        51, 51, 17, 51, 51, 68, 51, 51, 51, 51, 17, 51, 51, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0,
        0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 68, 68, 68, 0, 0, 0, 0, 0, 68, 68,
        68, 49, 17, 17, 49, 51, 68, 84, 85, 17, 17, 17, 49, 51, 68, 53, 83, 51,
        19, 17, 51, 51, 19, 53, 51, 51, 51, 17, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
        153, 0, 0, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 68, 68, 20, 0, 0,
        0, 0, 0, 68, 84, 21, 51, 0, 0, 0, 0, 68, 85, 53, 51, 51, 17, 51, 51,
        131, 88, 53, 51, 51, 17, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
        0, 0, 0, 153, 9, 0, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 148,
        153, 9, 0, 0, 0, 0, 0, 51, 24, 17, 3, 0, 0, 0, 0, 131, 24, 49, 51, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0,
        0, 0, 0, 0, 153, 9, 0, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 51,
        153, 9, 0, 0, 0, 0, 0, 131, 24, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0,
        0, 0, 153, 9, 0, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 152, 153,
        9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
        0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
        153, 9, 0, 0, 0, 0, 0, 0, 153, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
        0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 153, 9, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0,
        0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 9,
        0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
        0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
        0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
        0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 13, 0, 109, 105, 110, 101, 99,
        114, 97, 102, 116, 58, 97, 105, 114, 10, 6, 0, 115, 116, 97, 116, 101,
        115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0,
        10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 15, 0, 109, 105, 110, 101, 99,
        114, 97, 102, 116, 58, 115, 116, 111, 110, 101, 10, 6, 0, 115, 116, 97,
        116, 101, 115, 8, 10, 0, 115, 116, 111, 110, 101, 95, 116, 121, 112,
        101, 5, 0, 115, 116, 111, 110, 101, 0, 3, 7, 0, 118, 101, 114, 115,
        105, 111, 110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101,
        22, 0, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 114, 101, 100,
        115, 116, 111, 110, 101, 95, 111, 114, 101, 10, 6, 0, 115, 116, 97,
        116, 101, 115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40,
        17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 16, 0, 109, 105, 110,
        101, 99, 114, 97, 102, 116, 58, 103, 114, 97, 118, 101, 108, 10, 6, 0,
        115, 116, 97, 116, 101, 115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111,
        110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 19, 0, 109,
        105, 110, 101, 99, 114, 97, 102, 116, 58, 100, 101, 101, 112, 115, 108,
        97, 116, 101, 10, 6, 0, 115, 116, 97, 116, 101, 115, 8, 11, 0, 112,
        105, 108, 108, 97, 114, 95, 97, 120, 105, 115, 1, 0, 121, 0, 3, 7, 0,
        118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0,
        110, 97, 109, 101, 15, 0, 109, 105, 110, 101, 99, 114, 97, 102, 116,
        58, 115, 116, 111, 110, 101, 10, 6, 0, 115, 116, 97, 116, 101, 115, 8,
        10, 0, 115, 116, 111, 110, 101, 95, 116, 121, 112, 101, 7, 0, 100, 105,
        111, 114, 105, 116, 101, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110,
        8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 20, 0, 109, 105,
        110, 101, 99, 114, 97, 102, 116, 58, 99, 111, 112, 112, 101, 114, 95,
        111, 114, 101, 10, 6, 0, 115, 116, 97, 116, 101, 115, 0, 3, 7, 0, 118,
        101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110,
        97, 109, 101, 32, 0, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58,
        100, 101, 101, 112, 115, 108, 97, 116, 101, 95, 114, 101, 100, 115,
        116, 111, 110, 101, 95, 111, 114, 101, 10, 6, 0, 115, 116, 97, 116,
        101, 115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1,
        0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 14, 0, 109, 105, 110, 101, 99,
        114, 97, 102, 116, 58, 116, 117, 102, 102, 10, 6, 0, 115, 116, 97, 116,
        101, 115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1,
        0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 14, 0, 109, 105, 110, 101, 99,
        114, 97, 102, 116, 58, 99, 108, 97, 121, 10, 6, 0, 115, 116, 97, 116,
        101, 115, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1,
        0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 15, 0, 109, 105, 110, 101, 99,
        114, 97, 102, 116, 58, 119, 97, 116, 101, 114, 10, 6, 0, 115, 116, 97,
        116, 101, 115, 3, 12, 0, 108, 105, 113, 117, 105, 100, 95, 100, 101,
        112, 116, 104, 0, 0, 0, 0, 0, 3, 7, 0, 118, 101, 114, 115, 105, 111,
        110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109, 101, 30, 0, 109,
        105, 110, 101, 99, 114, 97, 102, 116, 58, 115, 109, 97, 108, 108, 95,
        100, 114, 105, 112, 108, 101, 97, 102, 95, 98, 108, 111, 99, 107, 10,
        6, 0, 115, 116, 97, 116, 101, 115, 3, 9, 0, 100, 105, 114, 101, 99,
        116, 105, 111, 110, 2, 0, 0, 0, 1, 15, 0, 117, 112, 112, 101, 114, 95,
        98, 108, 111, 99, 107, 95, 98, 105, 116, 0, 0, 3, 7, 0, 118, 101, 114,
        115, 105, 111, 110, 8, 40, 17, 1, 0, 10, 0, 0, 8, 4, 0, 110, 97, 109,
        101, 18, 0, 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 105, 114,
        111, 110, 95, 111, 114, 101, 10, 6, 0, 115, 116, 97, 116, 101, 115, 0,
        3, 7, 0, 118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0, 10, 0, 0,
        8, 4, 0, 110, 97, 109, 101, 23, 0, 109, 105, 110, 101, 99, 114, 97,
        102, 116, 58, 102, 108, 111, 119, 105, 110, 103, 95, 119, 97, 116, 101,
        114, 10, 6, 0, 115, 116, 97, 116, 101, 115, 3, 12, 0, 108, 105, 113,
        117, 105, 100, 95, 100, 101, 112, 116, 104, 0, 0, 0, 0, 0, 3, 7, 0,
        118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0, 0, 10, 0, 0, 8, 4,
        0, 110, 97, 109, 101, 13, 0, 109, 105, 110, 101, 99, 114, 97, 102, 116,
        58, 97, 105, 114, 10, 6, 0, 115, 116, 97, 116, 101, 115, 0, 3, 7, 0,
        118, 101, 114, 115, 105, 111, 110, 8, 40, 17, 1, 0
    )
    val <- read_subchunk_layers_value(as.raw(dat))
    expect_length(val, 2L)
    expect_length(val[[1]]$palette, 14L)
    expect_length(val[[2]]$palette, 1L)
})

test_that("get_subchunk_blocks_from_chunk returns all block data in a chunk", {
    keys <- get_keys(db)
    dat <- get_subchunk_blocks_from_chunk(db, 37, 6, 0)
    expect_equal(names(dat), grep("^chunk:37:6:0:47", keys, value = TRUE))
    for (elt in dat) {
        expect_type(elt, "character")
    }
})

test_that("get_subchunk_layers_from_chunk returns all block data in a chunk", {
    keys <- get_keys(db)
    dat <- get_subchunk_layers_from_chunk(db, 37, 6, 0)
    expect_equal(names(dat), grep("^chunk:37:6:0:47", keys, value = TRUE))
    for (elt in dat) {
        expect_type(elt, "list")
        for (layer in elt) {
            expect_named(layer, c("values", "palette"))
        }
    }
})

# clean up
close(db)
fs::dir_delete(dbpath)

Try the rbedrock package in your browser

Any scripts or data that you put into this service are public.

rbedrock documentation built on Oct. 7, 2023, 1:07 a.m.