# prismarine-block

> Represent a minecraft block with its associated data

Latest version **1.23.0** (published 2026-03-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install prismarine-block
pnpm add prismarine-block
yarn add prismarine-block
bun add prismarine-block
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.23.0 |
| Published | 2026-03-30 |
| First published | 2015-08-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 60.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 30 |
| Author | Romain Beaumont |
| Maintainers | rom1504 |
| Keywords | prismarine, minecraft, block, js |

## Links

- npm: https://www.npmjs.com/package/prismarine-block
- Repository: https://github.com/PrismarineJS/prismarine-block
- Homepage: https://github.com/PrismarineJS/prismarine-block#readme
- Issues: https://github.com/PrismarineJS/prismarine-block/issues
- npm.io page: https://npm.io/package/prismarine-block

## Dependencies (6)

- [minecraft-data](https://npm.io/package/minecraft-data.md) ^3.38.0
- [prismarine-nbt](https://npm.io/package/prismarine-nbt.md) ^2.0.0
- [prismarine-chat](https://npm.io/package/prismarine-chat.md) ^1.5.0
- [prismarine-item](https://npm.io/package/prismarine-item.md) ^1.10.1
- [prismarine-biome](https://npm.io/package/prismarine-biome.md) ^1.1.0
- [prismarine-registry](https://npm.io/package/prismarine-registry.md) ^1.1.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.23.0 (latest) — 2026-03-30
- 1.22.0 — 2025-08-02
- 1.21.0 — 2025-01-24
- 1.20.0 — 2025-01-04
- 1.19.0 — 2024-10-26
- 1.18.0 — 2024-10-26
- 1.17.1 — 2023-08-18
- 1.17.0 — 2023-06-28
- 1.16.3 — 2022-04-16
- 1.15.0 — 2022-03-11
- 1.14.1 — 2022-02-16
- 1.14.0 — 2022-02-16
- 1.13.1 — 2022-02-04
- 1.13.0 — 2022-02-04
- 1.12.0 — 2022-01-21
- … 22 more at https://npm.io/package/prismarine-block/versions

## README

# prismarine-block
[![NPM version](https://img.shields.io/npm/v/prismarine-block.svg)](http://npmjs.com/package/prismarine-block)
[![Build Status](https://github.com/PrismarineJS/prismarine-block/workflows/CI/badge.svg)](https://github.com/PrismarineJS/prismarine-block/actions?query=workflow%3A%22CI%22)

Represent a minecraft block with its associated data

## Usage

```js
const registry = require('prismarine-registry')('1.8')
const Block = require('prismarine-block')(registry)

const stoneBlock = new Block(registry.blocksByName.stone, registry.biomesByName.plains, /* meta */ 0)

console.log(stoneBlock)

// can you harvest stone with an iron pickaxe?
console.log(stoneBlock.canHarvest(257))

// how many milliseconds does it takes in usual conditions? (on ground, not in water and not in creative mode)
console.log(stoneBlock.digTime(257))

```

## API

See [doc/API.md](doc/API.md)

## History

### 1.23.0
* [Update CI to Node 24 (#121)](https://github.com/PrismarineJS/prismarine-block/commit/52aef3071c85f289c05e9c94efe1bfef2ec73563) (thanks @rom1504)
* [Fix publish condition for npm-publish v4 (#120)](https://github.com/PrismarineJS/prismarine-block/commit/c6ba1377c8ea72a75a5b0d2862ce03a05485a82b) (thanks @rom1504)
* [Switch to trusted publishing via OIDC (#119)](https://github.com/PrismarineJS/prismarine-block/commit/36a926f8c29311eb28266377b65a12d1efa04528) (thanks @rom1504)
* [Change boundingBox to an enum (#117)](https://github.com/PrismarineJS/prismarine-block/commit/4ef6c9ee6f19970ae4390de02314358597686cd8) (thanks @linkle69)

### 1.22.0
* [Update sign blockEntity for 1.21.5 (#115)](https://github.com/PrismarineJS/prismarine-block/commit/a660e4a45c3afdd932d9b9311a93567c49e9c80e) (thanks @extremeheat)
* [Bump expect from 29.7.0 to 30.0.5 (#114)](https://github.com/PrismarineJS/prismarine-block/commit/8e1eec194befe4a3d8c26a4a15d866f3fe9031eb) (thanks @dependabot[bot])
* [node 22 (#108)](https://github.com/PrismarineJS/prismarine-block/commit/f2177e04d14165531521aabafd7dcef43eaa5a2c) (thanks @rom1504)
* [Issue/102 (#103)](https://github.com/PrismarineJS/prismarine-block/commit/cd294605cbba4cc24559f7ee2fb0f5b60ab4fdd0) (thanks @tabbry)

### 1.21.0
* [Add isWaterlogged to API (#105)](https://github.com/PrismarineJS/prismarine-block/commit/bf84ca682255db995dfaba23e03209cc5af3ead6) (thanks @extremeheat)

### 1.20.0
* [Bump mocha from 10.8.2 to 11.0.1 (#104)](https://github.com/PrismarineJS/prismarine-block/commit/21e8ea2128df9bb90b59aa58fa491d6dd6031a3f) (thanks @dependabot[bot])
* [Add support for Bedrock edition block hashes (#97)](https://github.com/PrismarineJS/prismarine-block/commit/bc8a7af40438d6d6c715fc8d1e1da8a087c588ad) (thanks @FreezeEngine)

### 1.19.0
* [Update npm-publish.yml](https://github.com/PrismarineJS/prismarine-block/commit/faed7f0390d3f4fd0b15e24193463ed111dbc69a) (thanks @rom1504)

### 1.18.0
* [Fix false value handling in fromProperties for post flatenning versions (#98)](https://github.com/PrismarineJS/prismarine-block/commit/1514a1dcd12984016a5fd360009dd3811ae54f66) (thanks @zardoy)
* [fix version used in block entity (#99)](https://github.com/PrismarineJS/prismarine-block/commit/05aed2ecee7f427b332b0682618368e61c45e1eb) (thanks @rom1504)
* [Allow two variations of syntax in fromString (#96)](https://github.com/PrismarineJS/prismarine-block/commit/52fda556ca39d5d3848ddea297c1409b615301d8) (thanks @Flonja)

### 1.17.1
* [Export Block class declaration (#91)](https://github.com/PrismarineJS/prismarine-block/commit/06ef318525aa92b57b400e0ee899231a4a737bec) (thanks @IceTank)
* [Bump standard from 16.0.4 to 17.1.0 (#83)](https://github.com/PrismarineJS/prismarine-block/commit/00cb8a9a6b810f1bcf7a6482b9a25554d7c39a70) (thanks @dependabot[bot])
* [use nmd supportFeature (#60)](https://github.com/PrismarineJS/prismarine-block/commit/83a74fc3877197a6383665f7e121081e54f36e86) (thanks @u9g)
* [Add command gh workflow allowing to use release command in comments (#90)](https://github.com/PrismarineJS/prismarine-block/commit/e9955a02d44570111ad0f72c52e61c3b1f5be72f) (thanks @rom1504)

### 1.17.0

* Support for multi-sided signs (thanks @PondWader)

### 1.16.3

* really

### 1.16.2

* correct

### 1.16.1

* fix mcdata dep

### 1.15.0

* Effect names were normalized
* Metadata to 0 by default

### 1.14.1

* Legacy version fixes

### 1.14.0

* Add .stateId, .fromProperties, .getProps for all versions

### 1.13.1

* Change blockEntity version handling

### 1.13.0

* Add sign block entity implementation

### 1.12.0

* Updated to support `prismarine-registry`. To use, instead of passing a string to prismarine-biome's default function export, pass an instance of `prismarine-registry`.
* block entity support

### 1.11.0

* support bedrock

### 1.10.3

* use normalized enchant rather than custom format (@u9g #41)

### 1.10.2

* remove debug code

### 1.10.1

* Fix ternary operator for bedrock name check

### 1.10.0

* 1.17.0 support (thanks @Archengius and @the9g)

### 1.9.0

* added `block.getProperties()` type definitions.
* added instant breaking support
* added `Block.fromProperties()` constructor.

### 1.8.0

* Efficiency fix on versions below 1.13

### 1.7.3

* Fix effectLevel not working in digTime. (@Naomi-alt)

### 1.7.2

* add testing for shapes, make it more robust to missing data

### 1.7.1

* fix canHarvest when no harvestTools required (thanks @Garfield100)

### 1.7.0

* Add getProperties (thanks @Karang)

### 1.6.0

* Add enchantments and effects to dig time computation (thanks @Karang)

### 1.5.1

* Make Block.fromStateId work for all versions

### 1.5.0

* Fix block metadata for 1.13+

### 1.4.0

* add block shapes (thanks @Karang)

### 1.3.0

* add typescript definitions (thanks @IdanHo)

### 1.2.0

* Prevent data from being shared to avoid conflicts across multiple versions (thanks @hornta)

### 1.1.1

* use the minStateId if passing the blockType

### 1.1.0

* add block state id feature (for >= 1.13)

### 1.0.1

* bump mcdata

### 1.0.0

* bump dependencies

### 0.1.0

* Import from mineflayer

---
_Source: https://npm.io/package/prismarine-block · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
