From 481e4e1b404a33a14a13c70db620a1f1227a2da1 Mon Sep 17 00:00:00 2001 From: Lete114 Date: Sun, 15 Oct 2023 16:41:32 +0800 Subject: [PATCH] feat: support 1.20.3x version --- package.json | 3 ++- pnpm-lock.yaml | 19 ++++++++----- src/behavior_pack/manifest.json | 6 ++--- src/behavior_pack/scripts/main.ts | 43 +++++++++++++++++------------- src/behavior_pack/texts/en_US.lang | 2 +- src/behavior_pack/texts/zh_CN.lang | 2 +- 6 files changed, 44 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index a5677f6..9a64338 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "lint:fix": "eslint --fix src && prettier --check --write src" }, "devDependencies": { - "@minecraft/server": "1.4.0-beta.1.20.10-stable", + "@minecraft/server": "1.6.0-beta.1.20.30-stable", + "@minecraft/vanilla-data": "^1.20.30", "@rollup/plugin-node-resolve": "^15.1.0", "@rollup/plugin-typescript": "^11.1.2", "@types/fs-extra": "^11.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5e6cab..8d6f155 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,8 +11,11 @@ dependencies: devDependencies: '@minecraft/server': - specifier: 1.4.0-beta.1.20.10-stable - version: 1.4.0-beta.1.20.10-stable + specifier: 1.6.0-beta.1.20.30-stable + version: 1.6.0-beta.1.20.30-stable + '@minecraft/vanilla-data': + specifier: ^1.20.30 + version: 1.20.30 '@rollup/plugin-node-resolve': specifier: ^15.1.0 version: 15.1.0(rollup@3.27.0) @@ -129,14 +132,18 @@ packages: '@minecraft/server': 1.5.0 dev: false - /@minecraft/server@1.4.0-beta.1.20.10-stable: - resolution: {integrity: sha512-GFxR3rc83fLG4G1QV51D6a7V1EylomZrUMO1oUNINhkMpNBe2ACA9CBpLpkixxg0Y3aDpUnTkuhjQpoMnekPSA==} - dev: true - /@minecraft/server@1.5.0: resolution: {integrity: sha512-4R50srYzksXaOXZp1M4RkQ9KMw26F3Y3YC+YEInFpIjVmQr9OEitAgjUm4+mmIRwxuh7JsuBcE5yinDpYx59/g==} dev: false + /@minecraft/server@1.6.0-beta.1.20.30-stable: + resolution: {integrity: sha512-hvRjxbI7cl7LVAv+wmw253O6IHFUVBEMvTl+FJLnUaQv9f/JkGBaVDKgyH0yR7G1SMgVLRoQIA5CM8IZWYDHew==} + dev: true + + /@minecraft/vanilla-data@1.20.30: + resolution: {integrity: sha512-ADFHOm5BPmeNCN3P2seCVtMFaCDeUD6in/SgtAsYQrWS2lcrdmQjYqMAKVYwDlsUejoLzcmObFbTZI1/L21fww==} + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} diff --git a/src/behavior_pack/manifest.json b/src/behavior_pack/manifest.json index d75bb14..691d995 100644 --- a/src/behavior_pack/manifest.json +++ b/src/behavior_pack/manifest.json @@ -4,7 +4,7 @@ "description": "pack.description", "name": "pack.name", "uuid": "404c04d4-32f3-47d9-bd04-0172b1dc0301", - "version": [1, 0, 0], + "version": [1, 0, 1], "min_engine_version": [1, 20, 0] }, "modules": [ @@ -13,14 +13,14 @@ "language": "javascript", "type": "script", "uuid": "9e376b78-7a64-418a-b2fa-4cee29949758", - "version": [1, 0, 0], + "version": [1, 0, 1], "entry": "scripts/main.js" } ], "dependencies": [ { "module_name": "@minecraft/server", - "version": "1.4.0-beta" + "version": "1.6.0-beta" } ], "metadata": { diff --git a/src/behavior_pack/scripts/main.ts b/src/behavior_pack/scripts/main.ts index 34cb78a..9259ce9 100644 --- a/src/behavior_pack/scripts/main.ts +++ b/src/behavior_pack/scripts/main.ts @@ -1,47 +1,52 @@ import { world, system, + Player, ItemStack, - MinecraftItemTypes, - MinecraftEntityTypes, - DynamicPropertiesDefinition + DynamicPropertiesDefinition, + PlayerBreakBlockAfterEventSignal } from '@minecraft/server' +import { MinecraftItemTypes } from '@minecraft/vanilla-data' import { getRandomProbability } from '@mcbe-mods/utils' -import type { ItemType } from '@minecraft/server' -type MinecraftItemTypesKeys = keyof typeof MinecraftItemTypes +/* ---------- Versions Adaptation ---------- */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +const afterEvents = ((world.afterEvents as any).playerBreakBlock || + (world.afterEvents as any).blockBreak) as PlayerBreakBlockAfterEventSignal +/* eslint-enable @typescript-eslint/no-explicit-any */ + +/* ---------- Versions Adaptation ---------- */ + +const itemTypes = Object.values(MinecraftItemTypes) const PROB = 'prob' world.afterEvents.worldInitialize.subscribe((e) => { const def = new DynamicPropertiesDefinition() def.defineNumber(PROB, 1) - e.propertyRegistry.registerEntityTypeDynamicProperties(def, MinecraftEntityTypes.player) + e.propertyRegistry.registerWorldDynamicProperties(def) }) system.afterEvents.scriptEventReceive.subscribe((e) => { const { id, message } = e - if (id === 'serendipity:prob') { - const prob = +message - if (isNaN(prob)) return - world.getAllPlayers().forEach((player) => { - player.setDynamicProperty(PROB, prob) - }) + const prob = +message + if (isNaN(prob)) return + + const player = e.sourceEntity as Player + if (id === 'serendipity:prob' && player?.isOp()) { + world.setDynamicProperty(PROB, prob) } }) -world.afterEvents.blockBreak.subscribe(async (e) => { +afterEvents.subscribe(async (e) => { const { dimension, block, player } = e - const prob = +(player.getDynamicProperty(PROB) || 1) - if (isNaN(prob)) return + const prob = (world.getDynamicProperty(PROB) as number) || 1 const is = getRandomProbability(prob) if (!is) return player.playSound('random.orb', { pitch: 0.5, volume: 0.5 }) - const itemTypes = Object.keys(MinecraftItemTypes) as MinecraftItemTypesKeys[] const randomIndex = Math.floor(Math.random() * itemTypes.length) - const randomKey = itemTypes[randomIndex] + const randomItemName = itemTypes[randomIndex] - const item = MinecraftItemTypes[randomKey] as ItemType - dimension.spawnItem(new ItemStack(item), block.location) + dimension.spawnItem(new ItemStack(randomItemName), block.location) }) diff --git a/src/behavior_pack/texts/en_US.lang b/src/behavior_pack/texts/en_US.lang index d072784..3064a9e 100644 --- a/src/behavior_pack/texts/en_US.lang +++ b/src/behavior_pack/texts/en_US.lang @@ -1,2 +1,2 @@ -pack.name=Serendipity v1.0.0 +pack.name=Serendipity v1.0.1 pack.description=When you break a block, there is a 1/100 chance to randomly drop an item from the game. \ No newline at end of file diff --git a/src/behavior_pack/texts/zh_CN.lang b/src/behavior_pack/texts/zh_CN.lang index 1a3a83c..9603ea6 100644 --- a/src/behavior_pack/texts/zh_CN.lang +++ b/src/behavior_pack/texts/zh_CN.lang @@ -1,2 +1,2 @@ -pack.name=意外发现 v1.0.0 +pack.name=意外发现 v1.0.1 pack.description=打碎方块时,有 1/100 的几率随机掉落游戏中的物品。 \ No newline at end of file