Skip to content

Commit

Permalink
feat: support 1.20.3x version
Browse files Browse the repository at this point in the history
  • Loading branch information
Lete114 committed Oct 15, 2023
1 parent 326ab14 commit 481e4e1
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 31 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
19 changes: 13 additions & 6 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/behavior_pack/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": [
Expand All @@ -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": {
Expand Down
43 changes: 24 additions & 19 deletions src/behavior_pack/scripts/main.ts
Original file line number Diff line number Diff line change
@@ -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)
})
2 changes: 1 addition & 1 deletion src/behavior_pack/texts/en_US.lang
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 1 addition & 1 deletion src/behavior_pack/texts/zh_CN.lang
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pack.name=意外发现 v1.0.0
pack.name=意外发现 v1.0.1
pack.description=打碎方块时,有 1/100 的几率随机掉落游戏中的物品。

0 comments on commit 481e4e1

Please sign in to comment.