Giter Site home page Giter Site logo

reminecraftpe / mcpe Goto Github PK

View Code? Open in Web Editor NEW
308.0 10.0 47.0 6.95 MB

ReMinecraftPE - A custom experience based on Minecraft PE as of 2011.

Home Page: https://discord.gg/UKGhuKNmFu

License: Other

C++ 93.02% Python 0.34% Shell 0.05% CMake 1.18% HTML 0.15% Batchfile 0.09% C 2.17% Makefile 0.14% Java 0.30% Objective-C 0.72% Objective-C++ 1.78% GLSL 0.06%

mcpe's Introduction

ReMinecraftPE

This project aims to create a custom Minecraft experience based on Minecraft: Pocket Edition as of 2011. It's based on Minecraft PE v0.1.3.

Its goals are:

  • To add Quality-of-Life features to Minecraft: Pocket Edition, such as a brighter color gamut, an in-game options menu, etc.
  • To add features that were in Minecraft Alpha and the early Betas in 2011. (before and during Minecraft PE's development - this excludes hunger, for example, as it was added in Beta 1.8)
  • To keep the source code layout similar to the original Minecraft PE (reconstructed from clues hidden within certain versions of the game, such as the 0.1.0 touch prototype/debug build)
  • To port the game to more platforms, such as Windows (including older versions), Xbox 360, Wii, and more. Currently there are ports for:

We will not do the following:

  • Add features added in or after Java Edition Beta 1.8
  • Backport features from versions newer than 0.9.0
  • Add The Nether or The End (probably)
  • Add Herobrine
  • Add support for Minecraft Java or Minecraft Bedrock servers. (although LAN play with original MCPE clients will be supported for as long as possible)
  • Modify the project structure

Note: While the original Minecraft PE v0.1.3 may not work on newer devices, ReMinecraftPE works on all Android devices.

This is the main modded version. For the original decompilation, see ReMinecraftPE/mcped

License information

This project is licensed under the BSD 1 clause license. However, it contains third party software with different but compatible licenses:

WANT TO HELP?

Want to help this project? Here's a list of things left to do.

DISCLAIMER

This project requires you to have a copy of the Minecraft PE v0.1.3 apk (sha256 of the libminecraftpe.so inside: 157af341d13a54cc935bbe24c5e1cf3d02d7e40ec20f9859b9853c2e996ebd81), before you can build.

Setup

Before trying to build:

  1. Run the following git commands, or perform the following actions with Git:
git submodule init
git submodule update

This fetches the three dependencies we have:

  1. Load the sound assets into the sound_data/ folder in the root of the project by running the following command:
  • tools/grabsounds.py /path/to/the/apk/lib/armeabi-v7a/libminecraftpe.so.

After that, prepare the assets folder from the apk. You will need it for the platform specific build.

Building

Windows

Click the thumbnail below to watch a video guide showcasing how to build ReMCPE. How to Compile ReMCPE for Windows

The project is configured to target Windows XP by default by using "v141_xp" build tools. If you would like to build with Windows XP support, please follow the guide here to obtain the build tools via the Visual Studio installer.

If you would like to strictly target more modern versions of Windows, you can change the build toolset by doing the following:

  1. Right-click the project and click "Properties".

Visual Studio Project Visual Studio Project Properties Option

  1. Click the dropdown for the "Platform Toolset" property and select "Visual Studio 2022 (v143)" or newer. Selecting v143 Platform Toolset

  2. Click "Apply".

Install the DirectX SDK (June 2010), unless:

  • You opt to use OpenAL instead (but that will require some hacking)
  • You are using the latest platform toolset

Once you have the proper build tools installed (v140_xp or newer), you can now build it.

After building, place the assets folder you have prepared in the working directory of the output executable. (if running from VS, it's in game/, otherwise, where your executable is)

WebAssembly

Make sure you have CMake and Ninja installed. On Windows, the ninja executable must be in your PATH. On Linux, the package names are cmake and ninja-build respectively if you are using apt.

The game will use the assets from within the game/ directory. So put your assets there if you want to build for wasm. Then run the build-wasm script corresponding to your platform (-.sh on linux/WSL, -.bat on windows).

The output files will be in ./wasm/dist, but you need to upload them to a web host (localhost works too) to use. (problem with Emscripten)

NOTE: If you are using nginx, make sure the *.wasm file is served as application/wasm, and not application/octet-stream. This can be done by opening /etc/nginx/mime.types as root and adding application/wasm wasm; to the types block.

Linux

This project uses CMake on Linux. Just like WebAssembly, the game assets must be placed in the game/ directory.

Dependencies (Ubuntu/Debian)

  • build-essential (C/C++ Toolchain)
  • cmake (CMake)
  • ninja-build (Ninja)
  • libsdl2-dev (SDL2)
  • libopenal-dev (OpenAL)
  • zlib1g-dev (ZLib)

How To Build

cd platforms/sdl
mkdir build && cd build
cmake -GNinja ..
cmake --build .
# Run
./reminecraftpe

HaikuOS

Dependencies:

  • libsdl2_devel (SDL2)
  • glu_devel mesa_devel (Mesa)
  • cmake (CMake)
  • ninja (Ninja)

To build, perform the same steps as on Linux.

Have seams when playing?

I've had texture seams when playing Minecraft Classic, ClassiCube and this recreation of Minecraft PE, on a fresh new laptop. If seams bother you, and you are using an NVIDIA graphics card, go to the NVIDIA Control Panel, then in "Manage 3D Settings", change "Antialiasing - Mode" to "Application Controlled".

Notes on assets

The terrain.png and related textures appear to have stayed the same between the E3 demo and the final release for Xperia PLAY. It appears to have been fetched before Java Edition Beta 1.4's release. This can be seen because the cookie's texture is missing. (it was added in Java Edition Beta 1.4)

There are plans to create a custom script which downloads and sets up all assets needed for the game.

Screenshots (from the decomp)

Title screen Generating world In-game Inventory Pause menu

Enhancements

ReMinecraftPE is an enhanced version of the original. To see the original, (mostly) as it was back in the day, see the mcped repository.

mcpe's People

Contributors

2008choco avatar break-core avatar brentdamage avatar epixscripts avatar iprogrammc avatar joemama54 avatar jonkadelic avatar kleadron avatar ljcool2006 avatar marioiscool246 avatar mfdgaming avatar sanyasho avatar stommm avatar thebrokenrail avatar thomasluigi07 avatar uniformization avatar vruk11 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mcpe's Issues

World made with flat mod doesn't save

Idk if anyone else experienced this bug but a world made using the flat mode doesn't save because if you open it without the mod enabled the world isn't flat anymore, what's even worse is that any blocks that were placed on the flat world don't show aswell.
What's funny is that my flat world with the shop saves correctly.
Also IDK if this is only because I use Winlator.

Can't scroll in the options menu

Just built for Linux, using scroll wheel, arrow keys, or page up/down keys, I can't seem to scroll down to the "Controls" section of the options screen.
Screenshot_20231226_215539

iOS port

it'd make sense to have a port to iOS that supports versions from the time period (iOS 3+ perhaps?)

Add keybinds.

As the title says. It would be cool if you could rebind the keys.
Sorry for abusing Issues tab.

Document Variables Based On Minecraft Beta 1.2_02-20110512

Today, Omniarchive published a prototype version of Minecraft Beta 1.2, namely 1.2_02 2011/05/12. This version is unlike no other build of Minecraft Java Edition after the addition of Multiplayer in 0.0.15a, insofar as it's not obfuscated.

This means that:

  • Class names are visible
  • Field names within the classes are visible
  • A limited set of local variable names also appear to be visible

This allows a more comprehensive analysis of MCPE.

For example, the m_dataX fields in LavaTexture are called current, next, heat, and heata.

To solve:

  • Is this a good idea?
  • Is it legal?
  • Should we ditch the previous code style for the official Mojang style?

Automatic downloading of assets

Possibly could fetch assets from a contemporary version of Minecraft Java Edition from Mojang's official CDN.

There is still the problem of downloading mobile specific assets such as the blurred background or the touch controls.

Alternatively we can depend on the Internet Archive, and if the required packages aren't there anymore, we could always let the people load them manually in the game.

Asset initialization should be quick (take less than 10 seconds more than the time to download), and should save assets so that they can be used instead of redownloading again.

Nether Reactor

How come no one suggested it yet?
I know it would be hard to implement but I belive it's possible to be backported.
The only downside is that you'd need to make a custom terrain.png with the nether reactor core and you'd need to atleast add a zombie or zombie pigman into the game.
Please consider adding this.

Load Sounds From Filesystem

Currently sounds are just embedded in memory. We should update our audio API abstraction layers to support loading sounds from files. Streaming sounds from files would also allow us to add in-game music.

This means updating:

  1. SoundSystemAL
  2. SoundSystemDS
  3. SoundSystemSL

MCPI Cursor

Idk why hasn't this been implemented yet but the cursor from MCPI is something I kinda expected to be in ReMCPE.

unable to build the webassembly version on linux

i'm trying to build the webassembly version of this program on linux. i can't, because it says that SDL2/SDL.h is missing, however this is located in /usr/include. i vaguely remember having to download an emscripten-specific version of sdl for one of my own projects when i used to program in c++, but i would imagine this would have been fetched by the build-wasm script. i've also followed every other instruction, that being, copying the sounds and the assets folder, and installing the required build dependencies. i am able to complete a linux build but unable to test it as my system has some kind of problem with openal that i don't yet know how to fix. any help would be appreciated.

Add Hide GUI option

Please add it either it can be hidden by f1 like in modern minecraft or as a toggleable option in the menu.

In-Game Music

I always forget we don't have this yet. Would really love to see it since it'd add to the nostalgia factor by a ton.

Items Inventory Page

It could contain every item found in items.png.
I know this may sound like a dumb idea but please consider adding this.

Concept art in ASCII because I'm bored:
[ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ][ ]
__________________[ITEMS] <--- Opens the items page
[ITEMS] change to [BLOCKS] when items page is opened.
I hope you'll consider adding this after the survival mode is added or even earlier.

IDK what title I should add

It would be pretty cool if an EXE file would be made every time after compiling. An EXE file that can be opened straight from a shortcut.
I know you can kind of achieve this by making a shortcut to the project but you still have to compile everything again.
Thanks for your attention.

Android Build ERROR "FAILURE: Build failed with exception."

Hello, me again. I dug around in the Android platform and tried to run gradlew.bat but kept getting an error message. Also, I have no idea how to build for Android and have never created an Android app before. Some help would be greatly appreciated!

Screenshot (339)

"Touch" Namespace GUI Classes

The Touch namespace should contain all of the touchscreen-specific GUI elements. Using this namespace will allow us to have touch-specific versions of GUI Screens and GUI elements as needed. See 0.7.0 for reference.

ReMinecraftPE Discord server

Access to the Discord server is currently restricted. This is not because of drama happening within the server, so don't worry - it is for security.

You may request access to the Discord server via e-mail: [email protected]
Chances are high that access to the server will be granted.

Controller Support

If someone's looking for something to do, the game does not currently have controller support. If implemented, it should be done so with DirectInput (for Windows) and SDL2 (for literally everything else). There is currently functions for handling joystick input, so this shouldn't be insanely difficult.

Getting this error "LINK1104 cannot open file 'dxguid.lib'

Hello, I've been trying to build ReMincraftPE but keep getting this error "LINK1104 cannot open file 'dxguid.lib'. I followed all of the steps in the README and the tutorial video, but it still doesn't work. Is there anything else I should download because I have experience with Visual Studio and coding in general.

Screenshot (330)

Also, this is what it builds when it finishes.

Screenshot (331)

thx

File Structure Changes (for accuracy and parity)

There are some files that need to be changed around, for more accuracy to the original Minecraft codebase. This should provide a more strong foundation for the ReMinecraftPE codebase all together.

Here are some changes that should be considered for a file structure change:

  • Move App, AppPlatform, and NinecraftApp to just source rather than being in /client/app. This lines up with MCPE, as asserts claim that NinecraftApp is in src (/src/NinecraftApp.cpp). It also makes sense for App and AppPlatform.
  • Move /client/app/Minecraft to source/client, as this is the path for it in Java Edition.
  • Move Font to /client/gui (matches Java Edition and PE)
  • Move Culler, Frustum, and FrustumCuller to a new folder in /client/renderer called culling, which contains culling stuff. (matches Java Edition)
  • Move DynamicTexture, FireTexture, LavaSideTexture, LavaTexture, WaterSideTexture, and WaterTexture to a new folder in /client/renderer called ptexture which has stuff related to textures.
  • Move client/options/Options into just the client folder. (matches Java Edition)
  • Move any "touch" or "touchscreen" related input code in /client/player/input to a new folder called touchscreen. (Matches PE)
  • Migrate all of source/common to a new util folder in source. (Possibly)
  • Possibly migrate all of source/renderer/GL to client/renderer?
  • Move Animal, Chicken, Cow, Pig, and WaterAnimal to a new folder in world/entity called animal which stores code related to animals.
  • Move Monster and Creeper to a new folder in world/entity called monster which holds all monster entities.
  • Move FallingTile, ItemEntity, and PrimedTnt to a new folder in world/entity called item which stores code related to item entities.
  • Move Player and Inventory to a new folder in world/entity called player which holds all player entity code. (Yes, Inventory is here too)
  • Move LocalPlayer into client/player.
  • Move the world/level/levelgen/chunk folder to world/level
  • Change the name of the path folder to pathfinder.
  • Move world/particle folder into source/client.
  • Move world/tile folder into world/level

Most of these decisions were based on reverse engineering and analysis of old Minecraft videos that show off the source tree structure. If there are any mistakes or incorrect changes I proposed, please let me know.

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.