Code Monkey home page Code Monkey logo

classicube-contribs's Introduction

ClassiCube is a custom Minecraft Classic compatible client written in C that works on Windows, macOS, Linux, iOS, Android, FreeBSD, NetBSD, OpenBSD, Solaris, Haiku, IRIX, 3DS (unfinished), PSP (unfinished), and in a web browser.
It is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.

screenshot_n

You can download the game from here and the very latest builds from here.

We need your help

ClassiCube strives to support providing an experience identical to the original Minecraft Classic by strictly following a clean room reverse engineering approach.

If you're interested in documenting or verifying the behaviour of the original Minecraft Classic, please get in contact with me. (UnknownShadow200#2728 on Discord)

Information

What ClassiCube is

  • A complete re-implementation of Minecraft Classic 0.30, with optional additions
  • Partially supports some features of Minecraft Classic versions before 0.30
  • Lightweight, minimal memory usage compared to original Minecraft Classic
  • Much better performance than original Minecraft Classic
  • Works with effectively all graphics cards that support OpenGL or Direct3D 9

What ClassiCube isn't

  • It does not work with Minecraft Java or Bedrock edition servers
  • It does not have a survival mode (nor will such a mode be added)
  • It does not support logging in with Mojang/Minecraft accounts

System requirements

  • Windows: 95 or later
  • macOS: 10.5 or later (can be compiled to work with 10.3/10.4 though)
  • Linux: libcurl and libopenal
  • Android: 2.3 or later

Note: When running from within VirtualBox, disable Mouse Integration, otherwise the camera will not work properly

Instructions

Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net and classicube.net.
Just click 'OK' to the dialog menu that appears when you start the launcher.

Singleplayer Run ClassiCube.exe, then click Singleplayer at the main menu.

Multiplayer Run ClassiCube.exe. You can connect to LAN/locally hosted servers, and classicube.net servers if you have a ClassiCube account.

Stuck with OpenGL 1.1 due to old graphics hardware?

If you're on Windows, you should first try using the MESA software renderer from here. Typically though, this occurs because you have not installed GPU drivers.

Otherwise, you will have to compile the game yourself. Don't forget to add -DCC_BUILD_GL11 to the compilation command line so that the compiled game supports OpenGL 1.1.

Compiling - Windows

Using Visual Studio

Open ClassiCube.sln (File -> Open -> Project/Solution) and compile it (Build -> Build Solution).

If you get a The Windows SDK version 5.1 was not found compilation error, see here for how to fix

Using Visual Studio (command line)
  1. Use 'Developer Tools for Visual Studio' from Start Menu
  2. Navigate to directory with game's source code
  3. Enter cl.exe *.c /link user32.lib gdi32.lib winmm.lib dbghelp.lib shell32.lib comdlg32.lib /out:ClassiCube.exe
Using 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
  3. Navigate to directory with game's source code
  4. Enter gcc *.c -o ClassiCube.exe -mwindows -lwinmm -limagehlp
Using MinGW

I am assuming you used the installer from https://osdn.net/projects/mingw/

  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.
  3. Navigate to directory with game's source code
  4. Enter gcc *.c -o ClassiCube.exe -mwindows -lwinmm -limagehlp
Using TCC

I am assuming you used tcc-0.9.27-win64-bin.zip from https://bellard.org/tcc/

  1. Extract the .zip file
  2. In ExtMath.C, change fabsf to fabs and sqrtf to sqrtf
  3. In TCC's include/math.h, remove the inline definition for fabs at around line 217
  4. In TCC's lib/kernel32.def, add missing RtlCaptureContext
  5. Add missing include files from winapi-full-for-0.9.27.zip as required
  6. ???

Compiling - Linux

Using gcc/clang

Install appropriate libs as required. For ubuntu these are: libx11-dev, libxi-dev and libgl1-mesa-dev

gcc *.c -o ClassiCube -rdynamic -lm -lpthread -lX11 -lXi -lGL -ldl

