Merge branch 'smartcmd:main' into main

This commit is contained in:
qwasdrizzel
2026-03-05 22:18:36 -06:00
committed by GitHub
551 changed files with 102085 additions and 14799 deletions

View File

@@ -76,7 +76,6 @@ target_link_libraries(MinecraftClient PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggy_w64.lib" "${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/iggyperfmon_w64.lib"
"${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/lib/iggyexpruntime_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>: $<$<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_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_Storage_d.lib"
@@ -89,7 +88,7 @@ target_link_libraries(MinecraftClient PRIVATE
> >
) )
if(WIN32) if(CMAKE_HOST_WIN32)
message(STATUS "Starting redist copy...") message(STATUS "Starting redist copy...")
execute_process( execute_process(
COMMAND robocopy.exe COMMAND robocopy.exe
@@ -118,7 +117,7 @@ if(WIN32)
/S /MT /R:0 /W:0 /NP /S /MT /R:0 /W:0 /NP
/XF "*.h" "*.xml" "*.lang" "*.bat" /XF "*.h" "*.xml" "*.lang" "*.bat"
) )
elseif(UNIX) elseif(CMAKE_HOST_UNIX)
message(STATUS "Starting redist copy...") message(STATUS "Starting redist copy...")
execute_process( execute_process(
COMMAND rsync -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/" COMMAND rsync -av "${CMAKE_CURRENT_SOURCE_DIR}/x64/Release/" "${CMAKE_CURRENT_BINARY_DIR}/"

View File

@@ -15,7 +15,6 @@
#define _SEKRIT #define _SEKRIT
#include "..\..\Durango\Miles\include\mss.h" #include "..\..\Durango\Miles\include\mss.h"
#elif defined _WINDOWS64 #elif defined _WINDOWS64
#include "..\..\windows64\Miles\include\mss.h"
#else // PS4 #else // PS4
// 4J Stu - Temp define to get Miles to link, can likely be removed when we get a new version of Miles // 4J Stu - Temp define to get Miles to link, can likely be removed when we get a new version of Miles
#define _SEKRIT2 #define _SEKRIT2

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,8 @@ class Options;
using namespace std; using namespace std;
#include "..\..\Minecraft.World\SoundTypes.h" #include "..\..\Minecraft.World\SoundTypes.h"
#include "miniaudio.h"
enum eMUSICFILES enum eMUSICFILES
{ {
eStream_Overworld_Calm1 = 0, eStream_Overworld_Calm1 = 0,
@@ -76,7 +78,11 @@ enum MUSIC_STREAMSTATE
typedef struct typedef struct
{ {
#ifndef _WINDOWS64
F32 x,y,z,volume,pitch; F32 x,y,z,volume,pitch;
#else
float x,y,z,volume,pitch;
#endif
int iSound; int iSound;
bool bIs3D; bool bIs3D;
bool bUseSoundsPitchVal; bool bUseSoundsPitchVal;
@@ -86,6 +92,17 @@ typedef struct
} }
AUDIO_INFO; AUDIO_INFO;
#ifdef _WINDOWS64
struct MiniAudioSound
{
ma_sound sound;
AUDIO_INFO info;
bool active;
};
extern std::vector<MiniAudioSound*> m_activeSounds;
#endif
class SoundEngine : public ConsoleSoundEngine class SoundEngine : public ConsoleSoundEngine
{ {
static const int MAX_SAME_SOUNDS_PLAYING = 8; // 4J added static const int MAX_SAME_SOUNDS_PLAYING = 8; // 4J added
@@ -112,7 +129,7 @@ public:
int getMusicID(int iDomain); int getMusicID(int iDomain);
int getMusicID(const wstring& name); int getMusicID(const wstring& name);
void SetStreamingSounds(int iOverworldMin, int iOverWorldMax, int iNetherMin, int iNetherMax, int iEndMin, int iEndMax, int iCD1); void SetStreamingSounds(int iOverworldMin, int iOverWorldMax, int iNetherMin, int iNetherMax, int iEndMin, int iEndMax, int iCD1);
void updateMiles(); // AP added so Vita can update all the Miles functions during the mixer callback void updateMiniAudio();
void playMusicUpdate(); void playMusicUpdate();
private: private:
@@ -126,9 +143,10 @@ private:
int GetRandomishTrack(int iStart,int iEnd); int GetRandomishTrack(int iStart,int iEnd);
HMSOUNDBANK m_hBank; ma_engine m_engine;
HDIGDRIVER m_hDriver; ma_engine_config m_engineConfig;
HSTREAM m_hStream; ma_sound m_musicStream;
bool m_musicStreamActive;
static char m_szSoundPath[]; static char m_szSoundPath[];
static char m_szMusicPath[]; static char m_szMusicPath[];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2441,10 +2441,10 @@ void CMinecraftApp::ClearGameSettingsChangedFlag(int iPad)
/////////////////////////// ///////////////////////////
// //
// Remove the debug settings in the content package build // Remove the debug settings in the release build
// //
//////////////////////////// ////////////////////////////
#ifndef _DEBUG_MENUS_ENABLED #ifndef _DEBUG
unsigned int CMinecraftApp::GetGameSettingsDebugMask(int iPad,bool bOverridePlayer) //bOverridePlayer is to force the send for the server to get the read options unsigned int CMinecraftApp::GetGameSettingsDebugMask(int iPad,bool bOverridePlayer) //bOverridePlayer is to force the send for the server to get the read options
{ {
return 0; return 0;

View File

@@ -0,0 +1,74 @@
#include "stdafx.h"
#include "Filesystem.h"
#ifdef _WINDOWS64
#include <windows.h>
#endif // TODO: More os' filesystem handling for when the project moves away from only Windows
#include <stdio.h>
bool FileOrDirectoryExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES);
#else
#error "FileOrDirectoryExists not implemented for this platform"
return false;
#endif
}
bool FileExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES && !(attribs & FILE_ATTRIBUTE_DIRECTORY));
#else
#error "FileExists not implemented for this platform"
return false;
#endif
}
bool DirectoryExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY));
#else
#error "DirectoryExists not implemented for this platform"
return false;
#endif
}
bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize)
{
#ifdef _WINDOWS64
char searchPath[MAX_PATH];
snprintf(searchPath, MAX_PATH, "%s\\*", directory);
WIN32_FIND_DATAA findData;
HANDLE hFind = FindFirstFileA(searchPath, &findData);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
do
{
if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// Found a file, copy its path to the output buffer
snprintf(outFilePath, outFilePathSize, "%s\\%s", directory, findData.cFileName);
FindClose(hFind);
return true;
}
} while (FindNextFileA(hFind, &findData) != 0);
FindClose(hFind);
return false; // No files found in the directory
#else
#error "GetFirstFileInDirectory not implemented for this platform"
return false;
#endif
}

