56 Commits
Author SHA1 Message Date
str1k3r 8abedd5d3e fix: windows64 copy paths 2026-08-02 07:17:38 -04:00
str1k3r 68dcc22b80 chore: update sounds 2026-08-02 06:59:27 -04:00
str1k3r 74af9a9bfa chore: add keystone 2026-08-02 06:13:09 -04:00
str1k3r b5ad26ddba feat(Orbis): make fpkgs not real pkgs
https://github.com/CyB1K/PS4-Fake-PKG-Tools-3.87
2026-08-02 06:01:53 -04:00
str1k3r e053df94bd chore: delete old orbis GP4 2026-08-01 23:13:02 -04:00
str1k3r d13b84cada feat(Orbis): PKG Generation 2026-08-01 23:12:05 -04:00
str1k3r 04b2a090d0 chore: finish orbis dlcs & cleanup postbuilds 2026-08-01 21:33:01 -04:00
str1k3r 366f17669e feat(PSVita): fully working builds (#19)
Reviewed-on: pieeebot/cafeberry#19
2026-08-01 22:10:47 +00:00
str1k3r 8886bf3e29 chore: update .gitignore 2026-08-01 22:10:16 +00:00
552eden fe05ee3faf undo debug menu for release 2026-08-02 01:07:16 +03:00
552eden edf9a4f22b fix debug settings and re added ps3 leaderboard fix 2026-08-02 00:59:44 +03:00
552eden 5e21a0ab23 cleanup 2026-08-02 00:43:48 +03:00
552eden eb631f480c add vpk creation 2026-08-02 00:42:41 +03:00
552eden 49b89075a8 (vita) fix build script and update SCE_SYS 2026-08-02 00:24:57 +03:00
552eden a0643abf49 added correct param.sfo 2026-08-02 00:13:25 +03:00
552eden aafbd31b61 added DLC and temp vita build script 2026-08-02 00:13:24 +03:00
ubergamer-pie 3dc92504c4 merge upstream 2026-08-01 21:08:03 +00:00
str1k3r e04c06a523 delete old orbis sce_module 2026-08-01 11:50:15 -04:00
str1k3r 8b8ca695e0 use orbis sdk sce_module 2026-08-01 11:47:38 -04:00
str1k3r 07d9827865 feat(PSVita): Release builds 2026-08-01 09:48:03 -04:00
str1k3r 79fe155b8f Merge branch 'main' into ps4 2026-08-01 07:10:29 +00:00
str1k3r dbf80d9dd7 fix: sln & m_instance 2026-08-01 03:06:52 -04:00
str1k3r 702f2f8bbe Merge branch 'main' of https://gitea.str1k3r.xyz/pieeebot/cafeberry into ps4 2026-08-01 02:21:20 -04:00
ubergamer-pie 930e39b6d2 merge upstream 2026-07-28 19:07:32 +00:00
str1k3r fae9ab3ba4 revert vcxproj being pushed 2026-07-28 12:28:19 -04:00
str1k3r be434c42d3 fix(Orbis): crash and no sound 2026-07-28 12:25:49 -04:00
str1k3r 415bd9a1a0 fix(Orbis): sound 2026-07-28 10:59:47 -04:00
ubergamer-pieand552eden 353eeea217 fix(PS5): PS5 crashing on startup (#17)
Fixed PS5 crashing on startup by migrating to JP sce_sys with english assets. since its the only working nptitle.dat i could find.
Trophies are working as well

---------

Co-authored-by: 552eden <552eden@gmail.com>
Reviewed-on: pieeebot/cafeberry#17
Co-authored-by: ubergamer-pie <16+ubergamer-pie@noreply.localhost>
2026-07-26 23:46:04 +00:00
552eden 4cf5972ebb Fixed crashing on PS5 by migrating to JP CUSA 2026-07-25 23:34:51 +03:00
552eden 9a4ab9cc9d fix double declartion on Orbis 2026-07-25 23:03:52 +03:00
str1k3r 4099ed477d fix(Orbis): stop asserting when voicechat fails 2026-07-22 17:36:58 -04:00
str1k3r f992d40795 Merge branch 'main' into ps4 2026-07-21 21:07:42 +00:00
str1k3r 454fefaf20 Merge branch 'main' into ps4 2026-07-19 16:34:48 +01:00
str1k3r db803a04b5 feat(ps3): use new sonyleaderboardmanager
This also removes SPU objfiles
2026-07-19 10:59:57 -04:00
str1k3r a113e32cb0 feat: move windows64 to its own sentient folder & remove gamehdd saves 2026-07-19 08:03:30 -04:00
str1k3r f19c1b2a30 chore: remove ContentPackage_Vita
This also cleans up the vcxproj so x360 stuff isnt duplicated across platforms
2026-07-19 07:06:14 -04:00
str1k3r 1d9df53595 feat(durango): postbuild estimation 2026-07-19 06:09:34 -04:00
str1k3r 82ce6313c1 feat: ReleaseForArt almost building 2026-07-19 03:23:00 -04:00
str1k3r bb714b3706 feat: build actual final builds & contentpackage almost building
Previously Windows64 Release was just building debug with somethings disabled this builds 1:1 what 4J would of built for consoles using release

This also gets ContentPackage closer to building for Windows64
2026-07-19 00:42:36 -04:00
str1k3r 80f0e4845a fix(PSVita): postbuild copying sounds into wrong spot 2026-07-18 10:39:16 -04:00
str1k3r 5c9171ca3c chore: link postbuilds to all configurations
This also fully removes the Win32 build option
2026-07-18 09:02:39 -04:00
pieeebot 31214d179a chore: remove unnecessary note for PS Vita in README. 2026-07-18 13:29:05 +01:00
str1k3r 9a0c759b65 chore: add ReleaseForArt to .gitignore 2026-07-18 04:59:05 -04:00
str1k3r 8fd70b0fca chore: improve .gitignore 2026-07-18 04:50:21 -04:00
str1k3r 0d66c59e10 Fix(Orbis): build and update readme info for vita
Reviewed-on: https://git.neolegacy.dev/pieeebot/cafeberry/pulls/14
2026-07-18 09:33:17 +01:00
552eden 3092e99d0e fixed ps4 compile issue and updated readme 2026-07-18 11:27:23 +03:00
str1k3r 4c082384c4 refactor: cleaup 2026-07-18 03:27:30 -04:00
str1k3r a8069727c3 feat(psvita): psvita builds
Reviewed-on: https://git.neolegacy.dev/pieeebot/cafeberry/pulls/13
2026-07-18 08:23:10 +01:00
552eden 13b827d21f Merge branch 'ps4' of https://git.neolegacy.dev/pieeebot/cafeberry into ps4
# Conflicts:
#	Minecraft.Client/Common/Leaderboards/SonyLeaderboardManager.cpp
#	Minecraft.Client/Common/UI/IUIScene_PauseMenu.cpp
#	Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp
#	Minecraft.Client/OrbisMedia/strings.h
#	MinecraftConsoles.sln
2026-07-18 10:01:09 +03:00
552eden 9f181ba8c1 make vita content package target build 2026-07-18 09:45:14 +03:00
str1k3r 6ee614dfda fix(orbis): better fix for orbis voicechat crash
This most likely can be fixed a more proper way but this is what works and is better then the previous method
2026-07-18 01:19:10 -04:00
str1k3r 388626dbba fix(orbis): strings
Both IDS_CORRUPT_OPTIONS_DELETE & IDS_CORRUPT_OPTIONS_RETRY are placeholders as of now
2026-07-18 00:36:37 -04:00
str1k3r 0a38bb51bc fix(orbis): voicechat crash 2026-07-17 13:45:53 -04:00
str1k3r 9171922767 refactor: cleanup 2026-07-17 13:45:22 -04:00
ubergamer-pieand552eden e70ef09900 first buildable orbis version. a bit ugly. (#9)
this is the first buildable ps4 orbis version

---------

Co-authored-by: 552eden <552eden@gmail.com>
Reviewed-on: https://git.neolegacy.dev/pieeebot/cafeberry/pulls/9
Co-authored-by: ubergamer-pie <81+ubergamer-pie@noreply.neolegacy.dev>
Co-committed-by: ubergamer-pie <81+ubergamer-pie@noreply.neolegacy.dev>
2026-07-17 17:55:42 +01:00
552eden 1bd4a3455c first buildable orbis version. a bit ugly. 2026-07-17 19:24:48 +03:00
1761 changed files with 270409 additions and 300561 deletions
+9 -22
View File
@@ -7,50 +7,37 @@ on:
description: 'Configuration for the build (e.g. Debug, Release).' description: 'Configuration for the build (e.g. Debug, Release).'
required: true required: true
default: 'Release' default: 'Release'
type: choice
options:
- Debug
- Release
- ContentPackage
- ReleaseForArt
jobs: jobs:
build: build:
runs-on: sdk-orbis runs-on: windows-2022
strategy: strategy:
matrix: matrix:
platform: [Orbis] platform: [ORBIS]
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
$platform = if ("${{ matrix.platform }}" -eq "Orbis") { "ORBIS" }
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln ` & "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
/p:Configuration=${{ inputs.configuration }} ` /p:Configuration=${{ inputs.configuration }} `
"/p:Platform=$platform" ` /p:Platform=${{ matrix.platform }} `
/m /m
- name: Zip Build - name: Zip Build (Consoles)
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/PS4_GAME/* "-x!*.ipdb" "-x!*.iobj" if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts - name: Stage artifacts
run: | run: |
New-Item -ItemType Directory -Force -Path staging New-Item -ItemType Directory -Force -Path staging
Copy-Item LCE${{ matrix.platform }}.zip staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
Copy-Item "./ORBIS_${{ inputs.configuration }}/Minecraft.Client.pkg" staging/LCEOrbis.pkg
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
+6 -16
View File
@@ -7,16 +7,10 @@ on:
description: 'Configuration for the build (e.g. Debug, Release).' description: 'Configuration for the build (e.g. Debug, Release).'
required: true required: true
default: 'Release' default: 'Release'
type: choice
options:
- Debug
- Release
- ContentPackage
- ReleaseForArt
jobs: jobs:
build: build:
runs-on: sdk-ps3 runs-on: windows-2022
strategy: strategy:
matrix: matrix:
@@ -25,10 +19,6 @@ jobs:
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
@@ -37,8 +27,9 @@ jobs:
/p:Platform=${{ matrix.platform }} ` /p:Platform=${{ matrix.platform }} `
/m /m
- name: Zip Build - name: Zip Build (Consoles)
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.a" "-x!*.pch" "-x!*.elf" "-x!*.self" "-x!*.map" if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts - name: Stage artifacts
run: | run: |
@@ -46,8 +37,7 @@ jobs:
Copy-Item LCE${{ matrix.platform }}.zip staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
+7 -18
View File
@@ -7,16 +7,10 @@ on:
description: 'Configuration for the build (e.g. Debug, Release).' description: 'Configuration for the build (e.g. Debug, Release).'
required: true required: true
default: 'Release' default: 'Release'
type: choice
options:
- Debug
- Release
- ContentPackage
- ReleaseForArt
jobs: jobs:
build: build:
runs-on: sdk-psvita runs-on: windows-2022
strategy: strategy:
matrix: matrix:
@@ -25,10 +19,6 @@ jobs:
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
@@ -37,18 +27,17 @@ jobs:
/p:Platform=${{ matrix.platform }} ` /p:Platform=${{ matrix.platform }} `
/m /m
- name: Zip Build - name: Zip Build (Consoles)
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/PSVITA_GAME/* if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts - name: Stage artifacts
run: | run: |
New-Item -ItemType Directory -Force -Path staging New-Item -ItemType Directory -Force -Path staging
Copy-Item LCE${{ matrix.platform }}.zip staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
Copy-Item "./PSVita_${{ inputs.configuration }}/Minecraft.Client.vpk" staging/LCEPSVita.vpk
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
-114
View File
@@ -1,114 +0,0 @@
name: Build & Release Windows64
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:
needs: validate
strategy:
matrix:
configuration: [ContentPackage]
platform: [Windows64]
include:
- platform: Windows64
sdk_label: windows-2022 # str1k3r - can run on any runner
runs-on: [windows-2022, "${{ matrix.sdk_label }}"]
steps:
- name: Checkout Repository
uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
submodules: true
- 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
run: |
7z a -r "LCEWindows64.zip" "./x64/${{ matrix.configuration }}/*" "-x!*.pdb" "-x!*.pch" "-x!*.ilk" "-x!*.lib" "-x!*.exp"
- name: Stage artifacts
run: |
New-Item -ItemType Directory -Force -Path staging
Copy-Item "LCE${{ matrix.platform }}.zip" staging/
Copy-Item "./x64/${{ matrix.configuration }}/Minecraft.Client.exe" staging/
- name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4
with:
name: build-${{ matrix.platform }}
path: staging/*
compression-level: 0
release:
needs: build
runs-on: windows-2022
steps:
- name: Download all build artifacts
uses: https://github.com/christopherHX/gitea-download-artifact@v4
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
}
} else {
$body = $fallback
}
$delimiter = "EOF_$([System.Guid]::NewGuid().ToString('N'))"
$content = "description<<$delimiter`n$body`n$delimiter`n"
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::AppendAllText($env:GITHUB_OUTPUT, $content, $utf8NoBom)
- 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 }}
+20 -57
View File
@@ -24,85 +24,54 @@ jobs:
} }
build: build:
needs: validate runs-on: windows-2022
strategy: strategy:
matrix: matrix:
configuration: [Release] configuration: [Release]
platform: [Windows64, Xbox360, Orbis, PSVita, PS3] platform: [PS3, Windows64] #[PS3, PSVita, Xbox 360, ORBIS, Windows64]
include:
- platform: Windows64
sdk_label: windows-2022 # str1k3r - can run on any runner
- platform: Xbox360
sdk_label: sdk-xbox360
- platform: Orbis
sdk_label: sdk-orbis
- platform: PSVita
sdk_label: sdk-psvita
- platform: PS3
sdk_label: sdk-ps3
runs-on: [windows-2022, "${{ matrix.sdk_label }}"]
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v6 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
submodules: recursive
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
$platform = if ("${{ matrix.platform }}" -eq "Xbox360") { "Xbox 360" } elseif ("${{ matrix.platform }}" -eq "Orbis") { "ORBIS" } else { "${{ matrix.platform }}" }
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln ` & "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
/p:Configuration=${{ matrix.configuration }} ` /p:Configuration=${{ matrix.configuration }} `
"/p:Platform=$platform" ` /p:Platform=${{ matrix.platform }} `
/m /m
- name: Zip Build - name: Zip Build (Consoles)
run: | if: matrix.platform != 'Windows64'
if ("${{ matrix.platform }}" -eq "Windows64") { run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
7z a -r "LCEWindows64.zip" "./x64/${{ matrix.configuration }}/*" "-x!*.pdb" "-x!*.pch" "-x!*.ilk"
} elseif ("${{ matrix.platform }}" -eq "Orbis") { - name: Zip Build (Windows64)
7z a -r "LCEOrbis.zip" "./ORBIS_${{ matrix.configuration }}/PS4_GAME/*" if: matrix.platform == 'Windows64'
} elseif ("${{ matrix.platform }}" -eq "PSVita") { run: 7z a -r LCE${{ matrix.platform }}.zip ./x64/${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
7z a -r "LCEPSVita.zip" "./PSVita_${{ matrix.configuration }}/PSVITA_GAME/*"
} elseif ("${{ matrix.platform }}" -eq "PS3") {
7z a -r "LCEPS3.zip" "./PS3_${{ matrix.configuration }}/*" "-x!*.a" "-x!*.pch" "-x!*.elf" "-x!*.self" "-x!*.map"
} elseif ("${{ matrix.platform }}" -eq "Xbox360") {
7z a -r "LCEXbox360.zip" "./X360_${{ matrix.configuration }}/*" "-x!*.pdb" "-x!*.pch" "-x!*.xdb"
} else {
7z a -r "LCE${{ matrix.platform }}.zip" "./${{ matrix.platform }}/${{ matrix.configuration }}/*" "-x!*.ipdb" "-x!*.iobj" "-x!*.pdb" "-x!*.pch" "-x!*.ilk"
}
- name: Stage artifacts - name: Stage artifacts
run: | run: |
New-Item -ItemType Directory -Force -Path staging New-Item -ItemType Directory -Force -Path staging
Copy-Item "LCE${{ matrix.platform }}.zip" staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
if ("${{ matrix.platform }}" -eq "Windows64") { - name: Stage exe
Copy-Item "./x64/${{ matrix.configuration }}/Minecraft.Client.exe" staging/ if: matrix.platform == 'Windows64'
} elseif ("${{ matrix.platform }}" -eq "PSVita") { run: |
Copy-Item "./PSVita_${{ matrix.configuration }}/Minecraft.Client.vpk" staging/LCEPSVita.vpk Copy-Item ./x64/${{ matrix.configuration }}/Minecraft.Client.exe staging/
} elseif ("${{ matrix.platform }}" -eq "Orbis") {
Copy-Item "./ORBIS_${{ matrix.configuration }}/Minecraft.Client.pkg" staging/LCEOrbis.pkg
}
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
release: release:
needs: build needs: build
runs-on: windows-2022 runs-on: windows-2022
steps: steps:
- name: Download all build artifacts - name: Download all build artifacts
uses: https://github.com/christopherHX/gitea-download-artifact@v4 uses: https://github.com/actions/download-artifact@v3
with: with:
path: downloaded path: downloaded
@@ -119,15 +88,9 @@ jobs:
} catch { } catch {
$body = $fallback $body = $fallback
} }
} else {
$body = $fallback
} }
$delimiter = "EOF_$([System.Guid]::NewGuid().ToString('N'))" "description<<EOF`n$body`nEOF" | Out-File -Append -Encoding utf8 -NoNewline:$false $env:GITHUB_OUTPUT
$content = "description<<$delimiter`n$body`n$delimiter`n"
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::AppendAllText($env:GITHUB_OUTPUT, $content, $utf8NoBom)
- name: Publish Release - name: Publish Release
uses: akkuman/gitea-release-action@v1 uses: akkuman/gitea-release-action@v1
+3 -14
View File
@@ -7,12 +7,6 @@ on:
description: 'Configuration for the build (e.g. Debug, Release).' description: 'Configuration for the build (e.g. Debug, Release).'
required: true required: true
default: 'Release' default: 'Release'
type: choice
options:
- Debug
- Release
- ContentPackage
- ReleaseForArt
jobs: jobs:
build: build:
@@ -25,10 +19,6 @@ jobs:
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
@@ -39,7 +29,7 @@ jobs:
- name: Zip Build (Consoles) - name: Zip Build (Consoles)
if: matrix.platform != 'Windows64' if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.pdb" "-x!*.pch" "-x!*.ilk" run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts - name: Stage artifacts
run: | run: |
@@ -47,8 +37,7 @@ jobs:
Copy-Item LCE${{ matrix.platform }}.zip staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
+8 -21
View File
@@ -7,41 +7,29 @@ on:
description: 'Configuration for the build (e.g. Debug, Release).' description: 'Configuration for the build (e.g. Debug, Release).'
required: true required: true
default: 'Release' default: 'Release'
type: choice
options:
- Debug
- Release
- ContentPackage
- ReleaseForArt
jobs: jobs:
build: build:
runs-on: sdk-xbox360 runs-on: windows-2022
strategy: strategy:
matrix: matrix:
platform: [Xbox360] platform: [Xbox 360]
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: https://github.com/actions/checkout@v4 uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 1
clean: false
lfs: false
- name: Build Cafeberry - name: Build Cafeberry
run: | run: |
$platform = if ("${{ matrix.platform }}" -eq "Xbox360") { "Xbox 360" }
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln ` & "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
/p:Configuration=${{ inputs.configuration }} ` /p:Configuration=${{ inputs.configuration }} `
"/p:Platform=$platform" ` /p:Platform=${{ matrix.platform }} `
/m /m
- name: Zip Build (Consoles)
- name: Zip Build if: matrix.platform != 'Windows64'
run: 7z a -r LCE${{ matrix.platform }}.zip ./X360_${{ inputs.configuration }}/* "-x!*.pdb" "-x!*.pch" "-x!*.xdb" run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ inputs.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
- name: Stage artifacts - name: Stage artifacts
run: | run: |
@@ -49,8 +37,7 @@ jobs:
Copy-Item LCE${{ matrix.platform }}.zip staging/ Copy-Item LCE${{ matrix.platform }}.zip staging/
- name: Upload artifacts - name: Upload artifacts
uses: https://github.com/christopherHX/gitea-upload-artifact@v4 uses: https://github.com/actions/upload-artifact@v3
with: with:
name: build-${{ matrix.platform }} name: build-${{ matrix.platform }}
path: staging/* path: staging/*
compression-level: 0
+29 -35
View File
@@ -1,48 +1,44 @@
.vs /*Debug
/*Release
/*ContentPackage
/*ContentPackage_NO_TU
/*ContentPackage_SYMBOLS
/*ReleaseForArt
/x64 /x64
/ipch /ipch
.vscode .vs/
/*Debug
/*Release*
/*ContentPackage*
# Minecraft.Server
/Minecraft.Server/x64
/Minecraft.Server/x64_*
/Minecraft.Server/*Debug
/Minecraft.Server/*Release*
/Minecraft.Server/*Server*
/Minecraft.Server/*ContentPackage*
# Minecraft.Client # Minecraft.Client
/Minecraft.Client/x64 /Minecraft.Client/x64/
/Minecraft.Client/x64_* /Minecraft.Client/x64_*
/Minecraft.Client/*Debug /Minecraft.Client/*Debug
/Minecraft.Client/*Release* /Minecraft.Client/*Release
/Minecraft.Client/*Server* /Minecraft.Client/*ContentPackage
/Minecraft.Client/*ContentPackage* /Minecraft.Client/*ContentPackage_NO_TU
/Minecraft.Client/*ContentPackage_SYMBOLS
/Minecraft.Client/*ReleaseForArt
/Minecraft.Client/Windows64/GameHDD /Minecraft.Client/Windows64/GameHDD
# Minecraft.World # Minecraft.world
/Minecraft.World/x64 /Minecraft.World/x64/
/Minecraft.World/x64_* /Minecraft.World/x64_*
/Minecraft.World/*Debug /Minecraft.World/*Debug
/Minecraft.World/*Release* /Minecraft.World/*Release
/Minecraft.World/*ContentPackage* /Minecraft.World/*ContentPackage
/Minecraft.World/*ContentPackage_NO_TU
/Minecraft.World/*ContentPackage_SYMBOLS
/Minecraft.World/*ReleaseForArt
# PS3 SPU Tasks # PS3 SPU
/Minecraft.Client/PS3/SPU_Tasks/objFiles /Minecraft.Client/PS3/SPU_Tasks/objFiles/
/Minecraft.Client/PS3/SPU_Tasks/*/PS3* /Minecraft.Client/PS3/SPU_Tasks/Texture_blit/PS3*
/Minecraft.Client/PS3/SPU_Tasks/*/Debug /Minecraft.Client/PS3/SPU_Tasks/LevelRenderer_FindNearestChunk/PS3*
/Minecraft.Client/PS3/SPU_Tasks/*/Release /Minecraft.Client/PS3/SPU_Tasks/LevelRenderer_cull/PS3*
/Minecraft.Client/PS3/SPU_Tasks/*/ContentPackage /Minecraft.Client/PS3/SPU_Tasks/CompressedTileStorage_compress/PS3*
/Minecraft.Client/PS3/SPU_Tasks/CompressedTile/PS3*
# Xbox 360 XZP & XURs /Minecraft.Client/PS3/SPU_Tasks/ChunkUpdate/PS3*
Minecraft.Client/XboxMedia/XZP
Minecraft.Client/Common/Media/XURs
# Misc # Misc
*.ppu.o
*.pkg *.pkg
/*.gp4p /*.gp4p
/*.vpk /*.vpk
@@ -50,6 +46,4 @@ Minecraft.Client/Common/Media/XURs
*-app *-app
*.sdf *.sdf
*.opensdf *.opensdf
*.v11.suo *.v11.suo
*.vcxproj.user
*.aps
-5
View File
@@ -1,5 +0,0 @@
[submodule "Minecraft.Client/Windows64/4JLibs"]
path = Minecraft.Client/Windows64/4JLibs
url = https://gitea.str1k3r.xyz/cafeberry/4JLibs.git
ignore = untracked
branch = main
+1 -1
View File
@@ -248,7 +248,7 @@ void AbstractTexturePack::loadDefaultUI()
//CXuiSceneBase::GetInstance()->SetVisualPrefix(L"TexturePack"); //CXuiSceneBase::GetInstance()->SetVisualPrefix(L"TexturePack");
CXuiSceneBase::GetInstance()->SkinChanged(CXuiSceneBase::GetInstance()->m_hObj); CXuiSceneBase::GetInstance()->SkinChanged(CXuiSceneBase::GetInstance()->m_hObj);
#else #else
ui.ReloadSkins(); ui.ReloadSkin();
#endif #endif
} }
+2 -4
View File
@@ -402,7 +402,6 @@ void Chunk::rebuild()
} }
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
if (currentLayer == 0 && tile->isEntityTile()) if (currentLayer == 0 && tile->isEntityTile())
{ {
shared_ptr<TileEntity> et = region->getTileEntity(x, y, z); shared_ptr<TileEntity> et = region->getTileEntity(x, y, z);
@@ -740,9 +739,9 @@ void Chunk::rebuild_SPU()
{ {
// 4J - get tile from those copied into our local array in earlier optimisation // 4J - get tile from those copied into our local array in earlier optimisation
unsigned char tileId = pOutData->getTile(x,y,z); unsigned char tileId = pOutData->getTile(x,y,z);
if (tileId > 0 && tileId != 0xff) if (tileId > 0)
{ {
if (currentLayer == 0 && Tile::tiles[tileId] && Tile::tiles[tileId]->isEntityTile()) if (currentLayer == 0 && Tile::tiles[tileId]->isEntityTile())
{ {
shared_ptr<TileEntity> et = region.getTileEntity(x, y, z); shared_ptr<TileEntity> et = region.getTileEntity(x, y, z);
if (TileEntityRenderDispatcher::instance->hasRenderer(et)) if (TileEntityRenderDispatcher::instance->hasRenderer(et))
@@ -755,7 +754,6 @@ void Chunk::rebuild_SPU()
{ {
Tile *tile = Tile::tiles[tileId]; Tile *tile = Tile::tiles[tileId];
if (!tile) continue;
int renderLayer = tile->getRenderLayer(); int renderLayer = tile->getRenderLayer();
if (renderLayer != currentLayer) if (renderLayer != currentLayer)
+5 -64
View File
@@ -50,16 +50,11 @@
#else #else
#include "Common\UI\UI.h" #include "Common\UI\UI.h"
#endif #endif
#if defined __PS3__ && !defined DISABLE_PSN #ifdef __PS3__
#include "PS3/Network/SonyVoiceChat.h" #include "PS3/Network/SonyVoiceChat.h"
#endif #endif
#include "DLCTexturePack.h" #include "DLCTexturePack.h"
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
#include "Xbox\Network\NetworkPlayerXbox.h"
#include "Common\Network\PlatformNetworkManager.h"
#endif
#ifdef _DURANGO #ifdef _DURANGO
#include "..\Minecraft.World\DurangoStats.h" #include "..\Minecraft.World\DurangoStats.h"
#include "..\Minecraft.World\GenericStats.h" #include "..\Minecraft.World\GenericStats.h"
@@ -303,10 +298,6 @@ void ClientConnection::handleLogin(shared_ptr<LoginPacket> packet)
level->isClientSide = true; level->isClientSide = true;
minecraft->setLevel(level); minecraft->setLevel(level);
} }
else
{
level = (MultiPlayerLevel *)dimensionLevel;
}
minecraft->player->setPlayerIndex( packet->m_playerIndex ); minecraft->player->setPlayerIndex( packet->m_playerIndex );
minecraft->player->setCustomSkin( app.GetPlayerSkinId(m_userIndex) ); minecraft->player->setCustomSkin( app.GetPlayerSkinId(m_userIndex) );
@@ -780,7 +771,6 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
player->yRotp = packet->yRot; player->yRotp = packet->yRot;
player->yHeadRot = packet->yHeadRot * 360 / 256.0f; player->yHeadRot = packet->yHeadRot * 360 / 256.0f;
player->setXuid(packet->xuid); player->setXuid(packet->xuid);
player->setOnlineXuid(packet->OnlineXuid);
#ifdef _DURANGO #ifdef _DURANGO
// On Durango request player display name from network manager // On Durango request player display name from network manager
@@ -791,32 +781,6 @@ void ClientConnection::handleAddPlayer(shared_ptr<AddPlayerPacket> packet)
player->m_displayName = player->name; player->m_displayName = player->name;
#endif #endif
#if defined _WINDOWS64 || defined DISABLE_PSN || defined _DISABLE_XBLIVE
{
PlayerUID netXuid = packet->OnlineXuid;
const PlayerUID WIN64_XUID_BASE = (PlayerUID)0xe000d45248242f2e;
if (netXuid >= WIN64_XUID_BASE && netXuid < WIN64_XUID_BASE + MINECRAFT_NET_MAX_PLAYERS)
{
BYTE smallId = (BYTE)(netXuid - WIN64_XUID_BASE);
INetworkPlayer *np = g_NetworkManager.GetPlayerBySmallId(smallId);
if (np != NULL)
{
NetworkPlayerXbox *npx = (NetworkPlayerXbox *)np;
IQNetPlayer *qp = npx->GetQNetPlayer();
if (qp != NULL)
{
wcsncpy(qp->m_gamertag, packet->name.c_str(), 31);
qp->m_gamertag[31] = L'\0';
if (g_NetworkManager.IsHost())
{
g_NetworkManager.UpdateAndSetGameSessionData();
}
}
}
}
}
#endif
// printf("\t\t\t\t%d: Add player\n",packet->id,packet->yRot); // printf("\t\t\t\t%d: Add player\n",packet->id,packet->yRot);
int item = packet->carriedItem; int item = packet->carriedItem;
@@ -1040,7 +1004,6 @@ void ClientConnection::handleChunkVisibility(shared_ptr<ChunkVisibilityPacket> p
void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet) void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1110,7 +1073,6 @@ void ClientConnection::handleChunkTilesUpdate(shared_ptr<ChunkTilesUpdatePacket>
void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet) void ClientConnection::handleBlockRegionUpdate(shared_ptr<BlockRegionUpdatePacket> packet)
{ {
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1168,8 +1130,6 @@ void ClientConnection::handleTileUpdate(shared_ptr<TileUpdatePacket> packet)
destroyTilePacket = true; destroyTilePacket = true;
} }
// 4J - changed to encode level in packet // 4J - changed to encode level in packet
if (packet->levelIdx >= minecraft->levels.length) return;
MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx]; MultiPlayerLevel *dimensionLevel = (MultiPlayerLevel *)minecraft->levels[packet->levelIdx];
if( dimensionLevel ) if( dimensionLevel )
{ {
@@ -1809,7 +1769,6 @@ void ClientConnection::handleEntityActionAtPosition(shared_ptr<EntityActionAtPos
void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet) void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
{ {
app.DebugPrintf("ClientConnection::handlePreLogin ENTER (user %d)\n", m_userIndex);
// printf("Client: handlePreLogin\n"); // printf("Client: handlePreLogin\n");
#if 1 #if 1
// 4J - Check that we can play with all the players already in the game who have Friends-Only UGC set // 4J - Check that we can play with all the players already in the game who have Friends-Only UGC set
@@ -1825,17 +1784,13 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
app.SetGameHostOption(eGameHostOption_All,packet->m_serverSettings); app.SetGameHostOption(eGameHostOption_All,packet->m_serverSettings);
// 4J-PB - if we go straight in from the menus via an invite, we won't have the DLC info // 4J-PB - if we go straight in from the menus via an invite, we won't have the DLC info
//str1k3r - TMS only exists on Xbox 360 therefore, we only need this on Xbox 360.
#ifdef _XBOX
if(app.GetTMSGlobalFileListRead()==false) if(app.GetTMSGlobalFileListRead()==false)
{ {
app.SetTMSAction(ProfileManager.GetPrimaryPad(),eTMSAction_TMSPP_RetrieveFiles_RunPlayGame); app.SetTMSAction(ProfileManager.GetPrimaryPad(),eTMSAction_TMSPP_RetrieveFiles_RunPlayGame);
} }
#endif
} }
#ifdef _XBOX #ifdef _XBOX
#if !defined(_DISABLE_XBLIVE)
if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends)) if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends))
{ {
if(m_userIndex == ProfileManager.GetPrimaryPad() ) if(m_userIndex == ProfileManager.GetPrimaryPad() )
@@ -1979,16 +1934,6 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
} }
} }
#else
// Offline/system-link games have no Xbox Live friend list, so grant all
// pre-login permissions (the Xbox Live-only checks above would otherwise
// fail and reject the client's own pre-login before Login is ever sent).
canPlay = TRUE;
canPlayLocal = TRUE;
isAtLeastOneFriend = TRUE;
isFriendsWithHost = TRUE;
cantPlayContentRestricted = FALSE;
#endif // _DISABLE_XBLIVE
#else #else
// TODO - handle this kind of things for non-360 platforms // TODO - handle this kind of things for non-360 platforms
canPlay = TRUE; canPlay = TRUE;
@@ -1996,7 +1941,7 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
isAtLeastOneFriend = TRUE; isAtLeastOneFriend = TRUE;
cantPlayContentRestricted= FALSE; cantPlayContentRestricted= FALSE;
#if !defined DISABLE_PSN && ( defined __PS3__ || defined __ORBIS__ || defined __PSVITA__) #if ( defined __PS3__ || defined __ORBIS__ || defined __PSVITA__)
if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends)) if(!g_NetworkManager.IsHost() && !app.GetGameHostOption(eGameHostOption_FriendsOfFriends))
{ {
@@ -2278,8 +2223,7 @@ void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
} }
BOOL allAllowed, friendsAllowed; BOOL allAllowed, friendsAllowed;
ProfileManager.AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed); ProfileManager.AllowedPlayerCreatedContent(m_userIndex,true,&allAllowed,&friendsAllowed);
app.DebugPrintf("ClientConnection::handlePreLogin SENDING LoginPacket (user %d)\n", m_userIndex); send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE),
send( shared_ptr<LoginPacket>( new LoginPacket(minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION, offlineXUID, onlineXUID, (allAllowed!=TRUE && friendsAllowed==TRUE),
packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex )))); packet->m_ugcPlayersVersion, app.GetPlayerSkinId(m_userIndex), app.GetPlayerCapeId(m_userIndex), ProfileManager.IsGuest( m_userIndex ))));
if(!g_NetworkManager.IsHost() ) if(!g_NetworkManager.IsHost() )
@@ -2329,7 +2273,6 @@ void ClientConnection::handleAddMob(shared_ptr<AddMobPacket> packet)
float xRot = packet->xRot * 360 / 256.0f; float xRot = packet->xRot * 360 / 256.0f;
shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level)); shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(EntityIO::newById(packet->type, level));
if (mob == NULL) return;
mob->xp = packet->x; mob->xp = packet->x;
mob->yp = packet->y; mob->yp = packet->y;
mob->zp = packet->z; mob->zp = packet->z;
@@ -3573,12 +3516,10 @@ void ClientConnection::handleCustomPayload(shared_ptr<CustomPayloadPacket> custo
} }
#else #else
UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene); UIScene *scene = ui.GetTopScene(m_userIndex, eUILayer_Scene);
UIScene_TradingMenu *screen = dynamic_cast<UIScene_TradingMenu *>(scene); UIScene_TradingMenu *screen = (UIScene_TradingMenu *)scene;
if (screen != NULL) trader = screen->getMerchant();
trader = screen->getMerchant();
#endif #endif
if (trader == NULL) return;
MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input); MerchantRecipeList *recipeList = MerchantRecipeList::createFromStream(&input);
trader->overrideOffers(recipeList); trader->overrideOffers(recipeList);
} }
+1 -2
View File
@@ -875,8 +875,7 @@ enum EControllerActions
MINECRAFT_ACTION_SPAWN_CREEPER, MINECRAFT_ACTION_SPAWN_CREEPER,
MINECRAFT_ACTION_CHANGE_SKIN, MINECRAFT_ACTION_CHANGE_SKIN,
MINECRAFT_ACTION_FLY_TOGGLE, MINECRAFT_ACTION_FLY_TOGGLE,
MINECRAFT_ACTION_RENDER_DEBUG, MINECRAFT_ACTION_RENDER_DEBUG
MINECRAFT_ACTION_RENDER_DEBUG_SCREEN
}; };
enum eMCLang enum eMCLang
+1 -1
View File
@@ -162,7 +162,7 @@ MOJANG_DATA;
typedef struct typedef struct
{ {
eDLCContentType eDLCType; eDLCContentType eDLCType;
#if !defined(DISABLE_PSN) && (defined( __PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #if defined( __PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
char chImageURL[256];//SCE_NP_COMMERCE2_URL_LEN char chImageURL[256];//SCE_NP_COMMERCE2_URL_LEN
#else #else
+53 -22
View File
@@ -22,13 +22,44 @@
#ifdef __ORBIS__ #ifdef __ORBIS__
#include <audioout.h> #include <audioout.h>
//#define __DISABLE_MILES__ // MGH disabled for now as it crashes if we call sceNpMatching2Initialize //#define __DISABLE_MILES__ // MGH disabled for now as it crashes if we call sceNpMatching2Initialize
#endif #endif
// take out Orbis until they are done
#if defined _XBOX
SoundEngine::SoundEngine() {}
void SoundEngine::init(Options *pOptions)
{
}
void SoundEngine::tick(shared_ptr<Mob> *players, float a)
{
}
void SoundEngine::destroy() {}
void SoundEngine::play(int iSound, float x, float y, float z, float volume, float pitch)
{
app.DebugPrintf("PlaySound - %d\n",iSound);
}
void SoundEngine::playStreaming(const wstring& name, float x, float y , float z, float volume, float pitch, bool bMusicDelay) {}
void SoundEngine::playUI(int iSound, float volume, float pitch) {}
void SoundEngine::updateMusicVolume(float fVal) {}
void SoundEngine::updateSoundEffectVolume(float fVal) {}
void SoundEngine::add(const wstring& name, File *file) {}
void SoundEngine::addMusic(const wstring& name, File *file) {}
void SoundEngine::addStreaming(const wstring& name, File *file) {}
char *SoundEngine::ConvertSoundPathToName(const wstring& name, bool bConvertSpaces) { return NULL; }
bool SoundEngine::isStreamingWavebankReady() { return true; }
void SoundEngine::playMusicTick() {};
#else
// str1k3r: previously ps4 needed the durango folder to load sound and so did windows this fixes that and makes them use there own folders. // str1k3r: previously ps4 needed the durango folder to load sound and so did windows this fixes that and makes them use there own folders.
#ifdef _WINDOWS64 #ifdef _WINDOWS64
char SoundEngine::m_szSoundPath[]={"Windows64Media\\Sound\\"}; char SoundEngine::m_szSoundPath[]={"Windows64Media\\Sound\\"};
char SoundEngine::m_szMusicPath[]={"music\\"}; char SoundEngine::m_szMusicPath[]={"music\\"};
char SoundEngine::m_szRedistName[]={"Windows64\\redist64"}; //str1k3r - moved this to the Windows64 dir so its out of plain view char SoundEngine::m_szRedistName[]={"redist64"};
#elif defined _DURANGO #elif defined _DURANGO
char SoundEngine::m_szSoundPath[]={"Sound\\"}; char SoundEngine::m_szSoundPath[]={"Sound\\"};
char SoundEngine::m_szMusicPath[]={"music\\"}; char SoundEngine::m_szMusicPath[]={"music\\"};
@@ -48,7 +79,7 @@ char SoundEngine::m_szMusicPath[]={"music/"};
char SoundEngine::m_szRedistName[]={"redist"}; char SoundEngine::m_szRedistName[]={"redist"};
#endif #endif
/*#ifdef _CONTENT_PACKAGE // str1k3r - not needed use default paths instead. /*#ifdef _CONTENT_PACKAGE // strk1k3r - not needed use default paths instead.
char SoundEngine::m_szSoundPath[]={"Sound/"}; char SoundEngine::m_szSoundPath[]={"Sound/"};
#elif defined _ART_BUILD #elif defined _ART_BUILD
char SoundEngine::m_szSoundPath[]={"Sound/"}; char SoundEngine::m_szSoundPath[]={"Sound/"};
@@ -80,6 +111,7 @@ char *SoundEngine::m_szStreamFileA[eStream_Max]=
"hal4", "hal4",
"nuance1", "nuance1",
"nuance2", "nuance2",
#ifndef _XBOX
// add the new music tracks // add the new music tracks
"creative1", "creative1",
"creative2", "creative2",
@@ -91,9 +123,11 @@ char *SoundEngine::m_szStreamFileA[eStream_Max]=
"menu2", "menu2",
"menu3", "menu3",
"menu4", "menu4",
#endif
"piano1", "piano1",
"piano2", "piano2",
"piano3", "piano3",
// Nether // Nether
"nether1", "nether1",
"nether2", "nether2",
@@ -274,7 +308,9 @@ void SoundEngine::init(Options *pOptions)
sprintf(szBankName,"%s/%s",getUsrDirPath(), m_szSoundPath ); sprintf(szBankName,"%s/%s",getUsrDirPath(), m_szSoundPath );
} }
#elif (defined __PSVITA__ || __ORBIS__) #elif defined __PSVITA__
sprintf(szBankName,"%s/%s",getUsrDirPath(), m_szSoundPath );
#elif defined __ORBIS__
sprintf(szBankName,"%s/%s",getUsrDirPath(), m_szSoundPath ); sprintf(szBankName,"%s/%s",getUsrDirPath(), m_szSoundPath );
#else #else
strcpy((char *)szBankName,m_szSoundPath); strcpy((char *)szBankName,m_szSoundPath);
@@ -755,9 +791,7 @@ void SoundEngine::play(int iSound, float x, float y, float z, float volume, floa
char *SoundName = (char *)ConvertSoundPathToName(name); char *SoundName = (char *)ConvertSoundPathToName(name);
strcat((char *)szSoundName,SoundName); strcat((char *)szSoundName,SoundName);
#ifdef _DEBUG // app.DebugPrintf(6,"PlaySound - %d - %s - %s (%f %f %f, vol %f, pitch %f)\n",iSound, SoundName, szSoundName,x,y,z,volume,pitch);
app.DebugPrintf(6,"PlaySound - %d - %s - %s (%f %f %f, vol %f, pitch %f)\n",iSound, SoundName, szSoundName,x,y,z,volume,pitch);
#endif
AUDIO_INFO AudioInfo; AUDIO_INFO AudioInfo;
AudioInfo.x=x; AudioInfo.x=x;
@@ -812,11 +846,9 @@ void SoundEngine::playUI(int iSound, float volume, float pitch)
char *SoundName = (char *)ConvertSoundPathToName(name); char *SoundName = (char *)ConvertSoundPathToName(name);
strcat((char *)szSoundName,SoundName); strcat((char *)szSoundName,SoundName);
// app.DebugPrintf("UI: Playing %s, volume %f, pitch %f\n",SoundName,volume,pitch);
#ifdef _DEBUG //app.DebugPrintf("PlaySound - %d - %s\n",iSound, SoundName);
app.DebugPrintf("UI: Playing %s, volume %f, pitch %f\n",SoundName,volume,pitch);
app.DebugPrintf("PlaySound - %d - %s\n",iSound, SoundName);
#endif
AUDIO_INFO AudioInfo; AUDIO_INFO AudioInfo;
memset(&AudioInfo,0,sizeof(AUDIO_INFO)); memset(&AudioInfo,0,sizeof(AUDIO_INFO));
@@ -1104,12 +1136,10 @@ int SoundEngine::OpenStreamThreadProc( void* lpParameter )
SoundEngine *soundEngine = (SoundEngine *)lpParameter; SoundEngine *soundEngine = (SoundEngine *)lpParameter;
soundEngine->m_hStream = AIL_open_stream(soundEngine->m_hDriver,soundEngine->m_szStreamName,0); soundEngine->m_hStream = AIL_open_stream(soundEngine->m_hDriver,soundEngine->m_szStreamName,0);
#ifdef _DEBUG
if(soundEngine->m_hStream==0) if(soundEngine->m_hStream==0)
{ {
app.DebugPrintf("SoundEngine::OpenStreamThreadProc - Could not open - %s\n",soundEngine->m_szStreamName); app.DebugPrintf("SoundEngine::OpenStreamThreadProc - Could not open - %s\n",soundEngine->m_szStreamName);
} }
#endif
return 0; return 0;
} }
@@ -1130,17 +1160,13 @@ void SoundEngine::playMusicTick()
void SoundEngine::playMusicUpdate() void SoundEngine::playMusicUpdate()
{ {
//return; //return;
static float fMusicVol = 0.0f;
#ifndef _WINDOWS64 //str1k3r - if used on windows64 volume doesnt update
static bool firstCall = true; static bool firstCall = true;
static float fMusicVol = 0.0f;
if( firstCall ) if( firstCall )
{ {
fMusicVol = getMasterMusicVolume(); fMusicVol = getMasterMusicVolume();
firstCall = false; firstCall = false;
} }
#else
fMusicVol = getMasterMusicVolume();
#endif
switch(m_StreamState) switch(m_StreamState)
{ {
@@ -1200,7 +1226,7 @@ void SoundEngine::playMusicUpdate()
m_MusicType=eMusicType_Game; m_MusicType=eMusicType_Game;
m_StreamingAudioInfo.bIs3D=false; m_StreamingAudioInfo.bIs3D=false;
#if (defined _XBOX_ONE || _WINDOWS64) #ifdef _XBOX_ONE
wstring &wstrSoundName=dlcAudioFile->GetSoundName(m_musicID); wstring &wstrSoundName=dlcAudioFile->GetSoundName(m_musicID);
wstring wstrFile=L"TPACK:\\Data\\" + wstrSoundName +L".binka"; wstring wstrFile=L"TPACK:\\Data\\" + wstrSoundName +L".binka";
std::wstring mountedPath = StorageManager.GetMountedPath(wstrFile); std::wstring mountedPath = StorageManager.GetMountedPath(wstrFile);
@@ -1209,7 +1235,12 @@ void SoundEngine::playMusicUpdate()
wstring &wstrSoundName=dlcAudioFile->GetSoundName(m_musicID); wstring &wstrSoundName=dlcAudioFile->GetSoundName(m_musicID);
char szName[255]; char szName[255];
wcstombs(szName,wstrSoundName.c_str(),255); wcstombs(szName,wstrSoundName.c_str(),255);
#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
string strFile="TPACK:/Data/" + string(szName) + ".binka"; string strFile="TPACK:/Data/" + string(szName) + ".binka";
#else
string strFile="TPACK:\\Data\\" + string(szName) + ".binka";
#endif
std::string mountedPath = StorageManager.GetMountedPath(strFile); std::string mountedPath = StorageManager.GetMountedPath(strFile);
strcpy(m_szStreamName,mountedPath.c_str()); strcpy(m_szStreamName,mountedPath.c_str());
#endif #endif
@@ -1483,9 +1514,7 @@ void SoundEngine::playMusicUpdate()
} }
// volume change required? // volume change required?
#ifndef _WINDOWS64 if(fMusicVol!=getMasterMusicVolume())
if(fMusicVol!=getMasterMusicVolume()) //str1k3r - if used on windows64 music doesnt update its volume
#endif
{ {
fMusicVol=getMasterMusicVolume(); fMusicVol=getMasterMusicVolume();
HSAMPLE hSample = AIL_stream_sample_handle( m_hStream); HSAMPLE hSample = AIL_stream_sample_handle( m_hStream);
@@ -1627,6 +1656,8 @@ char *SoundEngine::ConvertSoundPathToName(const wstring& name, bool bConvertSpac
return buf; return buf;
} }
#endif
F32 AILCALLBACK custom_falloff_function (HSAMPLE S, F32 AILCALLBACK custom_falloff_function (HSAMPLE S,
F32 distance, F32 distance,
@@ -1,80 +0,0 @@
param(
[string]$ProjectDir,
[string]$Platform,
[string]$Configuration
)
if ($ProjectDir -match "Minecraft.World") {
$BaseDir = "$ProjectDir..\Minecraft.Client\"
} elseif ($ProjectDir -match "Minecraft.Client") {
$BaseDir = $ProjectDir
} else {
Write-Host "4JLibs: Unknown project directory: '$ProjectDir'"
exit 1
}
switch ($Platform) {
"x64" { $LibsDir = Join-Path $BaseDir "Windows64\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Windows64" }
"Durango" { $LibsDir = Join-Path $BaseDir "Durango\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Durango" }
"Xbox 360" { $LibsDir = Join-Path $BaseDir "Xbox\4JLibs\"; $ExpectedCount = 5; $PlatformName = "Xbox" }
"PS3" { $LibsDir = Join-Path $BaseDir "PS3\4JLibs\"; $ExpectedCount = 4; $PlatformName = "PS3" }
"Orbis" { $LibsDir = Join-Path $BaseDir "Orbis\4JLibs\"; $ExpectedCount = 4; $PlatformName = "Orbis" }
"PSVita" { $LibsDir = Join-Path $BaseDir "PSVita\4JLibs\"; $ExpectedCount = 4; $PlatformName = "PSVita" }
default { Write-Host "4JLibs: Unknown platform: '$Platform'"; exit 1 }
}
if ($Configuration -match "ContentPackage" -or $Configuration -match "Release") {
$BuildConfig = "Release"
} elseif ($Configuration -match "Debug") {
$BuildConfig = "Debug"
} else {
Write-Host "4JLibs: Configuration did not match any known patterns, defaulting to Debug"
$BuildConfig = "Debug"
}
if (-not (Test-Path $LibsDir)) {
Write-Host "4JLibs: $PlatformName 4JLibs directory not found"
exit 1
} elseif (-not (Test-Path "$LibsDir\Headers\$PlatformName")) {
Write-Host "4JLibs: $PlatformName 4JLibs Headers directory not found"
exit 1
} elseif (-not (Test-Path "$LibsDir\Headers")) {
Write-Host "4JLibs: Headers directory not found"
exit 1
}
$incPath = Join-Path $LibsDir "inc"
$libsPath = Join-Path $LibsDir "libs"
$incCount = (Get-ChildItem -Path $incPath -Filter "*.h" -ErrorAction SilentlyContinue).Count
if ($BuildConfig -eq "Release") {
$libCount = (Get-ChildItem -Path $libsPath -Filter "*_r.lib" -ErrorAction SilentlyContinue).Count
} else {
$libCount = (Get-ChildItem -Path $libsPath -Filter "*_d.lib" -ErrorAction SilentlyContinue).Count
}
if ($incCount -lt $ExpectedCount) {
Write-Host "4JLibs: Copying header files for $PlatformName"
xcopy "$LibsDir\Headers\$PlatformName\*" "$incPath" /E /I /Y
} else {
Write-Host "4JLibs: inc files already present, skipping copy."
}
if ($libCount -lt $ExpectedCount) {
Write-Host "4JLibs: Building 4JLibs for $PlatformName in $BuildConfig"
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" `
(Join-Path $LibsDir "4JLibs.sln") `
/p:Configuration=$BuildConfig `
/p:Platform=$PlatformName `
/v:minimal `
/m
if ($LASTEXITCODE -ne 0) {
Write-Host "4JLibs: Build failed with exit code: $LASTEXITCODE"
exit $LASTEXITCODE
}
} else {
Write-Host "4JLibs: libs already present, skipping build."
}
@@ -1,109 +0,0 @@
param(
[string]$OutDir,
[string]$ProjectDir,
[string]$Configuration
)
Write-Host "PS3 Postbuild: script started. Output Directory: $OutDir, Project Directory: $ProjectDir"
$directories = @(
"PS3_GAME\USRDIR\music",
"PS3_GAME\USRDIR\DLC",
"PS3_GAME\USRDIR\Common\Media",
"PS3_GAME\USRDIR\Common\res",
"PS3_GAME\USRDIR\PS3\Tutorial",
"PS3_GAME\USRDIR\PS3\Sound"
)
foreach ($dir in $directories) {
New-Item -ItemType Directory -Path (Join-Path $OutDir $dir) -Force | Out-Null
}
$folderCopies = @(
@{ Source = "music"; Dest = "PS3_GAME\USRDIR\music" },
@{ Source = "Common\Media\Font";Dest = "PS3_GAME\USRDIR\Common\Media\Font" },
@{ Source = "Common\res"; Dest = "PS3_GAME\USRDIR\Common\res" },
@{ Source = "PS3Media\DLC"; Dest = "PS3_GAME\USRDIR\DLC" },
@{ Source = "PS3Media\Sound"; Dest = "PS3_GAME\USRDIR\PS3\Sound" },
#@{ Source = "PSVita\Tutorial"; Dest = "PS3_GAME\USRDIR\PS3\Tutorial" }, # str1k3r - softlocks game
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\LICDIR"; Dest = "PS3_GAME\LICDIR" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\TROPDIR"; Dest = "PS3_GAME\TROPDIR" }
)
foreach ($copy in $folderCopies) {
if ([System.IO.Path]::IsPathRooted($copy.Source)) {
$src = $copy.Source
} else {
$src = Join-Path $ProjectDir $copy.Source
}
$dst = Join-Path $OutDir $copy.Dest
if (Test-Path $src) {
xcopy /q /y /i /s /e /d "$src" "$dst" 2>$null
} else {
Write-Host "PS3 Postbuild: Folder not found, skipping: $src"
}
}
$fileCopies = @(
@{ Source = "PS3\PS3ProductCodes.bin"; Dest = "PS3_GAME\USRDIR\PS3\PS3ProductCodes.bin" },
@{ Source = "Common\Media\MediaPS3.arc"; Dest = "PS3_GAME\USRDIR\Common\Media\MediaPS3.arc" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_DISC.SFB"; Dest = "PS3_DISC.SFB" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\ICON0.PNG"; Dest = "PS3_GAME\ICON0.PNG" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PARAM.SFO"; Dest = "PS3_GAME\PARAM.SFO" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PIC1.PNG"; Dest = "PS3_GAME\PIC1.PNG" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PS3GAME.BG0"; Dest = "PS3_GAME\PS3GAME.BG0" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PS3GAME.BG1"; Dest = "PS3_GAME\PS3GAME.BG1" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PS3GAME.VR0"; Dest = "PS3_GAME\PS3GAME.VR0" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\PS3LOGO.DAT"; Dest = "PS3_GAME\PS3GAME.DAT" },
@{ Source = Join-Path $PSScriptRoot "Contents\PS3\PS3_GAME\SND0.AT3"; Dest = "PS3_GAME\SND0.AT3" }
)
foreach ($copy in $fileCopies) {
$src = $copy.Source
$dst = Join-Path $OutDir $copy.Dest
if (Test-Path $src) {
Copy-Item -Path $src -Destination $dst -Force
} else {
Write-Host "PS3 Postbuild: File not found, skipping: $src"
}
}
if ($Configuration -match "ContentPackage") {
$builtFile = Join-Path $OutDir "Minecraft.Client.elf"
} else {
$builtFile = Join-Path $OutDir "Minecraft.Client.self"
}
$newName = "EBOOT.BIN"
$destDir = Join-Path $OutDir "PS3_GAME\USRDIR"
$destPath = Join-Path $destDir $newName
if (Test-Path $builtFile) {
New-Item -ItemType Directory -Path $destDir -Force | Out-Null
Copy-Item -Path $builtFile -Destination $destPath -Force
}
$deleteDirs = @(
"PS3_GAME\USRDIR\Common\Media\font\RU"
)
foreach ($dir in $deleteDirs) {
$path = Join-Path $OutDir $dir
if (Test-Path $path) {
Remove-Item $path -Recurse -Force -ErrorAction SilentlyContinue
}
}
$delDirs = @(
"PS3_GAME\USRDIR\Common\Media\font",
"PS3_GAME\USRDIR\Common\Media\font\*"
)
foreach ($dir in $delDirs) {
$path = Join-Path $OutDir $dir
if (Test-Path $path) {
Get-ChildItem -Path $path -Recurse -Include *.txt, *.abc, "Mojang Font_7.ttf", "Mojang Font_11.ttf", "MSYH.ttf" -File |
Remove-Item -Force -ErrorAction SilentlyContinue
}
}
@@ -1,84 +0,0 @@
param(
[string]$OutDir,
[string]$ProjectDir
)
Write-Host "Windows64 Postbuild: script started. Output Directory: $OutDir, Project Directory: $ProjectDir"
$directories = @(
"music",
"Common\Media",
"Windows64Media",
"Windows64\GameHDD",
"Windows64\redist64"
)
foreach ($dir in $directories) {
New-Item -ItemType Directory -Path (Join-Path $OutDir $dir) -Force | Out-Null
}
$folderCopies = @(
@{ Source = "music"; Dest = "music" },
@{ Source = "Common\res"; Dest = "Common\res" },
@{ Source = "Common\Media\Font"; Dest = "Common\Media\Font" },
@{ Source = "Windows64Media\DLC"; Dest = "Windows64Media\DLC" },
@{ Source = "Windows64Media\Sound"; Dest = "Windows64Media\Sound" },
#@{ Source = "PSVita\Tutorial"; Dest = "Windows64Media\Tutorial" }, # str1k3r - doesnt even work bru
@{ Source = "Windows64\Miles\lib\redist64"; Dest = "Windows64\redist64" }
)
foreach ($copy in $folderCopies) {
if ([System.IO.Path]::IsPathRooted($copy.Source)) {
$src = $copy.Source
} else {
$src = Join-Path $ProjectDir $copy.Source
}
$dst = Join-Path $OutDir $copy.Dest
if (Test-Path $src) {
xcopy /q /y /i /s /e /d "$src" "$dst" 2>$null
} else {
Write-Host "Windows64 Postbuild: Folder not found, skipping: $src"
}
}
$fileCopies = @(
@{ Source = Join-Path $ProjectDir "Windows64\4JLibs\4J_Input\Windows64\vendor\SDL\lib\x64\SDL3.dll"; Dest = "SDL3.dll" },
@{ Source = "Common\Media\MediaWindows64.arc"; Dest = "Common\Media\MediaWindows64.arc" },
@{ Source = Join-Path $PSScriptRoot "Contents\Windows64\mss64.dll"; Dest = "mss64.dll" },
@{ Source = "Windows64\Iggy\lib\redist64\iggy_w64.dll"; Dest = "iggy_w64.dll" }
)
foreach ($copy in $fileCopies) {
$src = $copy.Source
$dst = Join-Path $OutDir $copy.Dest
if (Test-Path $src) {
Copy-Item -Path $src -Destination $dst -Force
} else {
Write-Host "Windows64 Postbuild: File not found, skipping: $src"
}
}
$deleteDirs = @(
"Common\Media\font\RU" #str1k3r - russian font?
)
foreach ($dir in $deleteDirs) {
$path = Join-Path $OutDir $dir
if (Test-Path $path) {
Remove-Item $path -Recurse -Force -ErrorAction SilentlyContinue
}
}
$delDirs = @(
"Common\Media\font",
"Common\Media\font\*"
)
foreach ($dir in $delDirs) {
$path = Join-Path $OutDir $dir
if (Test-Path $path) {
Get-ChildItem -Path $path -Recurse -Include *.txt, *.abc, "Mojang Font_7.ttf", "Mojang Font_11.ttf", "DF-DotDotGothic16.ttf", "DFTT_R5.TTC", "candadite2.ttf" -File |
Remove-Item -Force -ErrorAction SilentlyContinue
}
}
+8
View File
@@ -4,6 +4,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonMedia", "CommonMedia.vcxproj", "{21BBD32C-AF5E-4741-8B80-3B73FC0D0F27}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommonMedia", "CommonMedia.vcxproj", "{21BBD32C-AF5E-4741-8B80-3B73FC0D0F27}"
EndProject EndProject
Global Global
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = http://tfs_server:8080/tfs/storiespark
SccProjectUniqueName0 = CommonMedia.vcxproj
SccLocalPath0 = .
SccLocalPath1 = .
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32 Release|Win32 = Release|Win32
+1 -13
View File
@@ -1,27 +1,15 @@
#include "stdafx.h" #include "stdafx.h"
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
#include "../../Minecraft.Server/ServerLogManager.h"
#endif
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Name: DebugSpewV() // Name: DebugSpewV()
// Desc: Internal helper function // Desc: Internal helper function
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
#ifndef _CONTENT_PACKAGE #ifndef _CONTENT_PACKAGE
static VOID DebugSpewV( const CHAR* strFormat, va_list pArgList ) static VOID DebugSpewV( const CHAR* strFormat, const va_list pArgList )
{ {
#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ #if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__
assert(0); assert(0);
#else #else
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
// Dedicated server routes legacy debug spew through ServerLogger to preserve CLI prompt handling.
if (ServerRuntime::ServerLogManager::ShouldForwardClientDebugLogs())
{
ServerRuntime::ServerLogManager::ForwardClientDebugSpewLogV(strFormat, pArgList);
return;
}
#endif
CHAR str[2048]; CHAR str[2048];
// Use the secure CRT to avoid buffer overruns. Specify a count of // Use the secure CRT to avoid buffer overruns. Specify a count of
// _TRUNCATE so that too long strings will be silently truncated // _TRUNCATE so that too long strings will be silently truncated
+62 -123
View File
@@ -30,9 +30,6 @@
#include "GameRules\ConsoleGameRules.h" #include "GameRules\ConsoleGameRules.h"
#include "GameRules\ConsoleSchematicFile.h" #include "GameRules\ConsoleSchematicFile.h"
#include "..\User.h" #include "..\User.h"
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
#include "..\..\Minecraft.Server\ServerLogManager.h"
#endif
#include "..\\EntityRenderDispatcher.h" #include "..\\EntityRenderDispatcher.h"
#include "..\TexturePackRepository.h" #include "..\TexturePackRepository.h"
#include "..\DLCTexturePack.h" #include "..\DLCTexturePack.h"
@@ -233,21 +230,12 @@ void CMinecraftApp::DebugPrintf(const char *szFormat, ...)
{ {
#ifndef _FINAL_BUILD #ifndef _FINAL_BUILD
va_list ap; char buf[1024];
va_start(ap, szFormat); va_list ap;
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD) va_start(ap, szFormat);
// Dedicated server routes client debug spew through ServerLogger so CLI output stays prompt-safe. vsnprintf(buf, sizeof(buf), szFormat, ap);
if (ServerRuntime::ServerLogManager::ShouldForwardClientDebugLogs()) va_end(ap);
{ OutputDebugStringA(buf);
ServerRuntime::ServerLogManager::ForwardClientAppDebugLogV(szFormat, ap);
va_end(ap);
return;
}
#endif
char buf[1024];
vsnprintf(buf, sizeof(buf), szFormat, ap);
va_end(ap);
OutputDebugStringA(buf);
#endif #endif
} }
@@ -255,22 +243,13 @@ void CMinecraftApp::DebugPrintf(const char *szFormat, ...)
void CMinecraftApp::DebugPrintf(int user, const char *szFormat, ...) void CMinecraftApp::DebugPrintf(int user, const char *szFormat, ...)
{ {
#ifndef _FINAL_BUILD #ifndef _FINAL_BUILD
if(user == USER_NONE) if(user == USER_NONE)
return; return;
va_list ap; char buf[1024];
va_start(ap, szFormat); va_list ap;
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD) va_start(ap, szFormat);
// Dedicated server routes client debug spew through ServerLogger so CLI output stays prompt-safe. vsnprintf(buf, sizeof(buf), szFormat, ap);
if (ServerRuntime::ServerLogManager::ShouldForwardClientDebugLogs()) va_end(ap);
{
ServerRuntime::ServerLogManager::ForwardClientUserDebugLogV(user, szFormat, ap);
va_end(ap);
return;
}
#endif
char buf[1024];
vsnprintf(buf, sizeof(buf), szFormat, ap);
va_end(ap);
#ifdef __PS3__ #ifdef __PS3__
unsigned int writelen; unsigned int writelen;
sys_tty_write(SYS_TTYP_USER1 + ( user - 1 ), buf, strlen(buf), &writelen ); sys_tty_write(SYS_TTYP_USER1 + ( user - 1 ), buf, strlen(buf), &writelen );
@@ -785,11 +764,11 @@ void CMinecraftApp::InitGameSettings()
//SetDefaultGameSettings(i); - done on a callback from the profile manager //SetDefaultGameSettings(i); - done on a callback from the profile manager
// 4J-PB - adding in for Windows & PS3 to set the defaults for the joypad // 4J-PB - adding in for Windows & PS3 to set the defaults for the joypad
#if defined _WINDOWS64 #if defined _WINDOWS64// || defined __PSVITA__
C_4JProfile::PROFILESETTINGS *pProfileSettings=ProfileManager.GetDashboardProfileSettings(i); C_4JProfile::PROFILESETTINGS *pProfileSettings=ProfileManager.GetDashboardProfileSettings(i);
// clear this for now - it will come from reading the system values
memset(pProfileSettings,0,sizeof(C_4JProfile::PROFILESETTINGS));
SetDefaultOptions(pProfileSettings,i); SetDefaultOptions(pProfileSettings,i);
ProfileManager.LoadSettings(GameSettingsA[i], sizeof(GAME_SETTINGS));
ApplyGameSettingsChanged(i);
#elif defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ #elif defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__
C4JStorage::PROFILESETTINGS *pProfileSettings=StorageManager.GetDashboardProfileSettings(i); C4JStorage::PROFILESETTINGS *pProfileSettings=StorageManager.GetDashboardProfileSettings(i);
// 4J-PB - don't cause an options write to happen here // 4J-PB - don't cause an options write to happen here
@@ -2376,8 +2355,6 @@ void CMinecraftApp::CheckGameSettingsChanged(bool bOverride5MinuteTimer, int iPa
{ {
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ ) #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )
StorageManager.WriteToProfile(i,true, bOverride5MinuteTimer); StorageManager.WriteToProfile(i,true, bOverride5MinuteTimer);
#elif _WINDOWS64
ProfileManager.SaveSettings(GameSettingsA[i], sizeof(GAME_SETTINGS));
#else #else
ProfileManager.WriteToProfile(i,true, bOverride5MinuteTimer); ProfileManager.WriteToProfile(i,true, bOverride5MinuteTimer);
#endif #endif
@@ -2391,8 +2368,6 @@ void CMinecraftApp::CheckGameSettingsChanged(bool bOverride5MinuteTimer, int iPa
{ {
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__) #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__)
StorageManager.WriteToProfile(iPad,true, bOverride5MinuteTimer); StorageManager.WriteToProfile(iPad,true, bOverride5MinuteTimer);
#elif _WINDOWS64
ProfileManager.SaveSettings(GameSettingsA[iPad], sizeof(GAME_SETTINGS));
#else #else
ProfileManager.WriteToProfile(iPad,true, bOverride5MinuteTimer); ProfileManager.WriteToProfile(iPad,true, bOverride5MinuteTimer);
#endif #endif
@@ -2411,7 +2386,7 @@ void CMinecraftApp::ClearGameSettingsChangedFlag(int iPad)
// Remove the debug settings in the content package build // Remove the debug settings in the content package build
// //
//////////////////////////// ////////////////////////////
#ifndef _DEBUG_MENUS_ENABLED #ifdef _DEBUG_MENUS_ENABLED
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;
@@ -2424,7 +2399,9 @@ void CMinecraftApp::SetGameSettingsDebugMask(int iPad, unsigned int uiVal)
void CMinecraftApp::ActionDebugMask(int iPad,bool bSetAllClear) void CMinecraftApp::ActionDebugMask(int iPad,bool bSetAllClear)
{ {
} }
#else #else
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
{ {
if(iPad==-1) if(iPad==-1)
@@ -3695,7 +3672,7 @@ void CMinecraftApp::HandleXuiActions(void)
pDLCTexPack->m_pSoundBank->Destroy(); pDLCTexPack->m_pSoundBank->Destroy();
} }
#endif #endif
#if (defined _DURANGO || _WINDOWS64) #ifdef _DURANGO
DWORD result = StorageManager.UnmountInstalledDLC(L"TPACK"); DWORD result = StorageManager.UnmountInstalledDLC(L"TPACK");
#else #else
DWORD result = StorageManager.UnmountInstalledDLC("TPACK"); DWORD result = StorageManager.UnmountInstalledDLC("TPACK");
@@ -3867,9 +3844,9 @@ void CMinecraftApp::HandleXuiActions(void)
case eAppAction_SetDefaultOptions: case eAppAction_SetDefaultOptions:
SetAction(i,eAppAction_Idle); SetAction(i,eAppAction_Idle);
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__) #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__)
SetDefaultOptions((C4JStorage::PROFILESETTINGS *)param,i); SetDefaultOptions((C4JStorage::PROFILESETTINGS *)param,i);
#else #else
SetDefaultOptions((C_4JProfile::PROFILESETTINGS *)param,i); SetDefaultOptions((C_4JProfile::PROFILESETTINGS *)param,i);
#endif #endif
// if the profile data has been changed, then force a profile write // if the profile data has been changed, then force a profile write
@@ -4060,8 +4037,8 @@ void CMinecraftApp::HandleXuiActions(void)
ui.SetTooltips(i, -1); ui.SetTooltips(i, -1);
ui.ReloadSkins(); ui.ReloadSkin();
ui.StartReloadSkinsThread(); ui.StartReloadSkinThread();
ui.setCleanupOnReload(); ui.setCleanupOnReload();
#endif #endif
@@ -4440,7 +4417,9 @@ int CMinecraftApp::EthernetDisconnectReturned(void *pParam,int iPad,const C4JSto
else else
{ {
// 4J-PB - turn off the PSN store icon just in case this happened when we were in one of the DLC menus // 4J-PB - turn off the PSN store icon just in case this happened when we were in one of the DLC menus
#if defined __PSVITA__ || defined __ORBIS__ #ifdef __ORBIS__
sceNpCommerceHidePsStoreIcon();
#elif defined __PSVITA__
app.GetCommerce()->HidePsStoreIcon(); app.GetCommerce()->HidePsStoreIcon();
#endif #endif
app.SetAction(iPad,eAppAction_EthernetDisconnectedReturned_Menus); app.SetAction(iPad,eAppAction_EthernetDisconnectedReturned_Menus);
@@ -4910,13 +4889,11 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
// 4J Stu - On PS4 we can also cause to exit players if they are signed out here, but we shouldn't do that if // 4J Stu - On PS4 we can also cause to exit players if they are signed out here, but we shouldn't do that if
// we are going to switch to an offline game as it will likely crash due to incompatible parallel processes // we are going to switch to an offline game as it will likely crash due to incompatible parallel processes
bool switchToOffline = false; bool switchToOffline = false;
#ifndef _DISABLE_XBLIVE
// If it's an online game, and the primary profile is no longer signed into LIVE then we act as if disconnected // If it's an online game, and the primary profile is no longer signed into LIVE then we act as if disconnected
if( !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) && !g_NetworkManager.IsLocalGame() ) if( !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) && !g_NetworkManager.IsLocalGame() )
{ {
switchToOffline = true; switchToOffline = true;
} }
#endif
//printf("Old: %x, New: %x, Changed: %x\n", m_ulLastSignInData, ulSignInData, changedPlayers); //printf("Old: %x, New: %x, Changed: %x\n", m_ulLastSignInData, ulSignInData, changedPlayers);
for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
@@ -4981,7 +4958,6 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
g_NetworkManager.HandleSignInChange(); g_NetworkManager.HandleSignInChange();
} }
#ifndef _DISABLE_XBLIVE
// Some menus require the player to be signed in to live, so if this callback happens and the primary player is // Some menus require the player to be signed in to live, so if this callback happens and the primary player is
// no longer signed in then nav back // no longer signed in then nav back
else if ( pApp->GetLiveLinkRequired() && !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) ) else if ( pApp->GetLiveLinkRequired() && !ProfileManager.IsSignedInLive( ProfileManager.GetLockedProfile() ) )
@@ -4993,7 +4969,6 @@ void CMinecraftApp::SignInChangeCallback(LPVOID pParam,bool bPrimaryPlayerChange
pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected); pApp->SetAction(iPrimaryPlayer,eAppAction_EthernetDisconnected);
} }
} }
#endif
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ ) #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )
// 4J-JEV: Need to kick of loading of profile data for sub-sign in players. // 4J-JEV: Need to kick of loading of profile data for sub-sign in players.
@@ -5119,9 +5094,6 @@ void CMinecraftApp::NotificationsCallback(LPVOID pParam,DWORD dwNotification, un
#if defined __PS3__ || defined __PSVITA__ || defined __ORBIS__ #if defined __PS3__ || defined __PSVITA__ || defined __ORBIS__
int CMinecraftApp::MustSignInFullVersionPurchaseReturned(void *pParam,int iPad,C4JStorage::EMessageResult result) int CMinecraftApp::MustSignInFullVersionPurchaseReturned(void *pParam,int iPad,C4JStorage::EMessageResult result)
{ {
#ifdef DISABLE_PSN
return 0;
#else
if(result==C4JStorage::EMessage_ResultAccept) if(result==C4JStorage::EMessage_ResultAccept)
{ {
#ifdef __PS3__ #ifdef __PS3__
@@ -5134,15 +5106,11 @@ int CMinecraftApp::MustSignInFullVersionPurchaseReturned(void *pParam,int iPad,C
} }
return 0; return 0;
#endif
} }
#if defined __PS3__ || defined __PSVITA__ || defined __ORBIS__ #if defined __PS3__ || defined __PSVITA__ || defined __ORBIS__
int CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial(void *pParam,int iPad,C4JStorage::EMessageResult result) int CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial(void *pParam,int iPad,C4JStorage::EMessageResult result)
{ {
#ifdef DISABLE_PSN
return 0;
#else
if(result==C4JStorage::EMessage_ResultAccept) if(result==C4JStorage::EMessage_ResultAccept)
{ {
#ifdef __PS3__ #ifdef __PS3__
@@ -5158,7 +5126,6 @@ int CMinecraftApp::MustSignInFullVersionPurchaseReturnedExitTrial(void *pParam,i
app.SetAction(iPad,eAppAction_ExitWorldTrial); app.SetAction(iPad,eAppAction_ExitWorldTrial);
return 0; return 0;
#endif
} }
#endif #endif
@@ -5490,9 +5457,9 @@ void CMinecraftApp::HandleDLC(DLCPack *pack)
{ {
DWORD dwFilesProcessed = 0; DWORD dwFilesProcessed = 0;
#ifndef _XBOX #ifndef _XBOX
#if defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__) #if defined(__PS3__) || defined(__ORBIS__) || defined(_WINDOWS64) || defined (__PSVITA__)
std::vector<std::string> dlcFilenames; std::vector<std::string> dlcFilenames;
#elif (defined _DURANGO || _WINDOWS64) #elif defined _DURANGO
std::vector<std::wstring> dlcFilenames; std::vector<std::wstring> dlcFilenames;
#endif #endif
StorageManager.GetMountedDLCFileList("DLCDrive", dlcFilenames); StorageManager.GetMountedDLCFileList("DLCDrive", dlcFilenames);
@@ -6352,31 +6319,27 @@ void CMinecraftApp::InitialiseTips()
UINT CMinecraftApp::GetNextTip() UINT CMinecraftApp::GetNextTip()
{ {
static bool bShowSkinDLCTip=true; static bool bShowSkinDLCTip=true;
//str1k3r - if uiStringID is IDS_TIPS_GAMETIP_0 then dont do this, fixes a bug with IDS_TIPS_GAMETIP_0 not showing on Windows64 if not high def // don't display the DLC tip in the trial game
if(m_GameTipA[0].uiStringID != IDS_TIPS_GAMETIP_0) if(ProfileManager.IsFullVersion() && app.GetNewDLCAvailable() && app.DisplayNewDLCTip())
{ {
// don't display the DLC tip in the trial game return IDS_TIPS_GAMETIP_NEWDLC;
if(ProfileManager.IsFullVersion() && app.GetNewDLCAvailable() && app.DisplayNewDLCTip()) }
else
{
if(bShowSkinDLCTip && ProfileManager.IsFullVersion())
{ {
return IDS_TIPS_GAMETIP_NEWDLC; bShowSkinDLCTip=false;
} if( app.DLCInstallProcessCompleted() )
else
{
if(bShowSkinDLCTip && ProfileManager.IsFullVersion())
{ {
bShowSkinDLCTip=false; if(app.m_dlcManager.getPackCount(DLCManager::e_DLCType_Skin)==0)
if( app.DLCInstallProcessCompleted() )
{
if(app.m_dlcManager.getPackCount(DLCManager::e_DLCType_Skin)==0)
{
return IDS_TIPS_GAMETIP_SKINPACKS;
}
}
else
{ {
return IDS_TIPS_GAMETIP_SKINPACKS; return IDS_TIPS_GAMETIP_SKINPACKS;
} }
} }
else
{
return IDS_TIPS_GAMETIP_SKINPACKS;
}
} }
} }
@@ -6492,7 +6455,7 @@ wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shado
text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_DOWN*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_DOWN ) ); text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_DOWN*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_DOWN ) );
text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_RIGHT*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_RIGHT ) ); text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_RIGHT*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_RIGHT ) );
text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_LEFT*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_LEFT ) ); text = replaceAll(text, L"{*CONTROLLER_ACTION_DPAD_LEFT*}", GetActionReplacement(iPad,MINECRAFT_ACTION_DPAD_LEFT ) );
#if !(defined __ORBIS__ || __PS3__) #if defined _XBOX_ONE || defined __PSVITA__
text = replaceAll(text, L"{*CONTROLLER_VK_START*}", GetVKReplacement(VK_PAD_START ) ); text = replaceAll(text, L"{*CONTROLLER_VK_START*}", GetVKReplacement(VK_PAD_START ) );
text = replaceAll(text, L"{*CONTROLLER_VK_BACK*}", GetVKReplacement(VK_PAD_BACK ) ); text = replaceAll(text, L"{*CONTROLLER_VK_BACK*}", GetVKReplacement(VK_PAD_BACK ) );
#endif #endif
@@ -6615,12 +6578,8 @@ wstring CMinecraftApp::GetActionReplacement(int iPad, unsigned char ucAction)
#ifdef __PS3__ #ifdef __PS3__
int size = 30; int size = 30;
#elif defined _WIN64 #elif defined _WIN64
int size = 30; int size = 45;
if(ui.getScreenWidth() < 1920) size = 30;
if(ui.getScreenWidth() >= 1920)
{
size = 45;
}
#else #else
int size = 45; int size = 45;
#endif #endif
@@ -6732,7 +6691,7 @@ wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
case VK_PAD_RTHUMB_DOWNLEFT : case VK_PAD_RTHUMB_DOWNLEFT :
replacement = L"ButtonRightStick"; replacement = L"ButtonRightStick";
break; break;
#if defined _XBOX_ONE || defined __PSVITA__ || defined _WINDOWS64 #if defined _XBOX_ONE || defined __PSVITA__
case VK_PAD_START: case VK_PAD_START:
replacement = L"ButtonStart"; replacement = L"ButtonStart";
break; break;
@@ -6748,12 +6707,8 @@ wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
#ifdef __PS3__ #ifdef __PS3__
int size = 30; int size = 30;
#elif defined _WIN64 #elif defined _WIN64
int size = 30; int size = 45;
if(ui.getScreenWidth() < 1920) size = 30;
if(ui.getScreenWidth() >= 1920)
{
size = 45;
}
#else #else
int size = 45; int size = 45;
#endif #endif
@@ -6783,12 +6738,8 @@ wstring CMinecraftApp::GetIconReplacement(unsigned int uiIcon)
#ifdef __PS3__ #ifdef __PS3__
int size = 22; int size = 22;
#elif defined _WIN64 #elif defined _WIN64
int size = 22; int size = 33;
if(ui.getScreenWidth() < 1920) size = 22;
if(ui.getScreenWidth() >= 1920)
{
size = 33;
}
#else #else
int size = 33; int size = 33;
#endif #endif
@@ -6810,7 +6761,7 @@ wstring CMinecraftApp::GetIconReplacement(unsigned int uiIcon)
#endif #endif
} }
#if !defined(DISABLE_PSN) && (defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #if defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
unordered_map<PlayerUID, MOJANG_DATA *, PlayerUID::Hash> CMinecraftApp::MojangData; unordered_map<PlayerUID, MOJANG_DATA *, PlayerUID::Hash> CMinecraftApp::MojangData;
unordered_map<int, char * > CMinecraftApp::DLCTextures_PackID; unordered_map<int, char * > CMinecraftApp::DLCTextures_PackID;
unordered_map<string, DLC_INFO * > CMinecraftApp::DLCInfo; unordered_map<string, DLC_INFO * > CMinecraftApp::DLCInfo;
@@ -6821,12 +6772,6 @@ unordered_map<int, wstring > CMinecraftApp::DLCTextures_PackID; // for mash-up
//unordered_map<ULONGLONG,DLC_INFO * > CMinecraftApp::DLCInfo_Trial; // full offerid, dlc_info //unordered_map<ULONGLONG,DLC_INFO * > CMinecraftApp::DLCInfo_Trial; // full offerid, dlc_info
unordered_map<wstring,DLC_INFO * > CMinecraftApp::DLCInfo_Full; // full offerid, dlc_info unordered_map<wstring,DLC_INFO * > CMinecraftApp::DLCInfo_Full; // full offerid, dlc_info
unordered_map<wstring, wstring > CMinecraftApp::DLCInfo_SkinName; // skin name, full offer id unordered_map<wstring, wstring > CMinecraftApp::DLCInfo_SkinName; // skin name, full offer id
#elif defined(DISABLE_PSN)
unordered_map<PlayerUID, MOJANG_DATA *, PlayerUID::Hash> CMinecraftApp::MojangData;
unordered_map<int, ULONGLONG > CMinecraftApp::DLCTextures_PackID;
unordered_map<ULONGLONG, DLC_INFO * > CMinecraftApp::DLCInfo_Trial;
unordered_map<ULONGLONG, DLC_INFO * > CMinecraftApp::DLCInfo_Full;
unordered_map<wstring, ULONGLONG > CMinecraftApp::DLCInfo_SkinName;
#else #else
unordered_map<PlayerUID, MOJANG_DATA *> CMinecraftApp::MojangData; unordered_map<PlayerUID, MOJANG_DATA *> CMinecraftApp::MojangData;
unordered_map<int, ULONGLONG > CMinecraftApp::DLCTextures_PackID; unordered_map<int, ULONGLONG > CMinecraftApp::DLCTextures_PackID;
@@ -6909,7 +6854,7 @@ HRESULT CMinecraftApp::RegisterConfigValues(WCHAR *pType, int iValue)
return hr; return hr;
} }
#if (defined _XBOX || defined _WINDOWS64 || defined DISABLE_PSN) #if (defined _XBOX || defined _WINDOWS64)
HRESULT CMinecraftApp::RegisterDLCData(WCHAR *pType, WCHAR *pBannerName, int iGender, __uint64 ullOfferID_Full, __uint64 ullOfferID_Trial, WCHAR *pFirstSkin, unsigned int uiSortIndex, int iConfig, WCHAR *pDataFile) HRESULT CMinecraftApp::RegisterDLCData(WCHAR *pType, WCHAR *pBannerName, int iGender, __uint64 ullOfferID_Full, __uint64 ullOfferID_Trial, WCHAR *pFirstSkin, unsigned int uiSortIndex, int iConfig, WCHAR *pDataFile)
{ {
HRESULT hr=S_OK; HRESULT hr=S_OK;
@@ -6926,20 +6871,12 @@ HRESULT CMinecraftApp::RegisterDLCData(WCHAR *pType, WCHAR *pBannerName, int iGe
// ignore the names if we don't recognize them // ignore the names if we don't recognize them
if(pBannerName!=L"") if(pBannerName!=L"")
{ {
#ifdef __PSVITA__
wcsncpy_s( pDLCData->wchBanner, MAX_BANNERNAME_SIZE, pBannerName, MAX_BANNERNAME_SIZE);
#else
wcsncpy_s( pDLCData->wchBanner, pBannerName, MAX_BANNERNAME_SIZE); wcsncpy_s( pDLCData->wchBanner, pBannerName, MAX_BANNERNAME_SIZE);
#endif
} }
if(pDataFile[0]!=0) if(pDataFile[0]!=0)
{ {
#ifdef __PSVITA__
wcsncpy_s( pDLCData->wchDataFile, MAX_BANNERNAME_SIZE, pDataFile, MAX_BANNERNAME_SIZE);
#else
wcsncpy_s( pDLCData->wchDataFile, pDataFile, MAX_BANNERNAME_SIZE); wcsncpy_s( pDLCData->wchDataFile, pDataFile, MAX_BANNERNAME_SIZE);
#endif
} }
#endif #endif
@@ -7109,7 +7046,7 @@ HRESULT CMinecraftApp::RegisterDLCData(char *pchDLCName, unsigned int uiSortInde
#if !defined(DISABLE_PSN) && (defined( __PS3__) || defined(__ORBIS__) || defined(__PSVITA__)) #if defined( __PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
bool CMinecraftApp::GetDLCFullOfferIDForSkinID(const wstring &FirstSkin,ULONGLONG *pullVal) bool CMinecraftApp::GetDLCFullOfferIDForSkinID(const wstring &FirstSkin,ULONGLONG *pullVal)
{ {
AUTO_VAR(it, DLCInfo_SkinName.find(FirstSkin)); AUTO_VAR(it, DLCInfo_SkinName.find(FirstSkin));
@@ -7377,7 +7314,7 @@ DLC_INFO *CMinecraftApp::GetDLCInfoForProductName(WCHAR *pwchProductName)
return NULL; return NULL;
} }
#elif !defined(DISABLE_PSN) && (defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #elif defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
#else #else
DLC_INFO *CMinecraftApp::GetDLCInfoForFullOfferID(ULONGLONG ullOfferID_Full) DLC_INFO *CMinecraftApp::GetDLCInfoForFullOfferID(ULONGLONG ullOfferID_Full)
@@ -9488,7 +9425,7 @@ byteArray CMinecraftApp::getArchiveFile(const wstring &filename)
// DLC // DLC
#if !defined(DISABLE_PSN) && (defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #if defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
int CMinecraftApp::GetDLCInfoCount() int CMinecraftApp::GetDLCInfoCount()
{ {
return (int)DLCInfo.size(); return (int)DLCInfo.size();
@@ -9780,6 +9717,7 @@ void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
locales.push_back(eMCLang_zhCN); locales.push_back(eMCLang_zhCN);
break; break;
#if defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ || defined _DURANGO
case XC_LANGUAGE_DANISH: case XC_LANGUAGE_DANISH:
locales.push_back(eMCLang_daDA); locales.push_back(eMCLang_daDA);
locales.push_back(eMCLang_daDK); locales.push_back(eMCLang_daDK);
@@ -9805,6 +9743,7 @@ void CMinecraftApp::getLocale(vector<wstring> &vecWstrLocales)
locales.push_back(eMCLang_enGR); locales.push_back(eMCLang_enGR);
locales.push_back(eMCLang_enGB); locales.push_back(eMCLang_enGB);
break; break;
#endif
} }
#endif #endif
@@ -10093,13 +10032,13 @@ enum ETitleUpdateTexturePacks
}; };
#ifdef _WINDOWS64 #ifdef _WINDOWS64
wstring titleUpdateTexturePackRoot = L"Windows64Media\\DLC\\"; wstring titleUpdateTexturePackRoot = L"Windows64\\DLC\\";
#elif defined(__ORBIS__) #elif defined(__ORBIS__)
wstring titleUpdateTexturePackRoot = L"app0/Orbis/DLC/"; wstring titleUpdateTexturePackRoot = L"/app0/orbis/CU/DLC/";
#elif defined(__PSVITA__) #elif defined(__PSVITA__)
wstring titleUpdateTexturePackRoot = L"PSVita/DLC/"; wstring titleUpdateTexturePackRoot = L"PSVita/CU/DLC/";
#elif defined(__PS3__) #elif defined(__PS3__)
wstring titleUpdateTexturePackRoot = L"PS3/DLC/"; wstring titleUpdateTexturePackRoot = L"PS3/CU/DLC/";
#else #else
wstring titleUpdateTexturePackRoot = L"CU\\DLC\\"; wstring titleUpdateTexturePackRoot = L"CU\\DLC\\";
#endif #endif
+12 -9
View File
@@ -594,7 +594,7 @@ public:
MOJANG_DATA *GetMojangDataForXuid(PlayerUID xuid); MOJANG_DATA *GetMojangDataForXuid(PlayerUID xuid);
static HRESULT RegisterConfigValues(WCHAR *pType, int iValue); static HRESULT RegisterConfigValues(WCHAR *pType, int iValue);
#if !defined(DISABLE_PSN) && (defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)) #if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
HRESULT RegisterDLCData(char *pchDLCName, unsigned int uiSortIndex, char *pchImageURL); HRESULT RegisterDLCData(char *pchDLCName, unsigned int uiSortIndex, char *pchImageURL);
bool GetDLCFullOfferIDForSkinID(const wstring &FirstSkin,ULONGLONG *pullVal); bool GetDLCFullOfferIDForSkinID(const wstring &FirstSkin,ULONGLONG *pullVal);
DLC_INFO *GetDLCInfoForTrialOfferID(ULONGLONG ullOfferID_Trial); DLC_INFO *GetDLCInfoForTrialOfferID(ULONGLONG ullOfferID_Trial);
@@ -631,7 +631,7 @@ private:
std::vector <SCreditTextItemDef *> vDLCCredits; std::vector <SCreditTextItemDef *> vDLCCredits;
#if !defined(DISABLE_PSN) && (defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)) #if defined(__PS3__) || defined(__ORBIS__) || defined (__PSVITA__)
static unordered_map<PlayerUID,MOJANG_DATA *, PlayerUID::Hash > MojangData; static unordered_map<PlayerUID,MOJANG_DATA *, PlayerUID::Hash > MojangData;
static unordered_map<int, char * > DLCTextures_PackID; // for mash-up packs & texture packs static unordered_map<int, char * > DLCTextures_PackID; // for mash-up packs & texture packs
static unordered_map<string,DLC_INFO * > DLCInfo; static unordered_map<string,DLC_INFO * > DLCInfo;
@@ -642,12 +642,6 @@ private:
//static unordered_map<wstring,DLC_INFO * > DLCInfo_Trial; // full offerid, dlc_info //static unordered_map<wstring,DLC_INFO * > DLCInfo_Trial; // full offerid, dlc_info
static unordered_map<wstring,DLC_INFO * > DLCInfo_Full; // full offerid, dlc_info static unordered_map<wstring,DLC_INFO * > DLCInfo_Full; // full offerid, dlc_info
static unordered_map<wstring, wstring > DLCInfo_SkinName; // skin name, full offer id static unordered_map<wstring, wstring > DLCInfo_SkinName; // skin name, full offer id
#elif defined(DISABLE_PSN)
static unordered_map<PlayerUID,MOJANG_DATA *, PlayerUID::Hash > MojangData;
static unordered_map<int, ULONGLONG > DLCTextures_PackID; // for mash-up packs & texture packs
static unordered_map<ULONGLONG,DLC_INFO * > DLCInfo_Trial; // full offerid, dlc_info
static unordered_map<ULONGLONG,DLC_INFO * > DLCInfo_Full; // full offerid, dlc_info
static unordered_map<wstring, ULONGLONG > DLCInfo_SkinName; // skin name, full offer id
#else #else
static unordered_map<PlayerUID,MOJANG_DATA * > MojangData; static unordered_map<PlayerUID,MOJANG_DATA * > MojangData;
static unordered_map<int, ULONGLONG > DLCTextures_PackID; // for mash-up packs & texture packs static unordered_map<int, ULONGLONG > DLCTextures_PackID; // for mash-up packs & texture packs
@@ -778,7 +772,7 @@ public:
void ClearTMSPPFilesRetrieved(); void ClearTMSPPFilesRetrieved();
unsigned int AddTMSPPFileTypeRequest(eDLCContentType eType, bool bPromote=false); unsigned int AddTMSPPFileTypeRequest(eDLCContentType eType, bool bPromote=false);
int GetDLCInfoTexturesOffersCount(); int GetDLCInfoTexturesOffersCount();
#if !defined(DISABLE_PSN) && (defined( __PS3__) || defined(__ORBIS__) || defined(__PSVITA__)) #if defined( __PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
DLC_INFO *GetDLCInfo(int iIndex); DLC_INFO *GetDLCInfo(int iIndex);
DLC_INFO *GetDLCInfo(char *); DLC_INFO *GetDLCInfo(char *);
DLC_INFO *GetDLCInfoFromTPackID(int iTPID); DLC_INFO *GetDLCInfoFromTPackID(int iTPID);
@@ -857,6 +851,15 @@ public:
static DWORD getSkinIdFromPath(const wstring &skin); static DWORD getSkinIdFromPath(const wstring &skin);
static wstring getSkinPathFromId(DWORD skinId); static wstring getSkinPathFromId(DWORD skinId);
virtual int LoadLocalTMSFile(WCHAR *wchTMSFile)=0;
virtual int LoadLocalTMSFile(WCHAR *wchTMSFile, eFileExtensionType eExt)=0;
virtual void FreeLocalTMSFiles(eTMSFileType eType)=0;
virtual int GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT)=0;
virtual bool GetTMSGlobalFileListRead() { return true;}
virtual bool GetTMSDLCInfoRead() { return true;}
virtual bool GetTMSXUIDsFileRead() { return true;}
bool GetBanListRead(int iPad) { return m_bRead_BannedListA[iPad];} bool GetBanListRead(int iPad) { return m_bRead_BannedListA[iPad];}
void SetBanListRead(int iPad,bool bVal) { m_bRead_BannedListA[iPad]=bVal;} void SetBanListRead(int iPad,bool bVal) { m_bRead_BannedListA[iPad]=bVal;}
void ClearBanList(int iPad) { BannedListA[iPad].pBannedList=NULL;BannedListA[iPad].dwBytes=0;} void ClearBanList(int iPad) { BannedListA[iPad].pBannedList=NULL;BannedListA[iPad].dwBytes=0;}
+10 -21
View File
@@ -344,14 +344,14 @@ bool DLCManager::readDLCDataFile(DWORD &dwFilesProcessed, const string &path, DL
} }
else if (fromArchive) return false; else if (fromArchive) return false;
#if (defined _DURANGO || _WINDOWS64) #ifdef _WINDOWS64
string finalPath = StorageManager.GetMountedPath(path.c_str());
if(finalPath.size() == 0) finalPath = path;
HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#elif defined(_DURANGO)
wstring finalPath = StorageManager.GetMountedPath(wPath.c_str()); wstring finalPath = StorageManager.GetMountedPath(wPath.c_str());
if(finalPath.size() == 0) finalPath = wPath; if(finalPath.size() == 0) finalPath = wPath;
#ifdef _DURANGO
HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#else
HANDLE file = CreateFileW(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#endif
#else #else
HANDLE file = CreateFile(path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE file = CreateFile(path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#endif #endif
@@ -406,12 +406,6 @@ bool DLCManager::processDLCDataFile(DWORD &dwFilesProcessed, PBYTE pbData, DWORD
unsigned int uiVersion=*(unsigned int *)pbData; unsigned int uiVersion=*(unsigned int *)pbData;
uiCurrentByte+=sizeof(int); uiCurrentByte+=sizeof(int);
if(uiVersion > CURRENT_DLC_VERSION_NUM)
{
if(pbData!=NULL) delete [] pbData;
app.DebugPrintf("DLC version of %d is newer than this build can read (%d)\n", uiVersion, CURRENT_DLC_VERSION_NUM);
return false;
}
if(uiVersion < CURRENT_DLC_VERSION_NUM) if(uiVersion < CURRENT_DLC_VERSION_NUM)
{ {
if(pbData!=NULL) delete [] pbData; if(pbData!=NULL) delete [] pbData;
@@ -557,14 +551,14 @@ DWORD DLCManager::retrievePackIDFromDLCDataFile(const string &path, DLCPack *pac
DWORD packId = 0; DWORD packId = 0;
wstring wPath = convStringToWstring(path); wstring wPath = convStringToWstring(path);
#if (defined _DURANGO || _WINDOWS64) #ifdef _WINDOWS64
string finalPath = StorageManager.GetMountedPath(path.c_str());
if(finalPath.size() == 0) finalPath = path;
HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#elif defined(_DURANGO)
wstring finalPath = StorageManager.GetMountedPath(wPath.c_str()); wstring finalPath = StorageManager.GetMountedPath(wPath.c_str());
if(finalPath.size() == 0) finalPath = wPath; if(finalPath.size() == 0) finalPath = wPath;
#ifdef _DURANGO
HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE file = CreateFile(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#else
HANDLE file = CreateFileW(finalPath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#endif
#else #else
HANDLE file = CreateFile(path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE file = CreateFile(path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#endif #endif
@@ -619,11 +613,6 @@ DWORD DLCManager::retrievePackID(PBYTE pbData, DWORD dwLength, DLCPack *pack)
unsigned int uiVersion=*(unsigned int *)pbData; unsigned int uiVersion=*(unsigned int *)pbData;
uiCurrentByte+=sizeof(int); uiCurrentByte+=sizeof(int);
if(uiVersion > CURRENT_DLC_VERSION_NUM)
{
app.DebugPrintf("DLC version of %d is newer than this build can read (%d)\n", uiVersion, CURRENT_DLC_VERSION_NUM);
return 0;
}
if(uiVersion < CURRENT_DLC_VERSION_NUM) if(uiVersion < CURRENT_DLC_VERSION_NUM)
{ {
app.DebugPrintf("DLC version of %d is too old to be read\n", uiVersion); app.DebugPrintf("DLC version of %d is too old to be read\n", uiVersion);
@@ -464,7 +464,7 @@ void LevelGenerationOptions::loadBaseSaveData()
if(mountIndex > -1) if(mountIndex > -1)
{ {
#if (defined _DURANGO || _WINDOWS64) #ifdef _DURANGO
if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,L"WPACK")!=ERROR_IO_PENDING) if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,L"WPACK")!=ERROR_IO_PENDING)
#else #else
if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,"WPACK")!=ERROR_IO_PENDING) if(StorageManager.MountInstalledDLC(ProfileManager.GetPrimaryPad(),mountIndex,&LevelGenerationOptions::packMounted,this,"WPACK")!=ERROR_IO_PENDING)
@@ -604,7 +604,7 @@ int LevelGenerationOptions::packMounted(LPVOID pParam,int iPad,DWORD dwErr,DWORD
} }
} }
#if (defined _DURANGO || _WINDOWS64) #ifdef _DURANGO
DWORD result = StorageManager.UnmountInstalledDLC(L"WPACK"); DWORD result = StorageManager.UnmountInstalledDLC(L"WPACK");
#else #else
DWORD result = StorageManager.UnmountInstalledDLC("WPACK"); DWORD result = StorageManager.UnmountInstalledDLC("WPACK");
@@ -9,7 +9,7 @@ const wstring LeaderboardManager::filterNames[eNumFilterModes] =
L"Friends", L"MyScore", L"TopRank" L"Friends", L"MyScore", L"TopRank"
}; };
#if defined(__PS3__) && !defined(_CONTENT_PACKAGE) // str1k3r - only PS3 needs this, also this wasnt in the leak? #ifdef __PS3__ // str1k3r - only PS3 needs this, also this wasnt in the leak?
LeaderboardManager *LeaderboardManager::m_instance = NULL; LeaderboardManager *LeaderboardManager::m_instance = NULL;
#endif #endif
@@ -1,7 +1,7 @@
/* /*
base64.cpp and base64.h base64.cpp and base64.h
Copyright (C) 2004-2008 René Nyffenegger Copyright (C) 2004-2008 René Nyffenegger
This source code is provided 'as-is', without any express or implied This source code is provided 'as-is', without any express or implied
warranty. In no event will the author be held liable for any damages warranty. In no event will the author be held liable for any damages
@@ -21,7 +21,7 @@
3. This notice may not be removed or altered from any source distribution. 3. This notice may not be removed or altered from any source distribution.
René Nyffenegger rene.nyffenegger@adp-gmbh.ch René Nyffenegger rene.nyffenegger@adp-gmbh.ch
*/ */
@@ -41,7 +41,7 @@ static inline bool is_base64(unsigned char c) {
} }
// 4J ADDED, // 4J ADDED,
std::string base64_encode(const std::string& str) std::string base64_encode(std::string str)
{ {
return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() ); return base64_encode( reinterpret_cast<const unsigned char*>(str.c_str()), str.length() );
} }
@@ -2,6 +2,6 @@
#include <string> #include <string>
std::string base64_encode(const std::string& str); std::string base64_encode(std::string str);
std::string base64_encode(unsigned char const* , unsigned int len); std::string base64_encode(unsigned char const* , unsigned int len);
std::string base64_decode(std::string const& s); std::string base64_decode(std::string const& s);
@@ -1,171 +1,171 @@
<root> <root>
<data name="IDS_NULL"> <data name="IDS_NULL">
<value>Not Used</value> <value>Not Used</value>
</data> </data>
<data name="IDS_OK"> <data name="IDS_OK">
<value>OK</value> <value>OK</value>
</data> </data>
<data name="IDS_BACK"> <data name="IDS_BACK">
<value>Back</value> <value>Back</value>
</data> </data>
<data name="IDS_CANCEL"> <data name="IDS_CANCEL">
<value>Cancel</value> <value>Cancel</value>
</data> </data>
<data name="IDS_YES"> <data name="IDS_YES">
<value>Yes</value> <value>Yes</value>
</data> </data>
<data name="IDS_NO"> <data name="IDS_NO">
<value>No</value> <value>No</value>
</data> </data>
<data name="IDS_CORRUPTSAVE_TITLE"> <data name="IDS_CORRUPTSAVE_TITLE">
<value>Corrupt Save</value> <value>Corrupt Save</value>
</data> </data>
<data name="IDS_CORRUPTSAVE_TEXT"> <data name="IDS_CORRUPTSAVE_TEXT">
<value>Your save data appears to be corrupt. Create a new save and overwrite the corrupt one?</value> <value>Your save data appears to be corrupt. Create a new save and overwrite the corrupt one?</value>
</data> </data>
<data name="IDS_NOFREESPACE_TITLE"> <data name="IDS_NOFREESPACE_TITLE">
<value>No Free Space</value> <value>No Free Space</value>
</data> </data>
<data name="IDS_NOFREESPACE_TEXT"> <data name="IDS_NOFREESPACE_TEXT">
<value>Your selected storage device doesn't have enough free space to create a game save.</value> <value>Your selected storage device doesn't have enough free space to create a game save.</value>
</data> </data>
<data name="IDS_SELECTAGAIN"> <data name="IDS_SELECTAGAIN">
<value>Select again</value> <value>Select again</value>
</data> </data>
<data name="IDS_PLAYWITHOUTSAVING"> <data name="IDS_PLAYWITHOUTSAVING">
<value>Play without saving</value> <value>Play without saving</value>
</data> </data>
<data name="IDS_CREATEANEWSAVE"> <data name="IDS_CREATEANEWSAVE">
<value>Create a new save</value> <value>Create a new save</value>
</data> </data>
<data name="IDS_OVERWRITESAVE_TITLE"> <data name="IDS_OVERWRITESAVE_TITLE">
<value>Overwrite save?</value> <value>Overwrite save?</value>
</data> </data>
<data name="IDS_OVERWRITESAVE_TEXT"> <data name="IDS_OVERWRITESAVE_TEXT">
<value>Your selected storage device already contains this save. Is it OK to overwrite it?</value> <value>Your selected storage device already contains this save. Is it OK to overwrite it?</value>
</data> </data>
<data name="IDS_OVERWRITESAVE_NO"> <data name="IDS_OVERWRITESAVE_NO">
<value>No - don't overwrite</value> <value>No - don't overwrite</value>
</data> </data>
<data name="IDS_OVERWRITESAVE_YES"> <data name="IDS_OVERWRITESAVE_YES">
<value>Overwrite and save</value> <value>Overwrite and save</value>
</data> </data>
<data name="IDS_FAILED_TO_SAVE_TITLE"> <data name="IDS_FAILED_TO_SAVE_TITLE">
<value>Save failed</value> <value>Save failed</value>
</data> </data>
<data name="IDS_STORAGEDEVICEPROBLEM_TITLE"> <data name="IDS_STORAGEDEVICEPROBLEM_TITLE">
<value>Storage Device Problem</value> <value>Storage Device Problem</value>
</data> </data>
<data name="IDS_FAILED_TO_SAVE_TEXT"> <data name="IDS_FAILED_TO_SAVE_TEXT">
<value>Your storage device is unavailable or has an error</value> <value>Your storage device is unavailable or has an error</value>
</data> </data>
<data name="IDS_FAILED_TO_LOADSAVE_TEXT"> <data name="IDS_FAILED_TO_LOADSAVE_TEXT">
<value>Your storage device is unavailable or has an error. Please select a new storage device.</value> <value>Your storage device is unavailable or has an error. Please select a new storage device.</value>
</data> </data>
<data name="IDS_SELECTANEWDEVICE"> <data name="IDS_SELECTANEWDEVICE">
<value>Select a new storage device</value> <value>Select a new storage device</value>
</data> </data>
<data name="IDS_NODEVICE_TITLE"> <data name="IDS_NODEVICE_TITLE">
<value>No storage device selected</value> <value>No storage device selected</value>
</data> </data>
<data name="IDS_NODEVICE_TEXT"> <data name="IDS_NODEVICE_TEXT">
<value>If you do not select a storage device, game saves will be disabled</value> <value>If you do not select a storage device, game saves will be disabled</value>
</data> </data>
<data name="IDS_NODEVICE_ACCEPT"> <data name="IDS_NODEVICE_ACCEPT">
<value>Select a storage device</value> <value>Select a storage device</value>
</data> </data>
<data name="IDS_NODEVICE_DECLINE"> <data name="IDS_NODEVICE_DECLINE">
<value>Continue without saving</value> <value>Continue without saving</value>
</data> </data>
<data name="IDS_DEVICEGONE_TEXT"> <data name="IDS_DEVICEGONE_TEXT">
<value>Your storage device has been removed. Please select a new one.</value> <value>Your storage device has been removed. Please select a new one.</value>
</data> </data>
<data name="IDS_DEVICEGONE_TITLE"> <data name="IDS_DEVICEGONE_TITLE">
<value>Loading failed</value> <value>Loading failed</value>
</data> </data>
<data name="IDS_KEYBOARDUI_SAVEGAME_TITLE"> <data name="IDS_KEYBOARDUI_SAVEGAME_TITLE">
<value>Name the save</value> <value>Name the save</value>
</data> </data>
<data name="IDS_KEYBOARDUI_SAVEGAME_TEXT"> <data name="IDS_KEYBOARDUI_SAVEGAME_TEXT">
<value>Enter a name for your savegame</value> <value>Enter a name for your savegame</value>
</data> </data>
<data name="IDS_WARNING_ARCADE_TITLE"> <data name="IDS_WARNING_ARCADE_TITLE">
<value>Return to Xbox Dashboard</value> <value>Return to Xbox Dashboard</value>
</data> </data>
<data name="IDS_WARNING_ARCADE_TEXT"> <data name="IDS_WARNING_ARCADE_TEXT">
<value>Are you sure you want to exit the game?</value> <value>Are you sure you want to exit the game?</value>
</data> </data>
<data name="IDS_PRO_RETURNEDTOMENU_TITLE"> <data name="IDS_PRO_RETURNEDTOMENU_TITLE">
<value>Signed out</value> <value>Signed out</value>
</data> </data>
<data name="IDS_PRO_RETURNEDTOTITLESCREEN_TEXT"> <data name="IDS_PRO_RETURNEDTOTITLESCREEN_TEXT">
<value>You have been returned to the title screen because your gamer profile was signed out</value> <value>You have been returned to the title screen because your gamer profile was signed out</value>
</data> </data>
<data name="IDS_PRO_RETURNEDTOMENU_TEXT"> <data name="IDS_PRO_RETURNEDTOMENU_TEXT">
<value>The match has ended because a gamer profile was signed out</value> <value>The match has ended because a gamer profile was signed out</value>
</data> </data>
<data name="IDS_PRO_RETURNEDTOMENU_ACCEPT"> <data name="IDS_PRO_RETURNEDTOMENU_ACCEPT">
<value>Continue playing</value> <value>Continue playing</value>
</data> </data>
<data name="IDS_PRO_NOTONLINE_TITLE"> <data name="IDS_PRO_NOTONLINE_TITLE">
<value>Gamer profile not online</value> <value>Gamer profile not online</value>
</data> </data>
<data name="IDS_PRO_NOTONLINE_TEXT"> <data name="IDS_PRO_NOTONLINE_TEXT">
<value>This game has some features which require an Xbox Live enabled gamer profile, but you are currently offline.</value> <value>This game has some features which require an Xbox Live enabled gamer profile, but you are currently offline.</value>
</data> </data>
<data name="IDS_PRO_XBOXLIVE_NOTIFICATION"> <data name="IDS_PRO_XBOXLIVE_NOTIFICATION">
<value>This feature requires a gamer profile which is signed into Xbox Live.</value> <value>This feature requires a gamer profile which is signed into Xbox Live.</value>
</data> </data>
<data name="IDS_PRO_NOTONLINE_ACCEPT"> <data name="IDS_PRO_NOTONLINE_ACCEPT">
<value>Connect to Xbox Live</value> <value>Connect to Xbox Live</value>
</data> </data>
<data name="IDS_PRO_NOTONLINE_DECLINE"> <data name="IDS_PRO_NOTONLINE_DECLINE">
<value>Continue playing offline</value> <value>Continue playing offline</value>
</data> </data>
<data name="IDS_PRO_ACHIEVEMENTPROBLEM_TITLE"> <data name="IDS_PRO_ACHIEVEMENTPROBLEM_TITLE">
<value>Achievement Award Problem</value> <value>Achievement Award Problem</value>
</data> </data>
<data name="IDS_PRO_ACHIEVEMENTPROBLEM_TEXT"> <data name="IDS_PRO_ACHIEVEMENTPROBLEM_TEXT">
<value> There was a problem accessing your gamer profile. Your achievement could not be awarded at this time.</value> <value> There was a problem accessing your gamer profile. Your achievement could not be awarded at this time.</value>
</data> </data>
<data name="IDS_PRO_NOPROFILE_TITLE"> <data name="IDS_PRO_NOPROFILE_TITLE">
<value>Gamer profile problem</value> <value>Gamer profile problem</value>
</data> </data>
<data name="IDS_PRO_NOPROFILEOPTIONS_TEXT"> <data name="IDS_PRO_NOPROFILEOPTIONS_TEXT">
<value>Saving of settings to gamer profile has failed.</value> <value>Saving of settings to gamer profile has failed.</value>
</data> </data>
<data name="IDS_PRO_GUESTPROFILE_TITLE"> <data name="IDS_PRO_GUESTPROFILE_TITLE">
<value>Guest Gamer Profile</value> <value>Guest Gamer Profile</value>
</data> </data>
<data name="IDS_PRO_GUESTPROFILE_TEXT"> <data name="IDS_PRO_GUESTPROFILE_TEXT">
<value>Guest gamer profile cannot access this feature. Please use a different gamer profile.</value> <value>Guest gamer profile cannot access this feature. Please use a different gamer profile.</value>
</data> </data>
<data name="IDS_STO_SAVING_SHORT"> <data name="IDS_STO_SAVING_SHORT">
<value>Saving…</value> <value>Saving…</value>
</data> </data>
<data name="IDS_STO_SAVING_LONG"> <data name="IDS_STO_SAVING_LONG">
<value>Saving content. Please don't turn off your console.</value> <value>Saving content. Please don't turn off your console.</value>
</data> </data>
<data name="IDS_PRO_UNLOCKGAME_TITLE"> <data name="IDS_PRO_UNLOCKGAME_TITLE">
<value>Unlock Full Game</value> <value>Unlock Full Game</value>
</data> </data>
<data name="IDS_PRO_UNLOCKGAME_TEXT"> <data name="IDS_PRO_UNLOCKGAME_TEXT">
<value>This is the Minecraft trial game. If you had the full game, you would just have earned an achievement! <value>This is the Minecraft trial game. If you had the full game, you would just have earned an achievement!
Unlock the full game to experience the joy of Minecraft and to play with your friends across the globe through Xbox Live. Unlock the full game to experience the joy of Minecraft and to play with your friends across the globe through Xbox Live.
Would you like to unlock the full game?</value> Would you like to unlock the full game?</value>
</data> </data>
<data name="IDS_PRO_PROFILEPROBLEM_TEXT"> <data name="IDS_PRO_PROFILEPROBLEM_TEXT">
<value>You are being returned to the main menu because of a problem reading your profile.</value> <value>You are being returned to the main menu because of a problem reading your profile.</value>
</data> </data>
</root> </root>

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