Cross compiling for Windows (32 bit):

i686-w64-mingw32-gcc *.c -o ClassiCube.exe -mwindows -lwinmm -limagehlp

Cross compiling for Windows (64 bit):

x86_64-w64-mingw32-gcc *.c -o ClassiCube.exe -mwindows -lwinmm -limagehlp

Raspberry Pi

Although the regular linux compiliation flags will work fine, to take full advantage of the hardware:

gcc *.c -o ClassiCube -DCC_BUILD_RPI -rdynamic -lm -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl

Compiling - macOS

Using gcc/clang (32 bit)

cc *.c -o ClassiCube -framework Carbon -framework AGL -framework OpenGL -framework IOKit

Using gcc/clang (64 bit)

cc *.c interop_cocoa.m -o ClassiCube -framework Cocoa -framework OpenGL -framework IOKit -lobjc

Compiling - for Android

Using Android Studio GUI

Open android folder in Android Studio (TODO explain more detailed)

Using command line (gradle)

Run gradlew in android folder (TODO explain more detailed)

Compiling - for iOS

iOS version will have issues as it's incomplete and only tested in iOS Simulator

Using Xcode GUI

Import ios/CCIOS.xcodeproj project into Xcode (TODO explain more detailed)

Using command line (Xcode)

xcodebuild -sdk iphoneos -configuration Debug (TODO explain more detailed)

Compiling - other desktop OSes

FreeBSD

Install libexecinfo, curl and openal-soft package if needed

cc *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo

OpenBSD

Install libexecinfo, curl and openal package if needed

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

NetBSD

Install libexecinfo, curl and openal-soft package if needed

cc *.c -o ClassiCube -I /usr/X11R7/include -I /usr/pkg/include -L /usr/X11R7/lib -L /usr/pkg/lib -lpthread -lX11 -lXi -lGL -lexecinfo

DragonflyBSD

cc *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo

Solaris

gcc *.c -o ClassiCube -lm -lsocket -lX11 -lXi -lGL

Haiku

Install openal_devel and libexecinfo_devel package if needed

cc *.c Window_Haiku.cpp -o ClassiCube -lm -lexecinfo -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker

IRIX

gcc -lGL -lX11 -lXi -lm -lpthread -ldl

SerenityOS

Install SDL2 port if needed

cc *.c -o ClassiCube -lgl -lSDL2

Compiling - other

Web

emcc *.c -s ALLOW_MEMORY_GROWTH=1 --js-library interop_web.js

The generated javascript file has some issues. See here for how to fix

PSP

cd into src directory, then run make psp. You'll need pspsdk

3DS

cd into src directory, then run make 3ds. You'll need libctru

Other

You'll have to write the necessary code. You should read portability.md in doc folder.

Documentation

Functions and variables in .h files are mostly documented.

Further information (e.g. style) for the game's source code can be found in the doc and misc folders.

Known compilation errors

Fixes for compilation errors when using musl or old glibc for C standard library

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>.

Open source technologies

  • curl - HTTP/HTTPS for linux and macOS
  • FreeType - Font handling for all platforms
  • GCC - Compiles client for linux
  • MinGW-w64 - Compiles client for windows
  • Clang - Compiles client for macOS
  • Emscripten - Compiles client for web
  • RenderDoc - graphics debugging

Sound Credits

ClassiCube uses sounds from Freesound.org
Full credits are listed in doc/sound-credits.md

classicube-contribs's People

Contributors

unknownshadow200 avatar goodlyay avatar spiralp avatar igor725 avatar cybertronictoon avatar 123dmwm avatar 360ied avatar abb128 avatar dakriy avatar vocaned avatar cheesse avatar andrewphorn avatar pawelsberg avatar yeti0904 avatar cflip avatar jshtab avatar netzbasis avatar andreasgoulas avatar jjp137 avatar dylanagreen avatar timgates42 avatar videoerror avatar bunexceptional avatar aurxenon avatar codingwatching avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.