Skip to content

Repository files navigation

PACMine

A small voxel sandbox game written in Java with LWJGL (OpenGL + GLFW).

🇷🇺 Версия на русском: README.ru.md

📖 Docs: dedicated server & Lua plugins

Features

  • Procedurally generated terrain (value-noise hills, trees, sand near water level)
  • First-person movement with gravity, jumping and AABB collision
  • Place / break blocks via raycasting (6 block types + unbreakable bedrock)
  • Textured blocks loaded from assets/ into a runtime texture atlas
  • Crafting panel inside the inventory (E): planks, furnace, sword, pickaxe and iron tools
  • Furnace: place it, right-click to open — smelts sand into glass, ore into ingots, wood into charcoal (fuel: coal, planks, wood)
  • Tools: wooden sword and stone pickaxe (3x mining), iron ones are stronger (6x pickaxe, one-hit sword)
  • Zombies that chase the player; kill them with the sword
  • Animals (pig, cow, chicken) roam in daylight; they drop a healing heart when killed
  • Start menu (PLAY / QUIT) with a tiny built-in bitmap font
  • Free premium: message @pacmine_prem_bot on Telegram (/prem YOUR_NICK) — verified nick + a badge on servers, up to 3 accounts per Telegram
  • Invisible walls at the world edges

Controls

Action Key
Move W A S D
Jump Space
Sprint hold Left Shift
Look mouse
Break block / hit zombie Left click
Place block Right click
Select block 16
Back to menu Esc

Build & run

Requires a JDK (21+). LWJGL natives are fetched for your OS.

Linux / macOS:

bash get-deps.sh   # download LWJGL jars into lib/
bash build.sh      # compile to out/
bash run.sh        # launch the game

Windows:

get-deps.bat
build.bat
run.bat

⚠️ The Windows build is unverified and may have issues. All versions are tested on Linux Fedora 44 Workstation.

Dedicated server

Minecraft-style server core: grab PACMine-Server.jar from the releases (or build it with bash make-server.sh), drop it into an empty folder and run:

java -jar PACMine-Server.jar

On first run it creates server.properties, saves/world.pms and server.log right there. Console commands: list, plugins, save, stop. Headless — no LWJGL needed. Set plugins=true to load Lua plugins from plugins/ (docs are generated there): join/leave/block/tick events, get_block/set_block synced to all players, kick and more.

Launcher

A small Swing launcher downloads, builds and runs the latest version from GitHub:

  • Linux/macOS: cd launcher && ./launcher.sh
  • Windows: cd launcher && launcher.bat

Project layout

  • src/com/voxel/ — game source
    • Main.java — window, game loop, input, menu, HUD, combat
    • World.java / Noise.java — terrain generation and block storage
    • ChunkRenderer.java — per-chunk meshing (display lists)
    • TextureAtlas.java — texture loading / atlas
    • Player.java — movement & collision
    • Zombie.java — mob entity & AI
    • Font5x7.java — bitmap font for menu text
  • assets/ — PNG textures (16×16)

License

Apache 2.0 — versions up to v0.1.5.5 were released under MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages