bedrockplus 0.1.0.dev1__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bedrockplus/__init__.py +95 -0
- bedrockplus/__main__.py +4 -0
- bedrockplus/_assets/Initialize-BedrockPlusServer.ps1 +395 -0
- bedrockplus/_assets/README.md +85 -0
- bedrockplus/_assets/SHA256SUMS +20 -0
- bedrockplus/_assets/Start-BedrockPlus.ps1 +125 -0
- bedrockplus/_assets/THIRD_PARTY_NOTICES.md +26 -0
- bedrockplus/_assets/bedrockplus.exe +0 -0
- bedrockplus/_assets/bedrockplus_bootstrap.dll +0 -0
- bedrockplus/_assets/bedrockplus_plugin_host.dll +0 -0
- bedrockplus/_assets/bedrockplus_plugin_worker.dll +0 -0
- bedrockplus/_assets/bedrockplus_runtime.dll +0 -0
- bedrockplus/_assets/bin/bedrockplus.ps1 +192 -0
- bedrockplus/_assets/compatibility/bds/1.26.51.1/windows-x64.json +24 -0
- bedrockplus/_assets/compatibility/bds/supported-versions.json +14 -0
- bedrockplus/_assets/licenses/microsoft-detours-MIT.txt +23 -0
- bedrockplus/_assets/plugins/README.txt +11 -0
- bedrockplus/_assets/release-manifest.json +34 -0
- bedrockplus/_assets/server/README.txt +10 -0
- bedrockplus/_assets/tools/bppack.py +1865 -0
- bedrockplus/_assets/tools/init_python_plugin.py +140 -0
- bedrockplus/_assets/tools/pack_plugin.py +142 -0
- bedrockplus/_assets/tools/world_packs.py +530 -0
- bedrockplus/api.py +83 -0
- bedrockplus/cli.py +121 -0
- bedrockplus/commands.py +50 -0
- bedrockplus/events.py +138 -0
- bedrockplus/objects.py +413 -0
- bedrockplus/py.typed +1 -0
- bedrockplus-0.1.0.dev1.dist-info/METADATA +41 -0
- bedrockplus-0.1.0.dev1.dist-info/RECORD +36 -0
- bedrockplus-0.1.0.dev1.dist-info/WHEEL +4 -0
- bedrockplus-0.1.0.dev1.dist-info/entry_points.txt +2 -0
- bedrockplus-0.1.0.dev1.dist-info/licenses/THIRD_PARTY_NOTICES.md +26 -0
- bedrockplus-0.1.0.dev1.dist-info/licenses/microsoft-detours-MIT.txt +23 -0
- bedrockplus-0.1.0.dev1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[int]$RunForSeconds = 0,
|
|
4
|
+
[switch]$Plugins,
|
|
5
|
+
[string]$ServerRoot = '',
|
|
6
|
+
[string]$PluginRoot = '',
|
|
7
|
+
[string]$LogRoot = '',
|
|
8
|
+
[string]$PluginCache = ''
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
Set-StrictMode -Version Latest
|
|
12
|
+
$ErrorActionPreference = 'Stop'
|
|
13
|
+
|
|
14
|
+
function Set-HiddenInternalDirectory {
|
|
15
|
+
param([Parameter(Mandatory)][string]$Path)
|
|
16
|
+
|
|
17
|
+
New-Item -ItemType Directory -Force -Path $Path | Out-Null
|
|
18
|
+
$item = Get-Item -LiteralPath $Path -Force
|
|
19
|
+
$item.Attributes = $item.Attributes -bor [IO.FileAttributes]::Hidden
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
$packagedDistribution = Test-Path -LiteralPath (Join-Path $PSScriptRoot 'release-manifest.json') -PathType Leaf
|
|
23
|
+
$launcher = if ($packagedDistribution) {
|
|
24
|
+
Join-Path $PSScriptRoot 'bedrockplus.exe'
|
|
25
|
+
} else {
|
|
26
|
+
Join-Path $PSScriptRoot 'out\build\windows-vs2022-release\src\cli\Release\bedrockplus.exe'
|
|
27
|
+
}
|
|
28
|
+
if (-not (Test-Path -LiteralPath $launcher -PathType Leaf)) {
|
|
29
|
+
throw 'Build the windows-vs2022-release preset first. See docs/operations/first-launch.md.'
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if ([string]::IsNullOrWhiteSpace($ServerRoot)) {
|
|
33
|
+
$ServerRoot = Join-Path $PSScriptRoot 'server'
|
|
34
|
+
}
|
|
35
|
+
$ServerRoot = [IO.Path]::GetFullPath($ServerRoot)
|
|
36
|
+
if (-not (Test-Path -LiteralPath (Join-Path $ServerRoot 'bedrock_server.exe') -PathType Leaf)) {
|
|
37
|
+
throw "The server root does not contain bedrock_server.exe: $ServerRoot"
|
|
38
|
+
}
|
|
39
|
+
if (-not (Test-Path -LiteralPath (Join-Path $ServerRoot 'server.properties') -PathType Leaf)) {
|
|
40
|
+
throw "The server root does not contain server.properties: $ServerRoot"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if ([string]::IsNullOrWhiteSpace($PluginRoot)) {
|
|
44
|
+
$PluginRoot = Join-Path $ServerRoot 'plugins'
|
|
45
|
+
}
|
|
46
|
+
if ([string]::IsNullOrWhiteSpace($LogRoot)) {
|
|
47
|
+
$LogRoot = Join-Path $ServerRoot 'logs'
|
|
48
|
+
}
|
|
49
|
+
if ([string]::IsNullOrWhiteSpace($PluginCache)) {
|
|
50
|
+
$PluginCache = Join-Path $ServerRoot '.bedrockplus\plugin-cache'
|
|
51
|
+
}
|
|
52
|
+
$PluginRoot = [IO.Path]::GetFullPath($PluginRoot)
|
|
53
|
+
$LogRoot = [IO.Path]::GetFullPath($LogRoot)
|
|
54
|
+
$PluginCache = [IO.Path]::GetFullPath($PluginCache)
|
|
55
|
+
|
|
56
|
+
New-Item -ItemType Directory -Force -Path $PluginRoot, $LogRoot | Out-Null
|
|
57
|
+
Set-HiddenInternalDirectory -Path (Join-Path $ServerRoot '.bedrockplus')
|
|
58
|
+
$internalPluginData = Join-Path $ServerRoot '.bedrockplus\plugin-data'
|
|
59
|
+
New-Item -ItemType Directory -Force -Path $internalPluginData | Out-Null
|
|
60
|
+
$legacyPluginData = Join-Path $ServerRoot 'plugin-data'
|
|
61
|
+
if (Test-Path -LiteralPath $legacyPluginData -PathType Container) {
|
|
62
|
+
foreach ($item in Get-ChildItem -LiteralPath $legacyPluginData -Force) {
|
|
63
|
+
$target = Join-Path $internalPluginData $item.Name
|
|
64
|
+
if (Test-Path -LiteralPath $target) {
|
|
65
|
+
throw "Cannot migrate legacy plugin data because '$target' already exists."
|
|
66
|
+
}
|
|
67
|
+
Move-Item -LiteralPath $item.FullName -Destination $internalPluginData
|
|
68
|
+
}
|
|
69
|
+
Remove-Item -LiteralPath $legacyPluginData -Force
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
$launchMode = if ($Plugins) { '--plugins' } else { '--bootstrap-only' }
|
|
73
|
+
$launchArguments = @(
|
|
74
|
+
'start',
|
|
75
|
+
$launchMode,
|
|
76
|
+
'--server-root', $ServerRoot,
|
|
77
|
+
'--log-root', $LogRoot
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
if ($Plugins) {
|
|
81
|
+
$python = if (-not [string]::IsNullOrWhiteSpace($env:BEDROCKPLUS_PYTHON_EXECUTABLE)) {
|
|
82
|
+
[IO.Path]::GetFullPath($env:BEDROCKPLUS_PYTHON_EXECUTABLE)
|
|
83
|
+
} elseif ($packagedDistribution) {
|
|
84
|
+
(Get-Command python -CommandType Application -ErrorAction Stop).Source
|
|
85
|
+
} else {
|
|
86
|
+
Join-Path $PSScriptRoot '.tools\venvs\development\Scripts\python.exe'
|
|
87
|
+
}
|
|
88
|
+
if (-not (Test-Path -LiteralPath $python -PathType Leaf)) {
|
|
89
|
+
throw 'BedrockPlus requires a local Python 3.13 interpreter.'
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
$selectionJson = & $python -I -B (Join-Path $PSScriptRoot 'tools\bppack.py') sync `
|
|
93
|
+
$PluginRoot $PluginCache --json
|
|
94
|
+
if ($LASTEXITCODE -ne 0) {
|
|
95
|
+
throw "Plugin validation failed; BDS was not launched. $selectionJson"
|
|
96
|
+
}
|
|
97
|
+
$selection = $selectionJson | ConvertFrom-Json
|
|
98
|
+
$pythonHome = & $python -I -S -c 'import sys; print(sys.base_prefix)'
|
|
99
|
+
if ($LASTEXITCODE -ne 0 -or -not $selection.ready) {
|
|
100
|
+
throw 'Could not prepare plugins.'
|
|
101
|
+
}
|
|
102
|
+
if ($selection.pruned_sets -and @($selection.pruned_sets).Count -gt 0) {
|
|
103
|
+
Write-Host "Cleaned $(@($selection.pruned_sets).Count) inactive plugin cache set(s)."
|
|
104
|
+
}
|
|
105
|
+
$launchArguments += @('--plugin-cache', $selection.cache_path, '--python-home', $pythonHome)
|
|
106
|
+
|
|
107
|
+
$bindingJson = & $python -I -B (Join-Path $PSScriptRoot 'tools\world_packs.py') bind `
|
|
108
|
+
$ServerRoot $selection.cache_path --offline 2>&1
|
|
109
|
+
if ($LASTEXITCODE -ne 0) {
|
|
110
|
+
throw "Bundled-pack binding failed; BDS was not launched. $bindingJson"
|
|
111
|
+
}
|
|
112
|
+
$binding = $bindingJson | ConvertFrom-Json
|
|
113
|
+
if ($binding.binding_path) {
|
|
114
|
+
$launchArguments += @('--pack-binding', $binding.binding_path)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if ($RunForSeconds -ne 0) {
|
|
119
|
+
$launchArguments += @('--run-for-seconds', "$RunForSeconds")
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
& $launcher @launchArguments
|
|
123
|
+
if ($LASTEXITCODE -ne 0) {
|
|
124
|
+
throw "BedrockPlus exited with code $LASTEXITCODE. See $LogRoot."
|
|
125
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
## Microsoft Detours
|
|
4
|
+
|
|
5
|
+
- Version: 4.0.1, commit `e4bfd6b03e50de46b47abfbd1e46b384f0c5f833`
|
|
6
|
+
- Upstream: https://github.com/microsoft/Detours
|
|
7
|
+
- License: MIT
|
|
8
|
+
- Use: statically linked into `bedrockplus_plugin_worker.dll`
|
|
9
|
+
|
|
10
|
+
The complete required MIT license text is distributed in
|
|
11
|
+
`licenses/microsoft-detours-MIT.txt`.
|
|
12
|
+
|
|
13
|
+
## CPython
|
|
14
|
+
|
|
15
|
+
- Supported runtime: CPython 3.13 x64
|
|
16
|
+
- Upstream: https://www.python.org/ and https://github.com/python/cpython
|
|
17
|
+
- License: Python Software Foundation License Version 2 with CPython's
|
|
18
|
+
additional historical notices
|
|
19
|
+
- Use: supplied by the operator's Python installation and loaded by the
|
|
20
|
+
BedrockPlus Python plugin host
|
|
21
|
+
|
|
22
|
+
BedrockPlus does not bundle CPython in this release. If that policy changes,
|
|
23
|
+
the exact CPython license and component notices must be added to the release.
|
|
24
|
+
|
|
25
|
+
This file does not replace a complete license text when redistribution terms
|
|
26
|
+
require that text to accompany a source or binary distribution.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
[CmdletBinding()]
|
|
2
|
+
param(
|
|
3
|
+
[Parameter(Position = 0)]
|
|
4
|
+
[string]$Command = '',
|
|
5
|
+
[Parameter(Position = 1)]
|
|
6
|
+
[string]$Path = '.',
|
|
7
|
+
[Parameter(Position = 2)]
|
|
8
|
+
[string]$Action = '',
|
|
9
|
+
[Parameter(Position = 3)]
|
|
10
|
+
[string]$Name = '',
|
|
11
|
+
[string]$ServerRoot = '',
|
|
12
|
+
[string]$Output = '',
|
|
13
|
+
[int]$RunForSeconds = 0,
|
|
14
|
+
[switch]$CoreOnly,
|
|
15
|
+
[switch]$Yes,
|
|
16
|
+
[string]$BdsVersion = '',
|
|
17
|
+
[Alias('h')]
|
|
18
|
+
[switch]$Help,
|
|
19
|
+
[Alias('version')]
|
|
20
|
+
[switch]$ShowVersion
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
Set-StrictMode -Version Latest
|
|
24
|
+
$ErrorActionPreference = 'Stop'
|
|
25
|
+
|
|
26
|
+
$projectRoot = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..'))
|
|
27
|
+
$packagedDistribution = Test-Path -LiteralPath (Join-Path $projectRoot 'release-manifest.json') -PathType Leaf
|
|
28
|
+
$startScript = Join-Path $projectRoot 'Start-BedrockPlus.ps1'
|
|
29
|
+
$initializeScript = Join-Path $projectRoot 'Initialize-BedrockPlusServer.ps1'
|
|
30
|
+
$launcher = if ($packagedDistribution) {
|
|
31
|
+
Join-Path $projectRoot 'bedrockplus.exe'
|
|
32
|
+
} else {
|
|
33
|
+
Join-Path $projectRoot 'out\build\windows-vs2022-release\src\cli\Release\bedrockplus.exe'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function Get-BedrockPlusPython {
|
|
37
|
+
if (-not [string]::IsNullOrWhiteSpace($env:BEDROCKPLUS_PYTHON_EXECUTABLE)) {
|
|
38
|
+
$candidate = [IO.Path]::GetFullPath($env:BEDROCKPLUS_PYTHON_EXECUTABLE)
|
|
39
|
+
} elseif ($packagedDistribution) {
|
|
40
|
+
$candidate = (Get-Command python -CommandType Application -ErrorAction Stop).Source
|
|
41
|
+
} else {
|
|
42
|
+
$candidate = Join-Path $projectRoot '.tools\venvs\development\Scripts\python.exe'
|
|
43
|
+
}
|
|
44
|
+
if (-not (Test-Path -LiteralPath $candidate -PathType Leaf)) {
|
|
45
|
+
throw 'BedrockPlus requires a local Python 3.13 interpreter.'
|
|
46
|
+
}
|
|
47
|
+
$version = & $candidate -I -S -c 'import sys; print(sys.version_info.major, sys.version_info.minor, sep=chr(46))'
|
|
48
|
+
if ($LASTEXITCODE -ne 0 -or $version.Trim() -ne '3.13') {
|
|
49
|
+
throw 'BedrockPlus requires Python 3.13.x.'
|
|
50
|
+
}
|
|
51
|
+
return $candidate
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function Show-Help {
|
|
55
|
+
@'
|
|
56
|
+
BedrockPlus local server command
|
|
57
|
+
|
|
58
|
+
Usage:
|
|
59
|
+
bedrockplus Initialize here when empty, then start
|
|
60
|
+
bedrockplus init [-BdsVersion VERSION] [-Yes]
|
|
61
|
+
bedrockplus plugin python init <NAME>
|
|
62
|
+
bedrockplus plugin pack [PLUGIN_FOLDER] [-Output FILE]
|
|
63
|
+
bedrockplus start [-CoreOnly] [-RunForSeconds N]
|
|
64
|
+
bedrockplus list-versions
|
|
65
|
+
bedrockplus doctor
|
|
66
|
+
bedrockplus update Check the local compatible-version manifest
|
|
67
|
+
bedrockplus --version
|
|
68
|
+
|
|
69
|
+
The current directory is the default server root. Put plugin folders or
|
|
70
|
+
.bppack files in plugins\.
|
|
71
|
+
'@
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if ($Help -or $Command -in @('help', '--help', '-h')) {
|
|
75
|
+
Show-Help
|
|
76
|
+
exit 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if ($ShowVersion -or $Command -in @('--version', '-version')) {
|
|
80
|
+
if (-not (Test-Path -LiteralPath $launcher -PathType Leaf)) {
|
|
81
|
+
throw 'The local BedrockPlus launcher has not been built yet.'
|
|
82
|
+
}
|
|
83
|
+
& $launcher --version
|
|
84
|
+
exit $LASTEXITCODE
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if ([string]::IsNullOrWhiteSpace($ServerRoot)) {
|
|
88
|
+
$ServerRoot = (Get-Location).Path
|
|
89
|
+
}
|
|
90
|
+
$ServerRoot = [IO.Path]::GetFullPath($ServerRoot)
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
if ($Command -eq 'plugin') {
|
|
94
|
+
if ($Path -eq 'python' -and $Action -eq 'init' -and -not [string]::IsNullOrWhiteSpace($Name)) {
|
|
95
|
+
$python = Get-BedrockPlusPython
|
|
96
|
+
$initializer = Join-Path $projectRoot 'tools\init_python_plugin.py'
|
|
97
|
+
if (-not (Test-Path -LiteralPath $python -PathType Leaf)) {
|
|
98
|
+
throw 'BedrockPlus plugin Python is missing. Bootstrap the project-local tools first.'
|
|
99
|
+
}
|
|
100
|
+
& $python -I -B $initializer $Name --parent (Get-Location).Path
|
|
101
|
+
exit $LASTEXITCODE
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if ($Path -eq 'pack' -and [string]::IsNullOrWhiteSpace($Name)) {
|
|
105
|
+
$python = Get-BedrockPlusPython
|
|
106
|
+
$packer = Join-Path $projectRoot 'tools\pack_plugin.py'
|
|
107
|
+
if (-not (Test-Path -LiteralPath $python -PathType Leaf)) {
|
|
108
|
+
throw 'BedrockPlus plugin packaging Python is missing. Bootstrap the project-local tools first.'
|
|
109
|
+
}
|
|
110
|
+
$pluginFolder = if ([string]::IsNullOrWhiteSpace($Action)) { '.' } else { $Action }
|
|
111
|
+
$packArguments = @('-I', '-B', $packer, $pluginFolder)
|
|
112
|
+
if (-not [string]::IsNullOrWhiteSpace($Output)) {
|
|
113
|
+
$packArguments += @('--output', $Output)
|
|
114
|
+
}
|
|
115
|
+
& $python @packArguments
|
|
116
|
+
exit $LASTEXITCODE
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
throw "Usage:`n bedrockplus plugin python init <NAME>`n bedrockplus plugin pack [PLUGIN_FOLDER] [-Output FILE]"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if ($Command -eq 'pack') {
|
|
123
|
+
throw "Plugin packaging is a plugin command. Use: bedrockplus plugin pack [PLUGIN_FOLDER]"
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if ($Command -eq 'list-versions') {
|
|
127
|
+
& $initializeScript -ListVersions
|
|
128
|
+
exit 0
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if ($Command -eq 'init') {
|
|
132
|
+
& $initializeScript -DestinationRoot $ServerRoot -BdsVersion $BdsVersion -Yes:$Yes
|
|
133
|
+
exit 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if ($Command -eq 'doctor') {
|
|
137
|
+
if (-not (Test-Path -LiteralPath $launcher -PathType Leaf)) {
|
|
138
|
+
throw 'The local BedrockPlus launcher has not been built yet.'
|
|
139
|
+
}
|
|
140
|
+
& $launcher doctor --server-root $ServerRoot --log-root (Join-Path $ServerRoot 'logs')
|
|
141
|
+
exit $LASTEXITCODE
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if ($Command -eq 'update') {
|
|
145
|
+
$instancePath = Join-Path $ServerRoot 'bedrockplus.instance.json'
|
|
146
|
+
if (-not (Test-Path -LiteralPath $instancePath -PathType Leaf)) {
|
|
147
|
+
throw "No initialized BedrockPlus instance exists in '$ServerRoot'."
|
|
148
|
+
}
|
|
149
|
+
$instance = Get-Content -LiteralPath $instancePath -Raw | ConvertFrom-Json
|
|
150
|
+
$manifestPath = Join-Path $projectRoot 'compatibility\bds\supported-versions.json'
|
|
151
|
+
$manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json
|
|
152
|
+
$installed = [string]$instance.bds_version
|
|
153
|
+
$supported = @($manifest.versions | Where-Object { $_.version -eq $installed })
|
|
154
|
+
if ($supported.Count -ne 1) {
|
|
155
|
+
throw "Installed BDS $installed is not supported by this BedrockPlus build."
|
|
156
|
+
}
|
|
157
|
+
if ($installed -eq [string]$manifest.default_version) {
|
|
158
|
+
Write-Host "BDS $installed is the current compatible version for this local BedrockPlus build."
|
|
159
|
+
} else {
|
|
160
|
+
Write-Host "Compatible BDS $($manifest.default_version) is available. Automatic in-place replacement remains locked until world-safe rollback is implemented."
|
|
161
|
+
}
|
|
162
|
+
Write-Host 'BedrockPlus product updates are local-build-only until a signed public release feed exists.'
|
|
163
|
+
exit 0
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if ($Command -notin @('', 'start')) {
|
|
167
|
+
throw "Unknown BedrockPlus command '$Command'. Run 'bedrockplus help'."
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (-not (Test-Path -LiteralPath (Join-Path $ServerRoot 'bedrock_server.exe') -PathType Leaf)) {
|
|
171
|
+
if ($Command -eq 'start') {
|
|
172
|
+
throw "No BedrockPlus server exists in '$ServerRoot'. Run 'bedrockplus init'."
|
|
173
|
+
}
|
|
174
|
+
& $initializeScript -DestinationRoot $ServerRoot -BdsVersion $BdsVersion -Yes:$Yes
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
& $startScript `
|
|
178
|
+
-ServerRoot $ServerRoot `
|
|
179
|
+
-RunForSeconds $RunForSeconds `
|
|
180
|
+
-Plugins:(-not $CoreOnly)
|
|
181
|
+
exit $LASTEXITCODE
|
|
182
|
+
} catch {
|
|
183
|
+
$message = $_.Exception.Message
|
|
184
|
+
if ($message -like 'DestinationRoot must be empty except for the managed Downloads cache*') {
|
|
185
|
+
Write-Warning "BedrockPlus cannot initialize the current folder because it already contains files."
|
|
186
|
+
Write-Host "Create or open an empty folder, then run 'bedrockplus' again."
|
|
187
|
+
Write-Host "Your existing files were not changed: $ServerRoot"
|
|
188
|
+
exit 2
|
|
189
|
+
}
|
|
190
|
+
Write-Warning "BedrockPlus could not continue: $message"
|
|
191
|
+
exit 1
|
|
192
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"bedrock_dedicated_server": {
|
|
4
|
+
"version": "1.26.51.1",
|
|
5
|
+
"channel": "stable",
|
|
6
|
+
"platform": "windows-x64",
|
|
7
|
+
"executable": "bedrock_server.exe",
|
|
8
|
+
"size_bytes": 223222096,
|
|
9
|
+
"sha256": "76d547f82e02c18d0986c30b47132c9cc4171d0f2df1c00649e50ff35788b321",
|
|
10
|
+
"pe_identity": {
|
|
11
|
+
"machine": 34404,
|
|
12
|
+
"timestamp": 1789165875,
|
|
13
|
+
"preferred_image_base": 5368709120,
|
|
14
|
+
"image_size": 225673216,
|
|
15
|
+
"entrypoint_rva": 173646512,
|
|
16
|
+
"checksum": 223271493
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"bedrockplus": {
|
|
20
|
+
"support_state": "preview",
|
|
21
|
+
"plugin_api_version": 1,
|
|
22
|
+
"notes": "Exact BDS build supported by this BedrockPlus preview."
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format_version": 1,
|
|
3
|
+
"default_version": "1.26.51.1",
|
|
4
|
+
"versions": [
|
|
5
|
+
{
|
|
6
|
+
"version": "1.26.51.1",
|
|
7
|
+
"channel": "stable",
|
|
8
|
+
"platform": "windows-x64",
|
|
9
|
+
"download_url": "https://www.minecraft.net/bedrockdedicatedserver/bin-win/bedrock-server-1.26.51.1.zip",
|
|
10
|
+
"archive_sha256": "a1c1ebefde3036223234179f7c1eab4b445b4727f0482a0554818c9bcaf8e4a5",
|
|
11
|
+
"compatibility_profile": "1.26.51.1/windows-x64.json"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Copyright (c) Microsoft Corporation
|
|
2
|
+
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
MIT License
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
8
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
9
|
+
the Software without restriction, including without limitation the rights to
|
|
10
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
11
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
12
|
+
so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
copies or substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
SOFTWARE.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
BedrockPlus plugin inbox
|
|
2
|
+
|
|
3
|
+
Place a validated .bppack file or one unpacked plugin folder in this directory,
|
|
4
|
+
then start BedrockPlus. Do not install both forms of the same plugin ID at once.
|
|
5
|
+
|
|
6
|
+
Python plugins require 64-bit Python 3.13. Their declared third-party packages
|
|
7
|
+
must be prepared inside the .bppack with `bedrockplus plugin pack`; BedrockPlus
|
|
8
|
+
does not modify global Python packages while starting the server.
|
|
9
|
+
|
|
10
|
+
Installed package contents and private plugin data are maintained under the
|
|
11
|
+
server's hidden .bedrockplus directory. Do not edit those internal files.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"product": "BedrockPlus",
|
|
4
|
+
"version": "0.1.0-dev.1",
|
|
5
|
+
"platform": "windows-x64",
|
|
6
|
+
"configuration": "Release",
|
|
7
|
+
"target_bds": {
|
|
8
|
+
"version": "1.26.51.1",
|
|
9
|
+
"size_bytes": 223222096,
|
|
10
|
+
"sha256": "76d547f82e02c18d0986c30b47132c9cc4171d0f2df1c00649e50ff35788b321",
|
|
11
|
+
"bundled": false
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
{"path": "Initialize-BedrockPlusServer.ps1", "role": "server-initializer", "size_bytes": 16938, "sha256": "21b26e40e80158a29915435597c1e5cd507ffa505203a48f27f548212e2cf477"},
|
|
15
|
+
{"path": "README.md", "role": "documentation", "size_bytes": 3353, "sha256": "337a506531315df1960cd422bf5ba6242e6d56349d52c6d03d7764f7f58487ae"},
|
|
16
|
+
{"path": "Start-BedrockPlus.ps1", "role": "server-launcher", "size_bytes": 4918, "sha256": "30d710f7a7a008bf95d051d59514f7b15e737f27ca15a9a053f08b7fcd6f2091"},
|
|
17
|
+
{"path": "THIRD_PARTY_NOTICES.md", "role": "notices", "size_bytes": 966, "sha256": "30cc67398bd5edf60256d54cad96abac79c35d8fb1dbbefaf1148c6cd2297f7f"},
|
|
18
|
+
{"path": "bedrockplus.exe", "role": "launcher", "size_bytes": 619520, "sha256": "f77ce2bfa371e75a8f3429c4468ea29dae634e8a57a820c695df579ecbcb16d8"},
|
|
19
|
+
{"path": "bedrockplus_bootstrap.dll", "role": "bootstrap", "size_bytes": 139264, "sha256": "66c97116e32d1aa903eff8ea84794d52f87e9f29eb9e54c2d9526c533174a314"},
|
|
20
|
+
{"path": "bedrockplus_plugin_host.dll", "role": "plugin-host", "size_bytes": 198656, "sha256": "54a7cd58f4ec4ade088c1d441e304d16d6ea9fad0ae7844b12d20efb219164c7"},
|
|
21
|
+
{"path": "bedrockplus_plugin_worker.dll", "role": "plugin-worker", "size_bytes": 1275392, "sha256": "85bf9440f7b831348d69415ec34a744303104e7a6c201f582e36b83cafa1b8f8"},
|
|
22
|
+
{"path": "bedrockplus_runtime.dll", "role": "runtime", "size_bytes": 141824, "sha256": "54dec12091e8189cbe1c4b2a229732dfe733a9f7903f3659f73c9af8b0dc9d63"},
|
|
23
|
+
{"path": "bin/bedrockplus.ps1", "role": "command-wrapper", "size_bytes": 7585, "sha256": "526f5d583a52bd0401453652e18e972674e36e59af504958648a62d3560112b8"},
|
|
24
|
+
{"path": "compatibility/bds/1.26.51.1/windows-x64.json", "role": "compatibility-profile", "size_bytes": 671, "sha256": "cd2116d1469e669219278c682aa04ae13316229c7f81c404b87b397286f96ae1"},
|
|
25
|
+
{"path": "compatibility/bds/supported-versions.json", "role": "supported-bds-versions", "size_bytes": 446, "sha256": "a4de32d6b8a41436df3f8e80a510f78219c64dc45fdbe0e0bd7122e0e927d274"},
|
|
26
|
+
{"path": "licenses/microsoft-detours-MIT.txt", "role": "third-party-license", "size_bytes": 1095, "sha256": "16e3c9cdb4fa14a8627bc4b5ef0237773a79c3ad1d012c288f37e29573e116cc"},
|
|
27
|
+
{"path": "plugins/README.txt", "role": "plugin-directory-instructions", "size_bytes": 564, "sha256": "9b4d42a12794e6c0df73785ccd2e5f97c784c3c419f9ad2d503ce5f3506064b6"},
|
|
28
|
+
{"path": "server/README.txt", "role": "server-directory-instructions", "size_bytes": 538, "sha256": "37f068a582e198da3632dbf78a07cfd2271472beddc4f9dce6c3b818410a76eb"},
|
|
29
|
+
{"path": "tools/bppack.py", "role": "plugin-package-engine", "size_bytes": 82264, "sha256": "e8b893d568602ae09814a08156e59bad060b7d797b59f7966eee6a229ea5f38f"},
|
|
30
|
+
{"path": "tools/init_python_plugin.py", "role": "plugin-project-initializer", "size_bytes": 4293, "sha256": "9f0eee45ef8d73c2d2ede002b2245892270fc9d70b8359bf2bedee136abf3f63"},
|
|
31
|
+
{"path": "tools/pack_plugin.py", "role": "plugin-package-command", "size_bytes": 5193, "sha256": "db4fdf82921e39763f6a024bdf9d27fa0eea92edf3cf6946377c832635b8712b"},
|
|
32
|
+
{"path": "tools/world_packs.py", "role": "world-pack-installer", "size_bytes": 27312, "sha256": "c0508000cb545ed1735032609729eeb99ea64a89ac4dc2fc7380a8bc349c9cfb"}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
This directory contains one BedrockPlus server instance.
|
|
2
|
+
|
|
3
|
+
BedrockPlus does not redistribute Minecraft Bedrock Dedicated Server. Use the
|
|
4
|
+
bedrockplus command in an empty server directory to download the supported BDS
|
|
5
|
+
version from the official source, verify it, retain its ZIP under Downloads,
|
|
6
|
+
and create the complete server layout.
|
|
7
|
+
|
|
8
|
+
Place folder plugins or .bppack files in plugins, then run bedrockplus from the
|
|
9
|
+
server directory. Type stop for graceful shutdown. BedrockPlus 0.1.0-dev.1 was
|
|
10
|
+
created by Turkmen and supports BDS 1.26.51.1.
|