a Minecraft (1.10.x - 1.12.x) client implemented on the 3DS (and new 3DS)
Due to personal reasons, I (SomeRandoLameo) will pause my part on development for the next 4-5 weeks. You can still reach out to me, do PRs and commits, i will accept / answer them, i will just be pushing less to no code for that time.
This is a hobby project. I cannot tell how far this will go in the future but for now this will stay active for a longer amount of time. Please dont be annoyed if this crashed on your device, as this is my first proper c++ lang and 3DS hardware project. The current roms are built with focus on the N3DS, however o3DS Support is being tested as well. The game should run in theory. If not: create an issue and steps to recreate it. We will greatly appreciate this!
- 3ds-zlib
- 3ds-curl
- 3ds-mbedtls
- 3ds-libopus
- (or the entire 3ds-portlibs)
- submodules
Install dependencies:
# Install all portlibs (easier & recommended option)
# You can also use normal pacman if you configured that correctly
sudo dkp-pacman -S 3ds-portlibs
# OR install individual libraries
sudo dkp-pacman -S 3ds-zlib 3ds-curl 3ds-mbedtls 3ds-libopusClone and build:
# Clone the repository with submodules
git clone --recursive https://github.com/SomeRandoLameo/Re-Craft-3DS
cd ReCraft
# If you already cloned without --recursive, initialize submodules
git submodule update --init --recursive
# Configure CMake
# The Toolchain has to be set to the toolchain of DevKitPro.
# The 3DS IP is used for the send target. If you dont want to send via your IDE, you can leave it empty
cmake -B build -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake -D3DS_IP="YOUR_3DS_IP_HERE"
# Build the project
make Re-Craft-3DS_3dsx
# Install via 3dslink (3DS must be on network)
make send
# Alternatively, you can also use standalone 3DSLink
cd build/
3dslink Re-Craft-3DS.3dsx
# OR use FTP to transfer the .3dsx file to your 3DS manuallyQuick setup (included local test server):
# Download the Minecraft 1.12 server
cmake --build . --target download-server
# Navigate to server folder and accept EULA
cd server
# Edit eula.txt and change "eula=false" to "eula=true"
# if the file is not present, start the server once.
# Then you should be able to accept the EULA
# Start the server
cd ..
cmake --build . --target start-serverThe server runs as an "offline/cracked" server. You can modify server.properties in the server folder if needed.
Online mode is not (yet) supported.
Connecting to the Server:
# Get your local IP address (The IP where you ran the java server)
# Windows:
ipconfig
# Linux/Mac:
ifconfig
# or
ip -4 addr show
# Look for an address like:
# 192.168.x.x, 172.x.x.x, 10.x.x.x, or 127.0.0.1 (localhost only)
# Note this addressThen think of a username. Eg: "Nintendo3DS".
When you launched the rom, press on Multiplayer. You will be asked about the IP Address of the server, then your Username.
SIDENOTE: In order to connect to the offline dev server, your 3DS NEEDS TO BE ON THE SAME NETWORK AS THE SERVER, otherwise this wont connect and will crash
After submitting both, the Game should freeze for about 30 seconds. then:
- The o3DS will disconnect because it took too long to decode the data
- The emulator (azahar in this case) will have a graphical bug and should disconnect as well.
- The n3DS connects just fine
This is tested and expected behavour.
When the Client disconnects, you are still able to explore the downloaded chunks, but nothing will update and its very likely to crash. This is normal for now.
When playing on the server, new chunks will get loaded when nessessary, causing some lag spikes. Move around if they dont stop. This is normal for as well.
There is a project board. if you want to contribute, but dont know where to start, check it out. It has priorities and is organized for easy navigation. Be sure to read the CONTRIBUTION GUIDELINES before changing things.
If you have any questions regarding this project or you want to show this project in a youtube video or anywhere else, please contact me on Discord! My Tag is "SomeRandoLameo"!
- Network engine bits from mclib-3ds
- Client Engine bits from craftus
- Research from Official Minecraft PE decompilations MCPED
- Research from Official Minecraft Legacy Console decompilations MinecraftLCE
- Research from Official Minecraft Decompilations MCP919
- Dear IMGUI for 3DS (used only for debugging) imgui-ctr
- Learned how to utilize mclib from Terracotta
- 3DS Compatability layer for IMGUI imgui-impl-ctr
- Audio & Other misc. bits from QuickLime (this may be used in the future)
- Tobid7 (Amethyst and main contributor)
- Moddimation as another main contributor
- RSDuck & Onixia (Craftus)
- Plushmonkey (original mclib & Terra)
- The people behing MCPED
- The people behind the MCLE Decomp MinecraftLCE
- The people behind MCP919 and the ones that published this build MCP919
- The people behind DEAR IMGUI
- The people behind stb
- And many more! (if you think, your code is used here, feel free to commit a change to the readme. We will validate and add it if possible)
- All external snippets must respect their original licenses
AI Is a tool, not a fullstack programmer.
-
You can use AI to explain how things work
-
You can use AI to help sketching out features/Idea concepts
-
PRs that are 100% AI Code will NOT be accepted.
-
You cannot use AI to write ccode that you could have wrote yourself
-
You cannot use AI to automate development processes
-
You cannot use AI to vibecode here, unless someone allows you to
-
You cannot use AI to communicate to other devs, speak for yourself
-
We want human written - human readable and human usable code, not AI Slop