This commit is contained in:
BlueishSapphire 2026-03-06 12:18:21 -05:00 committed by GitHub
commit 1b0e8f9e3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 630 additions and 54 deletions

View file

@ -88,59 +88,6 @@ target_link_libraries(MinecraftClient PRIVATE
>
)
if(CMAKE_HOST_WIN32)
message(STATUS "Starting redist copy...")
execute_process(
COMMAND robocopy.exe
"${CMAKE_CURRENT_SOURCE_DIR}/x64/Release"
"${CMAKE_CURRENT_BINARY_DIR}"
/S /MT /R:0 /W:0 /NP
)
message(STATUS "Starting asset copy...")
execute_process(
COMMAND robocopy.exe
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client"
"${CMAKE_CURRENT_BINARY_DIR}"
/S /MT /R:0 /W:0 /NP
/XF "*.cpp" "*.c" "*.h" "*.hpp" "*.asm"
"*.xml" "*.lang" "*.vcxproj" "*.vcxproj.*" "*.sln"
"*.docx" "*.xls"
"*.bat" "*.cmd" "*.ps1" "*.py"
"*Test*"
/XD "Durango*" "Orbis*" "PS*" "Xbox"
)
message(STATUS "Patching Windows64Media...")
execute_process(
COMMAND robocopy.exe
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia"
"${CMAKE_CURRENT_BINARY_DIR}/Windows64Media"
/S /MT /R:0 /W:0 /NP
/XF "*.h" "*.xml" "*.lang" "*.bat"
)
elseif(CMAKE_HOST_UNIX)
message(STATUS "Starting redist copy...")
execute_process(
COMMAND rsync -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/"
)
message(STATUS "Starting asset copy...")
execute_process(
COMMAND rsync -av
"--exclude=*.cpp" "--exclude=*.c" "--exclude=*.h" "--exclude=*.hpp" "--exclude=*.asm"
"--exclude=*.xml" "--exclude=*.lang" "--exclude=*.vcxproj" "--exclude=*.vcxproj.*" "--exclude=*.sln"
"--exclude=*.docx" "--exclude=*.xls"
"--exclude=*.bat" "--exclude=*.cmd" "--exclude=*.ps1" "--exclude=*.py"
"--exclude=*Test*"
"--exclude=Durango*" "--exclude=Orbis*" "--exclude=PS*" "--exclude=Xbox"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/" "${CMAKE_CURRENT_BINARY_DIR}/"
)
message(STATUS "Patching Windows64Media...")
execute_process(
COMMAND rsync -av
"--exclude=*.h" "--exclude=*.xml" "--exclude=*.lang" "--exclude=*.bat"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/DurangoMedia/" "${CMAKE_CURRENT_BINARY_DIR}/Windows64Media/"
)
else()
message(FATAL_ERROR "Redist and asset copying is only supported on Windows (Robocopy) and Unix systems (rsync).")
endif()
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyAssets.cmake")
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

81
arcconv.py Normal file
View file

@ -0,0 +1,81 @@
import sys, struct
from zipfile import ZipFile, Path
from io import BytesIO
def usage(exe_name: str):
print(f"usage: {exe_name} <command> <infile> <outfile>")
print(" command: either arc2zip or zip2arc")
sys.exit(1)
def main():
exe_name = sys.argv[0]
if len(sys.argv) != 4: usage(exe_name)
command = sys.argv[1]
in_filename = sys.argv[2]
out_filename = sys.argv[3]
if command == "arc2zip":
arc_to_zip(in_filename, out_filename)
elif command == "zip2arc":
zip_to_arc(in_filename, out_filename)
else:
usage(exe_name)
def arc_to_zip(in_filename: str, out_filename: str):
with open(in_filename, "rb") as file:
data = file.read()
buf = BytesIO(data)
with ZipFile(out_filename, "w") as zipfile:
entry_count = struct.unpack(">I", buf.read(4))[0]
files = []
for _ in range(entry_count):
strlen = struct.unpack(">H", buf.read(2))[0]
fmt = f">{strlen}s2I"
fmt_size = struct.calcsize(fmt)
(filename, offset, size) = struct.unpack(fmt, buf.read(fmt_size))
filename = filename.decode("UTF-8").strip("\0").replace("\\", "/")
file_path = Path(zipfile, filename)
files.append((filename, data[offset:offset + size]))
# files.sort(key=lambda pair: pair[0])
for filename, contents in files:
zipfile.writestr(filename, contents)
def zip_to_arc(in_filename: str, out_filename: str):
data_buf = bytearray()
with open(out_filename, "wb") as out_file:
files = []
with ZipFile(in_filename, "r") as zip_file:
files.extend((file.filename, zip_file.read(file)) for file in zip_file.filelist)
# files.sort(key=lambda pair: pair[0])
header_length = (
sum(len(file[0].encode('utf-8')) for file in files)
+ len(files) * struct.calcsize(f">H2I")
+ struct.calcsize("I")
)
out_file.write(struct.pack(">I", len(files)))
for filename, contents in files:
offset = header_length + len(data_buf)
file_path = filename.replace("/", "\\").encode('utf-8')
out_file.write(struct.pack(
f">H{len(file_path)}s2I", len(file_path), file_path, offset, len(contents)
))
data_buf.extend(contents)
out_file.write(data_buf)
if __name__ == "__main__":
main()

