Understanding The Data -- Minecraft Mining
A Deep Dive into the Distribution of Blocks in Minecraft
- What is the Optimal Method to Mine in Minecraft
- Visualize Distributions
- What can we see from the Data
- What is the best method
What is the Optimal Method to Mine in Minecraft
To answer this question we must first collect data. To do this I created a minecraft mod that randomly teleports the player, samples a 500x50x500 (X,Y,Z) set of blocks around the player and logs those blocks into a csv. It repeats this a total of 10 times creating 10 samples of 500x50x500 blocks
The mod can be seen here: https://github.com/JPrier/MinecraftBlocksDistribution
With this we get 128 million blocks from a single seed, doing this on multiple seeds will explode the data size
import pandas as pd
import plotly.express as px
from IPython.display import HTML
# Adjust samples to be same distance from player
df["XFromPlayer"] = df["playerX"] - df["X"]
df["ZFromPlayer"] = df["playerZ"] - df["Z"]
# Get blocks that we care about
importantBlocks = ['coal_ore', 'gold_ore', 'iron_ore', 'diamond_ore', 'lapis_ore', 'redstone_ore', 'emerald_ore']
specialBlocks = ['diamond_ore', 'lapis_ore', 'redstone_ore', 'emerald_ore']
df_blocks = df.loc[df['Block'].isin(importantBlocks)]
df_special_blocks = df.loc[df['Block'].isin(specialBlocks)]
# Get blocks for only 1 sample
df_blocks_sample_0 = df_blocks.loc[df_blocks['sample'] == 0]
df_special_sample_0 = df_special_blocks.loc[df_special_blocks['sample'] == 0]
# Create distribution plots of block vs Y level
fig = px.histogram(df_blocks, x="Y", color="Block")
# HTML(fig.to_html(include_plotlyjs='cdn'))