mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
add: Dedicated Server implementation
- Introduced `ServerMain.cpp` for the dedicated server logic, handling command-line arguments, server initialization, and network management. - Created `postbuild_server.ps1` script for post-build tasks, including copying necessary resources and DLLs for the dedicated server. - Added `CopyServerAssets.cmake` to manage the copying of server assets during the build process, ensuring required files are available for the dedicated server. - Defined project filters in `Minecraft.Server.vcxproj.filters` for better organization of server-related files.
This commit is contained in:
parent
a97ee4aab1
commit
e4c8229e52
9
.gitignore
vendored
9
.gitignore
vendored
|
|
@ -423,6 +423,12 @@ Minecraft.World/x64_Debug/
|
||||||
Minecraft.World/Release/
|
Minecraft.World/Release/
|
||||||
Minecraft.World/x64_Release/
|
Minecraft.World/x64_Release/
|
||||||
|
|
||||||
|
Minecraft.Server/x64/
|
||||||
|
Minecraft.Server/Debug/
|
||||||
|
Minecraft.Server/x64_Debug/
|
||||||
|
Minecraft.Server/Release/
|
||||||
|
Minecraft.Server/x64_Release/
|
||||||
|
|
||||||
build/*
|
build/*
|
||||||
|
|
||||||
# Existing build output files
|
# Existing build output files
|
||||||
|
|
@ -433,3 +439,6 @@ build/*
|
||||||
|
|
||||||
# Local saves
|
# Local saves
|
||||||
Minecraft.Client/Saves/
|
Minecraft.Client/Saves/
|
||||||
|
|
||||||
|
tmp*/
|
||||||
|
_server_asset_probe/
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,58 @@ target_link_libraries(MinecraftClient PRIVATE
|
||||||
>
|
>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(MINECRAFT_SERVER_SOURCES ${MINECRAFT_CLIENT_SOURCES})
|
||||||
|
list(APPEND MINECRAFT_SERVER_SOURCES
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Server/Windows64/ServerMain.cpp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(MinecraftServer ${MINECRAFT_SERVER_SOURCES})
|
||||||
|
target_include_directories(MinecraftServer 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"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Server/Windows64"
|
||||||
|
)
|
||||||
|
target_compile_definitions(MinecraftServer 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)
|
||||||
|
configure_msvc_target(MinecraftServer)
|
||||||
|
target_link_options(MinecraftServer PRIVATE
|
||||||
|
$<$<CONFIG:Release>:/LTCG /INCREMENTAL:NO>
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(MinecraftServer PROPERTIES
|
||||||
|
OUTPUT_NAME "Minecraft.Server"
|
||||||
|
VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:MinecraftServer>"
|
||||||
|
VS_DEBUGGER_COMMAND_ARGUMENTS "-port 25565 -bind 0.0.0.0 -name DedicatedServer"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(MinecraftServer PRIVATE
|
||||||
|
MinecraftWorld
|
||||||
|
d3d11
|
||||||
|
XInput9_1_0
|
||||||
|
wsock32
|
||||||
|
legacy_stdio_definitions
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggy_w64.lib"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggyperfmon_w64.lib"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggyexpruntime_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_Render_PC_d.lib"
|
||||||
|
>
|
||||||
|
$<$<NOT:$<CONFIG:Debug>>:
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Input.lib"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Storage.lib"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/4JLibs/libs/4J_Render_PC.lib"
|
||||||
|
>
|
||||||
|
)
|
||||||
|
|
||||||
add_custom_command(TARGET MinecraftClient POST_BUILD
|
add_custom_command(TARGET MinecraftClient POST_BUILD
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
-DPROJECT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
|
-DPROJECT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
|
@ -97,4 +149,13 @@ add_custom_command(TARGET MinecraftClient POST_BUILD
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
|
||||||
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)
|
add_custom_command(TARGET MinecraftServer POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
|
-DPROJECT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
-DOUTPUT_DIR="$<TARGET_FILE_DIR:MinecraftServer>"
|
||||||
|
-DCONFIGURATION=$<CONFIG>
|
||||||
|
-P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyServerAssets.cmake"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftServer)
|
||||||
|
|
|
||||||
34
COMPILE.md
34
COMPILE.md
|
|
@ -3,7 +3,9 @@
|
||||||
## Visual Studio (`.sln`)
|
## Visual Studio (`.sln`)
|
||||||
|
|
||||||
1. Open `MinecraftConsoles.sln` in Visual Studio 2022.
|
1. Open `MinecraftConsoles.sln` in Visual Studio 2022.
|
||||||
2. Set `Minecraft.Client` as the Startup Project.
|
2. Set Startup Project:
|
||||||
|
- Client: `Minecraft.Client`
|
||||||
|
- Dedicated server: `Minecraft.Server`
|
||||||
3. Select configuration:
|
3. Select configuration:
|
||||||
- `Debug` (recommended), or
|
- `Debug` (recommended), or
|
||||||
- `Release`
|
- `Release`
|
||||||
|
|
@ -12,6 +14,17 @@
|
||||||
- `Build > Build Solution` (or `Ctrl+Shift+B`)
|
- `Build > Build Solution` (or `Ctrl+Shift+B`)
|
||||||
- Start debugging with `F5`.
|
- Start debugging with `F5`.
|
||||||
|
|
||||||
|
### Dedicated server debug arguments
|
||||||
|
|
||||||
|
- Default debugger arguments for `Minecraft.Server`:
|
||||||
|
- `-port 25565 -bind 0.0.0.0 -name DedicatedServer`
|
||||||
|
- You can override arguments in:
|
||||||
|
- `Project Properties > Debugging > Command Arguments`
|
||||||
|
- `Minecraft.Server` post-build copies only the dedicated-server asset set:
|
||||||
|
- `Common/Media/MediaWindows64.arc`
|
||||||
|
- `Common/res`
|
||||||
|
- `Windows64/GameHDD`
|
||||||
|
|
||||||
## CMake (Windows x64)
|
## CMake (Windows x64)
|
||||||
|
|
||||||
Configure (use your VS Community instance explicitly):
|
Configure (use your VS Community instance explicitly):
|
||||||
|
|
@ -32,6 +45,18 @@ Build Release:
|
||||||
cmake --build build --config Release --target MinecraftClient
|
cmake --build build --config Release --target MinecraftClient
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Build Dedicated Server (Debug):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
cmake --build build --config Debug --target MinecraftServer
|
||||||
|
```
|
||||||
|
|
||||||
|
Build Dedicated Server (Release):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
cmake --build build --config Release --target MinecraftServer
|
||||||
|
```
|
||||||
|
|
||||||
Run executable:
|
Run executable:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
|
|
@ -39,6 +64,13 @@ cd .\build\Debug
|
||||||
.\MinecraftClient.exe
|
.\MinecraftClient.exe
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Run dedicated server:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
cd .\build\Debug
|
||||||
|
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer
|
||||||
|
```
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
- The CMake build is Windows-only and x64-only.
|
- The CMake build is Windows-only and x64-only.
|
||||||
- Contributors on macOS or Linux need a Windows machine or VM to build the project. Running the game via Wine is separate from having a supported build environment.
|
- Contributors on macOS or Linux need a Windows machine or VM to build the project. Running the game via Wine is separate from having a supported build environment.
|
||||||
|
|
|
||||||
|
|
@ -195,10 +195,12 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft *minecraft, LPVOID lpParame
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__int64 seed = 0;
|
__int64 seed = 0;
|
||||||
|
bool dedicatedNoLocalHostPlayer = false;
|
||||||
if(lpParameter != NULL)
|
if(lpParameter != NULL)
|
||||||
{
|
{
|
||||||
NetworkGameInitData *param = (NetworkGameInitData *)lpParameter;
|
NetworkGameInitData *param = (NetworkGameInitData *)lpParameter;
|
||||||
seed = param->seed;
|
seed = param->seed;
|
||||||
|
dedicatedNoLocalHostPlayer = param->dedicatedNoLocalHostPlayer;
|
||||||
|
|
||||||
app.setLevelGenerationOptions(param->levelGen);
|
app.setLevelGenerationOptions(param->levelGen);
|
||||||
if(param->levelGen != NULL)
|
if(param->levelGen != NULL)
|
||||||
|
|
@ -354,186 +356,199 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft *minecraft, LPVOID lpParame
|
||||||
// PRIMARY PLAYER
|
// PRIMARY PLAYER
|
||||||
|
|
||||||
vector<ClientConnection *> createdConnections;
|
vector<ClientConnection *> createdConnections;
|
||||||
ClientConnection *connection;
|
ClientConnection *connection = NULL;
|
||||||
|
|
||||||
if( g_NetworkManager.IsHost() )
|
if( g_NetworkManager.IsHost() && dedicatedNoLocalHostPlayer )
|
||||||
{
|
{
|
||||||
connection = new ClientConnection(minecraft, NULL);
|
app.DebugPrintf("Dedicated server mode: skipping local host client connection\n");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(ProfileManager.GetLockedProfile());
|
|
||||||
if(pNetworkPlayer == NULL)
|
|
||||||
{
|
|
||||||
MinecraftServer::HaltServer();
|
|
||||||
app.DebugPrintf("%d\n",ProfileManager.GetLockedProfile());
|
|
||||||
// If the player is NULL here then something went wrong in the session setup, and continuing will end up in a crash
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Socket *socket = pNetworkPlayer->GetSocket();
|
// Keep telemetry behavior consistent with host path.
|
||||||
|
|
||||||
// Fix for #13259 - CRASH: Gameplay: loading process is halted when player loads saved data
|
|
||||||
if(socket == NULL)
|
|
||||||
{
|
|
||||||
assert(false);
|
|
||||||
MinecraftServer::HaltServer();
|
|
||||||
// If the socket is NULL here then something went wrong in the session setup, and continuing will end up in a crash
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
connection = new ClientConnection(minecraft, socket);
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !connection->createdOk )
|
|
||||||
{
|
|
||||||
assert(false);
|
|
||||||
delete connection;
|
|
||||||
connection = NULL;
|
|
||||||
MinecraftServer::HaltServer();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
connection->send( shared_ptr<PreLoginPacket>( new PreLoginPacket(minecraft->user->name) ) );
|
|
||||||
|
|
||||||
// Tick connection until we're ready to go. The stages involved in this are:
|
|
||||||
// (1) Creating the ClientConnection sends a prelogin packet to the server
|
|
||||||
// (2) the server sends a prelogin back, which is handled by the clientConnection, and returns a login packet
|
|
||||||
// (3) the server sends a login back, which is handled by the client connection to start the game
|
|
||||||
if( !g_NetworkManager.IsHost() )
|
|
||||||
{
|
|
||||||
Minecraft::GetInstance()->progressRenderer->progressStart(IDS_PROGRESS_CONNECTING);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 4J Stu - Host needs to generate a unique multiplayer id for sentient telemetry reporting
|
|
||||||
INT multiplayerInstanceId = TelemetryManager->GenerateMultiplayerInstanceId();
|
INT multiplayerInstanceId = TelemetryManager->GenerateMultiplayerInstanceId();
|
||||||
TelemetryManager->SetMultiplayerInstanceId(multiplayerInstanceId);
|
TelemetryManager->SetMultiplayerInstanceId(multiplayerInstanceId);
|
||||||
}
|
|
||||||
TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
app.DebugPrintf("ticking connection A\n");
|
|
||||||
connection->tick();
|
|
||||||
|
|
||||||
// 4J Stu - We were ticking this way too fast which could cause the connection to time out
|
|
||||||
// The connections should tick at 20 per second
|
|
||||||
Sleep(50);
|
|
||||||
} while ( (IsInSession() && !connection->isStarted() && !connection->isClosed() && !g_NetworkManager.IsLeavingGame()) || tPack->isLoadingData() || (Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()) );
|
|
||||||
ui.CleanUpSkinReload();
|
|
||||||
|
|
||||||
// 4J Stu - Fix for #11279 - CRASH: TCR 001: BAS Game Stability: Signing out of game will cause title to crash
|
|
||||||
// We need to break out of the above loop if m_bLeavingGame is set, and close the connection
|
|
||||||
if( g_NetworkManager.IsLeavingGame() || !IsInSession() )
|
|
||||||
{
|
|
||||||
connection->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( connection->isStarted() && !connection->isClosed() )
|
|
||||||
{
|
|
||||||
createdConnections.push_back( connection );
|
|
||||||
|
|
||||||
int primaryPad = ProfileManager.GetPrimaryPad();
|
|
||||||
app.SetRichPresenceContext(primaryPad,CONTEXT_GAME_STATE_BLANK);
|
|
||||||
if (GetPlayerCount() > 1) // Are we offline or online, and how many players are there
|
|
||||||
{
|
|
||||||
if (IsLocalGame()) ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false);
|
|
||||||
else ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER,false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(IsLocalGame()) ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER_1POFFLINE,false);
|
|
||||||
else ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER_1P,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ALL OTHER LOCAL PLAYERS
|
|
||||||
for(int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
|
|
||||||
{
|
|
||||||
// Already have setup the primary pad
|
|
||||||
if(idx == ProfileManager.GetPrimaryPad() ) continue;
|
|
||||||
|
|
||||||
if( GetLocalPlayerByUserIndex(idx) != NULL && !ProfileManager.IsSignedIn(idx) )
|
|
||||||
{
|
|
||||||
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(idx);
|
|
||||||
Socket *socket = pNetworkPlayer->GetSocket();
|
|
||||||
app.DebugPrintf("Closing socket due to player %d not being signed in any more\n");
|
|
||||||
if( !socket->close(false) ) socket->close(true);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// By default when we host we only have the local player, but currently allow multiple local players to join
|
|
||||||
// when joining any other way, so just because they are signed in doesn't mean they are in the session
|
|
||||||
// 4J Stu - If they are in the session, then we should add them to the game. Otherwise we won't be able to add them later
|
|
||||||
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(idx);
|
|
||||||
if( pNetworkPlayer == NULL )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ClientConnection *connection;
|
|
||||||
|
|
||||||
Socket *socket = pNetworkPlayer->GetSocket();
|
|
||||||
connection = new ClientConnection(minecraft, socket, idx);
|
|
||||||
|
|
||||||
minecraft->addPendingLocalConnection(idx, connection);
|
|
||||||
//minecraft->createExtraLocalPlayer(idx, (convStringToWstring( ProfileManager.GetGamertag(idx) )).c_str(), idx, connection);
|
|
||||||
|
|
||||||
// Open the socket on the server end to accept incoming data
|
|
||||||
Socket::addIncomingSocket(socket);
|
|
||||||
|
|
||||||
connection->send( shared_ptr<PreLoginPacket>( new PreLoginPacket(convStringToWstring( ProfileManager.GetGamertag(idx) )) ) );
|
|
||||||
|
|
||||||
createdConnections.push_back( connection );
|
|
||||||
|
|
||||||
// Tick connection until we're ready to go. The stages involved in this are:
|
|
||||||
// (1) Creating the ClientConnection sends a prelogin packet to the server
|
|
||||||
// (2) the server sends a prelogin back, which is handled by the clientConnection, and returns a login packet
|
|
||||||
// (3) the server sends a login back, which is handled by the client connection to start the game
|
|
||||||
do
|
|
||||||
{
|
|
||||||
// We need to keep ticking the connections for players that already logged in
|
|
||||||
for(AUTO_VAR(it, createdConnections.begin()); it < createdConnections.end(); ++it)
|
|
||||||
{
|
|
||||||
(*it)->tick();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4J Stu - We were ticking this way too fast which could cause the connection to time out
|
|
||||||
// The connections should tick at 20 per second
|
|
||||||
Sleep(50);
|
|
||||||
app.DebugPrintf("<***> %d %d %d %d %d\n",IsInSession(), !connection->isStarted(),!connection->isClosed(),ProfileManager.IsSignedIn(idx),!g_NetworkManager.IsLeavingGame());
|
|
||||||
#if defined _XBOX || __PS3__
|
|
||||||
} while (IsInSession() && !connection->isStarted() && !connection->isClosed() && ProfileManager.IsSignedIn(idx) && !g_NetworkManager.IsLeavingGame() );
|
|
||||||
#else
|
|
||||||
// TODO - This SHOULD be something just like the code above but temporarily changing here so that we don't have to depend on the profilemanager behaviour
|
|
||||||
} while (IsInSession() && !connection->isStarted() && !connection->isClosed() && !g_NetworkManager.IsLeavingGame() );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// 4J Stu - Fix for #11279 - CRASH: TCR 001: BAS Game Stability: Signing out of game will cause title to crash
|
|
||||||
// We need to break out of the above loop if m_bLeavingGame is set, and stop creating new connections
|
|
||||||
// The connections in the createdConnections vector get closed at the end of the thread
|
|
||||||
if( g_NetworkManager.IsLeavingGame() || !IsInSession() ) break;
|
|
||||||
|
|
||||||
if( ProfileManager.IsSignedIn(idx) && !connection->isClosed() )
|
|
||||||
{
|
|
||||||
app.SetRichPresenceContext(idx,CONTEXT_GAME_STATE_BLANK);
|
|
||||||
if (IsLocalGame()) ProfileManager.SetCurrentGameActivity(idx,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false);
|
|
||||||
else ProfileManager.SetCurrentGameActivity(idx,CONTEXT_PRESENCE_MULTIPLAYER,false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
connection->close();
|
|
||||||
AUTO_VAR(it, find( createdConnections.begin(), createdConnections.end(), connection ));
|
|
||||||
if(it != createdConnections.end() ) createdConnections.erase( it );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
app.SetGameMode( eMode_Multiplayer );
|
app.SetGameMode( eMode_Multiplayer );
|
||||||
}
|
}
|
||||||
else if ( connection->isClosed() || !IsInSession())
|
else
|
||||||
{
|
{
|
||||||
// assert(false);
|
if( g_NetworkManager.IsHost() )
|
||||||
MinecraftServer::HaltServer();
|
{
|
||||||
return false;
|
connection = new ClientConnection(minecraft, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(ProfileManager.GetLockedProfile());
|
||||||
|
if(pNetworkPlayer == NULL)
|
||||||
|
{
|
||||||
|
MinecraftServer::HaltServer();
|
||||||
|
app.DebugPrintf("%d\n",ProfileManager.GetLockedProfile());
|
||||||
|
// If the player is NULL here then something went wrong in the session setup, and continuing will end up in a crash
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Socket *socket = pNetworkPlayer->GetSocket();
|
||||||
|
|
||||||
|
// Fix for #13259 - CRASH: Gameplay: loading process is halted when player loads saved data
|
||||||
|
if(socket == NULL)
|
||||||
|
{
|
||||||
|
assert(false);
|
||||||
|
MinecraftServer::HaltServer();
|
||||||
|
// If the socket is NULL here then something went wrong in the session setup, and continuing will end up in a crash
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
connection = new ClientConnection(minecraft, socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !connection->createdOk )
|
||||||
|
{
|
||||||
|
assert(false);
|
||||||
|
delete connection;
|
||||||
|
connection = NULL;
|
||||||
|
MinecraftServer::HaltServer();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
connection->send( shared_ptr<PreLoginPacket>( new PreLoginPacket(minecraft->user->name) ) );
|
||||||
|
|
||||||
|
// Tick connection until we're ready to go. The stages involved in this are:
|
||||||
|
// (1) Creating the ClientConnection sends a prelogin packet to the server
|
||||||
|
// (2) the server sends a prelogin back, which is handled by the clientConnection, and returns a login packet
|
||||||
|
// (3) the server sends a login back, which is handled by the client connection to start the game
|
||||||
|
if( !g_NetworkManager.IsHost() )
|
||||||
|
{
|
||||||
|
Minecraft::GetInstance()->progressRenderer->progressStart(IDS_PROGRESS_CONNECTING);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 4J Stu - Host needs to generate a unique multiplayer id for sentient telemetry reporting
|
||||||
|
INT multiplayerInstanceId = TelemetryManager->GenerateMultiplayerInstanceId();
|
||||||
|
TelemetryManager->SetMultiplayerInstanceId(multiplayerInstanceId);
|
||||||
|
}
|
||||||
|
TexturePack *tPack = Minecraft::GetInstance()->skins->getSelected();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
app.DebugPrintf("ticking connection A\n");
|
||||||
|
connection->tick();
|
||||||
|
|
||||||
|
// 4J Stu - We were ticking this way too fast which could cause the connection to time out
|
||||||
|
// The connections should tick at 20 per second
|
||||||
|
Sleep(50);
|
||||||
|
} while ( (IsInSession() && !connection->isStarted() && !connection->isClosed() && !g_NetworkManager.IsLeavingGame()) || tPack->isLoadingData() || (Minecraft::GetInstance()->skins->needsUIUpdate() || ui.IsReloadingSkin()) );
|
||||||
|
ui.CleanUpSkinReload();
|
||||||
|
|
||||||
|
// 4J Stu - Fix for #11279 - CRASH: TCR 001: BAS Game Stability: Signing out of game will cause title to crash
|
||||||
|
// We need to break out of the above loop if m_bLeavingGame is set, and close the connection
|
||||||
|
if( g_NetworkManager.IsLeavingGame() || !IsInSession() )
|
||||||
|
{
|
||||||
|
connection->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( connection->isStarted() && !connection->isClosed() )
|
||||||
|
{
|
||||||
|
createdConnections.push_back( connection );
|
||||||
|
|
||||||
|
int primaryPad = ProfileManager.GetPrimaryPad();
|
||||||
|
app.SetRichPresenceContext(primaryPad,CONTEXT_GAME_STATE_BLANK);
|
||||||
|
if (GetPlayerCount() > 1) // Are we offline or online, and how many players are there
|
||||||
|
{
|
||||||
|
if (IsLocalGame()) ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false);
|
||||||
|
else ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER,false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(IsLocalGame()) ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER_1POFFLINE,false);
|
||||||
|
else ProfileManager.SetCurrentGameActivity(primaryPad,CONTEXT_PRESENCE_MULTIPLAYER_1P,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ALL OTHER LOCAL PLAYERS
|
||||||
|
for(int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
|
||||||
|
{
|
||||||
|
// Already have setup the primary pad
|
||||||
|
if(idx == ProfileManager.GetPrimaryPad() ) continue;
|
||||||
|
|
||||||
|
if( GetLocalPlayerByUserIndex(idx) != NULL && !ProfileManager.IsSignedIn(idx) )
|
||||||
|
{
|
||||||
|
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(idx);
|
||||||
|
Socket *socket = pNetworkPlayer->GetSocket();
|
||||||
|
app.DebugPrintf("Closing socket due to player %d not being signed in any more\n");
|
||||||
|
if( !socket->close(false) ) socket->close(true);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// By default when we host we only have the local player, but currently allow multiple local players to join
|
||||||
|
// when joining any other way, so just because they are signed in doesn't mean they are in the session
|
||||||
|
// 4J Stu - If they are in the session, then we should add them to the game. Otherwise we won't be able to add them later
|
||||||
|
INetworkPlayer *pNetworkPlayer = g_NetworkManager.GetLocalPlayerByUserIndex(idx);
|
||||||
|
if( pNetworkPlayer == NULL )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ClientConnection *connection;
|
||||||
|
|
||||||
|
Socket *socket = pNetworkPlayer->GetSocket();
|
||||||
|
connection = new ClientConnection(minecraft, socket, idx);
|
||||||
|
|
||||||
|
minecraft->addPendingLocalConnection(idx, connection);
|
||||||
|
//minecraft->createExtraLocalPlayer(idx, (convStringToWstring( ProfileManager.GetGamertag(idx) )).c_str(), idx, connection);
|
||||||
|
|
||||||
|
// Open the socket on the server end to accept incoming data
|
||||||
|
Socket::addIncomingSocket(socket);
|
||||||
|
|
||||||
|
connection->send( shared_ptr<PreLoginPacket>( new PreLoginPacket(convStringToWstring( ProfileManager.GetGamertag(idx) )) ) );
|
||||||
|
|
||||||
|
createdConnections.push_back( connection );
|
||||||
|
|
||||||
|
// Tick connection until we're ready to go. The stages involved in this are:
|
||||||
|
// (1) Creating the ClientConnection sends a prelogin packet to the server
|
||||||
|
// (2) the server sends a prelogin back, which is handled by the clientConnection, and returns a login packet
|
||||||
|
// (3) the server sends a login back, which is handled by the client connection to start the game
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// We need to keep ticking the connections for players that already logged in
|
||||||
|
for(AUTO_VAR(it, createdConnections.begin()); it < createdConnections.end(); ++it)
|
||||||
|
{
|
||||||
|
(*it)->tick();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4J Stu - We were ticking this way too fast which could cause the connection to time out
|
||||||
|
// The connections should tick at 20 per second
|
||||||
|
Sleep(50);
|
||||||
|
app.DebugPrintf("<***> %d %d %d %d %d\n",IsInSession(), !connection->isStarted(),!connection->isClosed(),ProfileManager.IsSignedIn(idx),!g_NetworkManager.IsLeavingGame());
|
||||||
|
#if defined _XBOX || __PS3__
|
||||||
|
} while (IsInSession() && !connection->isStarted() && !connection->isClosed() && ProfileManager.IsSignedIn(idx) && !g_NetworkManager.IsLeavingGame() );
|
||||||
|
#else
|
||||||
|
// TODO - This SHOULD be something just like the code above but temporarily changing here so that we don't have to depend on the profilemanager behaviour
|
||||||
|
} while (IsInSession() && !connection->isStarted() && !connection->isClosed() && !g_NetworkManager.IsLeavingGame() );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// 4J Stu - Fix for #11279 - CRASH: TCR 001: BAS Game Stability: Signing out of game will cause title to crash
|
||||||
|
// We need to break out of the above loop if m_bLeavingGame is set, and stop creating new connections
|
||||||
|
// The connections in the createdConnections vector get closed at the end of the thread
|
||||||
|
if( g_NetworkManager.IsLeavingGame() || !IsInSession() ) break;
|
||||||
|
|
||||||
|
if( ProfileManager.IsSignedIn(idx) && !connection->isClosed() )
|
||||||
|
{
|
||||||
|
app.SetRichPresenceContext(idx,CONTEXT_GAME_STATE_BLANK);
|
||||||
|
if (IsLocalGame()) ProfileManager.SetCurrentGameActivity(idx,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false);
|
||||||
|
else ProfileManager.SetCurrentGameActivity(idx,CONTEXT_PRESENCE_MULTIPLAYER,false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
connection->close();
|
||||||
|
AUTO_VAR(it, find( createdConnections.begin(), createdConnections.end(), connection ));
|
||||||
|
if(it != createdConnections.end() ) createdConnections.erase( it );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app.SetGameMode( eMode_Multiplayer );
|
||||||
|
}
|
||||||
|
else if ( connection->isClosed() || !IsInSession())
|
||||||
|
{
|
||||||
|
// assert(false);
|
||||||
|
MinecraftServer::HaltServer();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -361,9 +361,13 @@ void CPlatformNetworkManagerStub::HostGame(int localUsersMask, bool bOnlineGame,
|
||||||
_HostGame( localUsersMask, publicSlots, privateSlots );
|
_HostGame( localUsersMask, publicSlots, privateSlots );
|
||||||
|
|
||||||
#ifdef _WINDOWS64
|
#ifdef _WINDOWS64
|
||||||
int port = WIN64_NET_DEFAULT_PORT;
|
int port = (g_Win64MultiplayerPort > 0) ? g_Win64MultiplayerPort : WIN64_NET_DEFAULT_PORT;
|
||||||
|
const char *bindIP = g_Win64MultiplayerIP;
|
||||||
|
if (bindIP != NULL && bindIP[0] == 0)
|
||||||
|
bindIP = NULL;
|
||||||
|
|
||||||
if (!WinsockNetLayer::IsActive())
|
if (!WinsockNetLayer::IsActive())
|
||||||
WinsockNetLayer::HostGame(port);
|
WinsockNetLayer::HostGame(bindIP, port);
|
||||||
|
|
||||||
const wchar_t* hostName = IQNet::m_player[0].m_gamertag;
|
const wchar_t* hostName = IQNet::m_player[0].m_gamertag;
|
||||||
unsigned int settings = app.GetGameHostOption(eGameHostOption_All);
|
unsigned int settings = app.GetGameHostOption(eGameHostOption_All);
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ typedef struct _NetworkGameInitData
|
||||||
LevelGenerationOptions *levelGen;
|
LevelGenerationOptions *levelGen;
|
||||||
DWORD texturePackId;
|
DWORD texturePackId;
|
||||||
bool findSeed;
|
bool findSeed;
|
||||||
|
bool dedicatedNoLocalHostPlayer;
|
||||||
unsigned int xzSize;
|
unsigned int xzSize;
|
||||||
unsigned char hellScale;
|
unsigned char hellScale;
|
||||||
ESavePlatform savePlatform;
|
ESavePlatform savePlatform;
|
||||||
|
|
@ -52,6 +53,7 @@ typedef struct _NetworkGameInitData
|
||||||
levelGen = NULL;
|
levelGen = NULL;
|
||||||
texturePackId = 0;
|
texturePackId = 0;
|
||||||
findSeed = false;
|
findSeed = false;
|
||||||
|
dedicatedNoLocalHostPlayer = false;
|
||||||
xzSize = LEVEL_LEGACY_WIDTH;
|
xzSize = LEVEL_LEGACY_WIDTH;
|
||||||
hellScale = HELL_LEVEL_LEGACY_SCALE;
|
hellScale = HELL_LEVEL_LEGACY_SCALE;
|
||||||
savePlatform = SAVE_FILE_PLATFORM_LOCAL;
|
savePlatform = SAVE_FILE_PLATFORM_LOCAL;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ std::vector<BYTE> WinsockNetLayer::s_freeSmallIds;
|
||||||
bool g_Win64MultiplayerHost = false;
|
bool g_Win64MultiplayerHost = false;
|
||||||
bool g_Win64MultiplayerJoin = false;
|
bool g_Win64MultiplayerJoin = false;
|
||||||
int g_Win64MultiplayerPort = WIN64_NET_DEFAULT_PORT;
|
int g_Win64MultiplayerPort = WIN64_NET_DEFAULT_PORT;
|
||||||
char g_Win64MultiplayerIP[256] = "127.0.0.1";
|
char g_Win64MultiplayerIP[256] = "0.0.0.0";
|
||||||
|
|
||||||
bool WinsockNetLayer::Initialize()
|
bool WinsockNetLayer::Initialize()
|
||||||
{
|
{
|
||||||
|
|
@ -137,6 +137,11 @@ void WinsockNetLayer::Shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WinsockNetLayer::HostGame(int port)
|
bool WinsockNetLayer::HostGame(int port)
|
||||||
|
{
|
||||||
|
return HostGame(NULL, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WinsockNetLayer::HostGame(const char *bindIp, int port)
|
||||||
{
|
{
|
||||||
if (!s_initialized && !Initialize()) return false;
|
if (!s_initialized && !Initialize()) return false;
|
||||||
|
|
||||||
|
|
@ -161,10 +166,16 @@ bool WinsockNetLayer::HostGame(int port)
|
||||||
char portStr[16];
|
char portStr[16];
|
||||||
sprintf_s(portStr, "%d", port);
|
sprintf_s(portStr, "%d", port);
|
||||||
|
|
||||||
int iResult = getaddrinfo(NULL, portStr, &hints, &result);
|
const char *bindNode = NULL;
|
||||||
|
if (bindIp != NULL && bindIp[0] != 0 && strcmp(bindIp, "*") != 0)
|
||||||
|
{
|
||||||
|
bindNode = bindIp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int iResult = getaddrinfo(bindNode, portStr, &hints, &result);
|
||||||
if (iResult != 0)
|
if (iResult != 0)
|
||||||
{
|
{
|
||||||
app.DebugPrintf("getaddrinfo failed: %d\n", iResult);
|
app.DebugPrintf("getaddrinfo failed for bind '%s': %d\n", bindNode ? bindNode : "0.0.0.0", iResult);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -203,7 +214,7 @@ bool WinsockNetLayer::HostGame(int port)
|
||||||
|
|
||||||
s_acceptThread = CreateThread(NULL, 0, AcceptThreadProc, NULL, 0, NULL);
|
s_acceptThread = CreateThread(NULL, 0, AcceptThreadProc, NULL, 0, NULL);
|
||||||
|
|
||||||
app.DebugPrintf("Win64 LAN: Hosting on port %d\n", port);
|
app.DebugPrintf("Win64 LAN: Hosting on %s:%d\n", bindNode ? bindNode : "0.0.0.0", port);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ public:
|
||||||
static bool Initialize();
|
static bool Initialize();
|
||||||
static void Shutdown();
|
static void Shutdown();
|
||||||
|
|
||||||
|
static bool HostGame(const char *bindIp, int port);
|
||||||
static bool HostGame(int port);
|
static bool HostGame(int port);
|
||||||
static bool JoinGame(const char *ip, int port);
|
static bool JoinGame(const char *ip, int port);
|
||||||
|
|
||||||
|
|
|
||||||
672
Minecraft.Server/Minecraft.Server.vcxproj
Normal file
672
Minecraft.Server/Minecraft.Server.vcxproj
Normal file
|
|
@ -0,0 +1,672 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>MinecraftServer</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared" />
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<OutDir>$(SolutionDir)$(Platform)\Minecraft.Server\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)$(Platform)\Minecraft.Server\$(Configuration)\obj\MinecraftServer\</IntDir>
|
||||||
|
<TargetName>Minecraft.Server</TargetName>
|
||||||
|
<LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>
|
||||||
|
<LocalDebuggerCommandArguments>-port 25565 -bind 0.0.0.0 -name DedicatedServer</LocalDebuggerCommandArguments>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<OutDir>$(SolutionDir)$(Platform)\Minecraft.Server\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)$(Platform)\Minecraft.Server\$(Configuration)\obj\MinecraftServer\</IntDir>
|
||||||
|
<TargetName>Minecraft.Server</TargetName>
|
||||||
|
<LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>
|
||||||
|
<LocalDebuggerCommandArguments>-port 25565 -bind 0.0.0.0 -name DedicatedServer</LocalDebuggerCommandArguments>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderOutputFile>$(OutDir)MinecraftServer.pch</PrecompiledHeaderOutputFile>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<ExceptionHandling>Sync</ExceptionHandling>
|
||||||
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\Minecraft.Client;..\Minecraft.Client\Windows64\Iggy\include;..\Minecraft.Client\Xbox\Sentient\Include;..\Minecraft.World\x64headers;$(ProjectDir)Windows64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<MASM>
|
||||||
|
<UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
|
||||||
|
</MASM>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\Minecraft.Client;..\Minecraft.Client\Xbox;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ResourceCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>d3d11.lib;XInput9_1_0.lib;wsock32.lib;legacy_stdio_definitions.lib;..\Minecraft.World\x64_Debug\Minecraft.World.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggy_w64.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggyperfmon_w64.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggyexpruntime_w64.lib;..\Minecraft.Client\Windows64\Miles\lib\mss64.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Input_d.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Storage_d.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Render_PC_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Windows64\postbuild_server.ps1" -OutDir "$(OutDir)." -ProjectRoot "$(ProjectDir).." -Configuration "$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderOutputFile>$(OutDir)MinecraftServer.pch</PrecompiledHeaderOutputFile>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<ExceptionHandling>Sync</ExceptionHandling>
|
||||||
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\Minecraft.Client;..\Minecraft.Client\Windows64\Iggy\include;..\Minecraft.Client\Xbox\Sentient\Include;..\Minecraft.World\x64headers;$(ProjectDir)Windows64;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<MASM>
|
||||||
|
<UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
|
||||||
|
</MASM>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>..\Minecraft.Client;..\Minecraft.Client\Xbox;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ResourceCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>d3d11.lib;XInput9_1_0.lib;wsock32.lib;legacy_stdio_definitions.lib;..\Minecraft.World\x64_Release\Minecraft.World.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggy_w64.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggyperfmon_w64.lib;..\Minecraft.Client\Windows64\Iggy\lib\iggyexpruntime_w64.lib;..\Minecraft.Client\Windows64\Miles\lib\mss64.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Input.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Storage.lib;..\Minecraft.Client\Windows64\4JLibs\libs\4J_Render_PC.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>powershell -ExecutionPolicy Bypass -File "$(ProjectDir)Windows64\postbuild_server.ps1" -OutDir "$(OutDir)." -ProjectRoot "$(ProjectDir).." -Configuration "$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\AbstractTexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\AchievementPopup.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\AchievementScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\AllowAllCuller.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ArchiveFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ArrowRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BatModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BatRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BeaconRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BlazeModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BlazeRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BoatModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BoatRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BookModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BossMobGuiInfo.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BreakingItemParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BubbleParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\BufferedImage.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Button.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Camera.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CaveSpiderRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ChatScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ChestModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ChestRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ChickenModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ChickenRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Chunk.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ClientConnection.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ClientConstants.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ClockTexture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Audio\Consoles_SoundEngine.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Audio\SoundEngine.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Audio\SoundNames.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Colours\ColourTable.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\ConsoleGameMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Console_Utils.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Consoles_App.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCAudioFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCCapeFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCColourTableFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCGameRulesFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCGameRulesHeader.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCLocalisationFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCPack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCSkinFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCTextureFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\DLC\DLCUIDataFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\AddEnchantmentRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\AddItemRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\ApplySchematicRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\BiomeOverride.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\CollectItemRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\CompleteAllRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\CompoundGameRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\ConsoleGenerateStructure.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\ConsoleSchematicFile.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\GameRule.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\GameRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\GameRuleManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\LevelGenerationOptions.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\LevelGenerators.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\LevelRules.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\LevelRuleset.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\NamedAreaRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\StartFeature.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\UpdatePlayerRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\UseTileRuleDefinition.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\XboxStructureActionGenerateBox.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\XboxStructureActionPlaceBlock.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\XboxStructureActionPlaceContainer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\GameRules\XboxStructureActionPlaceSpawner.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Leaderboards\LeaderboardInterface.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Leaderboards\LeaderboardManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Network\GameNetworkManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Network\PlatformNetworkManagerStub.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Telemetry\TelemetryManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Trial\TrialMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\AreaConstraint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\AreaHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\AreaTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\ChangeStateConstraint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\ChoiceTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\CompleteUsingItemTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\ControllerTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\CraftTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\DiggerItemHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\EffectChangedTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\FullTutorial.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\FullTutorialActiveTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\FullTutorialMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\HorseChoiceTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\InfoTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\InputConstraint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\LookAtEntityHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\LookAtTileHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\PickupTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\ProcedureCompoundTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\ProgressFlagTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\RideEntityTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\StatTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\TakeItemHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\Tutorial.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\TutorialHint.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\TutorialMessage.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\TutorialMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\TutorialTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\UseItemTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\UseTileTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\Tutorial\XuiCraftingTask.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_AbstractContainerMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_AnvilMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_BeaconMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_BrewingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_CommandBlockMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_ContainerMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_CraftingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_CreativeMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_DispenserMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_EnchantingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_FireworksMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_FurnaceMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_HUD.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_HopperMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_HorseInventoryMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_InventoryMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_PauseMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_StartGame.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\IUIScene_TradingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIBitmapFont.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_Chat.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_DebugUIConsole.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_DebugUIMarketingGuide.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_Logo.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_MenuBackground.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_Panorama.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_PressStartToPlay.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_Tooltips.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIComponent_TutorialPopup.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Base.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_BeaconEffectButton.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_BitmapIcon.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Button.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_ButtonList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_CheckBox.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Cursor.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_DLCList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_DynamicLabel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_EnchantmentBook.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_EnchantmentButton.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_HTMLLabel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Label.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_LeaderboardList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_MinecraftHorse.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_MinecraftPlayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_PlayerList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_PlayerSkinPreview.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Progress.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_SaveList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_Slider.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_SlotList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_SpaceIndicatorBar.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_TextInput.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIControl_TexturePackList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIController.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIFontData.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIGroup.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UILayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_AbstractContainerMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_AnvilMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_BeaconMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_BrewingStandMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_ConnectingProgress.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_ContainerMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_ControlsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_CraftingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_CreateWorldMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_CreativeMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_Credits.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DLCMainMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DLCOffersMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DeathMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DebugCreateSchematic.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DebugOptions.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DebugOverlay.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DebugSetCamera.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_DispenserMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_EULA.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_EnchantingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_EndPoem.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_FireworksMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_FullscreenProgress.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_FurnaceMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HUD.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HelpAndOptionsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HopperMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HorseInventoryMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HowToPlay.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_HowToPlayMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_InGameHostOptionsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_InGameInfoMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_InGamePlayerOptionsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_Intro.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_InventoryMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_JoinMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_Keyboard.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_LanguageSelector.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_LaunchMoreOptionsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_LeaderboardsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_LoadMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_LoadOrJoinMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_MainMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_MessageBox.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_NewUpdateMessage.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_PauseMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_QuadrantSignin.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_ReinstallMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SaveMessage.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsAudioMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsControlMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsGraphicsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsOptionsMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SettingsUIMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SignEntryMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_SkinSelectMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_TeleportMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_Timer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_TradingMenu.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIScene_TrialExitUpsell.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UIString.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\UI\UITTFFont.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\adler32.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\compress.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\crc32.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\deflate.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\gzclose.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\gzlib.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\gzread.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\gzwrite.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\infback.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\inffast.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\inflate.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\inftrees.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\trees.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\uncompr.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Common\zlib\zutil.c">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CompassTexture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ConfirmScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ConsoleInput.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ControlsScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CowModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CowRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CreateWorldScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CreeperModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CreeperRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CritParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\CritParticle2.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Cube.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DLCTexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DeathScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DefaultRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DefaultTexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DemoUser.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DerivedServerLevel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DirtyChunkSorter.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DispenserBootstrap.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DistanceChunkSorter.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DragonBreathParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DragonModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\DripParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EchantmentTableParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EditBox.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnchantTableRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnderChestRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnderCrystalModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnderCrystalRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnderDragonRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EnderParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EndermanModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EndermanRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EntityRenderDispatcher.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EntityRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EntityTileRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\EntityTracker.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ErrorScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ExperienceOrbRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ExplodeParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Extrax64Stubs.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FallingTileRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FileTexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FireballRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FireworksParticles.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FishingHookRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FlameParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FolderTexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Font.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FootstepParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Frustum.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FrustumCuller.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\FrustumData.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GameRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GhastModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GhastRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GiantMobRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Gui.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GuiComponent.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GuiMessage.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GuiParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\GuiParticles.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HeartParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HorseRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HttpTexture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HugeExplosionParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HugeExplosionSeedParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HumanoidMobRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\HumanoidModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\InBedChatScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Input.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ItemFrameRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ItemInHandRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ItemRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ItemSpriteRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\JoinMultiplayerScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\KeyMapping.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LargeChestModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LavaParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LavaSlimeModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LavaSlimeRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LeashKnotModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LeashKnotRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LevelRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Lighting.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LightningBoltRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LivingEntityRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\LocalPlayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MemTexture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MemoryTracker.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MinecartModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MinecartRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MinecartSpawnerRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Minecraft.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MinecraftServer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Minimap.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MobRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MobSkinMemTextureProcessor.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MobSkinTextureProcessor.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MobSpawnerRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Model.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ModelHorse.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ModelPart.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MultiPlayerChunkCache.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MultiPlayerGameMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MultiPlayerLevel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MultiPlayerLocalPlayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\MushroomCowRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\NameEntryScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\NetherPortalParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\NoteParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\OcelotModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\OcelotRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\OffsettedRenderList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Options.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\OptionsScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PS3\PS3Extras\ShutdownManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PaintingRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Particle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ParticleEngine.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PauseScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PendingConnection.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PigModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PigRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PistonPieceRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PlayerChunkMap.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PlayerCloudParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PlayerConnection.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PlayerList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PlayerRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Polygon.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\PreStitchedTextureMap.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ProgressRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\QuadrupedModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Rect2i.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\RedDustParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\RemotePlayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\RenameWorldScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Screen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ScreenSizeCalculator.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ScrolledSelectionList.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SelectWorldScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerChunkCache.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerCommandDispatcher.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerConnection.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerLevel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerLevelListener.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerPlayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerPlayerGameMode.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ServerScoreboard.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Settings.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SheepFurModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SheepModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SheepRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SignModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SignRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SilverfishModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SilverfishRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SimpleIcon.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SkeletonHeadModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SkeletonModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SkeletonRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SkiModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SkullTileRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SlideButton.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SlimeModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SlimeRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SmallButton.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SmokeParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SnowManModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SnowManRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SnowShovelParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SpellParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SpiderModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SpiderRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SplashParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SquidModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SquidRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StatsCounter.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StatsScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StatsSyncher.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StitchSlot.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StitchedTexture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Stitcher.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\StringTable.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SuspendedParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\SuspendedTownParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TakeAnimationParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TeleportCommand.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TerrainParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Tesselator.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TexOffs.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Texture.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TextureAtlas.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TextureHolder.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TextureManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TextureMap.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TexturePack.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TexturePackRepository.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Textures.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TheEndPortalRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TileEntityRenderDispatcher.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TileEntityRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TileRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Timer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TitleScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TntMinecartRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TntRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\TrackedEntity.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\User.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Vertex.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VideoSettingsScreen.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ViewportCuller.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VillagerGolemModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VillagerGolemRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VillagerModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VillagerRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\VillagerZombieModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WaterDropParticle.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Iggy\gdraw\gdraw_d3d11.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\KeyboardMouseInput.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Leaderboards\WindowsLeaderboardManager.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Windows64_App.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Windows64_Minecraft.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Windows64_UIController.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Windows64\Network\WinsockNetLayer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WitchModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WitchRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WitherBossModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WitherBossRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WitherSkullRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WolfModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WolfRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\WstringLookup.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\Xbox\Network\NetworkPlayerXbox.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ZombieModel.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\ZombieRenderer.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\compat_shims.cpp">
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\glWrapper.cpp" />
|
||||||
|
<ClCompile Include="..\Minecraft.Client\stdafx.cpp">
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\Minecraft.Client\stubs.cpp" />
|
||||||
|
<ClCompile Include="Windows64\ServerMain.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<MASM Include="..\Minecraft.Client\iob_shim.asm" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="..\Minecraft.Client\Xbox\MinecraftWindows.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Minecraft.World\Minecraft.World.vcxproj">
|
||||||
|
<Project>{F046C3CE-9749-4823-B32B-D9CC10B1A2C8}</Project>
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
13
Minecraft.Server/Minecraft.Server.vcxproj.filters
Normal file
13
Minecraft.Server/Minecraft.Server.vcxproj.filters
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Server">
|
||||||
|
<UniqueIdentifier>{A8A47C24-66C0-4912-9D34-2CBF87F1D707}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Windows64\ServerMain.cpp">
|
||||||
|
<Filter>Server</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
411
Minecraft.Server/Windows64/ServerMain.cpp
Normal file
411
Minecraft.Server/Windows64/ServerMain.cpp
Normal file
|
|
@ -0,0 +1,411 @@
|
||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
#include "Common/App_Defines.h"
|
||||||
|
#include "Common/Network/GameNetworkManager.h"
|
||||||
|
#include "Input.h"
|
||||||
|
#include "Minecraft.h"
|
||||||
|
#include "MinecraftServer.h"
|
||||||
|
#include "Options.h"
|
||||||
|
#include "Tesselator.h"
|
||||||
|
#include "Windows64/4JLibs/inc/4J_Render.h"
|
||||||
|
#include "Windows64/GameConfig/Minecraft.spa.h"
|
||||||
|
#include "Windows64/KeyboardMouseInput.h"
|
||||||
|
#include "Windows64/Network/WinsockNetLayer.h"
|
||||||
|
#include "Windows64/Windows64_UIController.h"
|
||||||
|
|
||||||
|
#include "../../Minecraft.World/AABB.h"
|
||||||
|
#include "../../Minecraft.World/Vec3.h"
|
||||||
|
#include "../../Minecraft.World/IntCache.h"
|
||||||
|
#include "../../Minecraft.World/TilePos.h"
|
||||||
|
#include "../../Minecraft.World/compression.h"
|
||||||
|
#include "../../Minecraft.World/OldChunkStorage.h"
|
||||||
|
#include "../../Minecraft.World/net.minecraft.world.level.tile.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
extern ATOM MyRegisterClass(HINSTANCE hInstance);
|
||||||
|
extern BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);
|
||||||
|
extern HRESULT InitDevice();
|
||||||
|
extern void CleanupDevice();
|
||||||
|
extern void DefineActions(void);
|
||||||
|
|
||||||
|
extern HWND g_hWnd;
|
||||||
|
extern int g_iScreenWidth;
|
||||||
|
extern int g_iScreenHeight;
|
||||||
|
extern char g_Win64Username[17];
|
||||||
|
extern wchar_t g_Win64UsernameW[17];
|
||||||
|
extern ID3D11Device* g_pd3dDevice;
|
||||||
|
extern ID3D11DeviceContext* g_pImmediateContext;
|
||||||
|
extern IDXGISwapChain* g_pSwapChain;
|
||||||
|
extern ID3D11RenderTargetView* g_pRenderTargetView;
|
||||||
|
extern ID3D11DepthStencilView* g_pDepthStencilView;
|
||||||
|
extern DWORD dwProfileSettingsA[];
|
||||||
|
|
||||||
|
static const int kProfileValueCount = 5;
|
||||||
|
static const int kProfileSettingCount = 4;
|
||||||
|
|
||||||
|
struct DedicatedServerConfig
|
||||||
|
{
|
||||||
|
int port;
|
||||||
|
char bindIP[256];
|
||||||
|
char name[17];
|
||||||
|
int maxPlayers;
|
||||||
|
__int64 seed;
|
||||||
|
bool hasSeed;
|
||||||
|
bool showHelp;
|
||||||
|
};
|
||||||
|
|
||||||
|
static volatile bool g_shutdownRequested = false;
|
||||||
|
|
||||||
|
static BOOL WINAPI ConsoleCtrlHandlerProc(DWORD ctrlType)
|
||||||
|
{
|
||||||
|
switch (ctrlType)
|
||||||
|
{
|
||||||
|
case CTRL_C_EVENT:
|
||||||
|
case CTRL_BREAK_EVENT:
|
||||||
|
case CTRL_CLOSE_EVENT:
|
||||||
|
case CTRL_SHUTDOWN_EVENT:
|
||||||
|
g_shutdownRequested = true;
|
||||||
|
app.m_bShutdown = true;
|
||||||
|
return TRUE;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int WaitForServerStoppedThreadProc(void *)
|
||||||
|
{
|
||||||
|
if (g_NetworkManager.ServerStoppedValid())
|
||||||
|
{
|
||||||
|
g_NetworkManager.ServerStoppedWait();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PrintUsage()
|
||||||
|
{
|
||||||
|
printf("Minecraft.Server.exe [options]\n");
|
||||||
|
printf(" -port <1-65535> Listen TCP port (default: 25565)\n");
|
||||||
|
printf(" -ip <addr> Bind address (default: 0.0.0.0)\n");
|
||||||
|
printf(" -bind <addr> Alias of -ip\n");
|
||||||
|
printf(" -name <name> Host display name (max 16 chars)\n");
|
||||||
|
printf(" -maxplayers <1-8> Public slots (default: 8)\n");
|
||||||
|
printf(" -seed <int64> World seed\n");
|
||||||
|
printf(" -help Show this help\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LogStartupStep(const char *message)
|
||||||
|
{
|
||||||
|
printf("[startup] %s\n", message);
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ParseIntArg(const char *value, int *outValue)
|
||||||
|
{
|
||||||
|
if (value == NULL || *value == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char *end = NULL;
|
||||||
|
long parsed = strtol(value, &end, 10);
|
||||||
|
if (end == value || *end != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*outValue = (int)parsed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ParseInt64Arg(const char *value, __int64 *outValue)
|
||||||
|
{
|
||||||
|
if (value == NULL || *value == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char *end = NULL;
|
||||||
|
__int64 parsed = _strtoi64(value, &end, 10);
|
||||||
|
if (end == value || *end != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*outValue = parsed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ParseCommandLine(int argc, char **argv, DedicatedServerConfig *config)
|
||||||
|
{
|
||||||
|
for (int i = 1; i < argc; ++i)
|
||||||
|
{
|
||||||
|
const char *arg = argv[i];
|
||||||
|
if (_stricmp(arg, "-help") == 0 || _stricmp(arg, "--help") == 0 || _stricmp(arg, "-h") == 0)
|
||||||
|
{
|
||||||
|
config->showHelp = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if ((_stricmp(arg, "-port") == 0) && (i + 1 < argc))
|
||||||
|
{
|
||||||
|
int port = 0;
|
||||||
|
if (!ParseIntArg(argv[++i], &port) || port <= 0 || port > 65535)
|
||||||
|
{
|
||||||
|
printf("Invalid -port value.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config->port = port;
|
||||||
|
}
|
||||||
|
else if ((_stricmp(arg, "-ip") == 0 || _stricmp(arg, "-bind") == 0) && (i + 1 < argc))
|
||||||
|
{
|
||||||
|
strncpy_s(config->bindIP, sizeof(config->bindIP), argv[++i], _TRUNCATE);
|
||||||
|
}
|
||||||
|
else if ((_stricmp(arg, "-name") == 0) && (i + 1 < argc))
|
||||||
|
{
|
||||||
|
strncpy_s(config->name, sizeof(config->name), argv[++i], _TRUNCATE);
|
||||||
|
}
|
||||||
|
else if ((_stricmp(arg, "-maxplayers") == 0) && (i + 1 < argc))
|
||||||
|
{
|
||||||
|
int maxPlayers = 0;
|
||||||
|
if (!ParseIntArg(argv[++i], &maxPlayers) || maxPlayers <= 0 || maxPlayers > MINECRAFT_NET_MAX_PLAYERS)
|
||||||
|
{
|
||||||
|
printf("Invalid -maxplayers value.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config->maxPlayers = maxPlayers;
|
||||||
|
}
|
||||||
|
else if ((_stricmp(arg, "-seed") == 0) && (i + 1 < argc))
|
||||||
|
{
|
||||||
|
if (!ParseInt64Arg(argv[++i], &config->seed))
|
||||||
|
{
|
||||||
|
printf("Invalid -seed value.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
config->hasSeed = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Unknown or incomplete argument: %s\n", arg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetExeWorkingDirectory()
|
||||||
|
{
|
||||||
|
char exePath[MAX_PATH] = {};
|
||||||
|
GetModuleFileNameA(NULL, exePath, MAX_PATH);
|
||||||
|
char *slash = strrchr(exePath, '\\');
|
||||||
|
if (slash != NULL)
|
||||||
|
{
|
||||||
|
*(slash + 1) = 0;
|
||||||
|
SetCurrentDirectoryA(exePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
DedicatedServerConfig config;
|
||||||
|
config.port = WIN64_NET_DEFAULT_PORT;
|
||||||
|
strncpy_s(config.bindIP, sizeof(config.bindIP), "0.0.0.0", _TRUNCATE);
|
||||||
|
strncpy_s(config.name, sizeof(config.name), "DedicatedServer", _TRUNCATE);
|
||||||
|
config.maxPlayers = MINECRAFT_NET_MAX_PLAYERS;
|
||||||
|
config.seed = 0;
|
||||||
|
config.hasSeed = false;
|
||||||
|
config.showHelp = false;
|
||||||
|
|
||||||
|
if (!ParseCommandLine(argc, argv, &config))
|
||||||
|
{
|
||||||
|
PrintUsage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (config.showHelp)
|
||||||
|
{
|
||||||
|
PrintUsage();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogStartupStep("initializing process state");
|
||||||
|
SetConsoleCtrlHandler(ConsoleCtrlHandlerProc, TRUE);
|
||||||
|
SetExeWorkingDirectory();
|
||||||
|
|
||||||
|
g_iScreenWidth = 1280;
|
||||||
|
g_iScreenHeight = 720;
|
||||||
|
|
||||||
|
strncpy_s(g_Win64Username, sizeof(g_Win64Username), config.name, _TRUNCATE);
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, g_Win64Username, -1, g_Win64UsernameW, 17);
|
||||||
|
|
||||||
|
g_Win64MultiplayerHost = true;
|
||||||
|
g_Win64MultiplayerJoin = false;
|
||||||
|
g_Win64MultiplayerPort = config.port;
|
||||||
|
strncpy_s(g_Win64MultiplayerIP, sizeof(g_Win64MultiplayerIP), config.bindIP, _TRUNCATE);
|
||||||
|
|
||||||
|
LogStartupStep("registering hidden window class");
|
||||||
|
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||||
|
MyRegisterClass(hInstance);
|
||||||
|
|
||||||
|
LogStartupStep("creating hidden window");
|
||||||
|
if (!InitInstance(hInstance, SW_HIDE))
|
||||||
|
{
|
||||||
|
printf("Failed to create window instance.\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
ShowWindow(g_hWnd, SW_HIDE);
|
||||||
|
|
||||||
|
LogStartupStep("initializing graphics device wrappers");
|
||||||
|
if (FAILED(InitDevice()))
|
||||||
|
{
|
||||||
|
printf("Failed to initialize D3D device.\n");
|
||||||
|
CleanupDevice();
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogStartupStep("loading media/string tables");
|
||||||
|
app.loadMediaArchive();
|
||||||
|
RenderManager.Initialise(g_pd3dDevice, g_pSwapChain);
|
||||||
|
app.loadStringTable();
|
||||||
|
ui.init(g_pd3dDevice, g_pImmediateContext, g_pRenderTargetView, g_pDepthStencilView, g_iScreenWidth, g_iScreenHeight);
|
||||||
|
|
||||||
|
InputManager.Initialise(1, 3, MINECRAFT_ACTION_MAX, ACTION_MAX_MENU);
|
||||||
|
KMInput.Init(g_hWnd);
|
||||||
|
DefineActions();
|
||||||
|
InputManager.SetJoypadMapVal(0, 0);
|
||||||
|
InputManager.SetKeyRepeatRate(0.3f, 0.2f);
|
||||||
|
|
||||||
|
ProfileManager.Initialise(
|
||||||
|
TITLEID_MINECRAFT,
|
||||||
|
app.m_dwOfferID,
|
||||||
|
PROFILE_VERSION_10,
|
||||||
|
kProfileValueCount,
|
||||||
|
kProfileSettingCount,
|
||||||
|
dwProfileSettingsA,
|
||||||
|
app.GAME_DEFINED_PROFILE_DATA_BYTES * XUSER_MAX_COUNT,
|
||||||
|
&app.uiGameDefinedDataChangedBitmask);
|
||||||
|
ProfileManager.SetDefaultOptionsCallback(&CConsoleMinecraftApp::DefaultOptionsCallback, (LPVOID)&app);
|
||||||
|
ProfileManager.SetDebugFullOverride(true);
|
||||||
|
|
||||||
|
LogStartupStep("initializing network manager");
|
||||||
|
g_NetworkManager.Initialise();
|
||||||
|
|
||||||
|
for (int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
|
||||||
|
{
|
||||||
|
IQNet::m_player[i].m_smallId = (BYTE)i;
|
||||||
|
IQNet::m_player[i].m_isRemote = false;
|
||||||
|
IQNet::m_player[i].m_isHostPlayer = (i == 0);
|
||||||
|
swprintf_s(IQNet::m_player[i].m_gamertag, 32, L"Player%d", i);
|
||||||
|
}
|
||||||
|
wcscpy_s(IQNet::m_player[0].m_gamertag, 32, g_Win64UsernameW);
|
||||||
|
WinsockNetLayer::Initialize();
|
||||||
|
|
||||||
|
Tesselator::CreateNewThreadStorage(1024 * 1024);
|
||||||
|
AABB::CreateNewThreadStorage();
|
||||||
|
Vec3::CreateNewThreadStorage();
|
||||||
|
IntCache::CreateNewThreadStorage();
|
||||||
|
Compression::CreateNewThreadStorage();
|
||||||
|
OldChunkStorage::CreateNewThreadStorage();
|
||||||
|
Level::enableLightingCache();
|
||||||
|
Tile::CreateNewThreadStorage();
|
||||||
|
|
||||||
|
LogStartupStep("creating Minecraft singleton");
|
||||||
|
Minecraft::main();
|
||||||
|
Minecraft *minecraft = Minecraft::GetInstance();
|
||||||
|
if (minecraft == NULL)
|
||||||
|
{
|
||||||
|
printf("Minecraft initialization failed.\n");
|
||||||
|
CleanupDevice();
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
app.InitGameSettings();
|
||||||
|
if (minecraft->options != NULL)
|
||||||
|
{
|
||||||
|
minecraft->options->set(Options::Option::MUSIC, 0.0f);
|
||||||
|
minecraft->options->set(Options::Option::SOUND, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
MinecraftServer::resetFlags();
|
||||||
|
app.SetTutorialMode(false);
|
||||||
|
app.SetCorruptSaveDeleted(false);
|
||||||
|
app.SetGameHostOption(eGameHostOption_Difficulty, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_FriendsOfFriends, 0);
|
||||||
|
app.SetGameHostOption(eGameHostOption_Gamertags, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_BedrockFog, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_GameType, 0);
|
||||||
|
app.SetGameHostOption(eGameHostOption_LevelType, 0);
|
||||||
|
app.SetGameHostOption(eGameHostOption_Structures, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_BonusChest, 0);
|
||||||
|
app.SetGameHostOption(eGameHostOption_PvP, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_TrustPlayers, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_FireSpreads, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_TNT, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_HostCanFly, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_HostCanChangeHunger, 1);
|
||||||
|
app.SetGameHostOption(eGameHostOption_HostCanBeInvisible, 1);
|
||||||
|
|
||||||
|
NetworkGameInitData *param = new NetworkGameInitData();
|
||||||
|
if (config.hasSeed)
|
||||||
|
{
|
||||||
|
param->seed = config.seed;
|
||||||
|
}
|
||||||
|
param->saveData = NULL;
|
||||||
|
param->settings = app.GetGameHostOption(eGameHostOption_All);
|
||||||
|
param->dedicatedNoLocalHostPlayer = true;
|
||||||
|
|
||||||
|
LogStartupStep("starting hosted network game thread");
|
||||||
|
g_NetworkManager.HostGame(0, true, false, (unsigned char)config.maxPlayers, 0);
|
||||||
|
g_NetworkManager.FakeLocalPlayerJoined();
|
||||||
|
|
||||||
|
C4JThread *startThread = new C4JThread(&CGameNetworkManager::RunNetworkGameThreadProc, (LPVOID)param, "RunNetworkGame");
|
||||||
|
startThread->Run();
|
||||||
|
|
||||||
|
while (startThread->isRunning() && !g_shutdownRequested)
|
||||||
|
{
|
||||||
|
g_NetworkManager.DoWork();
|
||||||
|
ProfileManager.Tick();
|
||||||
|
StorageManager.Tick();
|
||||||
|
Sleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
startThread->WaitForCompletion(INFINITE);
|
||||||
|
int startupResult = startThread->GetExitCode();
|
||||||
|
delete startThread;
|
||||||
|
|
||||||
|
if (startupResult != 0)
|
||||||
|
{
|
||||||
|
printf("Failed to start dedicated server (code %d).\n", startupResult);
|
||||||
|
WinsockNetLayer::Shutdown();
|
||||||
|
g_NetworkManager.Terminate();
|
||||||
|
CleanupDevice();
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogStartupStep("server startup complete");
|
||||||
|
printf("Dedicated server listening on %s:%d\n", g_Win64MultiplayerIP, g_Win64MultiplayerPort);
|
||||||
|
|
||||||
|
while (!g_shutdownRequested && !app.m_bShutdown)
|
||||||
|
{
|
||||||
|
g_NetworkManager.DoWork();
|
||||||
|
ProfileManager.Tick();
|
||||||
|
StorageManager.Tick();
|
||||||
|
app.HandleXuiActions();
|
||||||
|
|
||||||
|
if (MinecraftServer::serverHalted())
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Stopping dedicated server...\n");
|
||||||
|
MinecraftServer::HaltServer();
|
||||||
|
|
||||||
|
if (g_NetworkManager.ServerStoppedValid())
|
||||||
|
{
|
||||||
|
C4JThread waitThread(&WaitForServerStoppedThreadProc, NULL, "WaitServerStopped");
|
||||||
|
waitThread.Run();
|
||||||
|
waitThread.WaitForCompletion(INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
WinsockNetLayer::Shutdown();
|
||||||
|
g_NetworkManager.Terminate();
|
||||||
|
CleanupDevice();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
70
Minecraft.Server/Windows64/postbuild_server.ps1
Normal file
70
Minecraft.Server/Windows64/postbuild_server.ps1
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
param(
|
||||||
|
[string]$OutDir,
|
||||||
|
[string]$ProjectRoot,
|
||||||
|
[string]$Configuration
|
||||||
|
)
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($OutDir)) {
|
||||||
|
throw "OutDir is required."
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($ProjectRoot)) {
|
||||||
|
$ProjectRoot = Resolve-Path (Join-Path $PSScriptRoot "..\\..")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($Configuration)) {
|
||||||
|
$Configuration = "Debug"
|
||||||
|
}
|
||||||
|
|
||||||
|
$OutDir = [System.IO.Path]::GetFullPath($OutDir)
|
||||||
|
$ProjectRoot = [System.IO.Path]::GetFullPath($ProjectRoot)
|
||||||
|
$ClientRoot = Join-Path $ProjectRoot "Minecraft.Client"
|
||||||
|
|
||||||
|
Write-Host "Server post-build started. OutDir: $OutDir"
|
||||||
|
|
||||||
|
function Ensure-Dir([string]$path) {
|
||||||
|
if (-not (Test-Path $path)) {
|
||||||
|
New-Item -ItemType Directory -Path $path -Force | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Copy-Tree-IfExists([string]$src, [string]$dst) {
|
||||||
|
if (Test-Path $src) {
|
||||||
|
Ensure-Dir $dst
|
||||||
|
xcopy /q /y /i /s /e /d "$src" "$dst" 2>$null | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Copy-File-IfExists([string]$src, [string]$dst) {
|
||||||
|
if (Test-Path $src) {
|
||||||
|
$dstDir = Split-Path -Parent $dst
|
||||||
|
Ensure-Dir $dstDir
|
||||||
|
xcopy /q /y /d "$src" "$dstDir" 2>$null | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Copy-FirstExisting([string[]]$candidates, [string]$dstFile) {
|
||||||
|
foreach ($candidate in $candidates) {
|
||||||
|
if (Test-Path $candidate) {
|
||||||
|
Copy-File-IfExists $candidate $dstFile
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dedicated server only needs core resources for current startup path.
|
||||||
|
Copy-File-IfExists (Join-Path $ClientRoot "Common\\Media\\MediaWindows64.arc") (Join-Path $OutDir "Common\\Media\\MediaWindows64.arc")
|
||||||
|
Copy-Tree-IfExists (Join-Path $ClientRoot "Common\\res") (Join-Path $OutDir "Common\\res")
|
||||||
|
Copy-Tree-IfExists (Join-Path $ClientRoot "Windows64\\GameHDD") (Join-Path $OutDir "Windows64\\GameHDD")
|
||||||
|
|
||||||
|
# Runtime DLLs.
|
||||||
|
Copy-FirstExisting @(
|
||||||
|
(Join-Path $ClientRoot "Windows64\\Iggy\\lib\\redist64\\iggy_w64.dll"),
|
||||||
|
(Join-Path $ProjectRoot ("x64\\{0}\\iggy_w64.dll" -f $Configuration))
|
||||||
|
) (Join-Path $OutDir "iggy_w64.dll")
|
||||||
|
|
||||||
|
Copy-FirstExisting @(
|
||||||
|
(Join-Path $ClientRoot "Windows64\\Miles\\lib\\redist64\\mss64.dll"),
|
||||||
|
(Join-Path $ProjectRoot ("x64\\{0}\\mss64.dll" -f $Configuration))
|
||||||
|
) (Join-Path $OutDir "mss64.dll")
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.14.37012.4 d17.14
|
VisualStudioVersion = 17.14.37012.4 d17.14
|
||||||
|
|
@ -10,6 +10,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Minecraft.Client", "Minecra
|
||||||
{F046C3CE-9749-4823-B32B-D9CC10B1A2C8} = {F046C3CE-9749-4823-B32B-D9CC10B1A2C8}
|
{F046C3CE-9749-4823-B32B-D9CC10B1A2C8} = {F046C3CE-9749-4823-B32B-D9CC10B1A2C8}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Minecraft.Server", "Minecraft.Server\Minecraft.Server.vcxproj", "{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{F046C3CE-9749-4823-B32B-D9CC10B1A2C8} = {F046C3CE-9749-4823-B32B-D9CC10B1A2C8}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
ContentPackage_NO_TU|ARM64EC = ContentPackage_NO_TU|ARM64EC
|
ContentPackage_NO_TU|ARM64EC = ContentPackage_NO_TU|ARM64EC
|
||||||
|
|
@ -223,6 +228,54 @@ Global
|
||||||
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Windows64.ActiveCfg = ReleaseForArt|x64
|
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Windows64.ActiveCfg = ReleaseForArt|x64
|
||||||
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Xbox 360.ActiveCfg = Release|Xbox 360
|
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Xbox 360.ActiveCfg = Release|Xbox 360
|
||||||
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Xbox 360.Build.0 = Release|Xbox 360
|
{1B9A8C38-DD48-448C-AA24-E1A35E0089A3}.ReleaseForArt|Xbox 360.Build.0 = Release|Xbox 360
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|ARM64EC.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|Durango.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|ORBIS.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|PS3.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|PSVita.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|Windows64.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|Windows64.Build.0 = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage_NO_TU|Xbox 360.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|ARM64EC.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|Durango.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|ORBIS.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|PS3.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|PSVita.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|Windows64.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|Windows64.Build.0 = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.CONTENTPACKAGE_SYMBOLS|Xbox 360.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|ARM64EC.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|Durango.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|ORBIS.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|PS3.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|PSVita.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|Windows64.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|Windows64.Build.0 = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ContentPackage|Xbox 360.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|ARM64EC.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|Durango.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|ORBIS.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|PS3.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|PSVita.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|Windows64.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|Windows64.Build.0 = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Debug|Xbox 360.ActiveCfg = Debug|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|ARM64EC.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|Durango.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|ORBIS.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|PS3.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|PSVita.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|Windows64.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|Windows64.Build.0 = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.Release|Xbox 360.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|ARM64EC.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|Durango.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|ORBIS.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|PS3.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|PSVita.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|Windows64.ActiveCfg = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|Windows64.Build.0 = Release|x64
|
||||||
|
{7CB40BFC-C8E4-4293-A22E-D2041348D5AF}.ReleaseForArt|Xbox 360.ActiveCfg = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
76
cmake/CopyServerAssets.cmake
Normal file
76
cmake/CopyServerAssets.cmake
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
if(NOT DEFINED PROJECT_SOURCE_DIR OR NOT DEFINED OUTPUT_DIR OR NOT DEFINED CONFIGURATION)
|
||||||
|
message(FATAL_ERROR "CopyServerAssets.cmake requires PROJECT_SOURCE_DIR, OUTPUT_DIR, and CONFIGURATION.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
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}")
|
||||||
|
file(GLOB_RECURSE _files RELATIVE "${_src}" "${_src}/*")
|
||||||
|
|
||||||
|
foreach(_file IN LISTS _files)
|
||||||
|
if(NOT _file MATCHES "\\.(cpp|c|h|hpp|xml|lang)$")
|
||||||
|
set(_full_src "${_src}/${_file}")
|
||||||
|
set(_full_dst "${_dst}/${_file}")
|
||||||
|
|
||||||
|
if(IS_DIRECTORY "${_full_src}")
|
||||||
|
file(MAKE_DIRECTORY "${_full_dst}")
|
||||||
|
else()
|
||||||
|
get_filename_component(_dst_dir "${_full_dst}" DIRECTORY)
|
||||||
|
file(MAKE_DIRECTORY "${_dst_dir}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
||||||
|
"${_full_src}" "${_full_dst}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(copy_file_if_exists src_rel dst_rel)
|
||||||
|
set(_src "${PROJECT_SOURCE_DIR}/${src_rel}")
|
||||||
|
set(_dst "${OUTPUT_DIR}/${dst_rel}")
|
||||||
|
|
||||||
|
get_filename_component(_dst_dir "${_dst}" DIRECTORY)
|
||||||
|
file(MAKE_DIRECTORY "${_dst_dir}")
|
||||||
|
|
||||||
|
if(EXISTS "${_src}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
||||||
|
"${_src}" "${_dst}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(copy_first_existing dst_rel)
|
||||||
|
foreach(_candidate IN LISTS ARGN)
|
||||||
|
if(EXISTS "${PROJECT_SOURCE_DIR}/${_candidate}")
|
||||||
|
copy_file_if_exists("${_candidate}" "${dst_rel}")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Dedicated server runtime assets (minimal set validated in startup tests).
|
||||||
|
copy_file_if_exists("Minecraft.Client/Common/Media/MediaWindows64.arc" "Common/Media/MediaWindows64.arc")
|
||||||
|
copy_tree_if_exists("Common/res" "Common/res")
|
||||||
|
copy_tree_if_exists("Windows64/GameHDD" "Windows64/GameHDD")
|
||||||
|
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
Loading…
Reference in a new issue