460
cmake/AssetSources.cmake Normal file
View file

@ -0,0 +1,460 @@
set(ASSETS_COMMON
"Graphics/MinecraftIcon.png"
"Graphics/SaveChest.png"
"Graphics/TexturePackIcon.png"
"HTMLColours.col"
"languages.loc"
"splashes.txt"
)
set(ASSETS_1080P
"AnvilMenu1080.swf"
"AnvilMenuSplit1080.swf"
"BeaconMenu1080.swf"
"BeaconMenuSplit1080.swf"
"BrewingStandMenu1080.swf"
"BrewingStandMenuSplit1080.swf"
"ChestLargeMenu1080.swf"
"ChestLargeMenuSplit1080.swf"
"ChestMenu1080.swf"
"ChestMenuSplit1080.swf"
"ComponentLogo1080.swf"
"ComponentLogoSplit1080.swf"
"Controls1080.swf"
"ControlsRemotePlay1080.swf"
"ControlsSplit1080.swf"
"Crafting2x2Menu1080.swf"
"Crafting2x2MenuSplit1080.swf"
"Crafting3x3Menu1080.swf"
"Crafting3x3MenuSplit1080.swf"
"CreateWorldMenu1080.swf"
"CreativeMenu1080.swf"
"CreativeMenuSplit1080.swf"
"Credits1080.swf"
"DLCMainMenu1080.swf"
"DLCOffersMenu1080.swf"
"DeathMenu1080.swf"
"DeathMenuSplit1080.swf"
"DispenserMenu1080.swf"
"DispenserMenuSplit1080.swf"
"EULA1080.swf"
"EnchantingMenu1080.swf"
"EnchantingMenuSplit1080.swf"
"EndPoem1080.swf"
"FireworksMenu1080.swf"
"FireworksMenuSplit1080.swf"
"FullscreenProgress1080.swf"
"FullscreenProgressSplit1080.swf"
"FurnaceMenu1080.swf"
"FurnaceMenuSplit1080.swf"
"HUD1080.swf"
"HUDSplit1080.swf"
"HelpAndOptionsMenu1080.swf"
"HelpAndOptionsMenuSplit1080.swf"
"HopperMenu1080.swf"
"HopperMenuSplit1080.swf"
"HorseInventoryMenu1080.swf"
"HorseInventoryMenuSplit1080.swf"
"HowToPlay1080.swf"
"HowToPlayMenu1080.swf"
"HowToPlayMenuSplit1080.swf"
"HowToPlaySplit1080.swf"
"InGameHostOptions1080.swf"
"InGameHostOptionsSplit1080.swf"
"InGameInfoMenu1080.swf"
"InGameInfoMenuSplit1080.swf"
"InGamePlayerOptions1080.swf"
"InGamePlayerOptionsSplit1080.swf"
"InGameTeleportMenu1080.swf"
"InGameTeleportMenuSplit1080.swf"
"Intro1080.swf"
"InventoryMenu1080.swf"
"InventoryMenuSplit1080.swf"
"JoinMenu1080.swf"
"Keyboard1080.swf"
"KeyboardSplit1080.swf"
"LanguagesMenu1080.swf"
"LanguagesMenuSplit1080.swf"
"LaunchMoreOptionsMenu1080.swf"
"LeaderboardMenu1080.swf"
"LoadMenu1080.swf"
"LoadOrJoinMenu1080.swf"
"MainMenu1080.swf"
"MenuBackground1080.swf"
"MessageBox1080.swf"
"MessageBoxSplit1080.swf"
"NewUpdateMessage1080.swf"
"Panorama1080.swf"
"PanoramaSplit1080.swf"
"PauseMenu1080.swf"
"PauseMenuSplit1080.swf"
"PressStartToPlay1080.swf"
"QuadrantSignin1080.swf"
"ReinstallMenu1080.swf"
"ReinstallMenuSplit1080.swf"
"SaveMenu1080.swf"
"SaveMessage1080.swf"
"SettingsAudioMenu1080.swf"
"SettingsAudioMenuSplit1080.swf"
"SettingsControlMenu1080.swf"
"SettingsControlMenuSplit1080.swf"
"SettingsGraphicsMenu1080.swf"
"SettingsGraphicsMenuSplit1080.swf"
"SettingsMenu1080.swf"
"SettingsMenuSplit1080.swf"
"SettingsOptionsMenu1080.swf"
"SettingsOptionsMenuSplit1080.swf"
"SettingsUIMenu1080.swf"
"SettingsUIMenuSplit1080.swf"
"SignEntryMenu1080.swf"
"SignEntryMenuSplit1080.swf"
"SkinSelectMenu1080.swf"
"SkinSelectMenuSplit1080.swf"
"Timer1080.swf"
"TimerSplit1080.swf"
"ToolTips1080.swf"
"ToolTipsSplit1080.swf"
"TradingMenu1080.swf"
"TradingMenuSplit1080.swf"
"TutorialPopup1080.swf"
"TutorialPopupSplit1080.swf"
)
set(ASSETS_DEBUG_1080P
"DebugCreateSchematic1080.swf"
"DebugMenu1080.swf"
"DebugOptionsMenu1080.swf"
"DebugSetCamera1080.swf"
"DebugUIConsoleComponent1080.swf"
"DebugUIMarketingGuide1080.swf"
)
set(ASSETS_720P
"AnvilMenu720.swf"
"AnvilMenuSplit720.swf"
"BeaconMenu720.swf"
"BeaconMenuSplit720.swf"
"BrewingStandMenu720.swf"
"BrewingStandMenuSplit720.swf"
"ChestLargeMenu720.swf"
"ChestLargeMenuSplit720.swf"
"ChestMenu720.swf"
"ChestMenuSplit720.swf"
"ComponentLogo720.swf"
"ComponentLogoSplit720.swf"
"Controls720.swf"
"ControlsSplit720.swf"
"Crafting2x2Menu720.swf"
"Crafting2x2MenuSplit720.swf"
"Crafting3x3Menu720.swf"
"Crafting3x3MenuSplit720.swf"
"CreateWorldMenu720.swf"
"CreativeMenu720.swf"
"CreativeMenuSplit720.swf"
"Credits720.swf"
"DLCMainMenu720.swf"
"DLCOffersMenu720.swf"
"DeathMenu720.swf"
"DeathMenuSplit720.swf"
"DispenserMenu720.swf"
"DispenserMenuSplit720.swf"
"EULA720.swf"
"EnchantingMenu720.swf"
"EnchantingMenuSplit720.swf"
"EndPoem720.swf"
"FireworksMenu720.swf"
"FireworksMenuSplit720.swf"
"FullscreenProgress720.swf"
"FullscreenProgressSplit720.swf"
"FurnaceMenu720.swf"
"FurnaceMenuSplit720.swf"
"GamertagSplit720.swf"
"HUD720.swf"
"HUDSplit720.swf"
"HelpAndOptionsMenu720.swf"
"HelpAndOptionsMenuSplit720.swf"
"HopperMenu720.swf"
"HopperMenuSplit720.swf"
"HorseInventoryMenu720.swf"
"HorseInventoryMenuSplit720.swf"
"HowToPlay720.swf"
"HowToPlayMenu720.swf"
"HowToPlayMenuSplit720.swf"
"HowToPlaySplit720.swf"
"InGameHostOptions720.swf"
"InGameHostOptionsSplit720.swf"
"InGameInfoMenu720.swf"
"InGameInfoMenuSplit720.swf"
"InGamePlayerOptions720.swf"
"InGamePlayerOptionsSplit720.swf"
"InGameTeleportMenu720.swf"
"InGameTeleportMenuSplit720.swf"
"Intro720.swf"
"InventoryMenu720.swf"
"InventoryMenuSplit720.swf"
"JoinMenu720.swf"
"LanguagesMenu720.swf"
"LanguagesMenuSplit720.swf"
"LaunchMoreOptionsMenu720.swf"
"LeaderboardMenu720.swf"
"LoadMenu720.swf"
"LoadOrJoinMenu720.swf"
"MainMenu720.swf"
"MenuBackground720.swf"
"MessageBox720.swf"
"MessageBoxSplit720.swf"
"NewUpdateMessage720.swf"
"Panorama720.swf"
"PanoramaSplit720.swf"
"PauseMenu720.swf"
"PauseMenuSplit720.swf"
"PressStartToPlay720.swf"
"QuadrantSignin720.swf"
"ReinstallMenu720.swf"
"ReinstallMenuSplit720.swf"
"SaveMessage720.swf"
"SettingsAudioMenu720.swf"
"SettingsAudioMenuSplit720.swf"
"SettingsControlMenu720.swf"
"SettingsControlMenuSplit720.swf"
"SettingsGraphicsMenu720.swf"
"SettingsGraphicsMenuSplit720.swf"
"SettingsMenu720.swf"
"SettingsMenuSplit720.swf"
"SettingsOptionsMenu720.swf"
"SettingsOptionsMenuSplit720.swf"
"SettingsUIMenu720.swf"
"SettingsUIMenuSplit720.swf"
"SignEntryMenu720.swf"
"SignEntryMenuSplit720.swf"
"SkinSelectMenu720.swf"
"SkinSelectMenuSplit720.swf"
"Timer720.swf"
"ToolTips720.swf"
"ToolTipsSplit720.swf"
"TradingMenu720.swf"
"TradingMenuSplit720.swf"
"TrialExitUpsell720.swf"
"TutorialPopup720.swf"
"TutorialPopupSplit720.swf"
)
set(ASSETS_DEBUG_720P
"DebugCreateSchematic720.swf"
"DebugMenu720.swf"
"DebugOptionsMenu720.swf"
"DebugSetCamera720.swf"
"DebugUIConsoleComponent720.swf"
"DebugUIMarketingGuide720.swf"
)
set(ASSETS_480P
"AnvilMenu480.swf"
"BeaconMenu480.swf"
"BrewingStandMenu480.swf"
"ChestLargeMenu480.swf"
"ChestMenu480.swf"
"ComponentLogo480.swf"
"Controls480.swf"
"Crafting2x2Menu480.swf"
"Crafting3x3Menu480.swf"
"CreateWorldMenu480.swf"
"CreativeMenu480.swf"
"Credits480.swf"
"DLCMainMenu480.swf"
"DLCOffersMenu480.swf"
"DeathMenu480.swf"
"DispenserMenu480.swf"
"EULA480.swf"
"EnchantingMenu480.swf"
"EndPoem480.swf"
"FireworksMenu480.swf"
"FullscreenProgress480.swf"
"FurnaceMenu480.swf"
"HUD480.swf"
"HelpAndOptionsMenu480.swf"
"HopperMenu480.swf"
"HorseInventoryMenu480.swf"
"HowToPlay480.swf"
"HowToPlayMenu480.swf"
"InGameHostOptions480.swf"
"InGameInfoMenu480.swf"
"InGamePlayerOptions480.swf"
"InGameTeleportMenu480.swf"
"Intro480.swf"
"InventoryMenu480.swf"
"JoinMenu480.swf"
"LanguagesMenu480.swf"
"LaunchMoreOptionsMenu480.swf"
"LeaderboardMenu480.swf"
"LoadMenu480.swf"
"LoadOrJoinMenu480.swf"
"MainMenu480.swf"
"MenuBackground480.swf"
"MessageBox480.swf"
"NewUpdateMessage480.swf"
"Panorama480.swf"
"PauseMenu480.swf"
"PressStartToPlay480.swf"
"ReinstallMenu480.swf"
"SaveMessage480.swf"
"SettingsAudioMenu480.swf"
"SettingsControlMenu480.swf"
"SettingsGraphicsMenu480.swf"
"SettingsMenu480.swf"
"SettingsOptionsMenu480.swf"
"SettingsUIMenu480.swf"
"SignEntryMenu480.swf"
"SkinSelectMenu480.swf"
"Timer480.swf"
"ToolTips480.swf"
"TradingMenu480.swf"
"TrialExitUpsell480.swf"
"TutorialPopup480.swf"
)
set(ASSETS_VITA
"AnvilMenuVita.swf"
"BeaconMenuVita.swf"
"BrewingStandMenuVita.swf"
"ChestLargeMenuVita.swf"
"ChestMenuVita.swf"
"ComponentLogoVita.swf"
"ControlsTVVita.swf"
"ControlsVita.swf"
"Crafting2x2MenuVita.swf"
"Crafting3x3MenuVita.swf"
"CreateWorldMenuVita.swf"
"CreativeMenuVita.swf"
"CreditsVita.swf"
"DLCMainMenuVita.swf"
"DLCOffersMenuVita.swf"
"DeathMenuVita.swf"
"DispenserMenuVita.swf"
"EULAVita.swf"
"EnchantingMenuVita.swf"
"EndPoemVita.swf"
"FireworksMenuVita.swf"
"FullscreenProgressVita.swf"
"FurnaceMenuVita.swf"
"HUDVita.swf"
"HelpAndOptionsMenuVita.swf"
"HopperMenuVita.swf"
"HorseInventoryMenuVita.swf"
"HowToPlayMenuVita.swf"
"HowToPlayVita.swf"
"InGameHostOptionsVita.swf"
"InGameInfoMenuVita.swf"
"InGamePlayerOptionsVita.swf"
"InGameTeleportMenuVita.swf"
"IntroVita.swf"
"InventoryMenuVita.swf"
"JoinMenuVita.swf"
"LanguagesMenuVita.swf"
"LaunchMoreOptionsMenuVita.swf"
"LeaderboardMenuVita.swf"
"LoadMenuVita.swf"
"LoadOrJoinMenuVita.swf"
"MainMenuVita.swf"
"MenuBackgroundVita.swf"
"MessageBoxVita.swf"
"NewUpdateMessageVita.swf"
"PanoramaVita.swf"
"PauseMenuVita.swf"
"PressStartToPlayVita.swf"
"ReinstallMenuVita.swf"
"SaveMessageVita.swf"
"SettingsAudioMenuVita.swf"
"SettingsControlMenuVita.swf"
"SettingsGraphicsMenuVita.swf"
"SettingsMenuVita.swf"
"SettingsOptionsMenuVita.swf"
"SettingsUIMenuVita.swf"
"SignEntryMenuVita.swf"
"SkinSelectMenuVita.swf"
"TimerVita.swf"
"ToolTipsVita.swf"
"TradingMenuVita.swf"
"TutorialPopupVita.swf"
)
set(ASSETS_HD
"skinHDGraphicsHud.swf"
"skinHDGraphicsInGame.swf"
"skinHDGraphicsLabels.swf"
"skinHDGraphics.swf"
"skinHDHud.swf"
"skinHDInGame.swf"
"skinHDLabels.swf"
"skinHD.swf"
)
set(ASSETS_SD
"skinGraphicsHud.swf"
"skinGraphicsInGame.swf"
"skinGraphicsLabels.swf"
"skinGraphics.swf"
"skinHud.swf"
"skinInGame.swf"
"skinLabels.swf"
)
set(ASSETS_WINDOWS64
${ASSETS_COMMON}
${ASSETS_SD}
${ASSETS_HD}
${ASSETS_VITA}
${ASSETS_480P}
${ASSETS_720P}
${ASSETS_DEBUG_720P}
${ASSETS_1080P}
${ASSETS_DEBUG_1080P}
"skin.swf"
"skinHDWin.swf"
"skinWin.swf"
)
set(ASSETS_DURANGO
${ASSETS_COMMON}
${ASSETS_HD}
${ASSETS_1080P}
${ASSETS_DEBUG_1080P}
"DefaultSaveThumbnail64x64.png"
"skinHDDurango.swf"
)
set(ASSETS_ORBIS
${ASSETS_COMMON}
${ASSETS_HD}
${ASSETS_1080P}
${ASSETS_DEBUG_1080P}
"DefaultOptionsImage228x128.png"
"DefaultSaveImage228x128.png"
"DefaultSaveThumbnail64x64.png"
"skinHDOrbis.swf"
)
set(ASSETS_PSVITA
${ASSETS_COMMON}
${ASSETS_SD}
${ASSETS_VITA}
${ASSETS_DEBUG_720P}
"DefaultOptionsImage320x176.png"
"DefaultSaveImage320x176.png"
"DefaultSaveThumbnail64x64.png"
"skin.swf"
"skinVita.swf"
)
set(ASSETS_PS3
${ASSETS_COMMON}
${ASSETS_SD}
${ASSETS_480P}
${ASSETS_720P}
${ASSETS_DEBUG_720P}
"DefaultOptionsImage320x176.png"
"DefaultSaveImage320x176.png"
"DefaultSaveThumbnail64x64.png"
"skin.swf"
"skinPS3.swf"
)

