Merge branch 'main' into dec-2014

# Conflicts:
#	Minecraft.Client/Common/Consoles_App.cpp
#	Minecraft.World/TickNextTickData.h
This commit is contained in:
Loki Rautio 2026-03-02 02:06:35 -06:00
commit 0d9104ac70
29 changed files with 1614 additions and 229 deletions

View file

Before

Width:  |  Height:  |  Size: 952 KiB

After

Width:  |  Height:  |  Size: 952 KiB

View file

@ -1,72 +0,0 @@
name: "Bug Report"
description: "Report a bug to help us improve MinecraftConsoles"
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
**Thanks for taking the time to report a bug!**
Please ensure you are using the latest version of the repository and have followed the build instructions in the README.
- type: textarea
id: description
attributes:
label: Description
description: "A clear and concise description of what the bug is."
placeholder: "Describe what happened..."
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: "How can we reproduce this bug?"
placeholder: |
1. Open MinecraftConsoles.sln
2. Set configuration to ...
3. Run the project
4. Do ...
validations:
required: true
- type: textarea
id: expected-actual
attributes:
label: Expected vs. Actual Behavior
description: "What did you expect to happen, and what actually happened?"
validations:
required: true
- type: dropdown
id: build-config
attributes:
label: Build Configuration
description: "Which configuration were you using?"
options:
- Debug
- Release
validations:
required: true
- type: dropdown
id: target-platform
attributes:
label: Target Platform
description: "Which platform were you targeting?"
options:
- Windows64
- Other (please specify in context)
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment Details
description: "e.g., Visual Studio version, Windows version, Hardware specs."
placeholder: "Visual Studio 2022 v17.x, Windows 11..."
validations:
required: false
- type: textarea
id: context
attributes:
label: Additional Context
description: "Add any other context, screenshots, or logs here."
validations:
required: false

View file

@ -1 +0,0 @@
blank_issues_enabled: false

View file