View File

@@ -0,0 +1,6 @@
#pragma once
bool FileOrDirectoryExists(const char* path);
bool FileExists(const char* path);
bool DirectoryExists(const char* path);
bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize);

View File

@@ -23,7 +23,7 @@ UIScene_HelpAndOptionsMenu::UIScene_HelpAndOptionsMenu(int iPad, void *initData,
// We don't have a reinstall content, so remove the button // We don't have a reinstall content, so remove the button
removeControl( &m_buttons[BUTTON_HAO_REINSTALL], false ); removeControl( &m_buttons[BUTTON_HAO_REINSTALL], false );
#ifdef _FINAL_BUILD #ifndef _DEBUG
removeControl( &m_buttons[BUTTON_HAO_DEBUG], false); removeControl( &m_buttons[BUTTON_HAO_DEBUG], false);
#else #else
if(!app.DebugSettingsOn()) removeControl( &m_buttons[BUTTON_HAO_DEBUG], false); if(!app.DebugSettingsOn()) removeControl( &m_buttons[BUTTON_HAO_DEBUG], false);

View File

@@ -1551,7 +1551,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
@@ -1571,7 +1571,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
<AdditionalDependencies>legacy_stdio_definitions.lib;d3d11.lib;d3dcompiler.lib;..\Minecraft.World\x64_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib;..\Minecraft.Client\Windows64\Miles\Lib\mss64.lib;wsock32.lib</AdditionalDependencies> <AdditionalDependencies>legacy_stdio_definitions.lib;d3d11.lib;d3dcompiler.lib;..\Minecraft.World\x64_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib;wsock32.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress> <ShowProgress>NotSet</ShowProgress>
<SuppressStartupBanner>false</SuppressStartupBanner> <SuppressStartupBanner>false</SuppressStartupBanner>
</Link> </Link>
@@ -1617,7 +1617,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
<AdditionalDependencies>d3d11.lib;..\Minecraft.World\ARM64EC_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib;..\Minecraft.Client\Windows64\Miles\Lib\mss64.lib;wsock32.lib</AdditionalDependencies> <AdditionalDependencies>d3d11.lib;..\Minecraft.World\ARM64EC_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib;wsock32.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress> <ShowProgress>NotSet</ShowProgress>
<SuppressStartupBanner>false</SuppressStartupBanner> <SuppressStartupBanner>false</SuppressStartupBanner>
</Link> </Link>
@@ -1663,7 +1663,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
<Link> <Link>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile> <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
<AdditionalDependencies>d3d11.lib;..\Minecraft.World\x64_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib;..\Minecraft.Client\Windows64\Miles\Lib\mss64.lib</AdditionalDependencies> <AdditionalDependencies>d3d11.lib;..\Minecraft.World\x64_Debug\Minecraft.World.lib;%(AdditionalDependencies);XInput9_1_0.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress> <ShowProgress>NotSet</ShowProgress>
<SuppressStartupBanner>false</SuppressStartupBanner> <SuppressStartupBanner>false</SuppressStartupBanner>
</Link> </Link>
@@ -5698,7 +5698,9 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ClInclude Include="Common\App_enums.h" /> <ClInclude Include="Common\App_enums.h" />
<ClInclude Include="Common\App_structs.h" /> <ClInclude Include="Common\App_structs.h" />
<ClInclude Include="Common\Audio\Consoles_SoundEngine.h" /> <ClInclude Include="Common\Audio\Consoles_SoundEngine.h" />
<ClInclude Include="Common\Audio\miniaudio.h" />
<ClInclude Include="Common\Audio\SoundEngine.h" /> <ClInclude Include="Common\Audio\SoundEngine.h" />
<ClInclude Include="Common\Audio\stb_vorbis.h" />
<ClInclude Include="Common\BuildVer.h" /> <ClInclude Include="Common\BuildVer.h" />
<ClInclude Include="Common\Colours\ColourTable.h" /> <ClInclude Include="Common\Colours\ColourTable.h" />
<ClInclude Include="Common\Consoles_App.h" /> <ClInclude Include="Common\Consoles_App.h" />
@@ -5715,6 +5717,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ClInclude Include="Common\DLC\DLCSkinFile.h" /> <ClInclude Include="Common\DLC\DLCSkinFile.h" />
<ClInclude Include="Common\DLC\DLCTextureFile.h" /> <ClInclude Include="Common\DLC\DLCTextureFile.h" />
<ClInclude Include="Common\DLC\DLCUIDataFile.h" /> <ClInclude Include="Common\DLC\DLCUIDataFile.h" />
<ClInclude Include="Common\Filesystem\Filesystem.h" />
<ClInclude Include="Common\GameRules\AddEnchantmentRuleDefinition.h" /> <ClInclude Include="Common\GameRules\AddEnchantmentRuleDefinition.h" />
<ClInclude Include="Common\GameRules\AddItemRuleDefinition.h" /> <ClInclude Include="Common\GameRules\AddItemRuleDefinition.h" />
<ClInclude Include="Common\GameRules\ApplySchematicRuleDefinition.h" /> <ClInclude Include="Common\GameRules\ApplySchematicRuleDefinition.h" />
@@ -28470,6 +28473,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ClCompile Include="Common\DLC\DLCSkinFile.cpp" /> <ClCompile Include="Common\DLC\DLCSkinFile.cpp" />
<ClCompile Include="Common\DLC\DLCTextureFile.cpp" /> <ClCompile Include="Common\DLC\DLCTextureFile.cpp" />
<ClCompile Include="Common\DLC\DLCUIDataFile.cpp" /> <ClCompile Include="Common\DLC\DLCUIDataFile.cpp" />
<ClCompile Include="Common\Filesystem\Filesystem.cpp" />
<ClCompile Include="Common\GameRules\AddEnchantmentRuleDefinition.cpp" /> <ClCompile Include="Common\GameRules\AddEnchantmentRuleDefinition.cpp" />
<ClCompile Include="Common\GameRules\AddItemRuleDefinition.cpp" /> <ClCompile Include="Common\GameRules\AddItemRuleDefinition.cpp" />
<ClCompile Include="Common\GameRules\ApplySchematicRuleDefinition.cpp" /> <ClCompile Include="Common\GameRules\ApplySchematicRuleDefinition.cpp" />
@@ -46300,23 +46304,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">true</ExcludedFromBuild>
</Library> </Library>
<Library Include="Windows64\Miles\lib\mss64.lib">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Durango'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ORBIS'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|ORBIS'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ORBIS'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|PS3'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|PSVita'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PS3'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|PSVita'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|PSVita'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Xbox 360'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Xbox 360'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Xbox 360'">true</ExcludedFromBuild>
</Library>
<Library Include="Xbox\4JLibs\libs\4J_Input.lib"> <Library Include="Xbox\4JLibs\libs\4J_Input.lib">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|ARM64EC'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage|ARM64EC'">true</ExcludedFromBuild>

View File

@@ -729,6 +729,9 @@
<Filter Include="Windows64\Source Files\Network"> <Filter Include="Windows64\Source Files\Network">
<UniqueIdentifier>{e5d7fb24-25b8-413c-84ec-974bf0d4a3d1}</UniqueIdentifier> <UniqueIdentifier>{e5d7fb24-25b8-413c-84ec-974bf0d4a3d1}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Common\Source Files\Filesystem">
<UniqueIdentifier>{c79fd64d-7529-4da4-b5f3-2541e084932b}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="ReadMe.txt" /> <None Include="ReadMe.txt" />
@@ -3778,6 +3781,15 @@
<ClInclude Include="Windows64\Network\WinsockNetLayer.h"> <ClInclude Include="Windows64\Network\WinsockNetLayer.h">
<Filter>Windows64\Source Files\Network</Filter> <Filter>Windows64\Source Files\Network</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Common\Filesystem\Filesystem.h">
<Filter>Common\Source Files\Filesystem</Filter>
</ClInclude>
<ClInclude Include="Common\Audio\miniaudio.h">
<Filter>Common\Source Files\Audio</Filter>
</ClInclude>
<ClInclude Include="Common\Audio\stb_vorbis.h">
<Filter>Common\Source Files\Audio</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
@@ -5931,6 +5943,9 @@
<ClCompile Include="Windows64\Network\WinsockNetLayer.cpp"> <ClCompile Include="Windows64\Network\WinsockNetLayer.cpp">
<Filter>Windows64\Source Files\Network</Filter> <Filter>Windows64\Source Files\Network</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Common\Filesystem\Filesystem.cpp">
<Filter>Common\Source Files\Filesystem</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Library Include="Xbox\4JLibs\libs\4J_Render_d.lib"> <Library Include="Xbox\4JLibs\libs\4J_Render_d.lib">
@@ -5990,9 +6005,6 @@
<Library Include="Windows64\4JLibs\libs\4J_Input_d.lib"> <Library Include="Windows64\4JLibs\libs\4J_Input_d.lib">
<Filter>Windows64\4JLibs\libs</Filter> <Filter>Windows64\4JLibs\libs</Filter>
</Library> </Library>
<Library Include="Windows64\Miles\lib\mss64.lib">
<Filter>Windows64\Miles Sound System\lib</Filter>
</Library>
<Library Include="Windows64\Iggy\lib\iggy_w64.lib"> <Library Include="Windows64\Iggy\lib\iggy_w64.lib">
<Filter>Windows64\Iggy\lib</Filter> <Filter>Windows64\Iggy\lib</Filter>
</Library> </Library>

View File

@@ -3530,11 +3530,14 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
} }
#ifdef _WINDOWS64 #ifdef _WINDOWS64
bool actionPressed = InputManager.ButtonPressed(iPad, MINECRAFT_ACTION_ACTION) || (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_LEFT));
bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION) || (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT)); bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION) || (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT));
#else #else
bool actionPressed = InputManager.ButtonPressed(iPad, MINECRAFT_ACTION_ACTION);
bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION); bool actionHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_ACTION);
#endif #endif
if (actionHeld && ticks - player->lastClickTick[0] >= timer->ticksPerSecond / 4)
if (actionPressed)
{ {
//printf("MINECRAFT_ACTION_ACTION ButtonDown"); //printf("MINECRAFT_ACTION_ACTION ButtonDown");
player->handleMouseClick(0); player->handleMouseClick(0);

View File

@@ -86,13 +86,6 @@ bool MultiPlayerGameMode::destroyBlock(int x, int y, int z, int face)
if (oldTile == NULL) return false; if (oldTile == NULL) return false;
#ifdef _WINDOWS64
if (g_NetworkManager.IsHost())
{
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT));
}
#endif
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT)); level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, x, y, z, oldTile->id + (level->getData(x, y, z) << Tile::TILE_NUM_SHIFT));
int data = level->getData(x, y, z); int data = level->getData(x, y, z);
@@ -133,6 +126,9 @@ void MultiPlayerGameMode::startDestroyBlock(int x, int y, int z, int face)
if (localPlayerMode->isCreative()) if (localPlayerMode->isCreative())
{ {
// Skip if we just broke a block — prevents double-break on single clicks
if (destroyDelay > 0) return;
connection->send(shared_ptr<PlayerActionPacket>( new PlayerActionPacket(PlayerActionPacket::START_DESTROY_BLOCK, x, y, z, face) )); connection->send(shared_ptr<PlayerActionPacket>( new PlayerActionPacket(PlayerActionPacket::START_DESTROY_BLOCK, x, y, z, face) ));
creativeDestroyBlock(minecraft, this, x, y, z, face); creativeDestroyBlock(minecraft, this, x, y, z, face);
destroyDelay = 5; destroyDelay = 5;
@@ -178,6 +174,7 @@ void MultiPlayerGameMode::stopDestroyBlock()
isDestroying = false; isDestroying = false;
destroyProgress = 0; destroyProgress = 0;
destroyDelay = 0;
minecraft->level->destroyTileProgress(minecraft->player->entityId, xDestroyBlock, yDestroyBlock, zDestroyBlock, -1); minecraft->level->destroyTileProgress(minecraft->player->entityId, xDestroyBlock, yDestroyBlock, zDestroyBlock, -1);
} }

