PrismarineJS / PrismarineJS/minecraft-data

materials.json as a concept is outdated

Open
#412 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

high priority
Dominant language
JavaScript
Stars
938
Forks
294
Avg merge
2d 10h
Merged PRs (30d)
23

Description

Material information is used for computing mining speed based on other parameter, but there is one fundamental problem: recent Minecraft versions just do not use materials for anything except colors on the maps.
Instead, mining speed is handled either by the game's code (for swords and shears), or by tags (for all other tools)

Both of these handle blocks individually and independently of their materials, so it's practically impossible to judge mining speeds by block materials anymore. Even more, some blocks can be actually mined up to 3 different tools at once (for example, berry bushes are actually mineable by hoe, axe and sword, yet their material is just "plant").

My suggestion is to get rid of materials.json altogether for newer versions since it's pointless, and record mining speed multipliers directly in blocks.json as values for harvestTools object entries (since practically now information about block breaking speeds is shattered between 2 different files, and now it will be combined into one).
Additionally, boolean indicating whenever block requires tool or not should be added explicitly in this case, instead of relying on harvestTools being absent when block is harvestable by hand.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review materials.json and blocks.json to map how material data and harvestTools entries currently represent mining behavior across newer Minecraft versions. Check the issue's proposed model against the versioned data, then define completion as removing materials.json for those versions, recording mining speed multipliers in blocks.json, and explicitly representing whether a block requires a tool.

Written by the indexing model from the issue text.

Assessment

Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.