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/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
#ifdef _WINDOWS64
char SoundEngine::m_szSoundPath[]={"Windows64Media\\Sound\\"};
char SoundEngine::m_szSoundPath[]={"Windows64\\Sound\\"};
char SoundEngine::m_szMusicPath[]={"music\\"};
char SoundEngine::m_szRedistName[]={"redist64"};
#elif defined _DURANGO

View file

@ -1,9 +1,9 @@
#include "stdafx.h"
#include "ConsoleGameMode.h"
#include "..\Common\Tutorial\Tutorial.h"
#include ".\Tutorial\Tutorial.h"
ConsoleGameMode::ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection)
: TutorialMode(iPad, minecraft, connection)
{
tutorial = new Tutorial(iPad);
}
}

View file

@ -1,5 +1,5 @@
#pragma once
#include "..\Common\Tutorial\TutorialMode.h"
#include ".\Tutorial\TutorialMode.h"
class ConsoleGameMode : public TutorialMode
{
@ -7,4 +7,4 @@ public:
ConsoleGameMode(int iPad, Minecraft *minecraft, ClientConnection *connection);
virtual bool isImplemented() { return true; }
};
};

View file

@ -16,6 +16,14 @@
#include "..\Minecraft.h"
#include "..\ClientConnection.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 "..\GameMode.h"
#include "..\Xbox\Social\SocialManager.h"
@ -30,7 +38,10 @@
#include "GameRules\ConsoleGameRules.h"
#include "GameRules\ConsoleSchematicFile.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 "..\DLCTexturePack.h"
#include "DLC\DLCPack.h"

View file

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

View file