View File

@@ -1093,6 +1093,10 @@ void PlayerConnection::handleContainerClose(shared_ptr<ContainerClosePacket> pac
#ifndef _CONTENT_PACKAGE #ifndef _CONTENT_PACKAGE
void PlayerConnection::handleContainerSetSlot(shared_ptr<ContainerSetSlotPacket> packet) void PlayerConnection::handleContainerSetSlot(shared_ptr<ContainerSetSlotPacket> packet)
{ {
if(player->gameMode->isSurvival()){ // Still allow creative players to change slots manually with packets(?) -- might want this different.
server->warn(L"Player " + player->getName() + L" just tried to set a slot in a container in survival mode");
return;
}
if (packet->containerId == AbstractContainerMenu::CONTAINER_ID_CARRIED ) if (packet->containerId == AbstractContainerMenu::CONTAINER_ID_CARRIED )
{ {
player->inventory->setCarried(packet->item); player->inventory->setCarried(packet->item);
@@ -1589,6 +1593,10 @@ void PlayerConnection::handleCraftItem(shared_ptr<CraftItemPacket> packet)
Recipy::INGREDIENTS_REQUIRED *pRecipeIngredientsRequired=Recipes::getInstance()->getRecipeIngredientsArray(); Recipy::INGREDIENTS_REQUIRED *pRecipeIngredientsRequired=Recipes::getInstance()->getRecipeIngredientsArray();
shared_ptr<ItemInstance> pTempItemInst=pRecipeIngredientsRequired[iRecipe].pRecipy->assemble(nullptr); shared_ptr<ItemInstance> pTempItemInst=pRecipeIngredientsRequired[iRecipe].pRecipy->assemble(nullptr);
size_t recipeCount = Recipes::getInstance()->getRecipies()->size();
if (iRecipe < 0 || iRecipe >= (int)recipeCount)
return;
if(app.DebugSettingsOn() && (player->GetDebugOptions()&(1L<<eDebugSetting_CraftAnything))) if(app.DebugSettingsOn() && (player->GetDebugOptions()&(1L<<eDebugSetting_CraftAnything)))
{ {
pTempItemInst->onCraftedBy(player->level, dynamic_pointer_cast<Player>( player->shared_from_this() ), pTempItemInst->count ); pTempItemInst->onCraftedBy(player->level, dynamic_pointer_cast<Player>( player->shared_from_this() ), pTempItemInst->count );
@@ -1607,9 +1615,21 @@ void PlayerConnection::handleCraftItem(shared_ptr<CraftItemPacket> packet)
{ {
// TODO 4J Stu - Assume at the moment that the client can work this out for us... Recipy::INGREDIENTS_REQUIRED &req = pRecipeIngredientsRequired[iRecipe];
//if(pRecipeIngredientsRequired[iRecipe].bCanMake) if (req.iType == RECIPE_TYPE_3x3 && dynamic_cast<CraftingMenu *>(player->containerMenu) == NULL)
//{ {
server->warn(L"Player " + player->getName() + L" tried to craft a 3x3 recipe without a crafting bench");
return;
}
for (int i = 0; i < req.iIngC; i++){
int need = req.iIngValA[i];
int have = player->inventory->countResource(req.iIngIDA[i], req.iIngAuxValA[i]);
if (have < need){
server->warn(L"Player " + player->getName() + L" just tried to craft item " + to_wstring(pTempItemInst->id) + L" with insufficient ingredients");
return;
}
}
pTempItemInst->onCraftedBy(player->level, dynamic_pointer_cast<Player>( player->shared_from_this() ), pTempItemInst->count ); pTempItemInst->onCraftedBy(player->level, dynamic_pointer_cast<Player>( player->shared_from_this() ), pTempItemInst->count );
// and remove those resources from your inventory // and remove those resources from your inventory

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
// This is the null header file used to remove Telemetry calls.
#define TMERR_DISABLED 1
#define tmTick(...)
#define tmPause(...)
#define tmEnter(...)
#define tmLeave(...)
#define tmThreadName(...) TMERR_DISABLED
#define tmMutexName(...) TMERR_DISABLED
#define tmTryLock(...) TMERR_DISABLED
#define tmEndTryLock(...)
#define tmSetMutexState(...)
#define tmAlloc(...)
#define tmRealloc(...)
#define tmFree(...)
#define tmPlot(...)
#define tmBlob(...) TMERR_DISABLED
#define tmBlobEx(...) TMERR_DISABLED
#define tmMessage(...)
#define tmEmitAccumulationZones(...) TMERR_DISABLED
#define tmEnterAccumulationZone(...) TMERR_DISABLED
#define tmLeaveAccumulationZone(...) TMERR_DISABLED
#define tmZone(...)
#define tmSetLockState(...)
#define tmLockName(...)
#define tmSendCallStack(...)
#define tmAllocEx(...)
#define NTELEMETRY 1
#define TM_CONTEXT_LITE(val) ((char*)(val))
#define TM_CONTEXT_FULL(val) ((char*)(val))
typedef char *HTELEMETRY;

Some files were not shown because too many files have changed in this diff Show More