BitView

Minecraft Version License Release Build Status Python GitHub Pages

BitView is a fully functional two‑digit decimal display built inside Minecraft using pure redstone logic.
It demonstrates the practical application of Boolean algebra, Karnaugh maps, and logic minimization on a highly constrained hardware platform (redstone torches and dust).


📄 Abstract

BitView presents a two‑digit decimal display (00–99) implemented in Minecraft redstone as a case study in combinational logic design. Using truth tables, Karnaugh maps, and Boolean minimization, the circuit reduces gate count by approximately [TODO: % reduction] compared to an unoptimized baseline. The design uses only NOT and OR gates (the only primitives available in redstone) via De Morgan transformations.


🚀 Quick Navigation


📦 Getting Started

Requirements

How to Install the World

  1. Download or clone this repository.
  2. Copy the folder 00-99_Display/world/BitView_00-99_Display into your Minecraft saves directory:
    • Windows: %APPDATA%\.minecraft\saves
    • macOS: ~/Library/Application Support/minecraft/saves
    • Linux: ~/.minecraft/saves
  3. Launch Minecraft, select the world BitView – 00-99 Display, and enter.

How to Use the Display

The physical structure is organised in vertical layers:

The displays are placed side by side (tens on the left, units on the right) to form a normal two‑digit number.

The keypad consists of two 3×3 lever blocks (digits 1–9), stacked vertically:

How to compose a number:

  1. Tens digit – pull any lever in the upper 3×3 block (1–9).
  2. Units digit – pull any lever in the lower 3×3 block (1–9).
  3. Zero is the default state – to display 0 in a digit, leave all levers in that block untouched.
  4. Pull any combination to display a number from 00 to 99.

Example:


✨ Key Features


Encoder part Main circuit Display example: 51
encoder view circuit view test 51
Display: 92 Display: 99 Full overview
test 92 test 99 full view

More screenshots can be found in the 00-99_Display/screenshots folder.

Vertical layering (isometric view)

Layers view Units circuit at the bottom, tens circuit stacked above. Displays are side‑by‑side.


🎥 Video Demo

A short demonstration of the display in action:
record test.mp4 (download to watch)


📁 Repository Structure

BitView/
├── .github/workflows/            # CI/CD (build.yml)
├── 00-99_Display/                # Main project
│   ├── circuit docs/             # Truth table, K‑maps, logic diagrams, AND to NOT/OR
│   ├── encoder docs/             # Encoder schematics (1‑to‑9)
│   ├── screenshots/              # In‑game screenshots
│   ├── video/                    # Demo video
│   └── world/                    # Minecraft save folder
├── legacy_attempts/              # Earlier unoptimized versions
│   ├── first_attempt_single_display/
│   ├── second_attempt_double_display/
│   └── hexadecimal_circuit/      # Theoretical hexadecimal decoder
├── docs/                         # Static documentation (PDFs, images for future Pages)
├── .gitignore
├── ARCHITECTURE.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
└── README.md

👉 Explore the folders directly from this repository.


⚙️ How It Works

  1. Input encoding – Each lever directly selects a decimal digit (no binary conversion on the lever side).
  2. Binary‑coded decimal (BCD) – The lever signals are encoded into 4‑bit BCD inside the circuit.
  3. Karnaugh maps – For each of the 7 segments (a–g), a truth table for inputs 0–9 was built.
  4. Minimization – K‑maps produced minimal AND‑OR expressions.
  5. NOT/OR conversion – Using De Morgan’s law, all AND gates were replaced by NOT‑OR combinations (the only primitives available in redstone).
  6. Vertical stacking – The whole circuit for one digit was replicated above itself to drive the tens digit.
  7. Redstone implementation – Torches (NOT) and dust (OR) implement the final logic.

The “Default‑On” Challenge

Redstone torches are on by default. This means the circuit tends to light segments when no input is active. To display 0 correctly, we designed the logic so that with no lever pulled, the segments that form a “0” light up. There is no “all‑off” state – 0 is the intended default.


📊 Quantitative Results

The following metrics compare the final optimised circuit against the unoptimised double‑digit legacy version. All measurements are approximate and based on redstone component counts (torches = NOT gates, dust lines = OR gates).

Metric Unoptimised (legacy) Optimised (final) Improvement
Total NOT gates (torches) [TODO: number] [TODO: number] [TODO: %]
Total OR gates (dust lines) [TODO: number] [TODO: number] [TODO: %]
Total repeaters (signal delay) [TODO: number] [TODO: number] [TODO: %]
Estimated worst‑case signal path [TODO: blocks or ticks] [TODO: blocks or ticks] [TODO: %]
Latency (display update after lever pull) [TODO: Minecraft ticks] [TODO: ticks] [TODO: %]

All values are approximate; exact numbers depend on layout variations. The optimised version uses the same vertical stacking but with reduced gate sharing and shorter routing.


🔌 Why Only NOT and OR?

Minecraft redstone provides two basic logic components:

AND gates are simulated using De Morgan’s law:
A AND B = NOT( (NOT A) OR (NOT B) )

All expressions in this project were converted to this NOT‑OR form. See 00-99_Display/circuit docs/AND to OR-NOT.md for a detailed explanation.


📈 Project Evolution

This repository also contains two earlier (unoptimized) versions for comparison:

These show the iterative improvement process and the importance of Boolean minimization when working with redstone.


🔢 Hexadecimal Extension

The folder hexadecimal_circuit (inside legacy_attempts) contains a complete theoretical design for a hexadecimal encoder (0‑9, A‑F). It includes truth tables, Karnaugh maps, minimized expressions, and circuit schematics. The design is fully worked out but was not built in Minecraft due to the excessive wiring complexity in 3D.


📊 Legacy Attempts vs Final (Optimised)

Version Status Minimisation Redstone Size Latency Playable
Single digit 0‑9 (unoptimised) Working ❌ Incorrect (redundant implicants) Large High
Double digit 00‑99 (unoptimised) Working ❌ Same as above Very large (100‑lever keypad) High
Hexadecimal 0‑F (theoretical) Paper only ✅ Optimal + gate sharing Not built (impossible to wire compactly) N/A
Final 00‑99 Display Working ✅ Correctly minimised Compact (vertical stacking) Low

The final version uses the same vertical layering as the second attempt but with correctly minimised Boolean expressions, resulting in fewer gates, shorter signal paths, and a much cleaner redstone layout.

📖 Full details and “rough” documentation of the legacy attempts are available in the legacy_attempts/ folder.


🛠️ Tools (Python scripts)

The tools/ folder contains utility scripts:

To run them, ensure Python 3 is installed and execute from the repository root:

cd tools
python simulate_decoder.py 5
python validate_world.py
python generate_truth_table.py

🙏 Credits