2020-02-16 23:40:37 -05:00
ClassiCube is a custom Minecraft Classic and ClassiCube client written in C that works on Windows, OSX, Linux, BSD, Solaris, Haiku, and in a browser.
2015-06-30 21:15:53 -04:00
**It is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.**
2017-05-25 05:13:33 -04:00
![screenshot_n ](http://i.imgur.com/FCiwl27.png )
2015-10-28 15:28:23 -04:00
2015-10-23 03:23:03 -04:00
2019-12-12 04:03:10 -05:00
You can grab the latest stable binaries [from here ](https://www.classicube.net/download/ ) and the very latest builds [from here ](https://www.classicube.net/nightlies/ ).
2015-06-30 21:15:53 -04:00
2019-02-01 21:26:33 -05:00
#### What ClassiCube is
2020-06-08 07:14:49 -04:00
* A complete re-implementation of Minecraft Classic, with optional additions.
* Lightweight, minimal memory usage compared to the vanilla client.
2015-09-18 23:25:11 -04:00
* Works with effectively all graphics cards that support OpenGL or Direct3D 9.
2015-06-30 21:15:53 -04:00
2015-09-29 18:33:35 -04:00
It **does not** work with 'modern/premium' Minecraft servers.
2015-06-30 21:15:53 -04:00
#### Requirements
2019-07-12 06:04:26 -04:00
* Windows: 2000 or later. (Windows 98 with KernelEx also *technically* works)
2020-05-29 08:43:10 -04:00
* macOS: macOS 10.5 or later. (Can be compiled to work with 10.4 though)
2019-02-01 21:26:33 -05:00
* Linux: libcurl and libopenal.
2015-06-30 21:15:53 -04:00
#### Instructions
2019-02-01 21:26:33 -05:00
Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net.
2016-01-12 05:53:17 -05:00
Just click 'OK' to the dialog menu that appears when you start the launcher.
2015-06-30 21:15:53 -04:00
2015-09-29 19:10:55 -04:00
**Singleplayer**
2019-02-01 21:26:33 -05:00
Run ClassiCube.exe, then click Singleplayer at the main menu.
2015-06-30 21:15:53 -04:00
2015-09-29 19:10:55 -04:00
**Multiplayer**
2019-02-01 21:26:33 -05:00
Run ClassiCube.exe. You can connect to LAN/locally hosted servers, ~~minecraft.net servers,~~ and classicube.net servers through the launcher.
2015-06-30 21:15:53 -04:00
2017-10-22 20:07:33 -04:00
###### *Windows specific*
2020-06-08 07:14:49 -04:00
*If you are stuck using the built-in OpenGL 1.1 software renderer, you can use the MESA software renderer from [here ](http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/ ) for slightly better performance. Typically though, this occurs because you have not installed GPU drivers.*
2017-10-22 20:07:33 -04:00
2019-03-03 17:27:53 -05:00
### Compiling
2019-03-10 12:24:28 -04:00
#### Windows
##### Compiling with Visual Studio:
Open ClassiCube.sln and compile it.
2020-06-08 07:14:49 -04:00
If you get a ```The Windows SDK version 5.1 was not found``` compilation error, [see here for how to fix ](doc/compile-fixes.md#visual-studio-unsupported-platform-toolset )
2019-06-27 09:06:17 -04:00
2019-03-10 12:24:28 -04:00
##### Compiling with MinGW-w64
I am assuming you used the installer from https://sourceforge.net/projects/mingw-w64/
1. Install MinGW-W64
2. Use either *Run Terminal* from Start Menu or run *mingw-w64.bat* in the installation folder
2020-06-08 07:14:49 -04:00
3. Compile with the same flags as under **Cross Compiling for windows** , but use *gcc* instead of *i686-w64-mingw32-gcc*
2019-03-10 12:24:28 -04:00
2019-03-23 06:09:51 -04:00
##### Compiling with MinGW
I am assuming you used the installer from http://www.mingw.org/
1. Install MinGW. You need mingw32-base-bin and msys-base-bin packages.
2. Run *msys.bat* in the *C:\MinGW\msys\1.0* folder.
2020-06-08 07:14:49 -04:00
3. Compile with the same flags as under **Cross Compiling for windows** , but use *gcc* instead of *i686-w64-mingw32-gcc*
2019-03-23 06:09:51 -04:00
2019-03-03 17:27:53 -05:00
#### Linux
2019-02-17 22:30:23 -05:00
2020-05-26 08:06:03 -04:00
Install appropriate libs as required. For ubuntu these are: libx11-dev, libxi-dev and libgl1-mesa-dev
2019-02-17 22:30:23 -05:00
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -lm -lpthread -lX11 -lXi -lGL -ldl```
2019-02-17 22:30:23 -05:00
2019-03-28 19:15:21 -04:00
##### Cross compiling for windows:
2019-02-17 22:30:23 -05:00
2020-06-08 07:14:49 -04:00
```i686-w64-mingw32-gcc *.c -o ClassiCube.exe -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9```
2019-04-03 02:32:55 -04:00
2019-12-14 00:13:37 -05:00
##### Raspberry pi
Although the regular linux compiliation flags will work fine, to take full advantage of the hardware:
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -DCC_BUILD_RPI -lm -lpthread -lX11 -lEGL -lGLESv2 -ldl```
2019-12-14 00:13:37 -05:00
2020-02-16 23:40:37 -05:00
#### macOS (32 bit)
2019-04-03 02:32:55 -04:00
2020-06-11 09:38:33 -04:00
```cc *.c -o ClassiCube -framework Carbon -framework AGL -framework OpenGL```
2019-02-17 22:30:23 -05:00
2020-02-16 23:40:37 -05:00
#### macOS (64 bit)
2019-09-29 03:51:27 -04:00
2020-06-11 09:38:33 -04:00
```cc *.c -o ClassiCube -framework Cocoa -framework OpenGL -lobjc```
2019-09-29 03:51:27 -04:00
2019-03-28 19:15:21 -04:00
#### FreeBSD
2019-02-17 22:30:23 -05:00
2020-05-26 08:06:03 -04:00
```clang *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo```
2019-02-17 22:30:23 -05:00
2019-03-03 17:27:53 -05:00
#### OpenBSD
2020-05-29 13:51:05 -04:00
Install libexecinfo, curl and openal package if needed.
2019-03-03 17:27:53 -05:00
2020-05-28 09:57:00 -04:00
```cc *.c -o ClassiCube -I /usr/X11R6/include -I /usr/local/include -L /usr/X11R6/lib -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo```
2019-03-03 17:27:53 -05:00
2019-03-08 21:33:08 -05:00
#### NetBSD
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -I /usr/X11R7/include -I /usr/pkg/include -L /usr/X11R7/lib -L /usr/pkg/lib -lpthread -lX11 -lXi -lGL -lexecinfo```
2019-03-28 19:15:21 -04:00
2020-05-06 02:36:55 -04:00
#### DragonflyBSD
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo```
2020-05-06 02:36:55 -04:00
2019-03-28 19:15:21 -04:00
#### Solaris
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -lm -lsocket -lX11 -lXi -lGL```
2019-03-28 19:15:21 -04:00
NOTE: You have to change entry->d_type == DT_DIR to Directory_Exists(& path) (TODO do this automatically)
2020-02-16 23:40:37 -05:00
#### Haiku
Install libsdl2_devel, openal_devel, and libexecinfo_devel package if needed.
2020-05-26 08:06:03 -04:00
```gcc *.c -o ClassiCube -lm -lexecinfo -lGL -lnetwork -lSDL2```
2020-02-16 23:40:37 -05:00
NOTE: You have to change entry->d_type == DT_DIR to Directory_Exists(& path) (TODO do this automatically)
2019-04-20 08:21:32 -04:00
#### Web
```emcc *.c -s FETCH=1 -s ALLOW_MEMORY_GROWTH=1 --preload-file texpacks/default.zip```
2020-06-05 03:19:57 -04:00
The generated javascript file has some issues. [See here for how to fix ](doc/compile-fixes.md#webclient-patches )
2019-06-27 09:06:17 -04:00
2019-05-29 09:02:42 -04:00
##### Other
2019-03-28 19:15:21 -04:00
2020-06-05 03:19:57 -04:00
You'll have to write the necessary code. You should read portability.md in doc folder.
2019-03-08 21:33:08 -05:00
2019-05-29 09:02:42 -04:00
### Known compilation errors
2020-06-05 03:19:57 -04:00
[Fixes for compilation errors when using musl or old glibc for C standard library ](doc/compile-fixes.md#common-compilation-errors )
2019-05-29 09:02:42 -04:00
2019-02-17 22:30:23 -05:00
### Documentation
Functions and variables in .h files are mostly documented.
2020-06-05 03:19:57 -04:00
Further information (e.g. style) for the game's source code can be found in the doc and misc folders.
2019-12-04 15:39:35 -05:00
#### Tips
* Press escape (after joining a world) or pause to switch to the pause menu.
* Pause menu -> Options -> Controls lists all of the key combinations used by the client.
* Note that toggling 'vsync' to on will minimise CPU usage, while off will maximimise chunk loading speed.
* Press F to cycle view distance. A smaller number of visible chunks can improve performance.
* If the server has disabled hacks, key combinations such as fly and speed will not do anything.
* To see the list of built in commands, type `/client` .
* To see help for a given built in command, type `/client help <command name>` .
2020-03-10 06:00:30 -04:00
2020-03-11 06:38:18 -04:00
## Open source technologies
2020-03-10 06:00:30 -04:00
* curl - HTTP/HTTPS for linux and macOS
* FreeType - Font handling for all platforms
* GCC - Compiles client for linux
2020-06-08 07:14:49 -04:00
* MinGW-w64 - Compiles client for windows
2020-03-10 06:00:30 -04:00
* Clang - Compiles client for macOS
* Emscripten - Compiles client for web