@ -1,46 +0,0 @@
---
name: Feature Request
description: Suggest an idea to help us improve MinecraftConsoles
title: "[Feature]: "
labels:
- "enhancement"
body:
- type: markdown
attributes:
value: |
**Thanks for taking the time to fill out this feature request report!**
We kindly ask that you search to see if an issue [already exists](https://github.com/smartcmd/MinecraftConsoles/issues) for your feature.
- type: textarea
attributes:
label: Description
description: |
A clear and concise description of the feature you're interested in.
validations:
required: true
- type: textarea
attributes:
label: Suggested Solution
description: |
Describe the solution you'd like. A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Alternatives
description: |
Describe alternatives you've considered.
A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
attributes:
label: Additional Context
description: |
Add any other context about the problem here.
validations:
required: false

31
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: Build Minecraft Legacy Console Edition
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-2022
strategy:
matrix:
configuration: [Release, Debug]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Build Minecraft Legacy Console Edition
run: |
msbuild MinecraftConsoles.sln `
/p:Configuration=${{ matrix.configuration }} `
/p:Platform=Windows64 `
/m
- name: Upload Release + Debug Artifacts
uses: actions/upload-artifact@v4
with:
name: MinecraftClient-${{ matrix.configuration }}
path: x64/${{ matrix.configuration }}

35
.github/workflows/nightly.yml vendored Normal file
View file

@ -0,0 +1,35 @@
name: Nightly Release
on:
workflow_dispatch:
push:
branches:
- 'main'
jobs:
build:
name: Build Windows64
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup msbuild
uses: microsoft/setup-msbuild@v2
- name: Build
run: MSBuild.exe MinecraftConsoles.sln /p:Configuration=Release /p:Platform="Windows64"
- name: Zip Build
run: 7z a -r LCEWindows64.zip ./x64/Release/*
- name: Update release
uses: andelf/nightly-release@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: nightly
name: Nightly Release
files: LCEWindows64.zip

2
.gitignore vendored
View file

@ -422,3 +422,5 @@ Minecraft.World/Debug/
Minecraft.World/x64_Debug/ Minecraft.World/x64_Debug/
Minecraft.World/Release/ Minecraft.World/Release/
Minecraft.World/x64_Release/ Minecraft.World/x64_Release/
build/*

82
CMakeLists.txt Normal file
View file

@ -0,0 +1,82 @@
cmake_minimum_required(VERSION 3.24)
project(MinecraftConsoles LANGUAGES C CXX)
if(NOT WIN32)
message(FATAL_ERROR "This CMake build currently supports Windows only.")
endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(FATAL_ERROR "Use a 64-bit generator/toolchain (x64).")
endif()
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/WorldSources.cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/ClientSources.cmake")
list(TRANSFORM MINECRAFT_WORLD_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/")
list(TRANSFORM MINECRAFT_CLIENT_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/")
add_library(MinecraftWorld STATIC ${MINECRAFT_WORLD_SOURCES})
target_include_directories(MinecraftWorld PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/x64headers"
)
target_compile_definitions(MinecraftWorld PRIVATE
$<$<CONFIG:Debug>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64>
$<$<NOT:$<CONFIG:Debug>>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64>
)
if(MSVC)
target_compile_options(MinecraftWorld PRIVATE /W3 /MP /EHsc)
endif()
add_executable(MinecraftClient WIN32 ${MINECRAFT_CLIENT_SOURCES})
target_include_directories(MinecraftClient PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/include"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Xbox/Sentient/Include"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/x64headers"
)
target_compile_definitions(MinecraftClient PRIVATE
$<$<CONFIG:Debug>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64>
$<$<NOT:$<CONFIG:Debug>>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64>
)
if(MSVC)
target_compile_options(MinecraftClient PRIVATE /W3 /MP /EHsc)
endif()
set_target_properties(MinecraftClient PROPERTIES
VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:MinecraftClient>"
)
target_link_libraries(MinecraftClient PRIVATE
MinecraftWorld
d3d11
XInput9_1_0
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggy_w64.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Miles/lib/mss64.lib"
$<$<CONFIG:Debug>:
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Input_d.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Storage_d.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Profile_d.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Render_PC_d.lib"
>
$<$<NOT:$<CONFIG:Debug>>:
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Input_r.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Storage_r.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Profile_r.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Render_PC.lib"
>
)
add_custom_command(TARGET MinecraftClient POST_BUILD
COMMAND "${CMAKE_COMMAND}"
-DPROJECT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
-DOUTPUT_DIR="$<TARGET_FILE_DIR:MinecraftClient>"
-DCONFIGURATION=$<CONFIG>
-P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyAssets.cmake"
VERBATIM
)
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)

45
Compile.md Normal file
View file

@ -0,0 +1,45 @@
# Compile Instructions
## Visual Studio (`.sln`)
1. Open `MinecraftConsoles.sln` in Visual Studio 2022.
2. Set `Minecraft.Client` as the Startup Project.
3. Select configuration:
- `Debug` (recommended), or
- `Release`
4. Select platform: `Windows64`.
5. Build and run:
- `Build > Build Solution` (or `Ctrl+Shift+B`)
- Start debugging with `F5`.
## CMake (Windows x64)
Configure (use your VS Community instance explicitly):
```powershell
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_GENERATOR_INSTANCE="C:/Program Files/Microsoft Visual Studio/2022/Community"
```
Build Debug:
```powershell
cmake --build build --config Debug --target MinecraftClient
```
Build Release:
```powershell
cmake --build build --config Release --target MinecraftClient
```
Run executable:
```powershell
cd .\build\Debug
.\MinecraftClient.exe
```
Notes:
- The CMake build is Windows-only and x64-only.
- Post-build asset copy is automatic for `MinecraftClient` in CMake (Debug and Release variants).
- The game relies on relative paths (for example `Common\Media\...`), so launching from the output directory is required.

View file

@ -56,7 +56,7 @@ void SoundEngine::playMusicTick() {};
#else #else
#ifdef _WINDOWS64 #ifdef _WINDOWS64
char SoundEngine::m_szSoundPath[]={"Windows64Media\\Sound\\"}; char SoundEngine::m_szSoundPath[]={"Windows64\\Sound\\"};
char SoundEngine::m_szMusicPath[]={"music\\"}; char SoundEngine::m_szMusicPath[]={"music\\"};
char SoundEngine::m_szRedistName[]={"redist64"}; char SoundEngine::m_szRedistName[]={"redist64"};
#elif defined _DURANGO #elif defined _DURANGO

View file

@ -1,6 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include "ConsoleGameMode.h" #include "ConsoleGameMode.h"
#include "..\Common\Tutorial\Tutorial.h" #include ".\Tutorial\Tutorial.h"
ConsoleGameMode::ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection) ConsoleGameMode::ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection)
: TutorialMode(iPad, minecraft, connection) : TutorialMode(iPad, minecraft, connection)

View file

@ -1,5 +1,5 @@
#pragma once #pragma once
#include "..\Common\Tutorial\TutorialMode.h" #include ".\Tutorial\TutorialMode.h"
class ConsoleGameMode : public TutorialMode class ConsoleGameMode : public TutorialMode
{ {

View file

@ -16,6 +16,14 @@
#include "..\Minecraft.h" #include "..\Minecraft.h"
#include "..\ClientConnection.h" #include "..\ClientConnection.h"
#include "..\MultiPlayerLocalPlayer.h" #include "..\MultiPlayerLocalPlayer.h"
#include "..\LocalPlayer.h"
#include "..\..\Minecraft.World\Player.h"
#include "..\..\Minecraft.World\Inventory.h"
#include "..\..\Minecraft.World\Level.h"
#include "..\..\Minecraft.World\FurnaceTileEntity.h"
#include "..\..\Minecraft.World\Container.h"
#include "..\..\Minecraft.World\DispenserTileEntity.h"
#include "..\..\Minecraft.World\SignTileEntity.h"
#include "..\StatsCounter.h" #include "..\StatsCounter.h"
#include "..\GameMode.h" #include "..\GameMode.h"
#include "..\Xbox\Social\SocialManager.h" #include "..\Xbox\Social\SocialManager.h"
@ -30,7 +38,10 @@
#include "GameRules\ConsoleGameRules.h" #include "GameRules\ConsoleGameRules.h"
#include "GameRules\ConsoleSchematicFile.h" #include "GameRules\ConsoleSchematicFile.h"
#include "..\User.h" #include "..\User.h"
#include "..\\EntityRenderDispatcher.h" #include "..\..\Minecraft.World\LevelData.h"
#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h"
#include "..\EntityRenderDispatcher.h"
#include "..\..\Minecraft.World\compression.h"
#include "..\TexturePackRepository.h" #include "..\TexturePackRepository.h"
#include "..\DLCTexturePack.h" #include "..\DLCTexturePack.h"
#include "DLC\DLCPack.h" #include "DLC\DLCPack.h"

View file

@ -5,11 +5,11 @@ using namespace std;
#include "Audio/Consoles_SoundEngine.h" #include "Audio/Consoles_SoundEngine.h"
#include <xuiapp.h> #include <xuiapp.h>
#include "..\Common\Tutorial\TutorialEnum.h" #include ".\Tutorial\TutorialEnum.h"
#ifdef _XBOX #ifdef _XBOX
#include "..\Common\XUI\XUI_Helper.h" #include ".\XUI\XUI_Helper.h"
#include "..\Common\XUI\XUI_HelpCredits.h" #include ".\XUI\XUI_HelpCredits.h"
#endif #endif
#include "UI\UIStructs.h" #include "UI\UIStructs.h"
@ -17,9 +17,9 @@ using namespace std;
#include <xsocialpost.h> #include <xsocialpost.h>
#include "..\StringTable.h" #include "..\StringTable.h"
#include "..\Common\DLC\DLCManager.h" #include ".\DLC\DLCManager.h"
#include "..\Common\GameRules\ConsoleGameRulesConstants.h" #include ".\GameRules\ConsoleGameRulesConstants.h"
#include "..\Common\GameRules\GameRuleManager.h" #include ".\GameRules\GameRuleManager.h"
#include "..\SkinBox.h" #include "..\SkinBox.h"
#include "..\ArchiveFile.h" #include "..\ArchiveFile.h"

View file

@ -7,6 +7,7 @@
#include "TutorialConstraints.h" #include "TutorialConstraints.h"
#include "ChoiceTask.h" #include "ChoiceTask.h"
#include "..\..\..\Minecraft.World\Material.h" #include "..\..\..\Minecraft.World\Material.h"
#include "..\..\Windows64\KeyboardMouseInput.h"
ChoiceTask::ChoiceTask(Tutorial *tutorial, int descriptionId, int promptId /*= -1*/, bool requiresUserInput /*= false*/, ChoiceTask::ChoiceTask(Tutorial *tutorial, int descriptionId, int promptId /*= -1*/, bool requiresUserInput /*= false*/,
int iConfirmMapping /*= 0*/, int iCancelMapping /*= 0*/, int iConfirmMapping /*= 0*/, int iCancelMapping /*= 0*/,
@ -51,11 +52,11 @@ bool ChoiceTask::isCompleted()
// If the player is under water then allow all keypresses so they can jump out // If the player is under water then allow all keypresses so they can jump out
if( pMinecraft->localplayers[tutorial->getPad()]->isUnderLiquid(Material::water) ) return false; if( pMinecraft->localplayers[tutorial->getPad()]->isUnderLiquid(Material::water) ) return false;
if(!m_bConfirmMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iConfirmMapping) > 0 ) if(!m_bConfirmMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iConfirmMapping) > 0 || KMInput.IsKeyDown(VK_RETURN))
{ {
m_bConfirmMappingComplete = true; m_bConfirmMappingComplete = true;
} }
if(!m_bCancelMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iCancelMapping) > 0 ) if(!m_bCancelMappingComplete && InputManager.GetValue(pMinecraft->player->GetXboxPad(), m_iCancelMapping) > 0 || KMInput.IsKeyDown('B'))
{ {
m_bCancelMappingComplete = true; m_bCancelMappingComplete = true;
} }

View file

@ -360,6 +360,9 @@ void UIScene_MainMenu::handlePress(F64 controlId, F64 childId)
signInReturnedFunc = &UIScene_MainMenu::UnlockFullGame_SignInReturned; signInReturnedFunc = &UIScene_MainMenu::UnlockFullGame_SignInReturned;
break; break;
case eControl_Exit: case eControl_Exit:
//CD - Added for audio
ui.PlayUISFX(eSFX_Press);
if( ProfileManager.IsFullVersion() ) if( ProfileManager.IsFullVersion() )
{ {
UINT uiIDA[2]; UINT uiIDA[2];

View file

@ -1606,15 +1606,24 @@ xcopy /q /y /i /s /e $(ProjectDir)DurangoMedia\CU $(LayoutDir)Image\Loose\CU</C
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Message>Copying game assets to output directory</Message> <Message>Copying game assets to output directory</Message>
<Command>xcopy /q /y /i /s /e "$(ProjectDir)music" "$(OutDir)music" <Command>mkdir "$(OutDir)music" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Windows64\GameHDD" "$(OutDir)Windows64\GameHDD" mkdir "$(OutDir)Windows64\GameHDD" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Common\Media" "$(OutDir)Common\Media" mkdir "$(OutDir)Common\Media" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Common\res" "$(OutDir)Common\res" mkdir "$(OutDir)Common\res" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Common\Trial" "$(OutDir)Common\Trial" mkdir "$(OutDir)Common\Trial" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Common\Tutorial" "$(OutDir)Common\Tutorial" mkdir "$(OutDir)Common\Tutorial" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)DurangoMedia" "$(OutDir)Windows64Media" mkdir "$(OutDir)Windows64Media" 2&gt;nul
xcopy /q /y /i /s /e "$(ProjectDir)Windows64Media" "$(OutDir)Windows64Media"
mkdir "$(OutDir)Windows64\GameHDD" 2&gt;nul</Command> xcopy /q /y /i /s /e "$(ProjectDir)music" "$(OutDir)music" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Windows64\GameHDD" "$(OutDir)Windows64\GameHDD" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Common\Media" "$(OutDir)Common\Media" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Common\res" "$(OutDir)Common\res" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Common\Trial" "$(OutDir)Common\Trial" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Common\Tutorial" "$(OutDir)Common\Tutorial" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)DurangoMedia" "$(OutDir)Windows64Media" || exit /b 0
xcopy /q /y /i /s /e "$(ProjectDir)Windows64Media" "$(OutDir)Windows64Media" || exit /b 0
exit /b 0</Command>
</PostBuildEvent> </PostBuildEvent>
<ImageXex> <ImageXex>
<ConfigurationFile>$(ProjectDir)xbox\xex-dev.xml</ConfigurationFile> <ConfigurationFile>$(ProjectDir)xbox\xex-dev.xml</ConfigurationFile>

Binary file not shown.

View file

@ -716,6 +716,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(lpCmdLine);
/*
// Declare DPI awareness so GetSystemMetrics returns physical pixels // Declare DPI awareness so GetSystemMetrics returns physical pixels
SetProcessDPIAware(); SetProcessDPIAware();
g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN); g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
@ -726,6 +727,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
sprintf(buf, "Screen resolution: %dx%d\n", g_iScreenWidth, g_iScreenHeight); sprintf(buf, "Screen resolution: %dx%d\n", g_iScreenWidth, g_iScreenHeight);
OutputDebugStringA(buf); OutputDebugStringA(buf);
} }
*/
if(lpCmdLine) if(lpCmdLine)
{ {
@ -1220,6 +1223,17 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
ToggleFullscreen(); ToggleFullscreen();
} }
// TAB opens host options menu. - Vvis :3
if (KMInput.IsKeyPressed(VK_TAB))
{
if (Minecraft* pMinecraft = Minecraft::GetInstance())
{
{
ui.NavigateToScene(0, eUIScene_InGameHostOptionsMenu);
}
}
}
#if 0 #if 0
// has the game defined profile data been changed (by a profile load) // has the game defined profile data been changed (by a profile load)
if(app.uiGameDefinedDataChangedBitmask!=0) if(app.uiGameDefinedDataChangedBitmask!=0)

View file

@ -12,13 +12,13 @@
const wchar_t File::pathSeparator = L'\\'; const wchar_t File::pathSeparator = L'\\';
#ifdef _XBOX #ifdef _XBOX
const wstring File::pathRoot = L"GAME:"; // Path root after pathSeparator has been removed const std::wstring File::pathRoot = L"GAME:"; // Path root after pathSeparator has been removed
#else #else
const wstring File::pathRoot = L""; // Path root after pathSeparator has been removed const std::wstring File::pathRoot = L""; // Path root after pathSeparator has been removed
#endif #endif
//Creates a new File instance from a parent abstract pathname and a child pathname string. //Creates a new File instance from a parent abstract pathname and a child pathname string.
File::File( const File &parent, const wstring& child ) File::File( const File &parent, const std::wstring& child )
{ {
m_abstractPathName = parent.getPath() + pathSeparator + child; m_abstractPathName = parent.getPath() + pathSeparator + child;
} }
@ -67,7 +67,7 @@ File::File( const wstring& pathname ) //: parent( NULL )
*/ */
} }
File::File( const wstring& parent, const wstring& child ) //: m_abstractPathName( child ) File::File( const std::wstring& parent, const std::wstring& child ) //: m_abstractPathName( child )
{ {
m_abstractPathName = pathRoot + pathSeparator + parent + pathSeparator + child; m_abstractPathName = pathRoot + pathSeparator + parent + pathSeparator + child;
//this->parent = new File( parent ); //this->parent = new File( parent );
@ -149,9 +149,9 @@ bool File::mkdir() const
// //
bool File::mkdirs() const bool File::mkdirs() const
{ {
vector<wstring> path = stringSplit( m_abstractPathName, pathSeparator ); std::vector<std::wstring> path = stringSplit( m_abstractPathName, pathSeparator );
wstring pathToHere = L""; std::wstring pathToHere = L"";
AUTO_VAR(itEnd, path.end()); AUTO_VAR(itEnd, path.end());
for( AUTO_VAR(it, path.begin()); it != itEnd; it++ ) for( AUTO_VAR(it, path.begin()); it != itEnd; it++ )
{ {
@ -237,7 +237,7 @@ bool File::renameTo(File dest)
// 4J Stu - The wstringtofilename function returns a pointer to the same location in memory every time it is // 4J Stu - The wstringtofilename function returns a pointer to the same location in memory every time it is
// called, therefore we were getting sourcePath and destPath having the same value. The solution here is to // called, therefore we were getting sourcePath and destPath having the same value. The solution here is to
// make a copy of the sourcePath by storing it in a std::string // make a copy of the sourcePath by storing it in a std::string
string sourcePath = wstringtofilename(getPath()); std::string sourcePath = wstringtofilename(getPath());
const char *destPath = wstringtofilename(dest.getPath()); const char *destPath = wstringtofilename(dest.getPath());
#ifdef _DURANGO #ifdef _DURANGO
__debugbreak(); // TODO __debugbreak(); // TODO
@ -272,9 +272,9 @@ bool File::renameTo(File dest)
//An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. //An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname.
//The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, //The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory,
//or if an I/O error occurs. //or if an I/O error occurs.
vector<File *> *File::listFiles() const std::vector<File *> *File::listFiles() const
{ {
vector<File *> *vOutput = new vector<File *>(); std::vector<File *> *vOutput = new vector<File *>();
// TODO 4J Stu - Also need to check for I/O errors? // TODO 4J Stu - Also need to check for I/O errors?
if( !isDirectory() ) if( !isDirectory() )
@ -386,8 +386,8 @@ vector<File *> *File::listFiles() const
FindClose( hFind); FindClose( hFind);
} }
#else #else
char path[MAX_PATH]; char path[MAX_PATH] {};
sprintf( path, "%s\\*", wstringtofilename( getPath() ) ); snprintf( path, MAX_PATH, "%s\\*", wstringtofilename( getPath() ) );
HANDLE hFind = FindFirstFile( path, &wfd); HANDLE hFind = FindFirstFile( path, &wfd);
if(hFind != INVALID_HANDLE_VALUE) if(hFind != INVALID_HANDLE_VALUE)
{ {
@ -415,13 +415,13 @@ vector<File *> *File::listFiles() const
//Returns: //Returns:
//An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. //An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname.
//The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs. //The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.
vector<File *> *File::listFiles(FileFilter *filter) const std::vector<File *> *File::listFiles(FileFilter *filter) const
{ {
// TODO 4J Stu - Also need to check for I/O errors? // TODO 4J Stu - Also need to check for I/O errors?
if( !isDirectory() ) if( !isDirectory() )
return NULL; return NULL;
vector<File *> *vOutput = new vector<File *>(); std::vector<File *> *vOutput = new std::vector<File *>();
#ifdef __PS3__ #ifdef __PS3__
const char *lpFileName=wstringtofilename(getPath()); const char *lpFileName=wstringtofilename(getPath());
@ -521,7 +521,7 @@ bool File::isDirectory() const
//Returns the length of the file denoted by this abstract pathname. The return value is unspecified if this pathname denotes a directory. //Returns the length of the file denoted by this abstract pathname. The return value is unspecified if this pathname denotes a directory.
//Returns: //Returns:
//The length, in bytes, of the file denoted by this abstract pathname, or 0L if the file does not exist //The length, in bytes, of the file denoted by this abstract pathname, or 0L if the file does not exist
__int64 File::length() int64_t File::length()
{ {
#ifdef __PS3__ #ifdef __PS3__
//extern const char* getPS3HomePath(); //extern const char* getPS3HomePath();
@ -624,7 +624,7 @@ __int64 File::length()
//Returns: //Returns:
//A long value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), //A long value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970),
//or 0L if the file does not exist or if an I/O error occurs //or 0L if the file does not exist or if an I/O error occurs
__int64 File::lastModified() int64_t File::lastModified()
{ {
WIN32_FILE_ATTRIBUTE_DATA fileInfoBuffer; WIN32_FILE_ATTRIBUTE_DATA fileInfoBuffer;
#ifdef _UNICODE #ifdef _UNICODE
@ -657,7 +657,7 @@ __int64 File::lastModified()
} }
} }
const wstring File::getPath() const const std::wstring File::getPath() const
{ {
/* /*
wstring path; wstring path;
@ -672,7 +672,7 @@ const wstring File::getPath() const
return m_abstractPathName; return m_abstractPathName;
} }
wstring File::getName() const std::wstring File::getName() const
{ {
unsigned int sep = (unsigned int )(m_abstractPathName.find_last_of( this->pathSeparator )); unsigned int sep = (unsigned int )(m_abstractPathName.find_last_of( this->pathSeparator ));
return m_abstractPathName.substr( sep + 1, m_abstractPathName.length() ); return m_abstractPathName.substr( sep + 1, m_abstractPathName.length() );
@ -700,3 +700,9 @@ int File::hash_fnct(const File &k)
return (int) hashCode; return (int) hashCode;
} }
int FileKeyHash::operator() (const File &k) const
{ return File::hash_fnct(k); }
bool FileKeyEq::operator() (const File &x, const File &y) const
{ return File::eq_test(x,y); }

View file

@ -1,5 +1,9 @@
#pragma once #pragma once
using namespace std;
#include <cstdint>
#include <vector>
#include <string>
// 4J Stu - Represents java standard library class // 4J Stu - Represents java standard library class
class FileFilter; class FileFilter;
@ -24,11 +28,11 @@ public:
bool exists() const; bool exists() const;
bool isFile() const; bool isFile() const;
bool renameTo(File dest); bool renameTo(File dest);
vector<File *> *listFiles() const; // Array std::vector<File *> *listFiles() const; // Array
vector<File *> *listFiles(FileFilter *filter) const; std::vector<File *> *listFiles(FileFilter *filter) const;
bool isDirectory() const; bool isDirectory() const;
__int64 length(); int64_t length();
__int64 lastModified(); int64_t lastModified();
const wstring getPath() const; // 4J Jev: TODO const wstring getPath() const; // 4J Jev: TODO
wstring getName() const; wstring getName() const;
@ -43,14 +47,12 @@ private:
//File(vector<wstring> *path); //File(vector<wstring> *path);
}; };
typedef struct struct FileKeyHash
{ {
int operator() (const File &k) const { return File::hash_fnct(k); } int operator() (const File &k) const;
};
} FileKeyHash; struct FileKeyEq
typedef struct
{ {
bool operator() (const File &x, const File &y) const {return File::eq_test(x,y); } bool operator() (const File &x, const File &y) const;
};
} FileKeyEq;

View file

@ -1,13 +1,15 @@
#pragma once #pragma once
#include <cstdint>
// Java doesn't have a default hash value for ints, however, the hashmap itself does some "supplemental" hashing, so // Java doesn't have a default hash value for ints, however, the hashmap itself does some "supplemental" hashing, so
// our ints actually get hashed by code as implemented below. std templates *do* have a standard hash for ints, but it // our ints actually get hashed by code as implemented below. std templates *do* have a standard hash for ints, but it
// would appear to be a bit expensive so matching the java one for now anyway. This code implements the supplemental // would appear to be a bit expensive so matching the java one for now anyway. This code implements the supplemental
// hashing that happens in java so we can match what their maps are doing with ints. // hashing that happens in java so we can match what their maps are doing with ints.
typedef struct struct IntKeyHash
{ {
int operator() (const int &k) const inline int operator()(const int &k) const
{ {
int h = k; int h = k;
h += ~(h << 9); h += ~(h << 9);
@ -16,62 +18,64 @@ typedef struct
h ^= (((unsigned int)h) >> 10); h ^= (((unsigned int)h) >> 10);
return h; return h;
} }
};
} IntKeyHash; struct IntKeyEq
typedef struct
{ {
bool operator() (const int &x, const int &y) const { return x==y; } inline bool operator()(const int &x, const int &y) const
} IntKeyEq; { return x==y; }
};
// This hash functor is taken from the IntHashMap java class used by the game, so that we can use a standard std hashmap with this hash rather // This hash functor is taken from the IntHashMap java class used by the game, so that we can use a standard std hashmap with this hash rather
// than implement the class itself // than implement the class itself
typedef struct struct IntKeyHash2
{ {
int operator() (const int &k) const inline int operator()(const int &k) const
{ {
unsigned int h = (unsigned int)k; unsigned int h = static_cast<unsigned int>(k);
h ^= (h >> 20) ^ (h >> 12); h ^= (h >> 20) ^ (h >> 12);
return (int)(h ^ (h >> 7) ^ (h >> 4)); return static_cast<int>(h ^ (h >> 7) ^ (h >> 4));
} }
} IntKeyHash2; };
// This hash functor is taken from the LongHashMap java class used by the game, so that we can use a standard std hashmap with this hash rather // This hash functor is taken from the LongHashMap java class used by the game, so that we can use a standard std hashmap with this hash rather
// than implement the class itself // than implement the class itself
typedef struct struct LongKeyHash
{ {
int hash(const int &k) const inline int hash(const int &k) const
{ {
unsigned int h = (unsigned int)k; unsigned int h = static_cast<unsigned int>(k);
h ^= (h >> 20) ^ (h >> 12); h ^= (h >> 20) ^ (h >> 12);
return (int)(h ^ (h >> 7) ^ (h >> 4)); return static_cast<int>(h ^ (h >> 7) ^ (h >> 4));
} }
int operator() (const __int64 &k) const inline int operator()(const int64_t &k) const
{ {
return hash((int) ( k ^ (((__uint64)k) >> 32 ))); return hash(static_cast<int>(k ^ ((static_cast<uint64_t>(k)) >> 32)));
} }
} LongKeyHash; };
typedef struct struct LongKeyEq
{ {
bool operator() (const __int64 &x, const __int64 &y) const { return x==y; } inline bool operator() (const int64_t &x, const int64_t &y) const
} LongKeyEq; { return x == y; }
};
typedef struct enum eINSTANCEOF;
struct eINSTANCEOFKeyHash
{ {
int operator()(const eINSTANCEOF &k) const int operator()(const eINSTANCEOF &k) const
{ {
unsigned int h = (unsigned int)k; unsigned int h = static_cast<unsigned int>(k);
h ^= (h >> 20) ^ (h >> 12); h ^= (h >> 20) ^ (h >> 12);
return (int)(h ^ (h >> 7) ^ (h >> 4)); return static_cast<int>(h ^ (h >> 7) ^ (h >> 4));
} }
} eINSTANCEOFKeyHash; };
typedef struct struct eINSTANCEOFKeyEq
{ {
bool operator() (const eINSTANCEOF &x, const eINSTANCEOF &y) const { return x==y; } inline bool operator()(const eINSTANCEOF &x, const eINSTANCEOF &y) const
} eINSTANCEOFKeyEq; { return x == y; }
};

View file

@ -542,13 +542,15 @@ private:
#endif #endif
}; };
typedef struct struct PlayerKeyHash
{ {
int operator() (const shared_ptr<Player> k) const { return Player::hash_fnct (k); } inline int operator() (const shared_ptr<Player> k) const
{ return Player::hash_fnct (k); }
};
} PlayerKeyHash; struct PlayerKeyEq
typedef struct
{ {
bool operator() (const shared_ptr<Player> x, const shared_ptr<Player> y) const { return Player::eq_test (x, y); } inline bool operator() (const shared_ptr<Player> x, const shared_ptr<Player> y) const
} PlayerKeyEq; { return Player::eq_test (x, y); }
};

View file

@ -2,7 +2,7 @@
#include "net.minecraft.world.level.tile.h" #include "net.minecraft.world.level.tile.h"
#include "TickNextTickData.h" #include "TickNextTickData.h"
__int64 TickNextTickData::C = 0; int64_t TickNextTickData::C = 0;
TickNextTickData::TickNextTickData(int x, int y, int z, int tileId) TickNextTickData::TickNextTickData(int x, int y, int z, int tileId)
{ {
@ -34,7 +34,7 @@ int TickNextTickData::hashCode() const
return (((x * 1024 * 1024) + (z * 1024) + y) * 256); return (((x * 1024 * 1024) + (z * 1024) + y) * 256);
} }
TickNextTickData *TickNextTickData::delay(__int64 l) TickNextTickData *TickNextTickData::delay(int64_t l)
{ {
m_delay = l; m_delay = l;
return this; return this;

View file

@ -1,12 +1,14 @@
#pragma once #pragma once
#include <cstdint>
// 4J Stu - In Java TickNextTickData implements Comparable<TickNextTickData> // 4J Stu - In Java TickNextTickData implements Comparable<TickNextTickData>
// We don't need to do that as it is only as helper for the java sdk sorting operations // We don't need to do that as it is only as helper for the java sdk sorting operations
class TickNextTickData class TickNextTickData
{ {
private: private:
static __int64 C; static int64_t C;
public: public:
int x, y, z, tileId; int x, y, z, tileId;
@ -14,7 +16,7 @@ public:
int priorityTilt; int priorityTilt;
private: private:
__int64 c; int64_t c;
public: public:
TickNextTickData(int x, int y, int z, int tileId); TickNextTickData(int x, int y, int z, int tileId);
@ -31,19 +33,21 @@ public:
bool operator==(const TickNextTickData &k); bool operator==(const TickNextTickData &k);
}; };
typedef struct struct TickNextTickDataKeyHash
{ {
int operator() (const TickNextTickData &k) const { return TickNextTickData::hash_fnct (k); } int operator() (const TickNextTickData &k) const
{ return TickNextTickData::hash_fnct (k); }
};
} TickNextTickDataKeyHash; struct TickNextTickDataKeyEq
typedef struct
{ {
bool operator() (const TickNextTickData &x, const TickNextTickData &y) const { return TickNextTickData::eq_test (x, y); } bool operator() (const TickNextTickData &x, const TickNextTickData &y) const
} TickNextTickDataKeyEq; { return TickNextTickData::eq_test (x, y); }
};
typedef struct struct TickNextTickDataKeyCompare
{ {
bool operator() (const TickNextTickData &x, const TickNextTickData &y) const { return TickNextTickData::compare_fnct (x, y); } bool operator() (const TickNextTickData &x, const TickNextTickData &y) const
{ return TickNextTickData::compare_fnct (x, y); }
} TickNextTickDataKeyCompare; };

View file

@ -2,7 +2,7 @@
[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/5CSzhc9t) [![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/5CSzhc9t)
![img.png](img.png) ![img.png](.github/IMG_8725.png)
## Introduction ## Introduction
@ -22,16 +22,19 @@ This project contains the source code of Minecraft Legacy Console Edition v1.3.0
- **Movement**: `W` `A` `S` `D` - **Movement**: `W` `A` `S` `D`
- **Jump / Fly (Up)**: `Space` - **Jump / Fly (Up)**: `Space`
- **Sneak / Fly (Down)**: `Shift` (Hold) - **Sneak / Fly (Down)**: `Shift` (Hold)
- **Sprint**: `Ctrl` (Hold) - **Sprint**: `Ctrl` (Hold) or Double-tap `W`
- **Inventory**: `E` - **Inventory**: `E`
- **Drop Item**: `Q` - **Drop Item**: `Q`
- **Crafting**: `C` - **Crafting**: `C`
- **Toggle View (FPS/TPS)**: `F5` - **Toggle View (FPS/TPS)**: `F5`
- **Fullscreen**: `F11` - **Fullscreen**: `F11`
- **Pause Menu**: `Esc` - **Pause Menu**: `Esc`
- **Toggle Mouse Capture**: `Left Alt` (for debugging)
- **Attack / Destroy**: `Left Click` - **Attack / Destroy**: `Left Click`
- **Use / Place**: `Right Click` - **Use / Place**: `Right Click`
- **Select Item**: `Mouse Wheel` or keys `1` to `9` - **Select Item**: `Mouse Wheel` or keys `1` to `9`
- **Accept or Decline Tutorial hints**: `Enter` to accept and `B` to decline
- **Host Options**: `TAB`
## Build & Run ## Build & Run
@ -41,6 +44,13 @@ This project contains the source code of Minecraft Legacy Console Edition v1.3.0
4. Make sure `Minecraft.Client` is set as the Startup Project 4. Make sure `Minecraft.Client` is set as the Startup Project
5. Set the build configuration to **Debug** (Release is also OK but has some bugs) and the target platform to **Windows64**, then build and run 5. Set the build configuration to **Debug** (Release is also OK but has some bugs) and the target platform to **Windows64**, then build and run
### CMake (Windows x64)
```powershell
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Debug --target MinecraftClient
```
## Known Issues ## Known Issues
- Builds for other platforms have not been tested and are most likely non-functional - Builds for other platforms have not been tested and are most likely non-functional

453
cmake/ClientSources.cmake Normal file
View file

@ -0,0 +1,453 @@
set(MINECRAFT_CLIENT_SOURCES
"AbstractTexturePack.cpp"
"crt_compat.cpp"
"AchievementPopup.cpp"
"AchievementScreen.cpp"
"AllowAllCuller.cpp"
"ArchiveFile.cpp"
"ArrowRenderer.cpp"
"BlazeModel.cpp"
"BlazeRenderer.cpp"
"BoatModel.cpp"
"BoatRenderer.cpp"
"BookModel.cpp"
"BreakingItemParticle.cpp"
"BubbleParticle.cpp"
"BufferedImage.cpp"
"Button.cpp"
"Camera.cpp"
"ChatScreen.cpp"
"ChestModel.cpp"
"ChestRenderer.cpp"
"ChickenModel.cpp"
"ChickenRenderer.cpp"
"Chunk.cpp"
"ClientConnection.cpp"
"ClientConstants.cpp"
"ClockTexture.cpp"
"Common/Audio/Consoles_SoundEngine.cpp"
"Common/Audio/SoundEngine.cpp"
"Common/Audio/SoundNames.cpp"
"Common/Colours/ColourTable.cpp"
"Common/Consoles_App.cpp"
"Common/DLC/DLCAudioFile.cpp"
"Common/DLC/DLCCapeFile.cpp"
"Common/DLC/DLCColourTableFile.cpp"
"Common/DLC/DLCFile.cpp"
"Common/DLC/DLCGameRulesFile.cpp"
"Common/DLC/DLCGameRulesHeader.cpp"
"Common/DLC/DLCLocalisationFile.cpp"
"Common/DLC/DLCManager.cpp"
"Common/DLC/DLCPack.cpp"
"Common/DLC/DLCSkinFile.cpp"
"Common/DLC/DLCTextureFile.cpp"
"Common/DLC/DLCUIDataFile.cpp"
"Common/GameRules/AddEnchantmentRuleDefinition.cpp"
"Common/GameRules/AddItemRuleDefinition.cpp"
"Common/GameRules/ApplySchematicRuleDefinition.cpp"
"Common/GameRules/BiomeOverride.cpp"
"Common/GameRules/CollectItemRuleDefinition.cpp"
"Common/GameRules/CompleteAllRuleDefinition.cpp"
"Common/GameRules/CompoundGameRuleDefinition.cpp"
"Common/GameRules/GameRule.cpp"
"Common/GameRules/GameRuleDefinition.cpp"
"Common/GameRules/GameRuleManager.cpp"
"Common/GameRules/LevelGenerationOptions.cpp"
"Common/GameRules/LevelGenerators.cpp"
"Common/GameRules/LevelRules.cpp"
"Common/GameRules/LevelRuleset.cpp"
"Common/GameRules/NamedAreaRuleDefinition.cpp"
"Common/GameRules/StartFeature.cpp"
"Common/GameRules/UpdatePlayerRuleDefinition.cpp"
"Common/GameRules/UseTileRuleDefinition.cpp"
"Common/GameRules/ConsoleGenerateStructure.cpp"
"Common/GameRules/ConsoleSchematicFile.cpp"
"Common/GameRules/XboxStructureActionGenerateBox.cpp"
"Common/GameRules/XboxStructureActionPlaceBlock.cpp"
"Common/GameRules/XboxStructureActionPlaceContainer.cpp"
"Common/GameRules/XboxStructureActionPlaceSpawner.cpp"
"Common/Leaderboards/LeaderboardManager.cpp"
"Common/Network/GameNetworkManager.cpp"
"Common/Network/PlatformNetworkManagerStub.cpp"
"Common/Telemetry/TelemetryManager.cpp"
"Common/Trial/TrialMode.cpp"
"Common/Tutorial/AreaConstraint.cpp"
"Common/Tutorial/AreaHint.cpp"
"Common/Tutorial/AreaTask.cpp"
"Common/Tutorial/ChangeStateConstraint.cpp"
"Common/Tutorial/ChoiceTask.cpp"
"Common/Tutorial/CompleteUsingItemTask.cpp"
"Common/Tutorial/ControllerTask.cpp"
"Common/Tutorial/CraftTask.cpp"
"Common/Tutorial/DiggerItemHint.cpp"
"Common/Tutorial/EffectChangedTask.cpp"
"Common/Tutorial/FullTutorial.cpp"
"Common/Tutorial/FullTutorialActiveTask.cpp"
"Common/Tutorial/FullTutorialMode.cpp"
"Common/Tutorial/InfoTask.cpp"
"Common/Tutorial/InputConstraint.cpp"
"Common/Tutorial/LookAtEntityHint.cpp"
"Common/Tutorial/LookAtTileHint.cpp"
"Common/Tutorial/PickupTask.cpp"
"Common/Tutorial/ProcedureCompoundTask.cpp"
"Common/Tutorial/ProgressFlagTask.cpp"
"Common/Tutorial/StatTask.cpp"
"Common/Tutorial/TakeItemHint.cpp"
"Common/Tutorial/Tutorial.cpp"
"Common/Tutorial/TutorialHint.cpp"
"Common/Tutorial/TutorialMessage.cpp"
"Common/Tutorial/TutorialMode.cpp"
"Common/Tutorial/TutorialTask.cpp"
"Common/Tutorial/UseItemTask.cpp"
"Common/Tutorial/UseTileTask.cpp"
"Common/Tutorial/XuiCraftingTask.cpp"
"Common/ConsoleGameMode.cpp"
"Common/Console_Utils.cpp"
"Common/UI/IUIScene_AbstractContainerMenu.cpp"
"Common/UI/IUIScene_AnvilMenu.cpp"
"Common/UI/IUIScene_BrewingMenu.cpp"
"Common/UI/IUIScene_ContainerMenu.cpp"
"Common/UI/IUIScene_CraftingMenu.cpp"
"Common/UI/IUIScene_CreativeMenu.cpp"
"Common/UI/IUIScene_DispenserMenu.cpp"
"Common/UI/IUIScene_EnchantingMenu.cpp"
"Common/UI/IUIScene_FurnaceMenu.cpp"
"Common/UI/IUIScene_InventoryMenu.cpp"
"Common/UI/IUIScene_PauseMenu.cpp"
"Common/UI/IUIScene_StartGame.cpp"
"Common/UI/IUIScene_TradingMenu.cpp"
"Common/UI/UIComponent_DebugUIMarketingGuide.cpp"
"Common/UI/UIScene_Keyboard.cpp"
"Common/UI/UIComponent_MenuBackground.cpp"
"Common/UI/UIComponent_PressStartToPlay.cpp"
"Common/UI/UIControl_Base.cpp"
"Common/UI/UIControl_BitmapIcon.cpp"
"Common/UI/UIControl_DLCList.cpp"
"Common/UI/UIControl_DynamicLabel.cpp"
"Common/UI/UIControl_EnchantmentBook.cpp"
"Common/UI/UIControl_EnchantmentButton.cpp"
"Common/UI/UIControl_HTMLLabel.cpp"
"Common/UI/UIControl_LeaderboardList.cpp"
"Common/UI/UIControl_MinecraftPlayer.cpp"
"Common/UI/UIControl_PlayerList.cpp"
"Common/UI/UIControl_SaveList.cpp"
"Common/UI/UIControl_SpaceIndicatorBar.cpp"
"Common/UI/UIControl_TexturePackList.cpp"
"Common/UI/UIFontData.cpp"
"Common/UI/UIScene_AnvilMenu.cpp"
"Common/UI/UIScene_ControlsMenu.cpp"
"Common/UI/UIScene_Credits.cpp"
"Common/UI/UIScene_DebugCreateSchematic.cpp"
"Common/UI/UIScene_DebugSetCamera.cpp"
"Common/UI/UIScene_DLCMainMenu.cpp"
"Common/UI/UIScene_DLCOffersMenu.cpp"
"Common/UI/UIScene_EndPoem.cpp"
"Common/UI/UIScene_EULA.cpp"
"Common/UI/UIScene_HowToPlay.cpp"
"Common/UI/UIScene_InGameHostOptionsMenu.cpp"
"Common/UI/UIScene_InGameInfoMenu.cpp"
"Common/UI/UIScene_InGamePlayerOptionsMenu.cpp"
"Common/UI/UIScene_LeaderboardsMenu.cpp"
"Common/UI/UIScene_MessageBox.cpp"
"Common/UI/UIBitmapFont.cpp"
"Common/UI/UIComponent_Chat.cpp"
"Common/UI/UIComponent_DebugUIConsole.cpp"
"Common/UI/UIComponent_Logo.cpp"
"Common/UI/UIComponent_Panorama.cpp"
"Common/UI/UIComponent_Tooltips.cpp"
"Common/UI/UIComponent_TutorialPopup.cpp"
"Common/UI/UIControl.cpp"
"Common/UI/UIController.cpp"
"Common/UI/UIControl_Button.cpp"
"Common/UI/UIControl_CheckBox.cpp"
"Common/UI/UIControl_Cursor.cpp"
"Common/UI/UIControl_Label.cpp"
"Common/UI/UIControl_PlayerSkinPreview.cpp"
"Common/UI/UIControl_Progress.cpp"
"Common/UI/UIControl_ButtonList.cpp"
"Common/UI/UIControl_Slider.cpp"
"Common/UI/UIControl_SlotList.cpp"
"Common/UI/UIControl_TextInput.cpp"
"Common/UI/UIGroup.cpp"
"Common/UI/UILayer.cpp"
"Common/UI/UIScene.cpp"
"Common/UI/UIScene_AbstractContainerMenu.cpp"
"Common/UI/UIScene_BrewingStandMenu.cpp"
"Common/UI/UIScene_ConnectingProgress.cpp"
"Common/UI/UIScene_ContainerMenu.cpp"
"Common/UI/UIScene_CraftingMenu.cpp"
"Common/UI/UIScene_CreateWorldMenu.cpp"
"Common/UI/UIScene_CreativeMenu.cpp"
"Common/UI/UIScene_DeathMenu.cpp"
"Common/UI/UIScene_DebugOptions.cpp"
"Common/UI/UIScene_DebugOverlay.cpp"
"Common/UI/UIScene_DispenserMenu.cpp"
"Common/UI/UIScene_EnchantingMenu.cpp"
"Common/UI/UIScene_FullscreenProgress.cpp"
"Common/UI/UIScene_FurnaceMenu.cpp"
"Common/UI/UIScene_HelpAndOptionsMenu.cpp"
"Common/UI/UIScene_HowToPlayMenu.cpp"
"Common/UI/UIScene_HUD.cpp"
"Common/UI/UIScene_Intro.cpp"
"Common/UI/UIScene_JoinMenu.cpp"
"Common/UI/UIScene_LaunchMoreOptionsMenu.cpp"
"Common/UI/UIScene_LoadMenu.cpp"
"Common/UI/UIScene_LoadOrJoinMenu.cpp"
"Common/UI/UIScene_MainMenu.cpp"
"Common/UI/UIScene_InventoryMenu.cpp"
"Common/UI/UIScene_PauseMenu.cpp"
"Common/UI/UIScene_QuadrantSignin.cpp"
"Common/UI/UIScene_ReinstallMenu.cpp"
"Common/UI/UIScene_SaveMessage.cpp"
"Common/UI/UIScene_SettingsAudioMenu.cpp"
"Common/UI/UIScene_SettingsControlMenu.cpp"
"Common/UI/UIScene_SettingsGraphicsMenu.cpp"
"Common/UI/UIScene_SettingsMenu.cpp"
"Common/UI/UIScene_SettingsOptionsMenu.cpp"
"Common/UI/UIScene_SettingsUIMenu.cpp"
"Common/UI/UIScene_SignEntryMenu.cpp"
"Common/UI/UIScene_SkinSelectMenu.cpp"
"Common/UI/UIScene_TeleportMenu.cpp"
"Common/UI/UIScene_Timer.cpp"
"Common/UI/UIScene_TradingMenu.cpp"
"Common/UI/UIScene_TrialExitUpsell.cpp"
"Common/UI/UITTFFont.cpp"
"Common/zlib/adler32.c"
"Common/zlib/compress.c"
"Common/zlib/crc32.c"
"Common/zlib/deflate.c"
"Common/zlib/gzclose.c"
"Common/zlib/gzlib.c"
"Common/zlib/gzread.c"
"Common/zlib/gzwrite.c"
"Common/zlib/infback.c"
"Common/zlib/inffast.c"
"Common/zlib/inflate.c"
"Common/zlib/inftrees.c"
"Common/zlib/trees.c"
"Common/zlib/uncompr.c"
"Common/zlib/zutil.c"
"CompassTexture.cpp"
"ConfirmScreen.cpp"
"ConsoleInput.cpp"
"ControlsScreen.cpp"
"CowModel.cpp"
"CowRenderer.cpp"
"CreateWorldScreen.cpp"
"CreeperModel.cpp"
"CreeperRenderer.cpp"
"CritParticle.cpp"
"CritParticle2.cpp"
"Cube.cpp"
"DeathScreen.cpp"
"DefaultRenderer.cpp"
"DefaultTexturePack.cpp"
"DemoLevel.cpp"
"DemoUser.cpp"
"DerivedServerLevel.cpp"
"DirtyChunkSorter.cpp"
"DistanceChunkSorter.cpp"
"DLCTexturePack.cpp"
"DragonBreathParticle.cpp"
"DragonModel.cpp"
"DripParticle.cpp"
"EchantmentTableParticle.cpp"
"EditBox.cpp"
"EnchantTableRenderer.cpp"
"EnderChestRenderer.cpp"
"EnderCrystalModel.cpp"
"EnderCrystalRenderer.cpp"
"EnderDragonRenderer.cpp"
"EndermanModel.cpp"
"EndermanRenderer.cpp"
"EnderParticle.cpp"
"EntityRenderDispatcher.cpp"
"EntityRenderer.cpp"
"EntityTileRenderer.cpp"
"EntityTracker.cpp"
"ErrorScreen.cpp"
"ExperienceOrbRenderer.cpp"
"ExplodeParticle.cpp"
"Extrax64Stubs.cpp"
"FallingTileRenderer.cpp"
"FileTexturePack.cpp"
"FireballRenderer.cpp"
"FishingHookRenderer.cpp"
"FlameParticle.cpp"
"FolderTexturePack.cpp"
"Font.cpp"
"FootstepParticle.cpp"
"Frustum.cpp"
"FrustumCuller.cpp"
"FrustumData.cpp"
"GameRenderer.cpp"
"GhastModel.cpp"
"GhastRenderer.cpp"
"GiantMobRenderer.cpp"
"glWrapper.cpp"
"Gui.cpp"
"GuiComponent.cpp"
"GuiMessage.cpp"
"GuiParticle.cpp"
"GuiParticles.cpp"
"HeartParticle.cpp"
"HttpTexture.cpp"
"HugeExplosionParticle.cpp"
"HugeExplosionSeedParticle.cpp"
"HumanoidMobRenderer.cpp"
"HumanoidModel.cpp"
"InBedChatScreen.cpp"
"Input.cpp"
"ItemFrameRenderer.cpp"
"ItemInHandRenderer.cpp"
"ItemRenderer.cpp"
"ItemSpriteRenderer.cpp"
"JoinMultiplayerScreen.cpp"
"KeyMapping.cpp"
"LargeChestModel.cpp"
"LavaParticle.cpp"
"LavaSlimeModel.cpp"
"LavaSlimeRenderer.cpp"
"LevelRenderer.cpp"
"Lighting.cpp"
"LightningBoltRenderer.cpp"
"MemoryTracker.cpp"
"MemTexture.cpp"
"MinecartModel.cpp"
"MinecartRenderer.cpp"
"Minecraft.cpp"
"MinecraftServer.cpp"
"Minimap.cpp"
"MobRenderer.cpp"
"MobSkinMemTextureProcessor.cpp"
"MobSkinTextureProcessor.cpp"
"MobSpawnerRenderer.cpp"
"Model.cpp"
"ModelPart.cpp"
"MultiPlayerChunkCache.cpp"
"MultiPlayerGameMode.cpp"
"MultiPlayerLevel.cpp"
"MultiPlayerLocalPlayer.cpp"
"MushroomCowRenderer.cpp"
"NameEntryScreen.cpp"
"NoteParticle.cpp"
"OffsettedRenderList.cpp"
"Options.cpp"
"OptionsScreen.cpp"
"OzelotModel.cpp"
"OzelotRenderer.cpp"
"PaintingRenderer.cpp"
"Particle.cpp"
"ParticleEngine.cpp"
"PauseScreen.cpp"
"PendingConnection.cpp"
"PigModel.cpp"
"PigRenderer.cpp"
"LocalPlayer.cpp"
"PistonPieceRenderer.cpp"
"PlayerChunkMap.cpp"
"PlayerCloudParticle.cpp"
"PlayerConnection.cpp"
"PlayerList.cpp"
"PreStitchedTextureMap.cpp"
"ProgressRenderer.cpp"
"PS3/PS3Extras/ShutdownManager.cpp"
"Rect2i.cpp"
"RemotePlayer.cpp"
"PlayerRenderer.cpp"
"Polygon.cpp"
"NetherPortalParticle.cpp"
"QuadrupedModel.cpp"
"RedDustParticle.cpp"
"RenameWorldScreen.cpp"
"Screen.cpp"
"ScreenSizeCalculator.cpp"
"ScrolledSelectionList.cpp"
"SelectWorldScreen.cpp"
"ServerChunkCache.cpp"
"ServerCommandDispatcher.cpp"
"ServerConnection.cpp"
"ServerPlayerGameMode.cpp"
"ServerLevel.cpp"
"ServerLevelListener.cpp"
"ServerPlayer.cpp"
"Settings.cpp"
"SheepFurModel.cpp"
"SheepModel.cpp"
"SheepRenderer.cpp"
"SignModel.cpp"
"SignRenderer.cpp"
"SilverfishModel.cpp"
"SilverfishRenderer.cpp"
"SimpleIcon.cpp"
"SkeletonHeadModel.cpp"
"SkeletonModel.cpp"
"SkullTileRenderer.cpp"
"SlideButton.cpp"
"SlimeModel.cpp"
"SlimeRenderer.cpp"
"SmallButton.cpp"
"SmokeParticle.cpp"
"SnowManModel.cpp"
"SnowManRenderer.cpp"
"SnowShovelParticle.cpp"
"SpellParticle.cpp"
"SpiderModel.cpp"
"SpiderRenderer.cpp"
"SplashParticle.cpp"
"SquidModel.cpp"
"SquidRenderer.cpp"
"StatsCounter.cpp"
"StatsScreen.cpp"
"StatsSyncher.cpp"
"stdafx.cpp"
"StitchedTexture.cpp"
"Stitcher.cpp"
"StitchSlot.cpp"
"StringTable.cpp"
"stubs.cpp"
"SuspendedParticle.cpp"
"SuspendedTownParticle.cpp"
"TakeAnimationParticle.cpp"
"TeleportCommand.cpp"
"TerrainParticle.cpp"
"Tesselator.cpp"
"TexOffs.cpp"
"Texture.cpp"
"TextureHolder.cpp"
"TextureManager.cpp"
"TextureMap.cpp"
"TexturePack.cpp"
"TexturePackRepository.cpp"
"Textures.cpp"
"TheEndPortalRenderer.cpp"
"TileEntityRenderDispatcher.cpp"
"TileEntityRenderer.cpp"
"TileRenderer.cpp"
"Timer.cpp"
"TitleScreen.cpp"
"TntRenderer.cpp"
"TrackedEntity.cpp"
"User.cpp"
"Vertex.cpp"
"VideoSettingsScreen.cpp"
"ViewportCuller.cpp"
"VillagerGolemModel.cpp"
"VillagerGolemRenderer.cpp"
"VillagerModel.cpp"
"VillagerRenderer.cpp"
"VillagerZombieModel.cpp"
"WaterDropParticle.cpp"
"Windows64/Iggy/gdraw/gdraw_d3d11.cpp"
"Windows64/Leaderboards/WindowsLeaderboardManager.cpp"
"Windows64/Windows64_App.cpp"
"Windows64/Windows64_Minecraft.cpp"
"Windows64/KeyboardMouseInput.cpp"
"Windows64/Windows64_UIController.cpp"
"WolfModel.cpp"
"WolfRenderer.cpp"
"WstringLookup.cpp"
"Xbox/Network/NetworkPlayerXbox.cpp"
"ZombieModel.cpp"
"ZombieRenderer.cpp"
)

83
cmake/CopyAssets.cmake Normal file
View file

@ -0,0 +1,83 @@
if(NOT DEFINED PROJECT_SOURCE_DIR OR NOT DEFINED OUTPUT_DIR OR NOT DEFINED CONFIGURATION)
message(FATAL_ERROR "CopyAssets.cmake requires PROJECT_SOURCE_DIR, OUTPUT_DIR, and CONFIGURATION.")
endif()
# Some generators may pass quoted values (e.g. "Debug"); normalize that.
string(REPLACE "\"" "" PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}")
string(REPLACE "\"" "" OUTPUT_DIR "${OUTPUT_DIR}")
string(REPLACE "\"" "" CONFIGURATION "${CONFIGURATION}")
set(_project_dir "${PROJECT_SOURCE_DIR}/Minecraft.Client")
function(copy_tree_if_exists src_rel dst_rel)
set(_src "${_project_dir}/${src_rel}")
set(_dst "${OUTPUT_DIR}/${dst_rel}")
if(EXISTS "${_src}")
file(MAKE_DIRECTORY "${_dst}")
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${_src}" "${_dst}")
endif()
endfunction()
function(ensure_dir rel_path)
file(MAKE_DIRECTORY "${OUTPUT_DIR}/${rel_path}")
endfunction()
function(copy_file_if_exists src_rel dst_rel)
set(_src "${PROJECT_SOURCE_DIR}/${src_rel}")
set(_dst "${OUTPUT_DIR}/${dst_rel}")
if(EXISTS "${_src}")
get_filename_component(_dst_dir "${_dst}" DIRECTORY)
file(MAKE_DIRECTORY "${_dst_dir}")
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${_src}" "${_dst}")
endif()
endfunction()
function(copy_first_existing dst_rel)
set(_copied FALSE)
foreach(_candidate IN LISTS ARGN)
if(EXISTS "${PROJECT_SOURCE_DIR}/${_candidate}")
copy_file_if_exists("${_candidate}" "${dst_rel}")
set(_copied TRUE)
break()
endif()
endforeach()
if(NOT _copied)
message(WARNING "Runtime file not found for ${dst_rel}. Checked: ${ARGN}")
endif()
endfunction()
if(CONFIGURATION STREQUAL "Debug")
copy_tree_if_exists("Durango/Sound" "Durango/Sound")
copy_tree_if_exists("music" "music")
copy_tree_if_exists("Windows64/GameHDD" "Windows64/GameHDD")
copy_tree_if_exists("Common/Media" "Common/Media")
copy_tree_if_exists("Common/res" "Common/res")
copy_tree_if_exists("Common/Trial" "Common/Trial")
copy_tree_if_exists("Common/Tutorial" "Common/Tutorial")
else()
copy_tree_if_exists("music" "music")
copy_tree_if_exists("Windows64/GameHDD" "Windows64/GameHDD")
copy_tree_if_exists("Common/Media" "Common/Media")
copy_tree_if_exists("Common/res" "Common/res")
copy_tree_if_exists("Common/Trial" "Common/Trial")
copy_tree_if_exists("Common/Tutorial" "Common/Tutorial")
copy_tree_if_exists("DurangoMedia" "Windows64Media")
copy_tree_if_exists("Windows64Media" "Windows64Media")
endif()
# Some runtime code asserts if this directory tree is missing.
ensure_dir("Windows64/GameHDD")
# Keep legacy runtime redistributables in a familiar location.
copy_tree_if_exists("Windows64/Miles/lib/redist64" "redist64")
copy_tree_if_exists("Windows64/Iggy/lib/redist64" "redist64")
# Runtime DLLs required at launch.
copy_first_existing("iggy_w64.dll"
"Minecraft.Client/Windows64/Iggy/lib/redist64/iggy_w64.dll"
"x64/${CONFIGURATION}/iggy_w64.dll"
)
copy_first_existing("mss64.dll"
"Minecraft.Client/Windows64/Miles/lib/redist64/mss64.dll"
"x64/${CONFIGURATION}/mss64.dll"
)

707
cmake/WorldSources.cmake Normal file
View file

@ -0,0 +1,707 @@
set(MINECRAFT_WORLD_SOURCES
"AABB.cpp"
"Abilities.cpp"
"AbstractContainerMenu.cpp"
"Achievement.cpp"
"Achievements.cpp"
"AddEntityPacket.cpp"
"AddExperienceOrbPacket.cpp"
"AddGlobalEntityPacket.cpp"
"AddIslandLayer.cpp"
"AddMobPacket.cpp"
"AddMushroomIslandLayer.cpp"
"AddPaintingPacket.cpp"
"AddPlayerPacket.cpp"
"AddSnowLayer.cpp"
"AgableMob.cpp"
"AirTile.cpp"
"Animal.cpp"
"AnimatePacket.cpp"
"AnvilTile.cpp"
"AnvilTileItem.cpp"
"ArmorDyeRecipe.cpp"
"ArmorItem.cpp"
"ArmorRecipes.cpp"
"ArmorSlot.cpp"
"Arrow.cpp"
"ArrowAttackGoal.cpp"
"ArrowDamageEnchantment.cpp"
"ArrowFireEnchantment.cpp"
"ArrowInfiniteEnchantment.cpp"
"ArrowKnockbackEnchantment.cpp"
"AuxDataTileItem.cpp"
"AvoidPlayerGoal.cpp"
"AwardStatPacket.cpp"
"BasicTree.cpp"
"BasicTypeContainers.cpp"
"BeachBiome.cpp"
"BedItem.cpp"
"BedTile.cpp"
"BegGoal.cpp"
"BinaryHeap.cpp"
"Biome.cpp"
"BiomeCache.cpp"
"BiomeDecorator.cpp"
"BiomeInitLayer.cpp"
"BiomeOverrideLayer.cpp"
"BiomeSource.cpp"
"BirchFeature.cpp"
"Blaze.cpp"
"BlockDestructionProgress.cpp"
"BlockGenMethods.cpp"
"BlockRegionUpdatePacket.cpp"
"BlockReplacements.cpp"
"Boat.cpp"
"BoatItem.cpp"
"BodyControl.cpp"
"BonusChestFeature.cpp"
"BookItem.cpp"
"BookshelfTile.cpp"
"BossMob.cpp"
"BossMobPart.cpp"
"BottleItem.cpp"
"BoundingBox.cpp"
"BowItem.cpp"
"BowlFoodItem.cpp"
"BreakDoorGoal.cpp"
"BreedGoal.cpp"
"BrewingStandMenu.cpp"
"BrewingStandTile.cpp"
"BrewingStandTileEntity.cpp"
"BucketItem.cpp"
"Buffer.cpp"
"BufferedOutputStream.cpp"
"BufferedReader.cpp"
"Bush.cpp"
"ButtonTile.cpp"
"ByteArrayInputStream.cpp"
"ByteArrayOutputStream.cpp"
"ByteBuffer.cpp"
"CactusFeature.cpp"
"CactusTile.cpp"
"CakeTile.cpp"
"CanyonFeature.cpp"
"CarrotOnAStickItem.cpp"
"CarrotTile.cpp"
"CauldronTile.cpp"
"CaveFeature.cpp"
"CaveSpider.cpp"
"ChatPacket.cpp"
"ChestTile.cpp"
"ChestTileEntity.cpp"
"Chicken.cpp"
"ChunkPos.cpp"
"ChunkStorageProfileDecorator.cpp"
"ChunkTilesUpdatePacket.cpp"
"ChunkVisibilityAreaPacket.cpp"
"ChunkVisibilityPacket.cpp"
"Class.cpp"
"ClayFeature.cpp"
"ClayTile.cpp"
"ClientCommandPacket.cpp"
"ClientSideMerchant.cpp"
"ClockItem.cpp"
"ClothDyeRecipes.cpp"
"ClothTile.cpp"
"ClothTileItem.cpp"
"CoalItem.cpp"
"CocoaTile.cpp"
"Color.cpp"
"ColoredTileItem.cpp"
"Command.cpp"
"CommandDispatcher.cpp"
"CommonStats.cpp"
"CompassItem.cpp"
"ComplexItem.cpp"
"ComplexItemDataPacket.cpp"
"CompoundContainer.cpp"
"CompressedTileStorage.cpp"
"compression.cpp"
"Connection.cpp"
"ConsoleSaveFileConverter.cpp"
"ConsoleSaveFileOriginal.cpp"
"Container.cpp"
"ContainerAckPacket.cpp"
"ContainerButtonClickPacket.cpp"
"ContainerClickPacket.cpp"
"ContainerClosePacket.cpp"
"ContainerOpenPacket.cpp"
"ContainerSetContentPacket.cpp"
"ContainerSetDataPacket.cpp"
"ContainerSetSlotPacket.cpp"
"ControlledByPlayerGoal.cpp"
"CoralTile.cpp"
"Cow.cpp"
"CraftingContainer.cpp"
"CraftingMenu.cpp"
"DefaultGameModeCommand.cpp"
"EnchantItemCommand.cpp"
"ExperienceCommand.cpp"
"GameCommandPacket.cpp"
"GameModeCommand.cpp"
"GenericStats.cpp"
"GiveItemCommand.cpp"
"KillCommand.cpp"
"PerformanceTimer.cpp"
"TimeCommand.cpp"
"ToggleDownfallCommand.cpp"
"TradeItemPacket.cpp"
"CraftItemPacket.cpp"
"Creature.cpp"
"Creeper.cpp"
"CropTile.cpp"
"CustomLevelSource.cpp"
"CustomPayloadPacket.cpp"
"DamageEnchantment.cpp"
"DamageSource.cpp"
"DataInputStream.cpp"
"DataLayer.cpp"
"DataOutputStream.cpp"
"DeadBushFeature.cpp"
"DeadBushTile.cpp"
"DebugOptionsPacket.cpp"
"DefendVillageTargetGoal.cpp"
"DelayedRelease.cpp"
"DerivedLevelData.cpp"
"DesertBiome.cpp"
"DesertWellFeature.cpp"
"DetectorRailTile.cpp"
"DigDurabilityEnchantment.cpp"
"DiggerItem.cpp"
"DiggingEnchantment.cpp"
"Dimension.cpp"
"DiodeTile.cpp"
"Direction.cpp"
"DirectionalTile.cpp"
"DirectoryLevelStorage.cpp"
"DirectoryLevelStorageSource.cpp"
"DirtTile.cpp"
"DisconnectPacket.cpp"
"DispenserTile.cpp"
"DispenserTileEntity.cpp"
"DoorInfo.cpp"
"DoorInteractGoal.cpp"
"DragonFireball.cpp"
"EatTileGoal.cpp"
"EggTile.cpp"
"EnchantedBookItem.cpp"
"Enchantment.cpp"
"EnchantmentCategory.cpp"
"EnchantmentContainer.cpp"
"EnchantmentHelper.cpp"
"EnchantmentInstance.cpp"
"EnchantmentMenu.cpp"
"EnchantmentTableEntity.cpp"
"EnchantmentTableTile.cpp"
"EnderChestTile.cpp"
"EnderChestTileEntity.cpp"
"EnderEyeItem.cpp"
"EnderpearlItem.cpp"
"EndPodiumFeature.cpp"
"ExperienceItem.cpp"
"ExtremeHillsBiome.cpp"
"Feature.cpp"
"EnderCrystal.cpp"
"EnderDragon.cpp"
"EyeOfEnderSignal.cpp"
"FireAspectEnchantment.cpp"
"FireChargeItem.cpp"
"FleeSunGoal.cpp"
"FlippedIcon.cpp"
"FloatGoal.cpp"
"FlowerPotTile.cpp"
"FollowOwnerGoal.cpp"
"FollowParentGoal.cpp"
"Goal.cpp"
"GoalSelector.cpp"
"GoldenAppleItem.cpp"
"Golem.cpp"
"GroundBushFeature.cpp"
"GrowMushroomIslandLayer.cpp"
"HalfSlabTile.cpp"
"HangingEntity.cpp"
"HangingEntityItem.cpp"
"HellFlatLevelSource.cpp"
"HurtByTargetGoal.cpp"
"IceBiome.cpp"
"InteractGoal.cpp"
"ItemFrame.cpp"
"JumpControl.cpp"
"JungleBiome.cpp"
"KickPlayerPacket.cpp"
"KnockbackEnchantment.cpp"
"LavaSlime.cpp"
"LeapAtTargetGoal.cpp"
"LevelSoundPacket.cpp"
"LookAtPlayerGoal.cpp"
"LookAtTradingPlayerGoal.cpp"
"LookControl.cpp"
"LootBonusEnchantment.cpp"
"MakeLoveGoal.cpp"
"MegaTreeFeature.cpp"
"MeleeAttackGoal.cpp"
"MerchantContainer.cpp"
"MerchantMenu.cpp"
"MerchantRecipe.cpp"
"MerchantRecipeList.cpp"
"MerchantResultSlot.cpp"
"MilkBucketItem.cpp"
"MonsterPlacerItem.cpp"
"MoveControl.cpp"
"MoveIndoorsGoal.cpp"
"MoveThroughVillageGoal.cpp"
"MoveTowardsRestrictionGoal.cpp"
"MoveTowardsTargetGoal.cpp"
"MultiTextureTileItem.cpp"
"MushroomCow.cpp"
"MushroomIslandBiome.cpp"
"MycelTile.cpp"
"NearestAttackableTargetGoal.cpp"
"NetherBridgeFeature.cpp"
"NetherBridgePieces.cpp"
"NetherStalkTile.cpp"
"NonTameRandomTargetGoal.cpp"
"Npc.cpp"
"OcelotSitOnTileGoal.cpp"
"OfferFlowerGoal.cpp"
"OpenDoorGoal.cpp"
"OwnerHurtByTargetGoal.cpp"
"OwnerHurtTargetGoal.cpp"
"OxygenEnchantment.cpp"
"Ozelot.cpp"
"OzelotAttackGoal.cpp"
"PanicGoal.cpp"
"PathNavigation.cpp"
"PlayerAbilitiesPacket.cpp"
"PlayerEnderChestContainer.cpp"
"PlayGoal.cpp"
"PotatoTile.cpp"
"PotionBrewing.cpp"
"PotionItem.cpp"
"ProtectionEnchantment.cpp"
"QuartzBlockTile.cpp"
"RandomLookAroundGoal.cpp"
"RandomPos.cpp"
"RandomScatteredLargeFeature.cpp"
"RandomStrollGoal.cpp"
"Rarity.cpp"
"RedlightTile.cpp"
"RegionHillsLayer.cpp"
"RepairContainer.cpp"
"RepairMenu.cpp"
"RepairResultSlot.cpp"
"RestrictOpenDoorGoal.cpp"
"RestrictSunGoal.cpp"
"RotateHeadPacket.cpp"
"ScatteredFeaturePieces.cpp"
"SeedFoodItem.cpp"
"Sensing.cpp"
"SitGoal.cpp"
"SkullItem.cpp"
"SkullTile.cpp"
"SkullTileEntity.cpp"
"SparseDataStorage.cpp"
"SwampRiversLayer.cpp"
"SwellGoal.cpp"
"TakeFlowerGoal.cpp"
"TamableAnimal.cpp"
"TargetGoal.cpp"
"TemptGoal.cpp"
"ThornsEnchantment.cpp"
"TileDestructionPacket.cpp"
"TileEventData.cpp"
"TradeWithPlayerGoal.cpp"
"TripWireSourceTile.cpp"
"TripWireTile.cpp"
"Village.cpp"
"VillagerGolem.cpp"
"Villages.cpp"
"VillageSiege.cpp"
"VinesFeature.cpp"
"WallTile.cpp"
"WeighedTreasure.cpp"
"WoodSlabTile.cpp"
"C4JThread.cpp"
"WoodTile.cpp"
"WoolCarpetTile.cpp"
"XZPacket.cpp"
"ShoreLayer.cpp"
"SmoothStoneBrickTileItem.cpp"
"SparseLightStorage.cpp"
"SpikeFeature.cpp"
"NetherSphere.cpp"
"SmallFireball.cpp"
"SnowMan.cpp"
"StoneMonsterTileItem.cpp"
"TextureAndGeometryChangePacket.cpp"
"TextureAndGeometryPacket.cpp"
"TheEndBiome.cpp"
"TheEndBiomeDecorator.cpp"
"TheEndDimension.cpp"
"TheEndLevelRandomLevelSource.cpp"
"TheEndPortal.cpp"
"TheEndPortalFrameTile.cpp"
"TheEndPortalTileEntity.cpp"
"Throwable.cpp"
"ThrownEnderpearl.cpp"
"ThrownExpBottle.cpp"
"ThrownPotion.cpp"
"TileEntityDataPacket.cpp"
"UntouchingEnchantment.cpp"
"UpdateGameRuleProgressPacket.cpp"
"Distort.cpp"
"DoorItem.cpp"
"DoorTile.cpp"
"DownfallLayer.cpp"
"DownfallMixerLayer.cpp"
"DungeonFeature.cpp"
"DyePowderItem.cpp"
"EggItem.cpp"
"Emboss.cpp"
"EmptyLevelChunk.cpp"
"EnderMan.cpp"
"Enemy.cpp"
"Entity.cpp"
"EntityActionAtPositionPacket.cpp"
"EntityDamageSource.cpp"
"EntityEventPacket.cpp"
"EntityIO.cpp"
"EntityPos.cpp"
"EntityTile.cpp"
"ExperienceOrb.cpp"
"ExplodePacket.cpp"
"Explosion.cpp"
"Facing.cpp"
"FallingTile.cpp"
"FarmTile.cpp"
"FastNoise.cpp"
"FenceGateTile.cpp"
"FenceTile.cpp"
"File.cpp"
"FileHeader.cpp"
"FileInputStream.cpp"
"FileOutputStream.cpp"
"Fireball.cpp"
"FireTile.cpp"
"FishingHook.cpp"
"FishingRodItem.cpp"
"FixedBiomeSource.cpp"
"FlatLayer.cpp"
"FlatLevelSource.cpp"
"FlintAndSteelItem.cpp"
"FloatBuffer.cpp"
"FlowerFeature.cpp"
"FlyingMob.cpp"
"FoliageColor.cpp"
"FoodConstants.cpp"
"FoodData.cpp"
"FoodItem.cpp"
"FoodRecipies.cpp"
"ForestBiome.cpp"
"FurnaceMenu.cpp"
"FurnaceRecipes.cpp"
"FurnaceResultSlot.cpp"
"FurnaceTile.cpp"
"FurnaceTileEntity.cpp"
"FuzzyZoomLayer.cpp"
"GameEventPacket.cpp"
"GeneralStat.cpp"
"GetInfoPacket.cpp"
"Ghast.cpp"
"Giant.cpp"
"GlassTile.cpp"
"GlobalEntity.cpp"
"GrassColor.cpp"
"GrassTile.cpp"
"GravelTile.cpp"
"HalfTransparentTile.cpp"
"Hasher.cpp"
"HatchetItem.cpp"
"HellBiome.cpp"
"HellDimension.cpp"
"HellFireFeature.cpp"
"HellPortalFeature.cpp"
"HellRandomLevelSource.cpp"
"HellSandTile.cpp"
"HellSpringFeature.cpp"
"HellStoneTile.cpp"
"HitResult.cpp"
"HoeItem.cpp"
"HouseFeature.cpp"
"HugeMushroomFeature.cpp"
"HugeMushroomTile.cpp"
"I18n.cpp"
"IceTile.cpp"
"ImprovedNoise.cpp"
"ContainerMenu.cpp"
"IndirectEntityDamageSource.cpp"
"InputStream.cpp"
"InputStreamReader.cpp"
"InstantenousMobEffect.cpp"
"IntBuffer.cpp"
"IntCache.cpp"
"InteractPacket.cpp"
"Inventory.cpp"
"InventoryMenu.cpp"
"IslandLayer.cpp"
"Item.cpp"
"ItemEntity.cpp"
"ItemInstance.cpp"
"ItemStat.cpp"
"KeepAlivePacket.cpp"
"LadderTile.cpp"
"LakeFeature.cpp"
"Language.cpp"
"LargeCaveFeature.cpp"
"LargeFeature.cpp"
"LargeHellCaveFeature.cpp"
"Layer.cpp"
"LeafTile.cpp"
"LeafTileItem.cpp"
"LevelConflictException.cpp"
"LevelData.cpp"
"Level.cpp"
"LevelChunk.cpp"
"LevelEventPacket.cpp"
"LevelSettings.cpp"
"LevelStorage.cpp"
"LevelStorageProfilerDecorator.cpp"
"LevelSummary.cpp"
"LevelType.cpp"
"LeverTile.cpp"
"LightGemFeature.cpp"
"LightGemTile.cpp"
"LightningBolt.cpp"
"LiquidTile.cpp"
"LiquidTileDynamic.cpp"
"LiquidTileStatic.cpp"
"LockedChestTile.cpp"
"LoginPacket.cpp"
"MapItem.cpp"
"MapItemSavedData.cpp"
"Material.cpp"
"MaterialColor.cpp"
"JavaMath.cpp"
"McRegionChunkStorage.cpp"
"McRegionLevelStorageSource.cpp"
"McRegionLevelStorage.cpp"
"MelonTile.cpp"
"MenuBackup.cpp"
"MetalTile.cpp"
"Minecart.cpp"
"MinecartItem.cpp"
"Minecraft.World.cpp"
"MineShaftFeature.cpp"
"MineShaftPieces.cpp"
"MineShaftStart.cpp"
"Mob.cpp"
"MobCategory.cpp"
"MobEffect.cpp"
"MobEffectInstance.cpp"
"MobSpawner.cpp"
"MobSpawnerTile.cpp"
"MobSpawnerTileEntity.cpp"
"MockedLevelStorage.cpp"
"Monster.cpp"
"MonsterRoomFeature.cpp"
"MoveEntityPacket.cpp"
"MoveEntityPacketSmall.cpp"
"MovePlayerPacket.cpp"
"Mth.cpp"
"Mushroom.cpp"
"MusicTile.cpp"
"MusicTileEntity.cpp"
"NbtIo.cpp"
"Node.cpp"
"NotGateTile.cpp"
"ObsidianTile.cpp"
"OldChunkStorage.cpp"
"OreFeature.cpp"
"OreRecipies.cpp"
"OreTile.cpp"
"Packet.cpp"
"PacketListener.cpp"
"Painting.cpp"
"Path.cpp"
"PathFinder.cpp"
"PathfinderMob.cpp"
"PerlinNoise.cpp"
"PerlinSimplexNoise.cpp"
"PickaxeItem.cpp"
"Pig.cpp"
"PigZombie.cpp"
"PineFeature.cpp"
"PistonBaseTile.cpp"
"PistonExtensionTile.cpp"
"PistonMovingPiece.cpp"
"PistonPieceEntity.cpp"
"PistonTileItem.cpp"
"PlainsBiome.cpp"
"Player.cpp"
"PlayerActionPacket.cpp"
"PlayerCommandPacket.cpp"
"PlayerInfoPacket.cpp"
"PlayerInputPacket.cpp"
"PortalForcer.cpp"
"PortalTile.cpp"
"Pos.cpp"
"PreLoginPacket.cpp"
"PressurePlateTile.cpp"
"PrimedTnt.cpp"
"PumpkinFeature.cpp"
"PumpkinTile.cpp"
"RailTile.cpp"
"RainforestBiome.cpp"
"Random.cpp"
"RandomLevelSource.cpp"
"ReadOnlyChunkCache.cpp"
"Recipes.cpp"
"RecordingItem.cpp"
"RecordPlayerTile.cpp"
"RedStoneDustTile.cpp"
"RedStoneItem.cpp"
"RedStoneOreTile.cpp"
"ReedsFeature.cpp"
"ReedTile.cpp"
"Region.cpp"
"RegionFile.cpp"
"RegionFileCache.cpp"
"RemoveEntitiesPacket.cpp"
"RemoveMobEffectPacket.cpp"
"RespawnPacket.cpp"
"ResultContainer.cpp"
"ResultSlot.cpp"
"RiverInitLayer.cpp"
"RiverLayer.cpp"
"RiverMixerLayer.cpp"
"Rotate.cpp"
"SaddleItem.cpp"
"SandFeature.cpp"
"SandStoneTile.cpp"
"HeavyTile.cpp"
"Sapling.cpp"
"SaplingTileItem.cpp"
"SavedData.cpp"
"SavedDataStorage.cpp"
"Scale.cpp"
"SeedItem.cpp"
"ServerSettingsChangedPacket.cpp"
"SetCarriedItemPacket.cpp"
"SetCreativeModeSlotPacket.cpp"
"SetEntityDataPacket.cpp"
"SetEntityMotionPacket.cpp"
"SetEquippedItemPacket.cpp"
"SetExperiencePacket.cpp"
"SetHealthPacket.cpp"
"SetRidingPacket.cpp"
"SetSpawnPositionPacket.cpp"
"SetTimePacket.cpp"
"ShapedRecipy.cpp"
"ShapelessRecipy.cpp"
"SharedConstants.cpp"
"ShearsItem.cpp"
"Sheep.cpp"
"ShovelItem.cpp"
"SignItem.cpp"
"SignTile.cpp"
"SignTileEntity.cpp"
"SignUpdatePacket.cpp"
"Silverfish.cpp"
"SimpleContainer.cpp"
"SimplexNoise.cpp"
"Skeleton.cpp"
"Slime.cpp"
"Slot.cpp"
"SmoothFloat.cpp"
"SmoothLayer.cpp"
"SmoothStoneBrickTile.cpp"
"SmoothZoomLayer.cpp"
"Snowball.cpp"
"SnowballItem.cpp"
"SnowTile.cpp"
"Socket.cpp"
"Spider.cpp"
"Sponge.cpp"
"SpringFeature.cpp"
"SpringTile.cpp"
"SpruceFeature.cpp"
"Squid.cpp"
"Stat.cpp"
"Stats.cpp"
"StairTile.cpp"
"stdafx.cpp"
"StemTile.cpp"
"StoneMonsterTile.cpp"
"StoneSlabTile.cpp"
"StoneSlabTileItem.cpp"
"StoneTile.cpp"
"StringHelpers.cpp"
"StrongholdFeature.cpp"
"StrongholdPieces.cpp"
"StructureFeature.cpp"
"StructurePiece.cpp"
"StructureRecipies.cpp"
"StructureStart.cpp"
"SwampBiome.cpp"
"SwampTreeFeature.cpp"
"SynchedEntityData.cpp"
"Synth.cpp"
"system.cpp"
"Tag.cpp"
"TaigaBiome.cpp"
"TakeItemEntityPacket.cpp"
"TallGrass.cpp"
"TallGrassFeature.cpp"
"TeleportEntityPacket.cpp"
"TemperatureLayer.cpp"
"TemperatureMixerLayer.cpp"
"TextureChangePacket.cpp"
"TexturePacket.cpp"
"ThinFenceTile.cpp"
"ThreadName.cpp"
"ThrownEgg.cpp"
"TickNextTickData.cpp"
"Tile.cpp"
"TileEventPacket.cpp"
"TileItem.cpp"
"TileEntity.cpp"
"TilePlanterItem.cpp"
"TilePos.cpp"
"TileUpdatePacket.cpp"
"TntTile.cpp"
"ToolRecipies.cpp"
"TopSnowTile.cpp"
"TorchTile.cpp"
"TransparentTile.cpp"
"TrapDoorTile.cpp"
"TrapMenu.cpp"
"TreeFeature.cpp"
"TreeTileItem.cpp"
"UpdateMobEffectPacket.cpp"
"UpdateProgressPacket.cpp"
"UseItemPacket.cpp"
"Vec3.cpp"
"VillageFeature.cpp"
"VillagePieces.cpp"
"Villager.cpp"
"VineTile.cpp"
"VoronoiZoom.cpp"
"WaterColor.cpp"
"WaterLevelChunk.cpp"
"WaterlilyFeature.cpp"
"WaterLilyTile.cpp"
"WaterLilyTileItem.cpp"
"WaterWorkerEnchantment.cpp"
"WeaponItem.cpp"
"WeaponRecipies.cpp"
"WeighedRandom.cpp"
"Wolf.cpp"
"TreeTile.cpp"
"WebTile.cpp"
"WorkbenchTile.cpp"
"ConsoleSaveFileInputStream.cpp"
"ConsoleSaveFileOutputStream.cpp"
"Zombie.cpp"
"WaterAnimal.cpp"
"ZoomLayer.cpp"
)