@ -7,6 +7,7 @@
#include "TutorialConstraints.h"
#include "ChoiceTask.h"
#include "..\..\..\Minecraft.World\Material.h"
#include "..\..\Windows64\KeyboardMouseInput.h"
ChoiceTask::ChoiceTask(Tutorial *tutorial, int descriptionId, int promptId /*= -1*/, bool requiresUserInput /*= false*/,
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( 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;
}
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;
}
@ -99,11 +100,11 @@ void ChoiceTask::handleUIInput(int iAction)
{
if(bHasBeenActivated && m_bShownForMinimumTime)
{
if( iAction == m_iConfirmMapping )
if( iAction == m_iConfirmMapping)
{
m_bConfirmMappingComplete = true;
}
else if(iAction == m_iCancelMapping )
else if(iAction == m_iCancelMapping)
{
m_bCancelMappingComplete = true;
}

View file

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

View file

@ -1606,15 +1606,24 @@ xcopy /q /y /i /s /e $(ProjectDir)DurangoMedia\CU $(LayoutDir)Image\Loose\CU</C
</Link>
<PostBuildEvent>
<Message>Copying game assets to output directory</Message>
<Command>xcopy /q /y /i /s /e "$(ProjectDir)music" "$(OutDir)music"
xcopy /q /y /i /s /e "$(ProjectDir)Windows64\GameHDD" "$(OutDir)Windows64\GameHDD"
xcopy /q /y /i /s /e "$(ProjectDir)Common\Media" "$(OutDir)Common\Media"
xcopy /q /y /i /s /e "$(ProjectDir)Common\res" "$(OutDir)Common\res"
xcopy /q /y /i /s /e "$(ProjectDir)Common\Trial" "$(OutDir)Common\Trial"
xcopy /q /y /i /s /e "$(ProjectDir)Common\Tutorial" "$(OutDir)Common\Tutorial"
xcopy /q /y /i /s /e "$(ProjectDir)DurangoMedia" "$(OutDir)Windows64Media"
xcopy /q /y /i /s /e "$(ProjectDir)Windows64Media" "$(OutDir)Windows64Media"
mkdir "$(OutDir)Windows64\GameHDD" 2&gt;nul</Command>
<Command>mkdir "$(OutDir)music" 2&gt;nul
mkdir "$(OutDir)Windows64\GameHDD" 2&gt;nul
mkdir "$(OutDir)Common\Media" 2&gt;nul
mkdir "$(OutDir)Common\res" 2&gt;nul
mkdir "$(OutDir)Common\Trial" 2&gt;nul
mkdir "$(OutDir)Common\Tutorial" 2&gt;nul
mkdir "$(OutDir)Windows64Media" 2&gt;nul
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>
<ImageXex>
<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(lpCmdLine);
/*
// Declare DPI awareness so GetSystemMetrics returns physical pixels
SetProcessDPIAware();
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);
OutputDebugStringA(buf);
}
*/
if(lpCmdLine)
{
@ -1220,6 +1223,17 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
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
// has the game defined profile data been changed (by a profile load)
if(app.uiGameDefinedDataChangedBitmask!=0)

View file

@ -12,13 +12,13 @@
const wchar_t File::pathSeparator = L'\\';
#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
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
//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;
}
@ -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;
//this->parent = new File( parent );
@ -149,9 +149,9 @@ bool File::mkdir() 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());
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
// 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
string sourcePath = wstringtofilename(getPath());
std::string sourcePath = wstringtofilename(getPath());
const char *destPath = wstringtofilename(dest.getPath());
#ifdef _DURANGO
__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.
//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() 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?
if( !isDirectory() )
@ -386,8 +386,8 @@ vector<File *> *File::listFiles() const
FindClose( hFind);
}
#else
char path[MAX_PATH];
sprintf( path, "%s\\*", wstringtofilename( getPath() ) );
char path[MAX_PATH] {};
snprintf( path, MAX_PATH, "%s\\*", wstringtofilename( getPath() ) );
HANDLE hFind = FindFirstFile( path, &wfd);
if(hFind != INVALID_HANDLE_VALUE)
{
@ -415,13 +415,13 @@ vector<File *> *File::listFiles() const
//Returns:
//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.
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?
if( !isDirectory() )
return NULL;
vector<File *> *vOutput = new vector<File *>();
std::vector<File *> *vOutput = new std::vector<File *>();
#ifdef __PS3__
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, 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__
//extern const char* getPS3HomePath();
@ -624,7 +624,7 @@ __int64 File::length()
//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),
//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;
#ifdef _UNICODE
@ -657,7 +657,7 @@ __int64 File::lastModified()
}
}
const wstring File::getPath() const
const std::wstring File::getPath() const
{
/*
wstring path;
@ -672,7 +672,7 @@ const wstring File::getPath() const
return m_abstractPathName;
}
wstring File::getName() const
std::wstring File::getName() const
{
unsigned int sep = (unsigned int )(m_abstractPathName.find_last_of( this->pathSeparator ));
return m_abstractPathName.substr( sep + 1, m_abstractPathName.length() );
@ -700,3 +700,9 @@ int File::hash_fnct(const File &k)
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
using namespace std;
#include <cstdint>
#include <vector>
#include <string>
// 4J Stu - Represents java standard library class
class FileFilter;
@ -24,11 +28,11 @@ public:
bool exists() const;
bool isFile() const;
bool renameTo(File dest);
vector<File *> *listFiles() const; // Array
vector<File *> *listFiles(FileFilter *filter) const;
std::vector<File *> *listFiles() const; // Array
std::vector<File *> *listFiles(FileFilter *filter) const;
bool isDirectory() const;
__int64 length();
__int64 lastModified();
int64_t length();
int64_t lastModified();
const wstring getPath() const; // 4J Jev: TODO
wstring getName() const;
@ -43,14 +47,12 @@ private:
//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;
typedef struct
struct FileKeyEq
{
bool operator() (const File &x, const File &y) const {return File::eq_test(x,y); }
} FileKeyEq;
bool operator() (const File &x, const File &y) const;
};

View file

@ -1,13 +1,15 @@
#pragma once
#include <cstdint>
// 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
// 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.
typedef struct
struct IntKeyHash
{
int operator() (const int &k) const
inline int operator()(const int &k) const
{
int h = k;
h += ~(h << 9);
@ -16,62 +18,64 @@ typedef struct
h ^= (((unsigned int)h) >> 10);
return h;
}
};
} IntKeyHash;
typedef struct
struct IntKeyEq
{
bool operator() (const int &x, const int &y) const { return x==y; }
} IntKeyEq;
inline bool operator()(const int &x, const int &y) const
{ 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
// 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);
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
// 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);
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; }
} LongKeyEq;
inline bool operator() (const int64_t &x, const int64_t &y) const
{ 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);
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; }
} eINSTANCEOFKeyEq;
inline bool operator()(const eINSTANCEOF &x, const eINSTANCEOF &y) const
{ return x == y; }
};

View file

@ -542,13 +542,15 @@ private:
#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;
typedef struct
struct PlayerKeyEq
{
bool operator() (const shared_ptr<Player> x, const shared_ptr<Player> y) const { return Player::eq_test (x, y); }
} PlayerKeyEq;
inline bool operator() (const shared_ptr<Player> x, const shared_ptr<Player> y) const
{ return Player::eq_test (x, y); }
};

View file

@ -2,7 +2,7 @@
#include "net.minecraft.world.level.tile.h"
#include "TickNextTickData.h"
__int64 TickNextTickData::C = 0;
int64_t TickNextTickData::C = 0;
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);
}
TickNextTickData *TickNextTickData::delay(__int64 l)
TickNextTickData *TickNextTickData::delay(int64_t l)
{
m_delay = l;
return this;

View file

@ -1,12 +1,14 @@
#pragma once
#include <cstdint>
// 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
class TickNextTickData
{
private:
static __int64 C;
static int64_t C;
public:
int x, y, z, tileId;
@ -14,7 +16,7 @@ public:
int priorityTilt;
private:
__int64 c;
int64_t c;
public:
TickNextTickData(int x, int y, int z, int tileId);
@ -31,19 +33,21 @@ public:
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;
typedef struct
struct TickNextTickDataKeyEq
{
bool operator() (const TickNextTickData &x, const TickNextTickData &y) const { return TickNextTickData::eq_test (x, y); }
} TickNextTickDataKeyEq;
bool operator() (const TickNextTickData &x, const TickNextTickData &y) const
{ 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)
![img.png](img.png)
![img.png](.github/IMG_8725.png)
## Introduction
@ -22,16 +22,19 @@ This project contains the source code of Minecraft Legacy Console Edition v1.3.0
- **Movement**: `W` `A` `S` `D`
- **Jump / Fly (Up)**: `Space`
- **Sneak / Fly (Down)**: `Shift` (Hold)
- **Sprint**: `Ctrl` (Hold)
- **Sprint**: `Ctrl` (Hold) or Double-tap `W`
- **Inventory**: `E`
- **Drop Item**: `Q`
- **Crafting**: `C`
- **Toggle View (FPS/TPS)**: `F5`
- **Fullscreen**: `F11`
- **Pause Menu**: `Esc`
- **Toggle Mouse Capture**: `Left Alt` (for debugging)
- **Attack / Destroy**: `Left Click`
- **Use / Place**: `Right Click`
- **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
@ -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
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
- 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"
)