├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ ├── automerge.yml │ ├── build.yml │ └── phpstan.yml ├── .gitignore ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── phpstan.neon.dist ├── plugin.yml └── src └── muqsit └── vanillagenerator ├── Loader.php └── generator └── OverworldGenerator.php /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org/ 2 | root = yes 3 | 4 | [*] 5 | indent_size = 4 6 | indent_style = tab 7 | 8 | [*.yml] 9 | indent_size = 2 10 | indent_style = space 11 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | - package-ecosystem: "composer" 8 | directory: "/" 9 | schedule: 10 | interval: "daily" -------------------------------------------------------------------------------- /.github/workflows/automerge.yml: -------------------------------------------------------------------------------- 1 | name: Auto Merge Dependabot 2 | 3 | on: 4 | pull_request: 5 | types: [assigned, opened, synchronize, reopened] 6 | jobs: 7 | automerge: 8 | runs-on: ubuntu-latest 9 | permissions: write-all 10 | steps: 11 | - id: automerge 12 | name: automerge 13 | uses: pascalgn/automerge-action@v0.15.6 14 | env: 15 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 16 | MERGE_DELETE_BRANCH: true 17 | MERGE_FILTER_AUTHOR: dependabot[bot] 18 | MERGE_LABELS: '' 19 | MERGE_METHOD: squash -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: push 4 | 5 | jobs: 6 | build: 7 | name: Phar building 8 | runs-on: ubuntu-latest 9 | if: "contains(github.event.head_commit.message, '[Build]')" 10 | 11 | steps: 12 | - name: Startup 13 | uses: actions/checkout@v4 14 | - name: Download PHP Release 15 | uses: dsaltares/fetch-gh-release-asset@1.1.1 16 | with: 17 | file: PHP-8.3-Linux-x86_64-PM5.tar.gz 18 | repo: NetherGamesMC/php-build-scripts 19 | version: "tags/pm5-php-8.3-latest" 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | - name: Unpack PHP Release 22 | run: tar -xzvf PHP-8.3-Linux-x86_64-PM5.tar.gz 23 | - name: Download pharbuilder-rs 24 | uses: dsaltares/fetch-gh-release-asset@1.1.1 25 | with: 26 | file: pharbuilder 27 | repo: NetherGamesMC/pharbuilder-rs 28 | token: ${{ secrets.ng_token }} 29 | - name: Build 30 | run: | 31 | echo Building... 32 | sudo chmod +x pharbuilder 33 | ./pharbuilder -i . -o ./VanillaGenerator.phar 34 | echo Build completed! 35 | - name: Upload 36 | uses: actions/upload-artifact@v4 37 | with: 38 | name: VanillaGenerator 39 | path: VanillaGenerator.phar 40 | -------------------------------------------------------------------------------- /.github/workflows/phpstan.yml: -------------------------------------------------------------------------------- 1 | name: PHPStan CI 2 | 3 | on: push 4 | 5 | jobs: 6 | phpstan: 7 | name: PHPStan Analysis 8 | runs-on: ubuntu-latest 9 | if: "!contains(github.event.head_commit.message, '[ci skip]')" 10 | steps: 11 | - uses: actions/checkout@v2.4.0 12 | - name: Download PHP Release 13 | uses: dsaltares/fetch-gh-release-asset@0.06 14 | with: 15 | file: Linux.zip 16 | repo: NetherGamesMC/php-build-scripts 17 | version: "tags/8.2-pm5" 18 | token: ${{ secrets.GITHUB_TOKEN }} 19 | - name: Unpack PHP Release 20 | run: unzip Linux.zip && tar -xzvf PHP_Linux-x86_64.tar.gz 21 | - name: Checkout PharBuilder 22 | uses: actions/checkout@v2.4.0 23 | with: 24 | repository: NetherGamesMC/PharBuilder 25 | token: ${{ secrets.ng_token }} 26 | path: PharBuilder 27 | - name: Download Composer 28 | run: curl -o composer.phar "https://getcomposer.org/composer-stable.phar" 29 | - name: Install Composer dependencies 30 | run: ./bin/php7/bin/php composer.phar install --prefer-dist --no-interaction 31 | - name: Run PHPStan 32 | run: ./bin/php7/bin/php vendor/bin/phpstan.phar analyze --no-progress 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | vendor/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Glowstone Copyright (C) 2015-2019 The Glowstone Project. 2 | Glowstone Copyright (C) 2011-2014 Tad Hardesty. 3 | Lightstone Copyright (C) 2010-2011 Graham Edgecombe. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VanillaGenerator 2 | 3 | **This fork requires the [ext-vanillagenerator](https://github.com/NetherGamesMC/extnoise) extension.** 4 | 5 | This is a port of [GlowstoneMC](https://github.com/GlowstoneMC/Glowstone)'s world generator. 6 | VanillaGenerator will register two world generator types when it loads — `vanilla_overworld` and `vanilla_nether`. Set the generator type of your world to any one of these to try them out. 7 | This can be done directly from `pocketmine.yml` like so: 8 | ```yaml 9 | worlds: 10 | world: 11 | generator: vanilla_overworld # sets generator type of the world with folder name "world" to "vanilla_generator" 12 | nether: 13 | generator: vanilla_nether 14 | ``` 15 | You _may_ be required to delete your existing world for the generator type to change. 16 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nethergamesmc/vanillagenerator", 3 | "description": "GlowstoneMC's generator ported to PocketMine-MP", 4 | "license": "MIT", 5 | "type": "project", 6 | "require": { 7 | "php": "^8.1", 8 | "ext-vanillagenerator": "^2.1.1" 9 | }, 10 | "require-dev": { 11 | "phpstan/phpstan": "1.2.0", 12 | "pocketmine/pocketmine-mp": "^5.3.1" 13 | }, 14 | "minimum-stability": "dev" 15 | } -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "c454a7728d8780b1d2b74ecc05420392", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "adhocore/json-comment", 12 | "version": "1.2.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/adhocore/php-json-comment.git", 16 | "reference": "651023f9fe52e9efa2198cbaf6e481d1968e2377" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/adhocore/php-json-comment/zipball/651023f9fe52e9efa2198cbaf6e481d1968e2377", 21 | "reference": "651023f9fe52e9efa2198cbaf6e481d1968e2377", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-ctype": "*", 26 | "php": ">=7.0" 27 | }, 28 | "require-dev": { 29 | "phpunit/phpunit": "^6.5 || ^7.5 || ^8.5" 30 | }, 31 | "type": "library", 32 | "autoload": { 33 | "psr-4": { 34 | "Ahc\\Json\\": "src/" 35 | } 36 | }, 37 | "notification-url": "https://packagist.org/downloads/", 38 | "license": [ 39 | "MIT" 40 | ], 41 | "authors": [ 42 | { 43 | "name": "Jitendra Adhikari", 44 | "email": "jiten.adhikary@gmail.com" 45 | } 46 | ], 47 | "description": "Lightweight JSON comment stripper library for PHP", 48 | "keywords": [ 49 | "comment", 50 | "json", 51 | "strip-comment" 52 | ], 53 | "support": { 54 | "issues": "https://github.com/adhocore/php-json-comment/issues", 55 | "source": "https://github.com/adhocore/php-json-comment/tree/1.2.1" 56 | }, 57 | "funding": [ 58 | { 59 | "url": "https://paypal.me/ji10", 60 | "type": "custom" 61 | }, 62 | { 63 | "url": "https://github.com/adhocore", 64 | "type": "github" 65 | } 66 | ], 67 | "time": "2022-10-02T11:22:07+00:00" 68 | }, 69 | { 70 | "name": "brick/math", 71 | "version": "0.12.3", 72 | "source": { 73 | "type": "git", 74 | "url": "https://github.com/brick/math.git", 75 | "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" 76 | }, 77 | "dist": { 78 | "type": "zip", 79 | "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", 80 | "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", 81 | "shasum": "" 82 | }, 83 | "require": { 84 | "php": "^8.1" 85 | }, 86 | "require-dev": { 87 | "php-coveralls/php-coveralls": "^2.2", 88 | "phpunit/phpunit": "^10.1", 89 | "vimeo/psalm": "6.8.8" 90 | }, 91 | "type": "library", 92 | "autoload": { 93 | "psr-4": { 94 | "Brick\\Math\\": "src/" 95 | } 96 | }, 97 | "notification-url": "https://packagist.org/downloads/", 98 | "license": [ 99 | "MIT" 100 | ], 101 | "description": "Arbitrary-precision arithmetic library", 102 | "keywords": [ 103 | "Arbitrary-precision", 104 | "BigInteger", 105 | "BigRational", 106 | "arithmetic", 107 | "bigdecimal", 108 | "bignum", 109 | "bignumber", 110 | "brick", 111 | "decimal", 112 | "integer", 113 | "math", 114 | "mathematics", 115 | "rational" 116 | ], 117 | "support": { 118 | "issues": "https://github.com/brick/math/issues", 119 | "source": "https://github.com/brick/math/tree/0.12.3" 120 | }, 121 | "funding": [ 122 | { 123 | "url": "https://github.com/BenMorel", 124 | "type": "github" 125 | } 126 | ], 127 | "time": "2025-02-28T13:11:00+00:00" 128 | }, 129 | { 130 | "name": "netresearch/jsonmapper", 131 | "version": "v5.0.0", 132 | "source": { 133 | "type": "git", 134 | "url": "https://github.com/cweiske/jsonmapper.git", 135 | "reference": "8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c" 136 | }, 137 | "dist": { 138 | "type": "zip", 139 | "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c", 140 | "reference": "8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c", 141 | "shasum": "" 142 | }, 143 | "require": { 144 | "ext-json": "*", 145 | "ext-pcre": "*", 146 | "ext-reflection": "*", 147 | "ext-spl": "*", 148 | "php": ">=7.1" 149 | }, 150 | "require-dev": { 151 | "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", 152 | "squizlabs/php_codesniffer": "~3.5" 153 | }, 154 | "type": "library", 155 | "autoload": { 156 | "psr-0": { 157 | "JsonMapper": "src/" 158 | } 159 | }, 160 | "notification-url": "https://packagist.org/downloads/", 161 | "license": [ 162 | "OSL-3.0" 163 | ], 164 | "authors": [ 165 | { 166 | "name": "Christian Weiske", 167 | "email": "cweiske@cweiske.de", 168 | "homepage": "http://github.com/cweiske/jsonmapper/", 169 | "role": "Developer" 170 | } 171 | ], 172 | "description": "Map nested JSON structures onto PHP classes", 173 | "support": { 174 | "email": "cweiske@cweiske.de", 175 | "issues": "https://github.com/cweiske/jsonmapper/issues", 176 | "source": "https://github.com/cweiske/jsonmapper/tree/v5.0.0" 177 | }, 178 | "time": "2024-09-08T10:20:00+00:00" 179 | }, 180 | { 181 | "name": "phpstan/phpstan", 182 | "version": "1.2.0", 183 | "source": { 184 | "type": "git", 185 | "url": "https://github.com/phpstan/phpstan.git", 186 | "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee" 187 | }, 188 | "dist": { 189 | "type": "zip", 190 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", 191 | "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", 192 | "shasum": "" 193 | }, 194 | "require": { 195 | "php": "^7.1|^8.0" 196 | }, 197 | "conflict": { 198 | "phpstan/phpstan-shim": "*" 199 | }, 200 | "bin": [ 201 | "phpstan", 202 | "phpstan.phar" 203 | ], 204 | "type": "library", 205 | "extra": { 206 | "branch-alias": { 207 | "dev-master": "1.2-dev" 208 | } 209 | }, 210 | "autoload": { 211 | "files": [ 212 | "bootstrap.php" 213 | ] 214 | }, 215 | "notification-url": "https://packagist.org/downloads/", 216 | "license": [ 217 | "MIT" 218 | ], 219 | "description": "PHPStan - PHP Static Analysis Tool", 220 | "support": { 221 | "issues": "https://github.com/phpstan/phpstan/issues", 222 | "source": "https://github.com/phpstan/phpstan/tree/1.2.0" 223 | }, 224 | "funding": [ 225 | { 226 | "url": "https://github.com/ondrejmirtes", 227 | "type": "github" 228 | }, 229 | { 230 | "url": "https://github.com/phpstan", 231 | "type": "github" 232 | }, 233 | { 234 | "url": "https://www.patreon.com/phpstan", 235 | "type": "patreon" 236 | }, 237 | { 238 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", 239 | "type": "tidelift" 240 | } 241 | ], 242 | "time": "2021-11-18T14:09:01+00:00" 243 | }, 244 | { 245 | "name": "pocketmine/bedrock-block-upgrade-schema", 246 | "version": "5.1.0", 247 | "source": { 248 | "type": "git", 249 | "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", 250 | "reference": "2218512e4b91f5bfd09ef55f7a4c4b04e169e41a" 251 | }, 252 | "dist": { 253 | "type": "zip", 254 | "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/2218512e4b91f5bfd09ef55f7a4c4b04e169e41a", 255 | "reference": "2218512e4b91f5bfd09ef55f7a4c4b04e169e41a", 256 | "shasum": "" 257 | }, 258 | "type": "library", 259 | "notification-url": "https://packagist.org/downloads/", 260 | "license": [ 261 | "CC0-1.0" 262 | ], 263 | "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", 264 | "support": { 265 | "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", 266 | "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/5.1.0" 267 | }, 268 | "time": "2025-02-11T17:41:44+00:00" 269 | }, 270 | { 271 | "name": "pocketmine/bedrock-data", 272 | "version": "4.0.0+bedrock-1.21.60", 273 | "source": { 274 | "type": "git", 275 | "url": "https://github.com/pmmp/BedrockData.git", 276 | "reference": "2e5f16ec2facac653f3f894f22eb831d880ba98e" 277 | }, 278 | "dist": { 279 | "type": "zip", 280 | "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/2e5f16ec2facac653f3f894f22eb831d880ba98e", 281 | "reference": "2e5f16ec2facac653f3f894f22eb831d880ba98e", 282 | "shasum": "" 283 | }, 284 | "type": "library", 285 | "notification-url": "https://packagist.org/downloads/", 286 | "license": [ 287 | "CC0-1.0" 288 | ], 289 | "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", 290 | "support": { 291 | "issues": "https://github.com/pmmp/BedrockData/issues", 292 | "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.21.60" 293 | }, 294 | "time": "2025-02-16T15:56:56+00:00" 295 | }, 296 | { 297 | "name": "pocketmine/bedrock-item-upgrade-schema", 298 | "version": "1.14.0", 299 | "source": { 300 | "type": "git", 301 | "url": "https://github.com/pmmp/BedrockItemUpgradeSchema.git", 302 | "reference": "9fc7c9bbb558a017395c1cb7dd819c033ee971bb" 303 | }, 304 | "dist": { 305 | "type": "zip", 306 | "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/9fc7c9bbb558a017395c1cb7dd819c033ee971bb", 307 | "reference": "9fc7c9bbb558a017395c1cb7dd819c033ee971bb", 308 | "shasum": "" 309 | }, 310 | "type": "library", 311 | "notification-url": "https://packagist.org/downloads/", 312 | "license": [ 313 | "CC0-1.0" 314 | ], 315 | "description": "JSON schemas for upgrading items found in older Minecraft: Bedrock world saves", 316 | "support": { 317 | "issues": "https://github.com/pmmp/BedrockItemUpgradeSchema/issues", 318 | "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/1.14.0" 319 | }, 320 | "time": "2024-12-04T12:22:49+00:00" 321 | }, 322 | { 323 | "name": "pocketmine/bedrock-protocol", 324 | "version": "36.0.0+bedrock-1.21.60", 325 | "source": { 326 | "type": "git", 327 | "url": "https://github.com/pmmp/BedrockProtocol.git", 328 | "reference": "2057de319c5c551001c2a544e08d1bc7727d9963" 329 | }, 330 | "dist": { 331 | "type": "zip", 332 | "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/2057de319c5c551001c2a544e08d1bc7727d9963", 333 | "reference": "2057de319c5c551001c2a544e08d1bc7727d9963", 334 | "shasum": "" 335 | }, 336 | "require": { 337 | "ext-json": "*", 338 | "php": "^8.1", 339 | "pocketmine/binaryutils": "^0.2.0", 340 | "pocketmine/color": "^0.2.0 || ^0.3.0", 341 | "pocketmine/math": "^0.3.0 || ^0.4.0 || ^1.0.0", 342 | "pocketmine/nbt": "^1.0.0", 343 | "ramsey/uuid": "^4.1" 344 | }, 345 | "require-dev": { 346 | "phpstan/phpstan": "2.1.0", 347 | "phpstan/phpstan-phpunit": "^2.0.0", 348 | "phpstan/phpstan-strict-rules": "^2.0.0", 349 | "phpunit/phpunit": "^9.5 || ^10.0 || ^11.0" 350 | }, 351 | "type": "library", 352 | "autoload": { 353 | "psr-4": { 354 | "pocketmine\\network\\mcpe\\protocol\\": "src/" 355 | } 356 | }, 357 | "notification-url": "https://packagist.org/downloads/", 358 | "license": [ 359 | "LGPL-3.0" 360 | ], 361 | "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", 362 | "support": { 363 | "issues": "https://github.com/pmmp/BedrockProtocol/issues", 364 | "source": "https://github.com/pmmp/BedrockProtocol/tree/36.0.0+bedrock-1.21.60" 365 | }, 366 | "time": "2025-02-16T15:59:08+00:00" 367 | }, 368 | { 369 | "name": "pocketmine/binaryutils", 370 | "version": "0.2.6", 371 | "source": { 372 | "type": "git", 373 | "url": "https://github.com/pmmp/BinaryUtils.git", 374 | "reference": "ccfc1899b859d45814ea3592e20ebec4cb731c84" 375 | }, 376 | "dist": { 377 | "type": "zip", 378 | "url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/ccfc1899b859d45814ea3592e20ebec4cb731c84", 379 | "reference": "ccfc1899b859d45814ea3592e20ebec4cb731c84", 380 | "shasum": "" 381 | }, 382 | "require": { 383 | "php": "^7.4 || ^8.0", 384 | "php-64bit": "*" 385 | }, 386 | "require-dev": { 387 | "phpstan/extension-installer": "^1.0", 388 | "phpstan/phpstan": "~1.10.3", 389 | "phpstan/phpstan-phpunit": "^1.0", 390 | "phpstan/phpstan-strict-rules": "^1.0.0", 391 | "phpunit/phpunit": "^9.5 || ^10.0 || ^11.0" 392 | }, 393 | "type": "library", 394 | "autoload": { 395 | "psr-4": { 396 | "pocketmine\\utils\\": "src/" 397 | } 398 | }, 399 | "notification-url": "https://packagist.org/downloads/", 400 | "license": [ 401 | "LGPL-3.0" 402 | ], 403 | "description": "Classes and methods for conveniently handling binary data", 404 | "support": { 405 | "issues": "https://github.com/pmmp/BinaryUtils/issues", 406 | "source": "https://github.com/pmmp/BinaryUtils/tree/0.2.6" 407 | }, 408 | "time": "2024-03-04T15:04:17+00:00" 409 | }, 410 | { 411 | "name": "pocketmine/callback-validator", 412 | "version": "1.0.3", 413 | "source": { 414 | "type": "git", 415 | "url": "https://github.com/pmmp/CallbackValidator.git", 416 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2" 417 | }, 418 | "dist": { 419 | "type": "zip", 420 | "url": "https://api.github.com/repos/pmmp/CallbackValidator/zipball/64787469766bcaa7e5885242e85c23c25e8c55a2", 421 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2", 422 | "shasum": "" 423 | }, 424 | "require": { 425 | "ext-reflection": "*", 426 | "php": "^7.1 || ^8.0" 427 | }, 428 | "replace": { 429 | "daverandom/callback-validator": "*" 430 | }, 431 | "require-dev": { 432 | "phpstan/extension-installer": "^1.0", 433 | "phpstan/phpstan": "0.12.59", 434 | "phpstan/phpstan-strict-rules": "^0.12.4", 435 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" 436 | }, 437 | "type": "library", 438 | "autoload": { 439 | "psr-4": { 440 | "DaveRandom\\CallbackValidator\\": "src/" 441 | } 442 | }, 443 | "notification-url": "https://packagist.org/downloads/", 444 | "license": [ 445 | "MIT" 446 | ], 447 | "authors": [ 448 | { 449 | "name": "Chris Wright", 450 | "email": "cw@daverandom.com" 451 | } 452 | ], 453 | "description": "Fork of daverandom/callback-validator - Tools for validating callback signatures", 454 | "support": { 455 | "issues": "https://github.com/pmmp/CallbackValidator/issues", 456 | "source": "https://github.com/pmmp/CallbackValidator/tree/1.0.3" 457 | }, 458 | "time": "2020-12-11T01:45:37+00:00" 459 | }, 460 | { 461 | "name": "pocketmine/color", 462 | "version": "0.3.1", 463 | "source": { 464 | "type": "git", 465 | "url": "https://github.com/pmmp/Color.git", 466 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1" 467 | }, 468 | "dist": { 469 | "type": "zip", 470 | "url": "https://api.github.com/repos/pmmp/Color/zipball/a0421f1e9e0b0c619300fb92d593283378f6a5e1", 471 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1", 472 | "shasum": "" 473 | }, 474 | "require": { 475 | "php": "^8.0" 476 | }, 477 | "require-dev": { 478 | "phpstan/phpstan": "1.10.3", 479 | "phpstan/phpstan-strict-rules": "^1.2.0" 480 | }, 481 | "type": "library", 482 | "autoload": { 483 | "psr-4": { 484 | "pocketmine\\color\\": "src/" 485 | } 486 | }, 487 | "notification-url": "https://packagist.org/downloads/", 488 | "license": [ 489 | "LGPL-3.0" 490 | ], 491 | "description": "Color handling library used by PocketMine-MP and related projects", 492 | "support": { 493 | "issues": "https://github.com/pmmp/Color/issues", 494 | "source": "https://github.com/pmmp/Color/tree/0.3.1" 495 | }, 496 | "time": "2023-04-10T11:38:05+00:00" 497 | }, 498 | { 499 | "name": "pocketmine/errorhandler", 500 | "version": "0.7.0", 501 | "source": { 502 | "type": "git", 503 | "url": "https://github.com/pmmp/ErrorHandler.git", 504 | "reference": "cae94884368a74ece5294b9ff7fef18732dcd921" 505 | }, 506 | "dist": { 507 | "type": "zip", 508 | "url": "https://api.github.com/repos/pmmp/ErrorHandler/zipball/cae94884368a74ece5294b9ff7fef18732dcd921", 509 | "reference": "cae94884368a74ece5294b9ff7fef18732dcd921", 510 | "shasum": "" 511 | }, 512 | "require": { 513 | "php": "^8.0" 514 | }, 515 | "require-dev": { 516 | "phpstan/phpstan": "~1.10.3", 517 | "phpstan/phpstan-strict-rules": "^1.0", 518 | "phpunit/phpunit": "^9.5 || ^10.0 || ^11.0" 519 | }, 520 | "type": "library", 521 | "autoload": { 522 | "psr-4": { 523 | "pocketmine\\errorhandler\\": "src/" 524 | } 525 | }, 526 | "notification-url": "https://packagist.org/downloads/", 527 | "license": [ 528 | "LGPL-3.0" 529 | ], 530 | "description": "Utilities to handle nasty PHP E_* errors in a usable way", 531 | "support": { 532 | "issues": "https://github.com/pmmp/ErrorHandler/issues", 533 | "source": "https://github.com/pmmp/ErrorHandler/tree/0.7.0" 534 | }, 535 | "time": "2024-04-02T18:29:54+00:00" 536 | }, 537 | { 538 | "name": "pocketmine/locale-data", 539 | "version": "2.24.0", 540 | "source": { 541 | "type": "git", 542 | "url": "https://github.com/pmmp/Language.git", 543 | "reference": "6ec5e92c77a2102b2692763733e4763012facae9" 544 | }, 545 | "dist": { 546 | "type": "zip", 547 | "url": "https://api.github.com/repos/pmmp/Language/zipball/6ec5e92c77a2102b2692763733e4763012facae9", 548 | "reference": "6ec5e92c77a2102b2692763733e4763012facae9", 549 | "shasum": "" 550 | }, 551 | "type": "library", 552 | "notification-url": "https://packagist.org/downloads/", 553 | "description": "Language resources used by PocketMine-MP", 554 | "support": { 555 | "issues": "https://github.com/pmmp/Language/issues", 556 | "source": "https://github.com/pmmp/Language/tree/2.24.0" 557 | }, 558 | "time": "2025-02-16T20:46:34+00:00" 559 | }, 560 | { 561 | "name": "pocketmine/log", 562 | "version": "0.4.0", 563 | "source": { 564 | "type": "git", 565 | "url": "https://github.com/pmmp/Log.git", 566 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043" 567 | }, 568 | "dist": { 569 | "type": "zip", 570 | "url": "https://api.github.com/repos/pmmp/Log/zipball/e6c912c0f9055c81d23108ec2d179b96f404c043", 571 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043", 572 | "shasum": "" 573 | }, 574 | "require": { 575 | "php": "^7.4 || ^8.0" 576 | }, 577 | "conflict": { 578 | "pocketmine/spl": "<0.4" 579 | }, 580 | "require-dev": { 581 | "phpstan/phpstan": "0.12.88", 582 | "phpstan/phpstan-strict-rules": "^0.12.2" 583 | }, 584 | "type": "library", 585 | "autoload": { 586 | "classmap": [ 587 | "./src" 588 | ] 589 | }, 590 | "notification-url": "https://packagist.org/downloads/", 591 | "license": [ 592 | "LGPL-3.0" 593 | ], 594 | "description": "Logging components used by PocketMine-MP and related projects", 595 | "support": { 596 | "issues": "https://github.com/pmmp/Log/issues", 597 | "source": "https://github.com/pmmp/Log/tree/0.4.0" 598 | }, 599 | "time": "2021-06-18T19:08:09+00:00" 600 | }, 601 | { 602 | "name": "pocketmine/math", 603 | "version": "1.0.0", 604 | "source": { 605 | "type": "git", 606 | "url": "https://github.com/pmmp/Math.git", 607 | "reference": "dc132d93595b32e9f210d78b3c8d43c662a5edbf" 608 | }, 609 | "dist": { 610 | "type": "zip", 611 | "url": "https://api.github.com/repos/pmmp/Math/zipball/dc132d93595b32e9f210d78b3c8d43c662a5edbf", 612 | "reference": "dc132d93595b32e9f210d78b3c8d43c662a5edbf", 613 | "shasum": "" 614 | }, 615 | "require": { 616 | "php": "^8.0", 617 | "php-64bit": "*" 618 | }, 619 | "require-dev": { 620 | "phpstan/extension-installer": "^1.0", 621 | "phpstan/phpstan": "~1.10.3", 622 | "phpstan/phpstan-strict-rules": "^1.0", 623 | "phpunit/phpunit": "^8.5 || ^9.5" 624 | }, 625 | "type": "library", 626 | "autoload": { 627 | "psr-4": { 628 | "pocketmine\\math\\": "src/" 629 | } 630 | }, 631 | "notification-url": "https://packagist.org/downloads/", 632 | "license": [ 633 | "LGPL-3.0" 634 | ], 635 | "description": "PHP library containing math related code used in PocketMine-MP", 636 | "support": { 637 | "issues": "https://github.com/pmmp/Math/issues", 638 | "source": "https://github.com/pmmp/Math/tree/1.0.0" 639 | }, 640 | "time": "2023-08-03T12:56:33+00:00" 641 | }, 642 | { 643 | "name": "pocketmine/nbt", 644 | "version": "1.0.1", 645 | "source": { 646 | "type": "git", 647 | "url": "https://github.com/pmmp/NBT.git", 648 | "reference": "53db37487bc5ddbfbd84247966e1a073bdcfdb7d" 649 | }, 650 | "dist": { 651 | "type": "zip", 652 | "url": "https://api.github.com/repos/pmmp/NBT/zipball/53db37487bc5ddbfbd84247966e1a073bdcfdb7d", 653 | "reference": "53db37487bc5ddbfbd84247966e1a073bdcfdb7d", 654 | "shasum": "" 655 | }, 656 | "require": { 657 | "php": "^7.4 || ^8.0", 658 | "php-64bit": "*", 659 | "pocketmine/binaryutils": "^0.2.0" 660 | }, 661 | "require-dev": { 662 | "phpstan/extension-installer": "^1.0", 663 | "phpstan/phpstan": "2.1.0", 664 | "phpstan/phpstan-strict-rules": "^2.0", 665 | "phpunit/phpunit": "^9.5" 666 | }, 667 | "type": "library", 668 | "autoload": { 669 | "psr-4": { 670 | "pocketmine\\nbt\\": "src/" 671 | } 672 | }, 673 | "notification-url": "https://packagist.org/downloads/", 674 | "license": [ 675 | "LGPL-3.0" 676 | ], 677 | "description": "PHP library for working with Named Binary Tags", 678 | "support": { 679 | "issues": "https://github.com/pmmp/NBT/issues", 680 | "source": "https://github.com/pmmp/NBT/tree/1.0.1" 681 | }, 682 | "time": "2025-01-07T22:47:46+00:00" 683 | }, 684 | { 685 | "name": "pocketmine/pocketmine-mp", 686 | "version": "5.25.2", 687 | "source": { 688 | "type": "git", 689 | "url": "https://github.com/pmmp/PocketMine-MP.git", 690 | "reference": "e8824a36b95b8a27927faa1b8d1ac4c6f3487649" 691 | }, 692 | "dist": { 693 | "type": "zip", 694 | "url": "https://api.github.com/repos/pmmp/PocketMine-MP/zipball/e8824a36b95b8a27927faa1b8d1ac4c6f3487649", 695 | "reference": "e8824a36b95b8a27927faa1b8d1ac4c6f3487649", 696 | "shasum": "" 697 | }, 698 | "require": { 699 | "adhocore/json-comment": "~1.2.0", 700 | "composer-runtime-api": "^2.0", 701 | "ext-chunkutils2": "^0.3.1", 702 | "ext-crypto": "^0.3.1", 703 | "ext-ctype": "*", 704 | "ext-curl": "*", 705 | "ext-date": "*", 706 | "ext-gmp": "*", 707 | "ext-hash": "*", 708 | "ext-igbinary": "^3.0.1", 709 | "ext-json": "*", 710 | "ext-leveldb": "^0.2.1 || ^0.3.0", 711 | "ext-mbstring": "*", 712 | "ext-morton": "^0.1.0", 713 | "ext-openssl": "*", 714 | "ext-pcre": "*", 715 | "ext-phar": "*", 716 | "ext-pmmpthread": "^6.1.0", 717 | "ext-reflection": "*", 718 | "ext-simplexml": "*", 719 | "ext-sockets": "*", 720 | "ext-spl": "*", 721 | "ext-yaml": ">=2.0.0", 722 | "ext-zip": "*", 723 | "ext-zlib": ">=1.2.11", 724 | "netresearch/jsonmapper": "~v5.0.0", 725 | "php": "^8.1", 726 | "php-64bit": "*", 727 | "pocketmine/bedrock-block-upgrade-schema": "~5.1.0+bedrock-1.21.60", 728 | "pocketmine/bedrock-data": "~4.0.0+bedrock-1.21.60", 729 | "pocketmine/bedrock-item-upgrade-schema": "~1.14.0+bedrock-1.21.50", 730 | "pocketmine/bedrock-protocol": "~36.0.0+bedrock-1.21.60", 731 | "pocketmine/binaryutils": "^0.2.1", 732 | "pocketmine/callback-validator": "^1.0.2", 733 | "pocketmine/color": "^0.3.0", 734 | "pocketmine/errorhandler": "^0.7.0", 735 | "pocketmine/locale-data": "~2.24.0", 736 | "pocketmine/log": "^0.4.0", 737 | "pocketmine/math": "~1.0.0", 738 | "pocketmine/nbt": "~1.0.0", 739 | "pocketmine/raklib": "~1.1.0", 740 | "pocketmine/raklib-ipc": "~1.0.0", 741 | "pocketmine/snooze": "^0.5.0", 742 | "ramsey/uuid": "~4.7.0", 743 | "symfony/filesystem": "~6.4.0" 744 | }, 745 | "require-dev": { 746 | "phpstan/phpstan": "2.1.6", 747 | "phpstan/phpstan-phpunit": "^2.0.0", 748 | "phpstan/phpstan-strict-rules": "^2.0.0", 749 | "phpunit/phpunit": "^10.5.24" 750 | }, 751 | "type": "project", 752 | "autoload": { 753 | "files": [ 754 | "src/CoreConstants.php" 755 | ], 756 | "psr-4": { 757 | "pocketmine\\": "src/" 758 | } 759 | }, 760 | "notification-url": "https://packagist.org/downloads/", 761 | "license": [ 762 | "LGPL-3.0" 763 | ], 764 | "description": "A server software for Minecraft: Bedrock Edition written in PHP", 765 | "homepage": "https://pmmp.io", 766 | "support": { 767 | "issues": "https://github.com/pmmp/PocketMine-MP/issues", 768 | "source": "https://github.com/pmmp/PocketMine-MP/tree/5.25.2" 769 | }, 770 | "funding": [ 771 | { 772 | "url": "https://github.com/pmmp/PocketMine-MP#donate", 773 | "type": "custom" 774 | }, 775 | { 776 | "url": "https://www.patreon.com/pocketminemp", 777 | "type": "patreon" 778 | } 779 | ], 780 | "time": "2025-03-04T21:03:52+00:00" 781 | }, 782 | { 783 | "name": "pocketmine/raklib", 784 | "version": "1.1.1", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/pmmp/RakLib.git", 788 | "reference": "be2783be516bf6e2872ff5c81fb9048596617b97" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/pmmp/RakLib/zipball/be2783be516bf6e2872ff5c81fb9048596617b97", 793 | "reference": "be2783be516bf6e2872ff5c81fb9048596617b97", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "ext-sockets": "*", 798 | "php": "^8.1", 799 | "php-64bit": "*", 800 | "php-ipv6": "*", 801 | "pocketmine/binaryutils": "^0.2.0", 802 | "pocketmine/log": "^0.3.0 || ^0.4.0" 803 | }, 804 | "require-dev": { 805 | "phpstan/phpstan": "1.10.1", 806 | "phpstan/phpstan-strict-rules": "^1.0" 807 | }, 808 | "type": "library", 809 | "autoload": { 810 | "psr-4": { 811 | "raklib\\": "src/" 812 | } 813 | }, 814 | "notification-url": "https://packagist.org/downloads/", 815 | "license": [ 816 | "GPL-3.0" 817 | ], 818 | "description": "A RakNet server implementation written in PHP", 819 | "support": { 820 | "issues": "https://github.com/pmmp/RakLib/issues", 821 | "source": "https://github.com/pmmp/RakLib/tree/1.1.1" 822 | }, 823 | "time": "2024-03-04T14:02:14+00:00" 824 | }, 825 | { 826 | "name": "pocketmine/raklib-ipc", 827 | "version": "1.0.1", 828 | "source": { 829 | "type": "git", 830 | "url": "https://github.com/pmmp/RakLibIpc.git", 831 | "reference": "ce632ef2c6743e71eddb5dc329c49af6555f90bc" 832 | }, 833 | "dist": { 834 | "type": "zip", 835 | "url": "https://api.github.com/repos/pmmp/RakLibIpc/zipball/ce632ef2c6743e71eddb5dc329c49af6555f90bc", 836 | "reference": "ce632ef2c6743e71eddb5dc329c49af6555f90bc", 837 | "shasum": "" 838 | }, 839 | "require": { 840 | "php": "^8.0", 841 | "php-64bit": "*", 842 | "pocketmine/binaryutils": "^0.2.0", 843 | "pocketmine/raklib": "^0.15.0 || ^1.0.0" 844 | }, 845 | "require-dev": { 846 | "phpstan/phpstan": "1.10.1", 847 | "phpstan/phpstan-strict-rules": "^1.0.0" 848 | }, 849 | "type": "library", 850 | "autoload": { 851 | "psr-4": { 852 | "raklib\\server\\ipc\\": "src/" 853 | } 854 | }, 855 | "notification-url": "https://packagist.org/downloads/", 856 | "license": [ 857 | "GPL-3.0" 858 | ], 859 | "description": "Channel-based protocols for inter-thread/inter-process communication with RakLib", 860 | "support": { 861 | "issues": "https://github.com/pmmp/RakLibIpc/issues", 862 | "source": "https://github.com/pmmp/RakLibIpc/tree/1.0.1" 863 | }, 864 | "time": "2024-03-01T15:55:05+00:00" 865 | }, 866 | { 867 | "name": "pocketmine/snooze", 868 | "version": "0.5.0", 869 | "source": { 870 | "type": "git", 871 | "url": "https://github.com/pmmp/Snooze.git", 872 | "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915" 873 | }, 874 | "dist": { 875 | "type": "zip", 876 | "url": "https://api.github.com/repos/pmmp/Snooze/zipball/a86d9ee60ce44755d166d3c7ba4b8b8be8360915", 877 | "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915", 878 | "shasum": "" 879 | }, 880 | "require": { 881 | "ext-pmmpthread": "^6.0", 882 | "php-64bit": "^8.1" 883 | }, 884 | "require-dev": { 885 | "phpstan/extension-installer": "^1.0", 886 | "phpstan/phpstan": "1.10.3", 887 | "phpstan/phpstan-strict-rules": "^1.0" 888 | }, 889 | "type": "library", 890 | "autoload": { 891 | "psr-4": { 892 | "pocketmine\\snooze\\": "src/" 893 | } 894 | }, 895 | "notification-url": "https://packagist.org/downloads/", 896 | "license": [ 897 | "LGPL-3.0" 898 | ], 899 | "description": "Thread notification management library for code using the pthreads extension", 900 | "support": { 901 | "issues": "https://github.com/pmmp/Snooze/issues", 902 | "source": "https://github.com/pmmp/Snooze/tree/0.5.0" 903 | }, 904 | "time": "2023-05-22T23:43:01+00:00" 905 | }, 906 | { 907 | "name": "ramsey/collection", 908 | "version": "2.1.0", 909 | "source": { 910 | "type": "git", 911 | "url": "https://github.com/ramsey/collection.git", 912 | "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109" 913 | }, 914 | "dist": { 915 | "type": "zip", 916 | "url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", 917 | "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", 918 | "shasum": "" 919 | }, 920 | "require": { 921 | "php": "^8.1" 922 | }, 923 | "require-dev": { 924 | "captainhook/plugin-composer": "^5.3", 925 | "ergebnis/composer-normalize": "^2.45", 926 | "fakerphp/faker": "^1.24", 927 | "hamcrest/hamcrest-php": "^2.0", 928 | "jangregor/phpstan-prophecy": "^2.1", 929 | "mockery/mockery": "^1.6", 930 | "php-parallel-lint/php-console-highlighter": "^1.0", 931 | "php-parallel-lint/php-parallel-lint": "^1.4", 932 | "phpspec/prophecy-phpunit": "^2.3", 933 | "phpstan/extension-installer": "^1.4", 934 | "phpstan/phpstan": "^2.1", 935 | "phpstan/phpstan-mockery": "^2.0", 936 | "phpstan/phpstan-phpunit": "^2.0", 937 | "phpunit/phpunit": "^10.5", 938 | "ramsey/coding-standard": "^2.3", 939 | "ramsey/conventional-commits": "^1.6", 940 | "roave/security-advisories": "dev-latest" 941 | }, 942 | "type": "library", 943 | "extra": { 944 | "captainhook": { 945 | "force-install": true 946 | }, 947 | "ramsey/conventional-commits": { 948 | "configFile": "conventional-commits.json" 949 | } 950 | }, 951 | "autoload": { 952 | "psr-4": { 953 | "Ramsey\\Collection\\": "src/" 954 | } 955 | }, 956 | "notification-url": "https://packagist.org/downloads/", 957 | "license": [ 958 | "MIT" 959 | ], 960 | "authors": [ 961 | { 962 | "name": "Ben Ramsey", 963 | "email": "ben@benramsey.com", 964 | "homepage": "https://benramsey.com" 965 | } 966 | ], 967 | "description": "A PHP library for representing and manipulating collections.", 968 | "keywords": [ 969 | "array", 970 | "collection", 971 | "hash", 972 | "map", 973 | "queue", 974 | "set" 975 | ], 976 | "support": { 977 | "issues": "https://github.com/ramsey/collection/issues", 978 | "source": "https://github.com/ramsey/collection/tree/2.1.0" 979 | }, 980 | "time": "2025-03-02T04:48:29+00:00" 981 | }, 982 | { 983 | "name": "ramsey/uuid", 984 | "version": "4.7.6", 985 | "source": { 986 | "type": "git", 987 | "url": "https://github.com/ramsey/uuid.git", 988 | "reference": "91039bc1faa45ba123c4328958e620d382ec7088" 989 | }, 990 | "dist": { 991 | "type": "zip", 992 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", 993 | "reference": "91039bc1faa45ba123c4328958e620d382ec7088", 994 | "shasum": "" 995 | }, 996 | "require": { 997 | "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", 998 | "ext-json": "*", 999 | "php": "^8.0", 1000 | "ramsey/collection": "^1.2 || ^2.0" 1001 | }, 1002 | "replace": { 1003 | "rhumsaa/uuid": "self.version" 1004 | }, 1005 | "require-dev": { 1006 | "captainhook/captainhook": "^5.10", 1007 | "captainhook/plugin-composer": "^5.3", 1008 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1009 | "doctrine/annotations": "^1.8", 1010 | "ergebnis/composer-normalize": "^2.15", 1011 | "mockery/mockery": "^1.3", 1012 | "paragonie/random-lib": "^2", 1013 | "php-mock/php-mock": "^2.2", 1014 | "php-mock/php-mock-mockery": "^1.3", 1015 | "php-parallel-lint/php-parallel-lint": "^1.1", 1016 | "phpbench/phpbench": "^1.0", 1017 | "phpstan/extension-installer": "^1.1", 1018 | "phpstan/phpstan": "^1.8", 1019 | "phpstan/phpstan-mockery": "^1.1", 1020 | "phpstan/phpstan-phpunit": "^1.1", 1021 | "phpunit/phpunit": "^8.5 || ^9", 1022 | "ramsey/composer-repl": "^1.4", 1023 | "slevomat/coding-standard": "^8.4", 1024 | "squizlabs/php_codesniffer": "^3.5", 1025 | "vimeo/psalm": "^4.9" 1026 | }, 1027 | "suggest": { 1028 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1029 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1030 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1031 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1032 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1033 | }, 1034 | "type": "library", 1035 | "extra": { 1036 | "captainhook": { 1037 | "force-install": true 1038 | } 1039 | }, 1040 | "autoload": { 1041 | "files": [ 1042 | "src/functions.php" 1043 | ], 1044 | "psr-4": { 1045 | "Ramsey\\Uuid\\": "src/" 1046 | } 1047 | }, 1048 | "notification-url": "https://packagist.org/downloads/", 1049 | "license": [ 1050 | "MIT" 1051 | ], 1052 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 1053 | "keywords": [ 1054 | "guid", 1055 | "identifier", 1056 | "uuid" 1057 | ], 1058 | "support": { 1059 | "issues": "https://github.com/ramsey/uuid/issues", 1060 | "source": "https://github.com/ramsey/uuid/tree/4.7.6" 1061 | }, 1062 | "funding": [ 1063 | { 1064 | "url": "https://github.com/ramsey", 1065 | "type": "github" 1066 | }, 1067 | { 1068 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 1069 | "type": "tidelift" 1070 | } 1071 | ], 1072 | "time": "2024-04-27T21:32:50+00:00" 1073 | }, 1074 | { 1075 | "name": "symfony/filesystem", 1076 | "version": "6.4.x-dev", 1077 | "source": { 1078 | "type": "git", 1079 | "url": "https://github.com/symfony/filesystem.git", 1080 | "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" 1081 | }, 1082 | "dist": { 1083 | "type": "zip", 1084 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", 1085 | "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", 1086 | "shasum": "" 1087 | }, 1088 | "require": { 1089 | "php": ">=8.1", 1090 | "symfony/polyfill-ctype": "~1.8", 1091 | "symfony/polyfill-mbstring": "~1.8" 1092 | }, 1093 | "require-dev": { 1094 | "symfony/process": "^5.4|^6.4|^7.0" 1095 | }, 1096 | "type": "library", 1097 | "autoload": { 1098 | "psr-4": { 1099 | "Symfony\\Component\\Filesystem\\": "" 1100 | }, 1101 | "exclude-from-classmap": [ 1102 | "/Tests/" 1103 | ] 1104 | }, 1105 | "notification-url": "https://packagist.org/downloads/", 1106 | "license": [ 1107 | "MIT" 1108 | ], 1109 | "authors": [ 1110 | { 1111 | "name": "Fabien Potencier", 1112 | "email": "fabien@symfony.com" 1113 | }, 1114 | { 1115 | "name": "Symfony Community", 1116 | "homepage": "https://symfony.com/contributors" 1117 | } 1118 | ], 1119 | "description": "Provides basic utilities for the filesystem", 1120 | "homepage": "https://symfony.com", 1121 | "support": { 1122 | "source": "https://github.com/symfony/filesystem/tree/6.4" 1123 | }, 1124 | "funding": [ 1125 | { 1126 | "url": "https://symfony.com/sponsor", 1127 | "type": "custom" 1128 | }, 1129 | { 1130 | "url": "https://github.com/fabpot", 1131 | "type": "github" 1132 | }, 1133 | { 1134 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1135 | "type": "tidelift" 1136 | } 1137 | ], 1138 | "time": "2024-10-25T15:07:50+00:00" 1139 | }, 1140 | { 1141 | "name": "symfony/polyfill-ctype", 1142 | "version": "1.x-dev", 1143 | "source": { 1144 | "type": "git", 1145 | "url": "https://github.com/symfony/polyfill-ctype.git", 1146 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" 1147 | }, 1148 | "dist": { 1149 | "type": "zip", 1150 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", 1151 | "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", 1152 | "shasum": "" 1153 | }, 1154 | "require": { 1155 | "php": ">=7.2" 1156 | }, 1157 | "provide": { 1158 | "ext-ctype": "*" 1159 | }, 1160 | "suggest": { 1161 | "ext-ctype": "For best performance" 1162 | }, 1163 | "default-branch": true, 1164 | "type": "library", 1165 | "extra": { 1166 | "thanks": { 1167 | "url": "https://github.com/symfony/polyfill", 1168 | "name": "symfony/polyfill" 1169 | } 1170 | }, 1171 | "autoload": { 1172 | "files": [ 1173 | "bootstrap.php" 1174 | ], 1175 | "psr-4": { 1176 | "Symfony\\Polyfill\\Ctype\\": "" 1177 | } 1178 | }, 1179 | "notification-url": "https://packagist.org/downloads/", 1180 | "license": [ 1181 | "MIT" 1182 | ], 1183 | "authors": [ 1184 | { 1185 | "name": "Gert de Pagter", 1186 | "email": "BackEndTea@gmail.com" 1187 | }, 1188 | { 1189 | "name": "Symfony Community", 1190 | "homepage": "https://symfony.com/contributors" 1191 | } 1192 | ], 1193 | "description": "Symfony polyfill for ctype functions", 1194 | "homepage": "https://symfony.com", 1195 | "keywords": [ 1196 | "compatibility", 1197 | "ctype", 1198 | "polyfill", 1199 | "portable" 1200 | ], 1201 | "support": { 1202 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" 1203 | }, 1204 | "funding": [ 1205 | { 1206 | "url": "https://symfony.com/sponsor", 1207 | "type": "custom" 1208 | }, 1209 | { 1210 | "url": "https://github.com/fabpot", 1211 | "type": "github" 1212 | }, 1213 | { 1214 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1215 | "type": "tidelift" 1216 | } 1217 | ], 1218 | "time": "2024-09-09T11:45:10+00:00" 1219 | }, 1220 | { 1221 | "name": "symfony/polyfill-mbstring", 1222 | "version": "1.x-dev", 1223 | "source": { 1224 | "type": "git", 1225 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1226 | "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" 1227 | }, 1228 | "dist": { 1229 | "type": "zip", 1230 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", 1231 | "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", 1232 | "shasum": "" 1233 | }, 1234 | "require": { 1235 | "ext-iconv": "*", 1236 | "php": ">=7.2" 1237 | }, 1238 | "provide": { 1239 | "ext-mbstring": "*" 1240 | }, 1241 | "suggest": { 1242 | "ext-mbstring": "For best performance" 1243 | }, 1244 | "default-branch": true, 1245 | "type": "library", 1246 | "extra": { 1247 | "thanks": { 1248 | "url": "https://github.com/symfony/polyfill", 1249 | "name": "symfony/polyfill" 1250 | } 1251 | }, 1252 | "autoload": { 1253 | "files": [ 1254 | "bootstrap.php" 1255 | ], 1256 | "psr-4": { 1257 | "Symfony\\Polyfill\\Mbstring\\": "" 1258 | } 1259 | }, 1260 | "notification-url": "https://packagist.org/downloads/", 1261 | "license": [ 1262 | "MIT" 1263 | ], 1264 | "authors": [ 1265 | { 1266 | "name": "Nicolas Grekas", 1267 | "email": "p@tchwork.com" 1268 | }, 1269 | { 1270 | "name": "Symfony Community", 1271 | "homepage": "https://symfony.com/contributors" 1272 | } 1273 | ], 1274 | "description": "Symfony polyfill for the Mbstring extension", 1275 | "homepage": "https://symfony.com", 1276 | "keywords": [ 1277 | "compatibility", 1278 | "mbstring", 1279 | "polyfill", 1280 | "portable", 1281 | "shim" 1282 | ], 1283 | "support": { 1284 | "source": "https://github.com/symfony/polyfill-mbstring/tree/1.x" 1285 | }, 1286 | "funding": [ 1287 | { 1288 | "url": "https://symfony.com/sponsor", 1289 | "type": "custom" 1290 | }, 1291 | { 1292 | "url": "https://github.com/fabpot", 1293 | "type": "github" 1294 | }, 1295 | { 1296 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1297 | "type": "tidelift" 1298 | } 1299 | ], 1300 | "time": "2024-12-23T08:48:59+00:00" 1301 | } 1302 | ], 1303 | "aliases": [], 1304 | "minimum-stability": "dev", 1305 | "stability-flags": [], 1306 | "prefer-stable": false, 1307 | "prefer-lowest": false, 1308 | "platform": { 1309 | "php": "^8.1", 1310 | "ext-vanillagenerator": "^2.1.1" 1311 | }, 1312 | "platform-dev": [], 1313 | "plugin-api-version": "2.3.0" 1314 | } 1315 | -------------------------------------------------------------------------------- /phpstan.neon.dist: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 6 3 | checkMissingIterableValueType: false 4 | internalErrorsCountLimit: 10000 5 | parallel: 6 | processTimeout: 180.0 7 | paths: 8 | - src -------------------------------------------------------------------------------- /plugin.yml: -------------------------------------------------------------------------------- 1 | name: VanillaGenerator 2 | main: muqsit\vanillagenerator\Loader 3 | api: 5.0.0 4 | version: 1.1.3-dev 5 | author: larryTheCoder -------------------------------------------------------------------------------- /src/muqsit/vanillagenerator/Loader.php: -------------------------------------------------------------------------------- 1 | getLogger()->critical("Unable to find the vanillagenerator extension."); 27 | $this->getServer()->getPluginManager()->disablePlugin($this); 28 | 29 | return; 30 | } elseif (($phpver = phpversion('vanillagenerator')) < self::EXT_MCGENERATOR_VERSION) { 31 | $this->getLogger()->critical("vanillagenerator extension version " . self::EXT_MCGENERATOR_VERSION . " is required, you have $phpver."); 32 | $this->getServer()->getPluginManager()->disablePlugin($this); 33 | 34 | return; 35 | } 36 | 37 | $this->registerBlocks(); 38 | 39 | $generatorManager = GeneratorManager::getInstance(); 40 | $generatorManager->addGenerator(OverworldGenerator::class, "vanilla_overworld", fn() => null); 41 | } 42 | 43 | private function registerBlocks(): void 44 | { 45 | $blocks = VanillaBlocks::getAll(); 46 | 47 | foreach ($blocks as $blockSelection) { 48 | $blockTypeId = $blockSelection->getIdInfo()->getBlockTypeId(); 49 | 50 | $r = new ReflectionProperty(Block::class, 'stateIdXorMask'); 51 | $r->setAccessible(true); 52 | 53 | Generator::registerMask($blockTypeId, $r->getValue($blockSelection)); 54 | 55 | foreach ($blockSelection->generateStatePermutations() as $block) { 56 | // "state" is a fancy word for "meta" 57 | $r = new ReflectionMethod(Block::class, 'encodeFullState'); 58 | $r->setAccessible(true); 59 | 60 | $blockMeta = $r->invoke($block); 61 | 62 | // 1st bit = solid state 63 | // 2nd bit = transparent state 64 | // 3rd bit = flowable state 65 | // 4th bit = liquid state 66 | // 5th bit = light level (require 4 bits, 0-15) 67 | 68 | $value = 0; 69 | if ($block->isSolid()) $value |= (1 << 0); 70 | if ($block->isTransparent()) $value |= (1 << 1); 71 | if ($block->canBeFlowedInto()) $value |= (1 << 2); 72 | if ($block instanceof Liquid) $value |= (1 << 3); 73 | 74 | $value |= ($block->getLightLevel() << 4); 75 | 76 | Generator::registerBlock($blockTypeId, $blockMeta, $value); 77 | } 78 | } 79 | 80 | Generator::registerBlock(BlockTypeIds::AIR, 716, 0); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/muqsit/vanillagenerator/generator/OverworldGenerator.php: -------------------------------------------------------------------------------- 1 | generator = new \OverworldGenerator($seed, $enableUHC); 48 | } 49 | 50 | public function generateChunk(ChunkManager $world, int $chunkX, int $chunkZ): void{ 51 | $chunk = $world->getChunk($chunkX, $chunkZ); 52 | 53 | $palettedChunksArray = []; 54 | $palettedBiomesArray = []; 55 | foreach($chunk->getSubChunks() as $y => $subChunk){ 56 | if(!$subChunk->isEmptyFast()){ 57 | $palettedChunksArray[$y] = $subChunk->getBlockLayers()[0]; 58 | $palettedBiomesArray[$y] = $subChunk->getBiomeArray(); 59 | }else{ 60 | $newSubChunk = new SubChunk($subChunk->getEmptyBlockId(), [new PalettedBlockArray($subChunk->getEmptyBlockId())], new PalettedBlockArray(BiomeIds::OCEAN), $subChunk->getBlockSkyLightArray(), $subChunk->getBlockLightArray()); 61 | $chunk->setSubChunk($y, $newSubChunk); 62 | 63 | $palettedChunksArray[$y] = $newSubChunk->getBlockLayers()[0]; 64 | $palettedBiomesArray[$y] = $newSubChunk->getBiomeArray(); 65 | } 66 | } 67 | 68 | $this->generator->generateChunk($palettedChunksArray, $palettedBiomesArray, World::chunkHash($chunkX, $chunkZ)); 69 | } 70 | 71 | /** 72 | * @throws ReflectionException 73 | */ 74 | public function populateChunk(ChunkManager $world, int $chunkX, int $chunkZ): void{ 75 | $r = new ReflectionObject($world); 76 | $p = $r->getProperty('chunks'); 77 | $p->setAccessible(true); 78 | 79 | $blockEntries = []; 80 | 81 | /** 82 | * @var int $hash 83 | * @var Chunk $chunkVal 84 | */ 85 | foreach($p->getValue($world) as $hash => $chunkVal){ 86 | $array = []; 87 | 88 | foreach($chunkVal->getSubChunks() as $y => $subChunk){ 89 | if(!$subChunk->isEmptyFast()){ 90 | $array[0][$y - Chunk::MIN_SUBCHUNK_INDEX] = $subChunk->getBlockLayers()[0]; 91 | $array[1][$y - Chunk::MIN_SUBCHUNK_INDEX] = $subChunk->getBiomeArray(); 92 | }else{ 93 | $newSubChunk = new SubChunk($subChunk->getEmptyBlockId(), [new PalettedBlockArray($subChunk->getEmptyBlockId())], new PalettedBlockArray(BiomeIds::OCEAN), $subChunk->getBlockSkyLightArray(), $subChunk->getBlockLightArray()); 94 | $chunkVal->setSubChunk($y, $newSubChunk); 95 | 96 | $array[0][$y - Chunk::MIN_SUBCHUNK_INDEX] = $newSubChunk->getBlockLayers()[0]; 97 | $array[1][$y - Chunk::MIN_SUBCHUNK_INDEX] = $newSubChunk->getBiomeArray(); 98 | } 99 | } 100 | 101 | $blockEntries[] = [$hash, $array, $chunkVal->isTerrainDirty()]; 102 | } 103 | 104 | $this->generator->populateChunk($blockEntries, World::chunkHash($chunkX, $chunkZ)); 105 | 106 | foreach($blockEntries as [$hash, $array, $dirtyEntry]){ 107 | World::getXZ($hash, $x, $z); 108 | 109 | $c = $world->getChunk($x, $z); 110 | 111 | if($dirtyEntry){ 112 | $c->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BLOCKS, true); 113 | $c->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES, true); 114 | } 115 | } 116 | } 117 | } --------------------------------------------------------------------------------