88
cmake/CopyAssets.cmake Normal file
View file

@ -0,0 +1,88 @@
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/AssetSources.cmake")
set(_project_dir "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client")
function(copy_tree_if_exists src_rel dst_rel)
set(_src "${_project_dir}/${src_rel}")
set(_dst "${CMAKE_CURRENT_BINARY_DIR}/${dst_rel}")
if(EXISTS "${_src}")
file(MAKE_DIRECTORY "${_dst}")
file(GLOB_RECURSE _files RELATIVE "${_src}" "${_src}/*")
foreach(_file IN LISTS _files) # if not a source file
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}")
configure_file(${_full_src} ${_full_dst} COPYONLY)
endif()
endif()
endforeach()
endif()
endfunction()
function(make_media_archive arc_name)
set(_dst "${CMAKE_CURRENT_BINARY_DIR}/Common/Media/${arc_name}")
set(_src_dir "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Common/Media")
set(_src)
foreach(file IN LISTS ARGN)
list(APPEND _src "${_src_dir}/${file}")
endforeach()
get_filename_component(_dst_dir "${_dst}" DIRECTORY)
file(MAKE_DIRECTORY "${_dst_dir}")
add_custom_command(
OUTPUT "${_dst}.zip"
DEPENDS ${_src}
WORKING_DIRECTORY ${_src_dir}
COMMAND ${CMAKE_COMMAND} -E tar "cf" "${_dst}.zip" --format=zip -- ${ARGN}
COMMENT "Creating archive ${arc_name}.zip"
VERBATIM
)
add_custom_command(
OUTPUT "${_dst}.arc"
DEPENDS "${_dst}.zip"
COMMAND python "${CMAKE_CURRENT_SOURCE_DIR}/arcconv.py" "zip2arc" "${_dst}.zip" "${_dst}.arc"
COMMENT "Creating archive ${arc_name}.arc"
VERBATIM
)
add_custom_target("arc_${arc_name}" DEPENDS "${_dst}.arc")
add_dependencies(MinecraftClient "arc_${arc_name}")
endfunction()
copy_tree_if_exists("Durango/Sound" "Windows64/Sound")
copy_tree_if_exists("music" "music")
copy_tree_if_exists("Windows64/GameHDD" "Windows64/GameHDD")
copy_tree_if_exists("Common/res" "Common/res")
copy_tree_if_exists("Common/Trial" "Common/Trial")
copy_tree_if_exists("Common/Tutorial" "Common/Tutorial")
copy_tree_if_exists("Windows64Media" "Windows64Media")
make_media_archive("MediaWindows64" ${ASSETS_WINDOWS64})
make_media_archive("MediaDurango" ${ASSETS_DURANGO})
make_media_archive("MediaOrbis" ${ASSETS_ORBIS})
make_media_archive("MediaPSVita" ${ASSETS_PSVITA})
make_media_archive("MediaPS3" ${ASSETS_PS3})
# Some runtime code asserts if this directory tree is missing.
file(MAKE_DIRECTORY "Windows64/GameHDD")
# Keep legacy runtime redistributables in a familiar location.
copy_tree_if_exists("Windows64/Miles/lib/redist64" "redist64")
copy_tree_if_exists("Windows64/Iggy/lib/redist64" "redist64")
set(CONFIGURATION $<$<CONFIG:Release>:Release>)
# Runtime DLLs required at launch.
configure_file("Minecraft.Client/Windows64/Iggy/lib/redist64/iggy_w64.dll" "iggy_w64.dll" COPYONLY)
configure_file("Minecraft.Client/Windows64/Miles/lib/redist64/mss64.dll" "mss64.dll" COPYONLY)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.