From 40aea3e780897307941dd79cf5af2e28fc04d456 Mon Sep 17 00:00:00 2001 From: Soda Can Date: Tue, 10 Mar 2026 15:28:01 +1100 Subject: [PATCH] idrk --- Minecraft.Client/ModLoader.cpp | 213 +++++++++++------- .../x64/Debug/Minecraft.Client.log | 69 +++--- .../Minecraft.Client.tlog/CL.command.1.tlog | Bin 1235842 -> 1235842 bytes .../Minecraft.Client.tlog/CL.read.1.tlog | Bin 5428592 -> 5428582 bytes .../Minecraft.Client.tlog/CL.write.1.tlog | Bin 243092 -> 243202 bytes .../Minecraft.Client.tlog/link.read.1.tlog | Bin 137290 -> 136044 bytes Minecraft.Client/x64/Debug/ModLoader.obj | Bin 554067 -> 554123 bytes x64/Debug/Faucet.exe | Bin 20761600 -> 20761600 bytes x64/Debug/mods/ExampleMod.dll | Bin 84480 -> 0 bytes x64/Debug/mods/modloader.log | Bin 382 -> 208 bytes 10 files changed, 170 insertions(+), 112 deletions(-) delete mode 100644 x64/Debug/mods/ExampleMod.dll diff --git a/Minecraft.Client/ModLoader.cpp b/Minecraft.Client/ModLoader.cpp index f6a097f0..a44aa99e 100644 --- a/Minecraft.Client/ModLoader.cpp +++ b/Minecraft.Client/ModLoader.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -14,30 +15,28 @@ static HWND g_SplashWnd = NULL; static HWND g_StatusWnd = NULL; static HWND g_CountWnd = NULL; static HWND g_FailWnd = NULL; -static int g_TotalModsFound = 0; -static int g_ModsLoadedCount = 0; -static int g_ModsFailedCount = 0; +static int g_TotalMods = 0; +static int g_LoadedMods = 0; +static int g_FailedMods = 0; static ULONG_PTR g_gdiplusToken; LRESULT CALLBACK SplashWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - switch (msg) { - case WM_PAINT: { + if (msg == WM_PAINT) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1)); EndPaint(hwnd, &ps); - } return 0; + return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); } void CreateSplash() { - Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&g_gdiplusToken, &gdiplusStartupInput, NULL); - WNDCLASSW wc = { 0 }; + WNDCLASSW wc = {}; wc.lpfnWndProc = SplashWndProc; wc.hInstance = GetModuleHandle(NULL); wc.lpszClassName = L"ModLoaderSplash"; @@ -45,74 +44,70 @@ void CreateSplash() { wc.hCursor = LoadCursor(NULL, IDC_ARROW); RegisterClassW(&wc); - int w = 600; - int h = 400; - int x = (GetSystemMetrics(SM_CXSCREEN) - w) / 2; - int y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2; + const int w = 600, h = 400; + const int x = (GetSystemMetrics(SM_CXSCREEN) - w) / 2; + const int y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2; g_SplashWnd = CreateWindowExW(WS_EX_TOPMOST, wc.lpszClassName, L"Faucet", WS_POPUP | WS_BORDER | WS_VISIBLE, x, y, w, h, NULL, NULL, wc.hInstance, NULL); - CreateWindowW(L"STATIC", L"FAUCET", WS_CHILD | WS_VISIBLE | SS_CENTER, + CreateWindowW(L"STATIC", L"FAUCET", + WS_CHILD | WS_VISIBLE | SS_CENTER, 0, 20, w, 40, g_SplashWnd, NULL, wc.hInstance, NULL); HWND hLogo = CreateWindowW(L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE, - 100, 70, 400, 150, - g_SplashWnd, NULL, wc.hInstance, NULL); + 100, 70, 400, 150, g_SplashWnd, NULL, wc.hInstance, NULL); wchar_t buffer[MAX_PATH]; GetModuleFileNameW(NULL, buffer, MAX_PATH); - std::wstring exePath = buffer; - std::wstring exeDir = exePath.substr(0, exePath.find_last_of(L"\\/")); - std::wstring fullPath = exeDir + L"\\Common\\Media\\Faucet.png"; + std::wstring exeDir = std::wstring(buffer); + exeDir = exeDir.substr(0, exeDir.find_last_of(L"\\/")); + std::wstring imagePath = exeDir + L"\\Common\\Media\\Faucet.png"; - DWORD dwAttrib = GetFileAttributesW(fullPath.c_str()); - if (dwAttrib == INVALID_FILE_ATTRIBUTES) { - std::wstring errorMsg = L"Image not found at:\n" + fullPath; - MessageBoxW(g_SplashWnd, errorMsg.c_str(), L"File Error", MB_ICONERROR); - } - - Gdiplus::Bitmap* bitmap = Gdiplus::Bitmap::FromFile(fullPath.c_str()); + Gdiplus::Bitmap* bitmap = Gdiplus::Bitmap::FromFile(imagePath.c_str()); if (bitmap && bitmap->GetLastStatus() == Gdiplus::Ok) { HBITMAP hBmp = NULL; - Gdiplus::Status status = bitmap->GetHBITMAP(Gdiplus::Color(255, 255, 255, 255), &hBmp); - - if (status == Gdiplus::Ok && hBmp != NULL) { - SendMessage(hLogo, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBmp); + if (bitmap->GetHBITMAP(Gdiplus::Color(255, 255, 255, 255), &hBmp) == Gdiplus::Ok && hBmp) { + HBITMAP hOld = (HBITMAP)SendMessage(hLogo, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBmp); + if (hOld) DeleteObject(hOld); } - delete bitmap; } + delete bitmap; - g_StatusWnd = CreateWindowW(L"STATIC", L"Preparing...", WS_CHILD | WS_VISIBLE | SS_CENTER, + g_StatusWnd = CreateWindowW(L"STATIC", L"Preparing...", + WS_CHILD | WS_VISIBLE | SS_CENTER, 10, 240, 580, 40, g_SplashWnd, NULL, wc.hInstance, NULL); - g_CountWnd = CreateWindowW(L"STATIC", L"0/0 MODS LOADED", WS_CHILD | WS_VISIBLE | SS_LEFT, + g_CountWnd = CreateWindowW(L"STATIC", L"0/0 MODS LOADED", + WS_CHILD | WS_VISIBLE | SS_LEFT, 20, 350, 200, 20, g_SplashWnd, NULL, wc.hInstance, NULL); - g_FailWnd = CreateWindowW(L"STATIC", L"", WS_CHILD | WS_VISIBLE | SS_RIGHT, + g_FailWnd = CreateWindowW(L"STATIC", L"", + WS_CHILD | WS_VISIBLE | SS_RIGHT, 380, 350, 200, 20, g_SplashWnd, NULL, wc.hInstance, NULL); UpdateWindow(g_SplashWnd); } void UpdateSplashStatus(const std::wstring& text) { - if (g_StatusWnd) { - SendMessageW(g_StatusWnd, WM_SETTEXT, 0, (LPARAM)text.c_str()); + if (!g_StatusWnd) return; - std::wstring countText = std::to_wstring(g_ModsLoadedCount) + L"/" + std::to_wstring(g_TotalModsFound) + L" MODS LOADED"; - SendMessageW(g_CountWnd, WM_SETTEXT, 0, (LPARAM)countText.c_str()); + SendMessageW(g_StatusWnd, WM_SETTEXT, 0, (LPARAM)text.c_str()); - if (g_ModsFailedCount > 0) { - std::wstring failText = std::to_wstring(g_ModsFailedCount) + L" HAVE FAILED TO LOAD"; - SendMessageW(g_FailWnd, WM_SETTEXT, 0, (LPARAM)failText.c_str()); - } + std::wstring countText = std::to_wstring(g_LoadedMods) + L"/" + + std::to_wstring(g_TotalMods) + L" MODS LOADED"; + SendMessageW(g_CountWnd, WM_SETTEXT, 0, (LPARAM)countText.c_str()); - MSG msg; - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } + if (g_FailedMods > 0) { + std::wstring failText = std::to_wstring(g_FailedMods) + L" FAILED TO LOAD"; + SendMessageW(g_FailWnd, WM_SETTEXT, 0, (LPARAM)failText.c_str()); + } + + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); } } @@ -127,15 +122,19 @@ void ModLoader::Initialize() { auto startTime = std::chrono::steady_clock::now(); CreateSplash(); - OpenLogFile(); - Log(L"Faucet ModLoader initializing"); + + Log("=== Faucet ModLoader starting ==="); std::wstring modsDir = GetModsDirectory(); ScanAndLoadMods(modsDir); auto endTime = std::chrono::steady_clock::now(); - auto elapsed = std::chrono::duration_cast(endTime - startTime).count(); + long long elapsed = std::chrono::duration_cast(endTime - startTime).count(); + + Log("Initialization complete — " + std::to_string(g_LoadedMods) + " loaded, " + + std::to_string(g_FailedMods) + " failed, " + + std::to_string(elapsed) + "ms total"); if (elapsed < 1000) { UpdateSplashStatus(L"Finalizing..."); @@ -144,8 +143,8 @@ void ModLoader::Initialize() { if (g_SplashWnd) { DestroyWindow(g_SplashWnd); + g_SplashWnd = NULL; UnregisterClassW(L"ModLoaderSplash", GetModuleHandle(NULL)); - Gdiplus::GdiplusShutdown(g_gdiplusToken); } } @@ -153,39 +152,42 @@ void ModLoader::Initialize() { void ModLoader::NotifyInit() { for (auto& mod : m_mods) { if (!mod.healthy) continue; - const char* id = mod.instance->GetInfo()->id; try { if (!mod.instance->OnInit()) { + Log("OnInit() returned false for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } catch (...) { + Log("OnInit() threw for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } } void ModLoader::OnLevelLoad() { - Log(L"Level has loaded"); + Log("Level loaded"); for (auto& mod : m_mods) { if (!mod.healthy) continue; try { mod.instance->OnLevelLoad(); } catch (...) { + Log("OnLevelLoad() threw for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } } void ModLoader::OnLevelUnload() { - Log(L"Level has unloaded"); + Log("Level unloaded"); for (auto& mod : m_mods) { if (!mod.healthy) continue; try { mod.instance->OnLevelUnload(); } catch (...) { + Log("OnLevelUnload() threw for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } @@ -194,26 +196,29 @@ void ModLoader::OnLevelUnload() { void ModLoader::NotifyUpdate(float deltaTime) { for (auto& mod : m_mods) { if (!mod.healthy) continue; - if (mod.instance == nullptr) { + if (!mod.instance) { mod.healthy = false; continue; } try { if (!mod.instance->OnUpdate(deltaTime)) { + Log("OnUpdate() returned false for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } catch (...) { + Log("OnUpdate() threw for: " + std::string(mod.instance->GetInfo()->id)); mod.healthy = false; } } } void ModLoader::Shutdown() { - for (int i = static_cast(m_mods.size()) - 1; i >= 0; --i) { + Log("Shutting down ModLoader"); + for (int i = static_cast(m_mods.size()) - 1; i >= 0; --i) UnloadOneMod(m_mods[i]); - } m_mods.clear(); + if (m_logFile != INVALID_HANDLE_VALUE) { CloseHandle(m_logFile); m_logFile = INVALID_HANDLE_VALUE; @@ -223,9 +228,8 @@ void ModLoader::Shutdown() { IMod* ModLoader::FindMod(const std::string& id) const { for (const auto& mod : m_mods) { if (mod.healthy && mod.instance && - std::string(mod.instance->GetInfo()->id) == id) { + std::string(mod.instance->GetInfo()->id) == id) return mod.instance; - } } return nullptr; } @@ -234,34 +238,51 @@ void ModLoader::ScanAndLoadMods(const std::wstring& modsDir) { DWORD dwAttrib = GetFileAttributesW(modsDir.c_str()); if (dwAttrib == INVALID_FILE_ATTRIBUTES || !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY)) { CreateDirectoryW(modsDir.c_str(), NULL); + Log("Mods directory not found — created it"); return; } + std::vector dllPaths; std::wstring searchPath = modsDir + L"\\*.dll"; WIN32_FIND_DATAW fd; HANDLE hFind = FindFirstFileW(searchPath.c_str(), &fd); - if (hFind != INVALID_HANDLE_VALUE) { do { - if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { - std::wstring fullPath = modsDir + L"\\" + fd.cFileName; - UpdateSplashStatus(L"Loading: " + std::wstring(fd.cFileName)); - LoadOneMod(fullPath); - } + if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + dllPaths.push_back(modsDir + L"\\" + fd.cFileName); } while (FindNextFileW(hFind, &fd)); FindClose(hFind); } + + g_TotalMods = static_cast(dllPaths.size()); + Log("Found " + std::to_string(g_TotalMods) + " mod(s) to load"); + + for (const auto& path : dllPaths) { + std::wstring filename = path.substr(path.find_last_of(L"\\/") + 1); + UpdateSplashStatus(L"Loading: " + filename); + LoadOneMod(path); + } } bool ModLoader::LoadOneMod(const std::wstring& dllPath) { + std::string narrowPath(dllPath.begin(), dllPath.end()); + std::string filename = narrowPath.substr(narrowPath.find_last_of("\\/") + 1); + + auto t0 = std::chrono::steady_clock::now(); + HMODULE hMod = LoadLibraryW(dllPath.c_str()); - if (!hMod) return false; + if (!hMod) { + Log("FAIL [" + filename + "] LoadLibrary failed (error " + std::to_string(GetLastError()) + ")"); + ++g_FailedMods; + return false; + } using CreateModFn = IMod * (*)(); auto createFn = reinterpret_cast(GetProcAddress(hMod, "CreateMod")); - if (!createFn) { + Log("FAIL [" + filename + "] missing CreateMod export"); FreeLibrary(hMod); + ++g_FailedMods; return false; } @@ -270,37 +291,67 @@ bool ModLoader::LoadOneMod(const std::wstring& dllPath) { instance = createFn(); } catch (...) { + Log("FAIL [" + filename + "] CreateMod() threw"); FreeLibrary(hMod); + ++g_FailedMods; return false; } if (!instance) { + Log("FAIL [" + filename + "] CreateMod() returned null"); FreeLibrary(hMod); + ++g_FailedMods; return false; } + const ModInfo* info = instance->GetInfo(); + std::string modId = info ? info->id : "(unknown)"; + std::string modVer = info + ? std::to_string(info->version.major) + "." + + std::to_string(info->version.minor) + "." + + std::to_string(info->version.patch) + : "(unknown)"; + LoadedMod record; record.module = hMod; record.instance = instance; - record.path = std::string(dllPath.begin(), dllPath.end()); + record.path = narrowPath; try { if (!instance->OnLoad()) { + Log("WARN [" + modId + " " + modVer + "] OnLoad() returned false — marking unhealthy"); record.healthy = false; } } catch (...) { + Log("FAIL [" + modId + " " + modVer + "] OnLoad() threw — marking unhealthy"); record.healthy = false; } + auto elapsed = std::chrono::duration_cast( + std::chrono::steady_clock::now() - t0).count(); + + if (record.healthy) { + Log("OK [" + modId + " " + modVer + "] loaded in " + std::to_string(elapsed) + "ms"); + ++g_LoadedMods; + } + else { + ++g_FailedMods; + } + m_mods.push_back(std::move(record)); - return true; + return record.healthy; } void ModLoader::UnloadOneMod(LoadedMod& mod) { if (!mod.instance) return; + + if (mod.instance->GetInfo()) + Log("Unloading: " + std::string(mod.instance->GetInfo()->id)); + delete mod.instance; mod.instance = nullptr; + if (mod.module) { FreeLibrary(mod.module); mod.module = nullptr; @@ -308,30 +359,38 @@ void ModLoader::UnloadOneMod(LoadedMod& mod) { } void ModLoader::OpenLogFile() { - std::wstring dir = GetModsDirectory(); - std::wstring logPath = dir + L"\\modloader.log"; - CreateDirectoryW(dir.c_str(), NULL); + std::wstring logPath = GetModsDirectory() + L"\\modloader.log"; + CreateDirectoryW(GetModsDirectory().c_str(), NULL); m_logFile = CreateFileW(logPath.c_str(), GENERIC_WRITE, FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + + if (m_logFile != INVALID_HANDLE_VALUE) { + BYTE bom[3] = { 0xEF, 0xBB, 0xBF }; + DWORD written; + WriteFile(m_logFile, bom, 3, &written, nullptr); + } } -void ModLoader::Log(const std::wstring& msg) { +void ModLoader::Log(const std::string& msg) { auto now = std::chrono::system_clock::now(); std::time_t t = std::chrono::system_clock::to_time_t(now); struct tm buf; localtime_s(&buf, &t); char ts[16]; std::strftime(ts, sizeof(ts), "[%H:%M:%S] ", &buf); - std::wstring line = std::wstring(ts, ts + strlen(ts)) + msg + L"\r\n"; + + std::string line = std::string(ts) + msg + "\r\n"; + if (m_logFile != INVALID_HANDLE_VALUE) { DWORD written; - WriteFile(m_logFile, line.c_str(), static_cast(line.size() * sizeof(wchar_t)), &written, nullptr); + WriteFile(m_logFile, line.c_str(), static_cast(line.size()), &written, nullptr); } - OutputDebugStringW(line.c_str()); + + OutputDebugStringA(line.c_str()); } -void ModLoader::Log(const std::string& msg) { - Log(std::wstring(msg.begin(), msg.end())); +void ModLoader::Log(const std::wstring& msg) { + Log(std::string(msg.begin(), msg.end())); } std::wstring ModLoader::GetModsDirectory() const { diff --git a/Minecraft.Client/x64/Debug/Minecraft.Client.log b/Minecraft.Client/x64/Debug/Minecraft.Client.log index 7dec0124..4216d97a 100644 --- a/Minecraft.Client/x64/Debug/Minecraft.Client.log +++ b/Minecraft.Client/x64/Debug/Minecraft.Client.log @@ -1,4 +1,37 @@ - SDK.cpp + ModLoader.cpp +C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\xutility(4813,18): warning C4244: '=': conversion from 'const wchar_t' to 'char', possible loss of data + (compiling source file '/ModLoader.cpp') + C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\xutility(4813,18): + the template instantiation context (the oldest one first) is + S:\GitHub\Faucet\Minecraft.Client\ModLoader.cpp(285,30): + see reference to function template instantiation 'std::basic_string,std::allocator>::basic_string>>,0>(_Iter,_Iter,const _Alloc &)' being compiled + with + [ + _Elem=wchar_t, + _Iter=std::_String_const_iterator>>, + _Alloc=std::allocator + ] + S:\GitHub\Faucet\Minecraft.Client\ModLoader.cpp(285,17): + see the first reference to 'std::basic_string,std::allocator>::basic_string' in 'ModLoader::LoadOneMod' + C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\xstring(812,17): + see reference to function template instantiation 'void std::basic_string,std::allocator>::_Construct_from_iter(_Iter,const _Sent,_Size)' being compiled + with + [ + _Size_type=unsigned __int64, + _Iter=const wchar_t *, + _Sent=const wchar_t *, + _Size=unsigned __int64 + ] + C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\xstring(968,18): + see reference to function template instantiation '_OutIt *std::_Copy_n_unchecked4(_InIt,_SizeTy,_OutIt)' being compiled + with + [ + _OutIt=char *, + _Size=unsigned __int64, + _InIt=const wchar_t *, + _SizeTy=unsigned __int64 + ] + Microsoft (R) Incremental Linker Version 14.44.35222.0 Copyright (C) Microsoft Corporation. All rights reserved. "/OUT:S:\GitHub\Faucet\x64\Debug\Faucet.exe" /INCREMENTAL "/ILK:x64\Debug\Faucet.ilk" d3d11.lib ..\Minecraft.World\x64_Debug\Minecraft.World.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib XInput9_1_0.lib ..\Minecraft.Client\Windows64\Miles\Lib\mss64.lib wsock32.lib /MANIFEST "/MANIFESTUAC:level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG "/PDB:S:\GitHub\Faucet\x64\Debug\Minecraft.Client.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT "/IMPLIB:S:\GitHub\Faucet\x64\Debug\Faucet.lib" /MACHINE:X64 x64\Debug\MinecraftWindows.res @@ -506,40 +539,6 @@ Windows64\Iggy\lib\iggy_w64.lib Windows64\Miles\lib\mss64.lib x64\Debug\iob_shim.obj -4J_Input_d.lib(4J_Input.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(4J_Input.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Input_d.lib(INP_Keyboard.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(INP_Keyboard.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Input_d.lib(INP_Main.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(INP_Main.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Input_d.lib(stdafx.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(stdafx.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Input_d.lib(LinkedList.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(LinkedList.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Input_d.lib(INP_ForceFeedback.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Input_d.lib(INP_ForceFeedback.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(4J_Render.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(4J_Render.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererMatrix.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererMatrix.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererCore.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererCore.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererVertex.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererVertex.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererCBuff.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererCBuff.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererTexture.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererTexture.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(RendererState.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(RendererState.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(stdafx.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(stdafx.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngread.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngread.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngwrite.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngwrite.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(png.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(png.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngrtran.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngrtran.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngtrans.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngtrans.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngrio.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngrio.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngmem.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngmem.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngerror.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngerror.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngset.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngset.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngget.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngget.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngrutil.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngrutil.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngwutil.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngwutil.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngwio.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngwio.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Render_PC_d.lib(pngwtran.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Render_PC_d.lib(pngwtran.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Storage_d.lib(4J_Storage.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Storage_d.lib(4J_Storage.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Storage_d.lib(STO_SaveGame.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Storage_d.lib(STO_SaveGame.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Storage_d.lib(STO_DLC.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Storage_d.lib(STO_DLC.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Storage_d.lib(STO_Main.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Storage_d.lib(STO_Main.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info -4J_Storage_d.lib(stdafx.obj) : warning LNK4099: PDB 'vc110.pdb' was not found with '4J_Storage_d.lib(stdafx.obj)' or at 'S:\GitHub\Faucet\x64\Debug\vc110.pdb'; linking object as if no debug info - Creating library S:\GitHub\Faucet\x64\Debug\Faucet.lib and object S:\GitHub\Faucet\x64\Debug\Faucet.exp Minecraft.Client.vcxproj -> S:\GitHub\Faucet\x64\Debug\Faucet.exe Run post-build script Post-build script started. Output Directory: S:\GitHub\Faucet\x64\Debug\/, Project Directory: S:\GitHub\Faucet\Minecraft.Client\/ diff --git a/Minecraft.Client/x64/Debug/Minecraft.Client.tlog/CL.command.1.tlog b/Minecraft.Client/x64/Debug/Minecraft.Client.tlog/CL.command.1.tlog index 5a46d505e46b9214215980f903f785d0ff95e9ff..ff745b55e1c208f7311fe401b559d9830b4060af 100644 GIT binary patch delta 87 zcmZqL?%lNAyP<`#g{g(Pg{6hHg{_6Xg``K!=+!XMdzTlFO*!BrNydRjSFW~1; Wn%2$jHvQi&&B~vcZqAq`0NEuj2!l#88k-jE$9z z7FN(1D{DW%5VbhX`EI|Ozy35aVP=S7MzCPTh8+h^T#Vvo3=dw$nLuHZDSY?|5M-Je zW|?E25Md%Lu*ee2tgy-&QPzpEL7W6hHrXP@HfeU)B}0}y_Q`QTo`)Stvp;1^DeT@U~O delta 244 zcmWN=xlY1x0KnmZs1*wqtOuY{#S0GvFAz|{R`71=>=XC|4h{~#*^rRoKm3389D~%lqhq- zC0AT?!!381SRa+gmQY@7RfLkfkK4uFIKgaWh!sIij}suq{5kpf(oI2r*UmoC}?MwgJQ1ALcoYyk?l j;Ijj?0hfRk15A^!sT7lb<6M_$t^*#Eu;^Hqz}x{A(0(9c delta 42 zcmV+_0M-A3><*Oc4uFIKgaWh!sIilpF diff --git a/Minecraft.Client/x64/Debug/Minecraft.Client.tlog/link.read.1.tlog b/Minecraft.Client/x64/Debug/Minecraft.Client.tlog/link.read.1.tlog index f663ade1f073011f6b2673e507baa7761ad14a75..b1924ac4e8569c3f2fb833fa0f14ffc0e4b8652a 100644 GIT binary patch delta 23 fcmX@Lf#c0Gj)oS-ElmG}rps|MMoc#nVG;uXb}9$- delta 254 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 b(f@LkDq4cY^)GMcnly2#kvMUwsbBa%EUX%h diff --git a/x64/Debug/Faucet.exe b/x64/Debug/Faucet.exe index e323231895dce4330644dea341fe14d9d290ec23..412877d5851bc424ed041472ec468c5696047d66 100644 GIT binary patch delta 4174 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 YVH|~c3inV*ppYmxyuNt6JZs*60A?HlIRF3v delta 4148 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 MRK9n?2x&&*?;MW(ng9R* diff --git a/x64/Debug/mods/ExampleMod.dll b/x64/Debug/mods/ExampleMod.dll deleted file mode 100644 index 02ebcce5b7f247c93519c6a38d374afbf348fcc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84480 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 diff --git a/x64/Debug/mods/modloader.log b/x64/Debug/mods/modloader.log index 7ce6b505f72983092c244ce54a0e4e78b8a35a58..88a538875c9bc4132c662245e8d91b63b3fa9993 100644 GIT binary patch delta 52 zcmeyzbb*mOn!%94l);L@h{1RwcOWx}inrzjQa~|d28)TQiaeeSc?_8hB@Da_Tnqpm C`3ar? literal 382 zcma!MFk~=gumX}6K++h@agu1 jx&>3WDbzncKpV?|I0tB72GAA7KspERpA;;vrjJelpy@es