Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
8c687e0
clean branch
samdotjpg Feb 15, 2026
3054cbd
furnace rot fix, useTouchscreen/isTouchscreen
samdotjpg Feb 15, 2026
26e7f2e
Virtual EntityTile class; fix save/load of entity tiles (far safer)
samdotjpg Feb 16, 2026
f64f96a
base client riding logic
samdotjpg Feb 16, 2026
bd18e03
naming convention adjustment to match other classes better
samdotjpg Feb 17, 2026
ecdaaea
Entities should be hashmaps. Can open furnace now
samdotjpg Feb 17, 2026
58f8f0b
Merge branch 'ReMinecraftPE:master' into tile-entity-rev2
samdotjpg Feb 17, 2026
d0699c4
bounds check fix
samdotjpg Feb 17, 2026
22170d2
vsync, top snow fix
samdotjpg Feb 17, 2026
837b741
drop sand
samdotjpg Feb 17, 2026
da33efa
containers shouldnt look stupid
samdotjpg Feb 18, 2026
fa895e2
naming conventions, not done yet
samdotjpg Feb 18, 2026
732374d
wrong way of doing this but i have to merge
samdotjpg Feb 18, 2026
5a63427
Merge branch 'ReMinecraftPE:master' into tile-entity-rev2
samdotjpg Feb 18, 2026
67a9b26
syntax bitch
samdotjpg Feb 18, 2026
7506a6c
sorry SDL1 no vsync yet
samdotjpg Feb 18, 2026
b39ae30
android
samdotjpg Feb 18, 2026
4d117c3
Updated Visual Studio Projects
BrentDaMage Feb 18, 2026
d2bdb19
tim apple
samdotjpg Feb 18, 2026
da4f864
add to lang file
samdotjpg Feb 18, 2026
d46806d
Make riding / rider code not suck really badly
samdotjpg Feb 18, 2026
6bea080
Fixed container listening and networking
BrentDaMage Feb 18, 2026
5a4f4db
CMakeLists & Xcode
samdotjpg Feb 18, 2026
4b8fe5c
Chat & Pause buttons for touch screens (#485)
Vimd0 Feb 18, 2026
5f488b5
Fixes in macOS artifact build (#491)
Un1q32 Feb 18, 2026
d80ceeb
Xbox 360 / Console Bug Fixes (#492)
BrentDaMage Feb 19, 2026
8cb59b9
todo fix putting item stack in chests not relaying count to clients w…
samdotjpg Feb 19, 2026
183dcb1
Fixed Xbox 360 Hanging on Startup (#493)
BrentDaMage Feb 20, 2026
be42c42
Mipmap Icons for Android (#488)
Vimd0 Feb 20, 2026
790a29a
Restored Unused Camera Flash Texture (#494)
Vimd0 Feb 20, 2026
abd83ce
Fix default UI theme, also fix Minecraft::isTouchscreen always being …
Un1q32 Feb 21, 2026
3482668
Android build update (#487)
Un1q32 Feb 21, 2026
f7814a9
Fixed crash (#497)
BrentDaMage Feb 21, 2026
09e6027
XDG base directory spec compliance (#498)
Un1q32 Feb 21, 2026
33a6b7b
Fixed ClassicCraftingScreen_Console positioning (#499)
BrentDaMage Feb 21, 2026
d4dc905
Enabled Auto-Jump by Default for Touchscreens (#500)
Un1q32 Feb 21, 2026
a8eb167
Remove bullshit
BrentDaMage May 12, 2026
333b552
This might go very poorly
BrentDaMage May 12, 2026
5fdec57
Fixed bad merge
BrentDaMage May 12, 2026
097dd30
Fixed crash from breaking chests
BrentDaMage May 12, 2026
f500a72
Minor cleanup
BrentDaMage May 12, 2026
ec4dbcd
Added v-sync lang
BrentDaMage May 12, 2026
9e80ba5
Fixed weird multiplayer dupe bug
BrentDaMage May 13, 2026
2b9d181
Properly typed Container::StackID vs Container::SlotID
BrentDaMage May 14, 2026
32ef692
fix
BrentDaMage May 14, 2026
4e4a327
Fixed mismatched types
BrentDaMage May 14, 2026
6e4f426
fix
BrentDaMage May 14, 2026
3bd62e7
Rename
BrentDaMage May 14, 2026
b0adc86
Finish rename
BrentDaMage May 14, 2026
2ac7665
Fixed furnace status desync
BrentDaMage May 14, 2026
be520e1
Fixes
BrentDaMage May 14, 2026
230814c
chmod +x
Un1q32 May 14, 2026
5408bb4
Merge pull request #1 from Un1q32/fix-chmod
BrentDaMage May 14, 2026
d980f1d
Cleanup
BrentDaMage May 15, 2026
1cc8289
Fixes
BrentDaMage May 15, 2026
0ea7435
Fixes
BrentDaMage May 15, 2026
73696d9
Fixes
BrentDaMage May 15, 2026
a316b0b
Container replication bugfixes & cleanup
BrentDaMage May 15, 2026
995e44a
Fixed multiplayer inventory drop on death
BrentDaMage May 16, 2026
7b0fc51
Added Console theme support for ChestScreen
BrentDaMage May 16, 2026
2b17911
Improved parity with Console Edition
BrentDaMage May 17, 2026
26db045
Minor tweaks to furnace labels
BrentDaMage May 17, 2026
3e6d990
Added arrow animation to Console FurnaceScreen
BrentDaMage May 17, 2026
29edcbf
Updated Xcode Project
BrentDaMage May 18, 2026
7101f41
Fixed PlayerEquipmentPacket handling
BrentDaMage May 18, 2026
863c89d
Added start destroy player action replication, allows noteblocks to work
BrentDaMage May 18, 2026
5160327
Fixed a bug which caused players to spawn underground in multiplayer
BrentDaMage May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions GameMods.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
// Features (major changes)
//#define FEATURE_GFX_SHADERS // Loads and uses Shaders from the assets folder for rendering.
#define FEATURE_NETWORKING // Enables multi-player through RakNet
//#define FEATURE_SERVER_INVENTORIES // Enables server-sided/server-authoritative player inventories.

// TODO: Add to the LevelSettings struct
//#define FEATURE_CAVES // Generates caves around the world.
Expand Down
1 change: 1 addition & 0 deletions game/assets/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ options.guiScale.small=Small
options.guiScale.normal=Normal
options.guiScale.large=Large
options.gamma=Gamma
options.enableVsync=V-Sync

performance.max=Max FPS
performance.balanced=Balanced
Expand Down
14 changes: 14 additions & 0 deletions platforms/android/AppPlatform_android.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,20 @@ std::string AppPlatform_android::getDateString(int time)
return std::string(buffer);
}

void AppPlatform_android::setVSyncEnabled(bool enabled)
{
EGLDisplay display = eglGetCurrentDisplay();
if (display == EGL_NO_DISPLAY)
return;

eglSwapInterval(display, enabled ? 1 : 0);
}

bool AppPlatform_android::isVSyncSwitchable() const
{
return eglGetCurrentDisplay() != EGL_NO_DISPLAY;
}

SoundSystem* AppPlatform_android::getSoundSystem() const
{
return m_pSoundSystem;
Expand Down
2 changes: 2 additions & 0 deletions platforms/android/AppPlatform_android.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class AppPlatform_android : public AppPlatform
int getScreenHeight() const override;
void showDialog(eDialogType) override;
std::string getDateString(int time) override;
void setVSyncEnabled(bool enabled) override;
bool isVSyncSwitchable() const override;

// Also add these to allow proper turning within the game.
void recenterMouse() override;
Expand Down
14 changes: 5 additions & 9 deletions platforms/sdl/sdl2/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,11 @@ static void initGraphics()
exit(EXIT_FAILURE);
}

// Enable V-Sync
// Not setting this explicitly results in undefined behavior
if (SDL_GL_SetSwapInterval(-1) == -1) // Try adaptive
// Vsync is controlled through the AppPlatform,
// default to no vsync here, let platform set it when needed
if (SDL_GL_SetSwapInterval(0) == -1)
{
LOG_W("Adaptive V-Sync is not supported on this platform. Falling back to standard V-Sync...");
// fallback to standard
if (SDL_GL_SetSwapInterval(1) == -1)
{
LOG_W("Setting the swap interval for V-Sync is not supported on this platform!");
}
LOG_W("Setting the swap interval is not supported on this platform!");
}

if (!mce::Platform::OGL::InitBindings())
Expand Down Expand Up @@ -440,6 +435,7 @@ int main(int argc, char *argv[])
// Start MCPE
g_pAppPlatform = new UsedAppPlatform(storagePath, window);
g_pAppPlatform->m_externalStorageDir = storagePath;
g_pAppPlatform->setVSyncEnabled(true);
g_pApp = new NinecraftApp;
g_pApp->m_pPlatform = g_pAppPlatform;
g_pApp->init();
Expand Down
31 changes: 16 additions & 15 deletions platforms/windows/AppPlatform_win32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,21 +135,6 @@ void AppPlatform_win32::showDialog(eDialogType type)
m_DialogType = type;
}

std::string AppPlatform_win32::getDateString(int time)
{
time_t tt = time;
struct tm t;
// using the _s variant. For a different platform there's gmtime_r. This is not directly portable however.
gmtime_s(&t, &tt);

//format it with strftime
char buf[2048];
strftime(buf, sizeof buf, "%b %d %Y %H:%M:%S", &t);
//strftime(buf, sizeof buf, "%a %b %d %H:%M:%S %Z %Y", &t);

return std::string(buf);
}

bool AppPlatform_win32::doesTextureExist(const std::string& path) const
{
return isRegularFile(path.c_str());
Expand Down Expand Up @@ -460,6 +445,22 @@ bool AppPlatform_win32::initGraphics(int width, int height)
return true;
}

void AppPlatform_win32::setVSyncEnabled(bool enabled)
{
#if MCE_GFX_API_OGL
xglSwapIntervalEXT(enabled ? 1 : 0);
#endif
}

bool AppPlatform_win32::isVSyncSwitchable() const
{
#if MCE_GFX_API_OGL
return true;
#else
return false;
#endif
}

void AppPlatform_win32::createWindowSizeDependentResources(const Vec2& logicalSize, const Vec2& compositionScale)
{
#if MCE_GFX_API_D3D9
Expand Down
3 changes: 2 additions & 1 deletion platforms/windows/AppPlatform_win32.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ class AppPlatform_win32 : public AppPlatform
int getScreenWidth() const override { return m_ScreenWidth; }
int getScreenHeight() const override { return m_ScreenHeight; }
void showDialog(eDialogType) override;
std::string getDateString(int time) override;
bool doesTextureExist(const std::string& path) const override;

// From v0.1.1. Also add these to determine touch screen use within the game.
Expand Down Expand Up @@ -82,6 +81,8 @@ class AppPlatform_win32 : public AppPlatform
bool initGraphics(int width, int height);
void createWindowSizeDependentResources(const Vec2& logicalSize, const Vec2& compositionScale);
void swapBuffers();
void setVSyncEnabled(bool enabled) override;
bool isVSyncSwitchable() const override;

static MouseButtonType GetMouseButtonType(UINT iMsg);
static bool GetMouseButtonState(UINT iMsg, WPARAM wParam);
Expand Down
2 changes: 2 additions & 0 deletions platforms/windows/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
if (!g_AppPlatform.initGraphics(Minecraft::width, Minecraft::height))
goto _cleanup;

g_AppPlatform.setVSyncEnabled(true);

g_pApp = new NinecraftApp;
g_pApp->m_pPlatform = &g_AppPlatform;

Expand Down
15 changes: 0 additions & 15 deletions platforms/xdk360/AppPlatform_xdk360.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,21 +123,6 @@ int AppPlatform_xdk360::checkLicense()
return 1;
}

std::string AppPlatform_xdk360::getDateString(int time)
{
time_t tt = time;
struct tm t;
// using the _s variant. For a different platform there's gmtime_r. This is not directly portable however.
gmtime_s(&t, &tt);

//format it with strftime
char buf[2048];
strftime(buf, sizeof buf, "%b %d %Y %H:%M:%S", &t);
//strftime(buf, sizeof buf, "%a %b %d %H:%M:%S %Z %Y", &t);

return std::string(buf);
}

bool AppPlatform_xdk360::isTouchscreen() const
{
return false;
Expand Down
1 change: 0 additions & 1 deletion platforms/xdk360/AppPlatform_xdk360.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ class AppPlatform_xdk360 : public AppPlatform
int checkLicense() override;
int getScreenWidth() const override { return m_ScreenWidth; }
int getScreenHeight() const override { return m_ScreenHeight; }
std::string getDateString(int time) override;

// From v0.1.1. Also add these to determine touch screen use within the game.
bool isTouchscreen() const override;
Expand Down
2 changes: 2 additions & 0 deletions projects/visual-studio/Client/Client.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@
<ClInclude Include="$(MC_ROOT)\source\client\gui\ScreenChooser.hpp" />
<ClInclude Include="$(MC_ROOT)\source\client\resources\LoadingTipManager.hpp" />
<ClInclude Include="$(MC_ROOT)\source\client\resources\SplashManager.hpp" />
<ClInclude Include="$(MC_ROOT)\source\client\gui\screens\inventory\FurnaceScreen.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(MC_ROOT)\source\client\app\App.cpp" />
Expand Down Expand Up @@ -434,6 +435,7 @@
<ClCompile Include="$(MC_ROOT)\source\client\gui\ScreenChooser.cpp" />
<ClCompile Include="$(MC_ROOT)\source\client\resources\LoadingTipManager.cpp" />
<ClCompile Include="$(MC_ROOT)\source\client\resources\SplashManager.cpp" />
<ClCompile Include="$(MC_ROOT)\source\client\gui\screens\inventory\FurnaceScreen.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common\Common.vcxproj">
Expand Down
6 changes: 6 additions & 0 deletions projects/visual-studio/Client/Client.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,9 @@
<ClInclude Include="$(MC_ROOT)\source\client\gui\screens\inventory\ClassicCraftingScreen_Console.hpp">
<Filter>Header Files\GUI\Screens\Inventory</Filter>
</ClInclude>
<ClInclude Include="$(MC_ROOT)\source\client\gui\screens\inventory\FurnaceScreen.hpp">
<Filter>Header Files\GUI\Screens\Inventory</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(MC_ROOT)\source\client\gui\components\AvailableGamesList.cpp">
Expand Down Expand Up @@ -1204,5 +1207,8 @@
<ClCompile Include="$(MC_ROOT)\source\client\gui\screens\inventory\ClassicCraftingScreen_Console.cpp">
<Filter>Source Files\GUI\Screens\Inventory</Filter>
</ClCompile>
<ClCompile Include="$(MC_ROOT)\source\client\gui\screens\inventory\FurnaceScreen.cpp">
<Filter>Source Files\GUI\Screens\Inventory</Filter>
</ClCompile>
</ItemGroup>
</Project>
38 changes: 33 additions & 5 deletions projects/visual-studio/World/World.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -203,15 +203,15 @@
<ClCompile Include="$(MC_ROOT)\source\world\entity\Zombie.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\entity\EntityFactory.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\level\levelgen\chunk\DataLayer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\ContainerListener.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ContainerListener.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ContainerMenu.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\Slot.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ArmorSlot.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\CraftingContainer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\InventoryMenu.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ResultContainer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ResultSlot.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\CompoundContainer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\CompoundContainer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\SimpleContainer.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ChestMenu.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\item\DyeColor.cpp" />
Expand All @@ -230,6 +230,21 @@
<ClCompile Include="$(MC_ROOT)\source\world\item\WeaponItem.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\item\DyePowderItem.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\item\CoalItem.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\Facing.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\FurnaceMenu.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\FurnaceResultSlot.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\particle\NoteParticle.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\ChestTile.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\EntityTile.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\entity\ChestTileEntity.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\entity\FurnaceTileEntity.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\entity\MusicTileEntity.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\entity\TileEntity.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\entity\TileEntityType.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\FurnaceTile.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\tile\MusicTile.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ContainerContentChangeListener.cpp" />
<ClCompile Include="$(MC_ROOT)\source\world\inventory\ContainerSizeChangeListener.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(MC_ROOT)\source\world\entity\Entity.hpp" />
Expand Down Expand Up @@ -373,16 +388,16 @@
<ClInclude Include="$(MC_ROOT)\source\world\level\levelgen\chunk\DataLayer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\level\TileChange.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\level\LevelEvent.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\Container.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\ContainerListener.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\Container.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ContainerListener.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ContainerMenu.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\Slot.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ArmorSlot.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\CraftingContainer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\InventoryMenu.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ResultContainer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ResultSlot.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\CompoundContainer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\CompoundContainer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\SimpleContainer.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ChestMenu.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\item\DyeColor.hpp" />
Expand All @@ -400,6 +415,19 @@
<ClInclude Include="$(MC_ROOT)\source\world\item\WeaponItem.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\item\DyePowderItem.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\item\CoalItem.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\FurnaceMenu.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\FurnaceResultSlot.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\ChestTile.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\EntityTile.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\entity\ChestTileEntity.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\entity\FurnaceTileEntity.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\entity\MusicTileEntity.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\entity\TileEntity.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\entity\TileEntityType.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\FurnaceTile.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\tile\MusicTile.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ContainerContentChangeListener.hpp" />
<ClInclude Include="$(MC_ROOT)\source\world\inventory\ContainerSizeChangeListener.hpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NBT\NBT.vcxproj">
Expand Down
Loading
Loading