28 Commits
Author SHA1 Message Date
pieeebot 51ee0d8e57 fix(Windows64): audio crashes, lighting issues and music not being copied correctly 2026-07-23 18:00:55 +03:00
pieeebot 9ef66ed71b fix(TU22): Boat, Baby zombie and Texture changes.
TU22:
- Corrected baby zombie hit boxes size.
- Fix for players sometimes taking fall damage while in a boat.
- Updated Lapis Lazuli's block texture
2026-07-22 19:59:49 +03:00
str1k3r b6e2886476 fix: excess step from being in release 2026-07-21 19:21:43 -04:00
str1k3r 69541f1abf fix: ps3 compiling & only uncap fps on windows 2026-07-21 17:11:11 -04:00
str1k3r 09cedad533 fix: workflow stage exe path 2026-07-21 16:02:55 -04:00
str1k3r 59b9fec5c2 fix: workflow 2026-07-21 14:54:07 -04:00
str1k3r 6625df6c3e feat: release workflow 2026-07-21 14:52:11 -04:00
str1k3r e0ed220c69 fix: workflow 2026-07-21 17:51:21 +00:00
str1k3r cba1f9ea3b fix: workflow 2026-07-21 17:49:29 +00:00
str1k3r 79bfa4eb56 fix: using wrong msbuild ver 2026-07-21 17:43:12 +00:00
str1k3r 12f7125335 feat: test ps3 workflow 2026-07-21 17:25:18 +00:00
pieeebot c677cc0065 chore: update README.md to include discord server. 2026-07-17 20:17:07 +01:00
pieeebot eb3ae69d3f chore: add Wii U and Switch to README.md 2026-07-17 12:41:07 +01:00
pieeebot 1580fdced7 Update README.md 2026-07-16 13:50:36 +01:00
pieeebot 7200598afa chore: change readme to update project name and description 2026-07-16 13:46:41 +01:00
qloakandpieeebot b08d478d73 fix(TU20): Piston and StemTile fixes (#6)
- fixed "Two pistons stacked facing up and the top piston is powered with a repeater will cause the top piston to lock in place."
- fixed "Fix for issue where destroying planted pumpkin and melon seeds drops an incorrect number of seeds."

---------

Co-authored-by: pieeebot <10+pieeebot@noreply.neolegacy.dev>
Reviewed-on: https://git.neolegacy.dev/pieeebot/mc_pieLCE/pulls/6
Co-authored-by: qloak <realminecart@gmail.com>
Co-committed-by: qloak <realminecart@gmail.com>
2026-07-15 20:33:38 +01:00
pieeebot b1189eb6c9 chore: update development status on xbox 360
qloak found a discovery that let us grab the xur files from the tu update files, .xui is compiled into .xur and its easy to convert it back to .xui.
2026-07-15 16:45:48 +01:00
str1k3r 4e2369f194 fix(Orbis): Leaderboard manager
Make the Orbis Leaderboard manager work with the new Sony Leaderboard manager
2026-07-15 09:00:52 -04:00
qloakandpieeebot e1508731d0 fix(TU20): more TU20 bug fixes
TU20:

Fixed issue where name tags do not appear to work correctly on the wither, iron golems, and wither skeletons.
Fix for issue where creepers hover off the floor.

---------

Co-authored-by: pieeebot <10+pieeebot@noreply.neolegacy.dev>
Reviewed-on: https://git.neolegacy.dev/pieeebot/mc_pieLCE/pulls/5
Co-authored-by: qloak <realminecart@gmail.com>
Co-committed-by: qloak <realminecart@gmail.com>
2026-07-15 13:15:45 +01:00
pieeebot d236b70546 fix(TU20): Noteblock fall-off distance so they can be heard further away. 2026-07-15 14:57:35 +03:00
pieeebot 636bf0b692 fix(TU20): TNT minecart exploding despite 'TNT Explodes' option being turned off. 2026-07-15 00:13:08 +03:00
qloak 22bcbde6a3 fix(TU20): fixed name tag Y-position for tall mobs (wither, iron golem, wither skeleton) (#4)
title

Reviewed-on: https://git.neolegacy.dev/pieeebot/mc_pieLCE/pulls/4
Co-authored-by: qloak <realminecart@gmail.com>
Co-committed-by: qloak <realminecart@gmail.com>
2026-07-14 21:42:19 +01:00
pieeebot 8b20122798 fix: horse rendering (#3)
Reviewed-on: https://git.neolegacy.dev/pieeebot/mc_pieLCE/pulls/3
2026-07-14 21:05:11 +01:00
qloak 0672a56786 merge upstream 2026-07-14 20:59:48 +01:00
qloak 8e77eb70de fix horse layered texture rendering for platforms without multitexture support 2026-07-14 12:58:42 -07:00
pieeebot d0cc8ce080 fix(Windows64): windows build, uncap fps, double buffer, remove Sleep(0) #1
Reviewed-on: https://git.neolegacy.dev/pieeebot/mc_pieLCE/pulls/1
2026-07-14 18:32:04 +01:00
qloak a0e81976e6 fix: windows build, uncap fps, double buffer, remove Sleep(0) 2026-07-14 10:13:55 -07:00
qloak dd19188d93 fix: windows build, uncap fps, double buffer, remove Sleep(0), 2026-07-14 09:51:14 -07:00
29 changed files with 277 additions and 1224 deletions
+106
View File
@@ -0,0 +1,106 @@
name: Build & Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version tag for release (e.g. v1.0.0).'
required: true
default: ''
notes:
description: 'URL to notes for release.'
required: false
default: ''
jobs:
validate:
runs-on: windows-2022
steps:
- name: Validate version format
run: |
if (-not ("${{ inputs.version }}" -match '^v\d+\.\d+\.\d+[a-zA-Z0-9.-]*$')) {
Write-Error "Version '${{ inputs.version }}' doesn't match expected format (e.g. v1.0.0)"
exit 1
}
build:
runs-on: windows-2022
strategy:
matrix:
configuration: [Release]
platform: [PS3, Windows64] #[PS3, PSVita, Xbox 360, ORBIS, Windows64]
steps:
- name: Checkout Repository
uses: https://github.com/actions/checkout@v4
- name: Build Cafeberry
run: |
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
/p:Configuration=${{ matrix.configuration }} `
/p:Platform=${{ matrix.platform }} `
/m
- name: Zip Build (Consoles)
if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Zip Build (Windows64)
if: matrix.platform == 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./x64/${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts
run: |
New-Item -ItemType Directory -Force -Path staging
Copy-Item LCE${{ matrix.platform }}.zip staging/
- name: Stage exe
if: matrix.platform == 'Windows64'
run: |
Copy-Item ./x64/${{ matrix.configuration }}/Minecraft.Client.exe staging/
- name: Upload artifacts
uses: https://github.com/actions/upload-artifact@v3
with:
name: build-${{ matrix.platform }}
path: staging/*
release:
needs: build
runs-on: windows-2022
steps:
- name: Download all build artifacts
uses: https://github.com/actions/download-artifact@v3
with:
path: downloaded
- name: Fetch release notes
id: notes
run: |
$notesSource = "${{ inputs.notes }}"
$fallback = "## Cafeberry`n`n### Whoever made this release forgot to put notes, sorry!"
if ($notesSource -match '^https?://') {
try {
$body = (Invoke-WebRequest -Uri $notesSource -UseBasicParsing).Content
if ([string]::IsNullOrWhiteSpace($body)) { $body = $fallback }
} catch {
$body = $fallback
}
}
"description<<EOF`n$body`nEOF" | Out-File -Append -Encoding utf8 -NoNewline:$false $env:GITHUB_OUTPUT
- name: Publish Release
uses: akkuman/gitea-release-action@v1
with:
name: ${{ inputs.version }}
server_url: ${{ gitea.server_url }}
repository: ${{ gitea.repository }}
token: ${{ gitea.token }}
tag_name: ${{ inputs.version }}
prerelease: false
verbose: true
files: downloaded/**/*
body: ${{ steps.notes.outputs.description }}
@@ -9,7 +9,9 @@ const wstring LeaderboardManager::filterNames[eNumFilterModes] =
L"Friends", L"MyScore", L"TopRank" L"Friends", L"MyScore", L"TopRank"
}; };
#if !defined(_DURANGO) && !defined(_WINDOWS64) && !defined(_XBOX) && !defined(__ORBIS__) // str1k3r - some platforms complain about this, also this wasnt in the leak?
LeaderboardManager *LeaderboardManager::m_instance = NULL; LeaderboardManager *LeaderboardManager::m_instance = NULL;
#endif
void LeaderboardManager::DeleteInstance() void LeaderboardManager::DeleteInstance()
{ {
@@ -24,7 +24,7 @@ $folderCopies = @(
@{ Source = "DurangoMedia"; Dest = "Windows64Media" }, @{ Source = "DurangoMedia"; Dest = "Windows64Media" },
@{ Source = "Windows64Media"; Dest = "Windows64Media" }, @{ Source = "Windows64Media"; Dest = "Windows64Media" },
@{ Source = "PSVita\Tutorial"; Dest = "Windows64Media\Tutorial" }, @{ Source = "PSVita\Tutorial"; Dest = "Windows64Media\Tutorial" },
@{ Source = "Windows64Media\music"; Dest = "Windows64Media\music" }, @{ Source = "music"; Dest = "Windows64Media\music" },
@{ Source = "Windows64Media\Sound"; Dest = "Windows64Media\Sound" }, @{ Source = "Windows64Media\Sound"; Dest = "Windows64Media\Sound" },
@{ Source = "Common\Postbuilds\Contents\Windows64\redist64"; Dest = "redist64" } @{ Source = "Common\Postbuilds\Contents\Windows64\redist64"; Dest = "redist64" }
) )
Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 27 KiB

+1 -1
View File
@@ -6,7 +6,7 @@
// 4J - added // 4J - added
void CreeperModel::_init(float g) void CreeperModel::_init(float g)
{ {
int yo = 4; int yo = 6;
head = new ModelPart(this, 0, 0); head = new ModelPart(this, 0, 0);
head->addBox(-4, - 8, -4, 8, 8, 8, g); // Head head->addBox(-4, - 8, -4, 8, 8, 8, g); // Head
+29 -3
View File
@@ -46,9 +46,35 @@ void HorseRenderer::renderModel(shared_ptr<LivingEntity> mob, float wp, float ws
} }
else else
{ {
EntityRenderer::bindTexture(mob); shared_ptr<EntityHorse> horse = dynamic_pointer_cast<EntityHorse>(mob);
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true); ResourceLocation *location = getTextureLocation(mob);
// Ensure that any extra layers of texturing are disabled after rendering this horse
// Pass 1: Bind only the coat texture (first valid layer) and render opaque
int coatTex = location->getTexture(0);
if( coatTex != -1 )
{
RenderManager.TextureBind(entityRenderDispatcher->textures->loadTexture(coatTex));
}
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
// Pass 2: If horse has armor, find the armor texture in the layers and render with blending
int armorType = horse->getArmorType();
if( armorType > 0 )
{
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
for( int i = 1; i < location->getTextureCount(); i++ )
{
int texId = location->getTexture(i);
if( texId != -1 )
{
RenderManager.TextureBind(entityRenderDispatcher->textures->loadTexture(texId));
model->render(mob, wp, ws, bob, headRotMinusBodyRot, headRotx, scale, true);
}
}
glDisable(GL_BLEND);
}
RenderManager.TextureBind(-1); RenderManager.TextureBind(-1);
} }
} }
+1 -1
View File
@@ -491,7 +491,7 @@ void LivingEntityRenderer::renderNameTag(shared_ptr<LivingEntity> mob, const wst
float s = 1 / 60.0f * size; float s = 1 / 60.0f * size;
glPushMatrix(); glPushMatrix();
glTranslatef((float) x, (float) y + 2.3f, (float) z); glTranslatef((float) x, (float) y + mob->bbHeight + 0.5f, (float) z);
glNormal3f(0, 1, 0); glNormal3f(0, 1, 0);
glRotatef(-this->entityRenderDispatcher->playerRotY, 0, 1, 0); glRotatef(-this->entityRenderDispatcher->playerRotY, 0, 1, 0);
+2 -42
View File
@@ -1435,7 +1435,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallAttributedProfiling>Disabled</CallAttributedProfiling> <CallAttributedProfiling>Disabled</CallAttributedProfiling>
<AdditionalIncludeDirectories>Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -1472,46 +1472,6 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata"</Command>
<Message>Run Windows64 postbuild script</Message> <Message>Run Windows64 postbuild script</Message>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<ExceptionHandling>Sync</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallAttributedProfiling>Disabled</CallAttributedProfiling>
<AdditionalIncludeDirectories>Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<ShowIncludes>false</ShowIncludes>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<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;wsock32.lib</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<SuppressStartupBanner>false</SuppressStartupBanner>
</Link>
<ImageXex>
<ConfigurationFile>$(ProjectDir)xbox\xex-dev.xml</ConfigurationFile>
</ImageXex>
<ImageXex>
<TitleID>1480659447</TitleID>
</ImageXex>
<ImageXex>
<AdditionalSections>584111F7=$(ProjectDir)xbox\GameConfig\Minecraft.spa,RO;media=$(ProjectDir)xbox\XZP\Minecraft.xzp,RO</AdditionalSections>
<Pal50Incompatible>true</Pal50Incompatible>
</ImageXex>
<Deploy>
<DeploymentType>CopyToHardDrive</DeploymentType>
<DeploymentFiles>$(RemoteRoot)=$(ImagePath);$(RemoteRoot)\res=Xbox\res;$(RemoteRoot)=Xbox\AvatarAwards;$(RemoteRoot)\Tutorial=Xbox\Tutorial\Tutorial;$(RemoteRoot)=Xbox\584111F70AAAAAAA;$(RemoteRoot)=Xbox\kinect\speech;$(RemoteRoot)=Xbox\XZP\TMSFiles.xzp</DeploymentFiles>
</Deploy>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@@ -34048,7 +34008,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU</Comman
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Win32'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseForArt|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Win32'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_NO_TU|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Win32'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ContentPackage_Vita|Win32'">false</ExcludedFromBuild>
+1 -1
View File
@@ -1858,7 +1858,7 @@ void Minecraft::run_middle()
achievementPopup->render(); achievementPopup->render();
PIXBeginNamedEvent(0,"Sleeping"); PIXBeginNamedEvent(0,"Sleeping");
Sleep(0); // 4J - was Thread.yield() //Sleep(0); // 4J - was Thread.yield()
PIXEndNamedEvent(); PIXEndNamedEvent();
// if (Keyboard::isKeyDown(Keyboard::KEY_F7)) Display.update(); // 4J - removed condition // if (Keyboard::isKeyDown(Keyboard::KEY_F7)) Display.update(); // 4J - removed condition
+5 -1
View File
@@ -116,7 +116,11 @@ void Options::init()
bobView = true; bobView = true;
anaglyph3d = false; anaglyph3d = false;
advancedOpengl = false; advancedOpengl = false;
framerateLimit = 2; #ifdef _WINDOWS64
framerateLimit = 0;
#else
framerateLimit = 2;
#endif
fancyGraphics = true; fancyGraphics = true;
ambientOcclusion = true; ambientOcclusion = true;
renderClouds = true; renderClouds = true;
File diff suppressed because it is too large Load Diff
@@ -1,109 +1,32 @@
#pragma once #pragma once
#include "Common\Leaderboards\SonyLeaderboardManager.h"
#include "Common\Leaderboards\LeaderboardManager.h" #include "Common\Leaderboards\LeaderboardManager.h"
class OrbisLeaderboardManager : public LeaderboardManager #include <np.h>
{
protected:
enum EStatsState
{
eStatsState_Idle,
eStatsState_Getting,
eStatsState_Failed,
eStatsState_Ready,
eStatsState_Canceled,
//eStatsState_Writing,
eStatsState_Max
};
class OrbisLeaderboardManager : public SonyLeaderboardManager
{
public: public:
OrbisLeaderboardManager(); OrbisLeaderboardManager();
virtual ~OrbisLeaderboardManager();
private: protected:
unsigned short m_openSessions;
C4JThread *m_threadScoreboard; virtual HRESULT initialiseScoreUtility();
bool m_running;
int m_titleContext; virtual bool scoreUtilityAlreadyInitialised(HRESULT hr);
int32_t m_requestId;
//SceNpId m_myNpId; virtual HRESULT createTitleContext(const SceNpId &npId);
static int scoreboardThreadEntry(LPVOID lpParam); virtual HRESULT destroyTitleContext(int titleContext);
void scoreboardThreadInternal();
bool getScoreByIds(); virtual HRESULT createTransactionContext(int titleContext);
bool getScoreByRange();
bool setScore(); virtual HRESULT abortTransactionContext(int transactionContext);
queue<RegisterScore> m_views;
CRITICAL_SECTION m_csViewsLock; virtual HRESULT destroyTransactionContext(int transactionContext);
EStatsState m_eStatsState; //State of the stats read virtual HRESULT getFriendsList(sce::Toolkit::NP::Utilities::Future<sce::Toolkit::NP::FriendsList> &friendsList);
// EFilterMode m_eFilterMode;
ReadScore *m_scores; virtual char * getComment(SceNpScoreComment *comment);
unsigned int m_maxRank;
//SceNpScoreRankData *m_stats;
public:
virtual void Tick();// {}
//Open a session
virtual bool OpenSession();// { return true; }
//Close a session
virtual void CloseSession();// {}
//Delete a session
virtual void DeleteSession();// {}
//Write the given stats
//This is called synchronously and will not free any memory allocated for views when it is done
virtual bool WriteStats(unsigned int viewCount, ViewIn views);// { return false; }
virtual bool ReadStats_Friends(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount);// { return false; }
virtual bool ReadStats_MyScore(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int readCount);// { return false; }
virtual bool ReadStats_TopRank(LeaderboardReadListener *callback, int difficulty, EStatsType type, unsigned int startIndex, unsigned int readCount);// { return false; }
//Perform a flush of the stats
virtual void FlushStats();// {}
//Cancel the current operation
virtual void CancelOperation();// {}
//Is the leaderboard manager idle.
virtual bool isIdle();// { return true; }
private:
int getBoardId(int difficulty, EStatsType);
//LeaderboardManager::ReadScore *filterJustScorers(unsigned int &num, LeaderboardManager::ReadScore *friendsData);
SceNpScorePlayerRankData *addPadding(unsigned int num, SceNpScoreRankData *rankData);
void convertToOutput(unsigned int &num, ReadScore *out, SceNpScorePlayerRankData *rankData, SceNpScoreComment *comm);
void toBinary(void *out, SceNpScoreComment *in);
void fromBinary(SceNpScoreComment **out, void *in);
void toBase32(SceNpScoreComment *out, void *in);
void fromBase32(void *out, SceNpScoreComment *in);
void toSymbols(char *);
void fromSymbols(char *);
bool test_string(string);
void initReadScoreStruct(ReadScore &out, SceNpScoreRankData &);
void fillReadScoreStruct(ReadScore &out, SceNpScoreComment &comment);
static bool SortByRank(const ReadScore &lhs, const ReadScore &rhs);
//void NotifyAsyncPlusFeature();
}; };
+1
View File
@@ -1,3 +1,4 @@
#include "stdafx.h"
#include "OldSdk.h" #include "OldSdk.h"
#ifdef __PSVITA__ #ifdef __PSVITA__
+1 -1
View File
@@ -832,7 +832,7 @@ void Tesselator::vertex(float x, float y, float z)
pShortData[5] = (((int)(v * 8192.0f))&0xffff); pShortData[5] = (((int)(v * 8192.0f))&0xffff);
int16_t u2 = ((int16_t*)&_tex2)[0]; int16_t u2 = ((int16_t*)&_tex2)[0];
int16_t v2 = ((int16_t*)&_tex2)[1]; int16_t v2 = ((int16_t*)&_tex2)[1];
#if defined _XBOX_ONE || defined __ORBIS__ || defined _WINDOWS64 #if defined _XBOX_ONE || defined __ORBIS__
// Optimisation - pack the second UVs into a single short (they could actually go in a byte), which frees up a short to store the x offset for this chunk in the vertex itself. // Optimisation - pack the second UVs into a single short (they could actually go in a byte), which frees up a short to store the x offset for this chunk in the vertex itself.
// This means that when rendering chunks, we don't need to update the vertex constants that specify the location for a chunk, when only the x offset has changed. // This means that when rendering chunks, we don't need to update the vertex constants that specify the location for a chunk, when only the x offset has changed.
pShortData[6] = ( u2 << 8 ) | v2; pShortData[6] = ( u2 << 8 ) | v2;
+5 -1
View File
@@ -434,7 +434,11 @@ void Textures::bindTextureLayers(ResourceLocation *resource)
for( int i = 0; i < layers; i++ ) for( int i = 0; i < layers; i++ )
{ {
RenderManager.TextureBind(loadTexture(resource->getTexture(i))); int texId = resource->getTexture(i);
if( texId != -1 )
{
RenderManager.TextureBind(loadTexture(texId));
}
} }
} }
Binary file not shown.
@@ -498,7 +498,7 @@ app.DebugPrintf("width: %d, height: %d\n", width, height);
DXGI_SWAP_CHAIN_DESC sd; DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory( &sd, sizeof( sd ) ); ZeroMemory( &sd, sizeof( sd ) );
sd.BufferCount = 1; sd.BufferCount = 2;
sd.BufferDesc.Width = width; sd.BufferDesc.Width = width;
sd.BufferDesc.Height = height; sd.BufferDesc.Height = height;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+18 -18
View File
@@ -1,19 +1,19 @@
#include "stdafx.h" #include "stdafx.h"
#include "AttackDamageMobEffect.h" #include "AttackDamageMobEffect.h"
AttackDamageMobEffect::AttackDamageMobEffect(int id, bool isHarmful, eMinecraftColour color) : MobEffect(id, isHarmful, color) AttackDamageMobEffect::AttackDamageMobEffect(int id, bool isHarmful, eMinecraftColour color) : MobEffect(id, isHarmful, color)
{ {
} }
double AttackDamageMobEffect::getAttributeModifierValue(int amplifier, AttributeModifier *original) double AttackDamageMobEffect::getAttributeModifierValue(int amplifier, AttributeModifier *original)
{ {
if (id == MobEffect::weakness->id) if (id == MobEffect::weakness->id)
{ {
return -0.5f * (amplifier + 1); return -0.5f * (amplifier + 1);
} }
else else
{ {
return 1.3 * (amplifier + 1); return 1.3 * (amplifier + 1);
} }
} }
+29
View File
@@ -48,6 +48,35 @@ bool Boat::makeStepSound()
return false; return false;
} }
void Boat::checkFallDamage(int result, int onGround, double ya)
{
if (fallDistance <= 3.0) return;
if ( !onGround )
{
int t = level->getTile(x, (floor(y) - 1.0), z);
if ((!t || Tile::tiles[t]->material != Material::water) && ya < 0.0 )
fallDistance -= ya;
return;
}
causeFallDamage(fallDistance);
if (!level->isClientSide && !removed)
{
remove();
for (int i = 0; i < 3; i++)
{
spawnAtLocation(Tile::wood_Id, 1, 0);
}
for (int i = 0; i < 2; i++)
{
spawnAtLocation(Item::stick->id, 1, 0);
}
}
fallDistance = 0.0;
}
void Boat::defineSynchedData() void Boat::defineSynchedData()
{ {
entityData->define(DATA_ID_HURT, 0); entityData->define(DATA_ID_HURT, 0);
+1
View File
@@ -36,6 +36,7 @@ public:
Boat(Level *level); Boat(Level *level);
protected: protected:
virtual void checkFallDamage(int result, int onGround, double ya);
virtual bool makeStepSound(); virtual bool makeStepSound();
virtual void defineSynchedData(); virtual void defineSynchedData();
+2 -2
View File
@@ -77,7 +77,7 @@ void MinecartTNT::destroy(DamageSource *source)
void MinecartTNT::explode(double speedSqr) void MinecartTNT::explode(double speedSqr)
{ {
if (!level->isClientSide) if (!level->isClientSide && app.GetGameHostOption(eGameHostOption_TNT))
{ {
double speed = sqrt(speedSqr); double speed = sqrt(speedSqr);
if (speed > 5) speed = 5; if (speed > 5) speed = 5;
@@ -121,7 +121,7 @@ void MinecartTNT::primeFuse()
{ {
fuse = 80; fuse = 80;
if (!level->isClientSide) if (!level->isClientSide && app.GetGameHostOption(eGameHostOption_TNT))
{ {
level->broadcastEntityEvent(shared_from_this(), EVENT_PRIME); level->broadcastEntityEvent(shared_from_this(), EVENT_PRIME);
level->playEntitySound(shared_from_this(), eSoundType_RANDOM_FUSE, 1, 1.0f); level->playEntitySound(shared_from_this(), eSoundType_RANDOM_FUSE, 1, 1.0f);
+1 -1
View File
@@ -1124,7 +1124,7 @@
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile> <PrecompiledHeaderOutputFile>$(OutDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallAttributedProfiling>Disabled</CallAttributedProfiling> <CallAttributedProfiling>Disabled</CallAttributedProfiling>
<RuntimeTypeInfo>true</RuntimeTypeInfo> <RuntimeTypeInfo>true</RuntimeTypeInfo>
+1 -1
View File
@@ -79,7 +79,7 @@ bool NoteBlockTile::triggerEvent(Level *level, int x, int y, int z, int i, int n
break; break;
} }
app.DebugPrintf("NoteBlockTile::triggerEvent - playSound - pitch = %f\n",pitch); app.DebugPrintf("NoteBlockTile::triggerEvent - playSound - pitch = %f\n",pitch);
level->playSound(x + 0.5, y + 0.5, z + 0.5, iSound, 3, pitch); level->playSound(x + 0.5, y + 0.5, z + 0.5, iSound, 3, pitch, 64.0);
level->addParticle(eParticleType_note, x + 0.5, y + 1.2, z + 0.5, note / 24.0, 0, 0); level->addParticle(eParticleType_note, x + 0.5, y + 1.2, z + 0.5, note / 24.0, 0, 0);
return true; return true;
+9
View File
@@ -218,10 +218,12 @@ bool PistonBaseTile::triggerEvent(Level *level, int x, int y, int z, int param1,
if (extend && param1 == TRIGGER_CONTRACT) if (extend && param1 == TRIGGER_CONTRACT)
{ {
level->setData(x, y, z, facing | EXTENDED_BIT, UPDATE_CLIENTS); level->setData(x, y, z, facing | EXTENDED_BIT, UPDATE_CLIENTS);
ignoreUpdate(false);
return false; return false;
} }
else if (!extend && param1 == TRIGGER_EXTEND) else if (!extend && param1 == TRIGGER_EXTEND)
{ {
ignoreUpdate(false);
return false; return false;
} }
} }
@@ -247,6 +249,7 @@ bool PistonBaseTile::triggerEvent(Level *level, int x, int y, int z, int param1,
} }
else else
{ {
ignoreUpdate(false);
return false; return false;
} }
PIXEndNamedEvent(); PIXEndNamedEvent();
@@ -340,6 +343,12 @@ bool PistonBaseTile::triggerEvent(Level *level, int x, int y, int z, int param1,
ignoreUpdate(false); ignoreUpdate(false);
level->updateNeighborsAt(x, y, z, id);
int stepX = x + Facing::STEP_X[facing];
int stepY = y + Facing::STEP_Y[facing];
int stepZ = z + Facing::STEP_Z[facing];
level->updateNeighborsAt(stepX, stepY, stepZ, id);
return true; return true;
} }
+4 -1
View File
@@ -189,7 +189,10 @@ void StemTile::spawnResources(Level *level, int x, int y, int z, int data, float
if (fruit == Tile::melon) seed = Item::seeds_melon; if (fruit == Tile::melon) seed = Item::seeds_melon;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
popResource(level, x, y, z, shared_ptr<ItemInstance>(new ItemInstance(seed))); if (level->random->nextInt(15) <= data)
{
popResource(level, x, y, z, shared_ptr<ItemInstance>(new ItemInstance(seed)));
}
} }
} }
+2
View File
@@ -147,6 +147,8 @@ void Zombie::aiStep()
} }
} }
Monster::aiStep(); Monster::aiStep();
if (isBaby())
setSize(0.3f, 0.9f);
} }
bool Zombie::hurt(DamageSource *source, float dmg) bool Zombie::hurt(DamageSource *source, float dmg)
+12 -12
View File
@@ -1,19 +1,19 @@
# Acacia Log # Project Cafeberry
This project is a modified version of the December 17th 2014 Codebase, aimed at backporting the newer title updates back to the codebase, with cross-play across all platfoms (including PC). Cafeberry is a project aiming to update the December 17th 2014 codebase (mostly) via decompilation, with a focus on consoles.
[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/aPAF5WFaW)
# Status # Status
| Platform | Development Status | Known Issues | | Platform | Development Status | Known Issues |
| :------- | :-------------------- | :------------------------------------------------------------------------ | | :------------- | :-------------------- | :------------------------------------------------------------------------ |
| PS3 | Active | All TU19 blocks display as stone blocks when placed (missing SPU code). | | PS3 | Active | SPU variants for TU19 blocks are missing, needs to be further optimized. |
| Xbox 360 | Likely cancelled | Missing XUI files for GUIs added in TU25+. See notes. | | Xbox 360 | On hold | Havent tested, should work? |
| PS4 | Active | Only Buildable on Windows 7 With 1.70 SDK. See Notes | | PS4 | Active | Only Buildable on Windows 7 With 1.70 SDK. See Notes |
| Xbox One | On hold | Needs to be re-coded to run on Developer Mode UWP instead. | | Xbox One | On hold | Needs to be re-coded to run on Developer Mode UWP instead. |
| PS Vita | On hold | Fails during compilation due to missing network library dependencies. | | PS Vita | On hold | Fails during compilation due to missing network library dependencies. |
| Wii U & Switch | Work in progress | UI System (ImXui) is still in progress, need to decompile the rest. |
**Notes:** **Notes:**
- **Xbox 360:** TU25 and newer TUs include new GUIs, but we lack the XUI files for them, solutions:
1. Recreate the GUIs from scratch using the XUI designer (insanely difficult to get accurate to actual LCE)
- **PS4:** Can't be built on Windows 10+ because the 1.70 SDK only supports Windows 7, solutions: - **PS4:** Can't be built on Windows 10+ because the 1.70 SDK only supports Windows 7, solutions:
1. Attempt to add support for 4.50 SDK (difficult or unlikely to work) 1. Attempt to add support for 4.50 SDK (difficult or unlikely to work)
2. Getting the 1.70 SDK on Windows 10+ (annoying to do) 2. Getting the 1.70 SDK on Windows 10+ (annoying to do)