Skip to content

1by/prismarine-chunk

 
 

Repository files navigation

prismarine-chunk

NPM version Build Status Discord Gitter Irc Greenkeeper badge Try it on gitpod

A class to hold chunk data for Minecraft: PC 1.8, 1.9, 1.10, 1.11 and 1.12, Pocket Edition 0.14 and 1.0

1.13 and 1.14 support are not available, if you're interested to contribute on that, read PrismarineJS#57

Usage

const Chunk = require('prismarine-chunk')("1.8")
const Vec3 = require("vec3")

const chunk=new Chunk()

for (let x = 0; x < 16;x++) {
  for (let z = 0; z < 16; z++) {
    chunk.setBlockType(new Vec3(x, 50, z), 2)
    for (let y = 0; y < 256; y++) {
      chunk.setSkyLight(new Vec3(x, y, z), 15)
    }
  }
}

console.log(JSON.stringify(chunk.getBlock(new Vec3(3,50,3)),null,2))

Test data

Test data can be generated with minecraftChunkDumper.

Install it globally with npm install minecraft-chunk-dumper -g then run :

minecraftChunkDumper saveChunk 1.8.8 1.8/chunk.dump 1.8/chunk.meta

Benchmarking

Benchmarks may be run by using:

# run benchmarks once
npm run benchmark

# run benchmarks continuously, reloading changes as they are made
npm run benchmark -- --watch

The output of the benchmarking will be placed in the file benchmarks/results/chunk-1.9.csv

API

Chunk

Chunk()

Build a new chunk

Chunk.initialize(iniFunc)

Initialize a chunk.

  • iniFunc is a function(x,y,z) returning a prismarine-block.

That function is faster than iterating and calling the setBlock* manually. It is useful to generate a whole chunk and load a whole chunk.

Chunk.getBlock(pos)

Get the Block at pos

Chunk.setBlock(pos,block)

Set the Block at pos

Chunk.getBlockType(pos)

Get the block type at pos

Chunk.getBlockStateId(pos)

Get the block state id at pos

Chunk.getBlockData(pos)

Get the block data (metadata) at pos

Chunk.getBlockLight(pos)

Get the block light at pos

Chunk.getSkyLight(pos)

Get the block sky light at pos

Chunk.getBiome(pos)

Get the block biome id at pos

Chunk.getBiomeColor(pos)

Get the block biome color at pos. Does nothing for PC.

Chunk.setBlockStateId(pos, stateId)

Set the block type stateId at pos

Chunk.setBlockType(pos, id)

Set the block type id at pos

Chunk.setBlockData(pos, data)

Set the block data (metadata) at pos

Chunk.setBlockLight(pos, light)

Set the block light at pos

Chunk.setSkyLight(pos, light)

Set the block sky light at pos

Chunk.setBiome(pos, biome)

Set the block biome id at pos

Chunk.setBiomeColor(pos, biomeColor)

Set the block biomeColor at pos. Does nothing for PC.

Chunk.dump(bitmap=0xFFFF)

Returns the chunk raw data

Chunk.load(data,bitmap=0xFFFF,skyLightSent = true)

Load raw data into the chunk

About

A class to hold chunk data for Minecraft

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%