diff --git a/README.md b/README.md index cc6d731..f31e9e5 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ https://developers.google.com/blockly/guides/overview ### 預計要加入的頁面 ✅[實體攻擊事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/entityhiteventsignal)\ -[玩家退出事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/playerleaveeventsignal)\ -[玩家加入事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/playerjoineventsignal)\ -[被添加effect事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/effectaddeventsignal)\ +✅[玩家退出事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/playerleaveeventsignal)\ +✅[玩家加入事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/playerjoineventsignal)\ +✅[被添加effect事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/effectaddeventsignal)\ ✅[Tick Event](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/tickeventsignal)\ [實體被創建事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/entitycreateeventsignal)\ [爆炸事件](https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/explosioneventsignal)\ diff --git a/index.html b/index.html index a151bd8..5205748 100644 --- a/index.html +++ b/index.html @@ -20,12 +20,19 @@
+ - - - - - diff --git a/src/blocks.js b/src/blocks.js index f100002..6746bc2 100644 --- a/src/blocks.js +++ b/src/blocks.js @@ -39,8 +39,8 @@ Blockly.JavaScript['gametest_on_hit_entity'] = function (block) { const value_target = Blockly.JavaScript.valueToCode(block, 'TARGET', Blockly.JavaScript.ORDER_ATOMIC); const statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); const code = ` - Minecraft.world.events.entityHit.subscribe(e => { - ${value_attacker} = e.entity; + world.afterEvents.entityHitEntity.subscribe((e) => { + ${value_attacker} = e.damagingEntity; ${value_target} = e.hitEntity; if (!${value_attacker}.id) return; ${statements_code} @@ -68,8 +68,8 @@ Blockly.JavaScript['gametest_on_player_join'] = function (block) { const value_player = Blockly.JavaScript.valueToCode(block, 'PLAYER', Blockly.JavaScript.ORDER_ATOMIC); const statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); const code = ` - Minecraft.world.events.playerJoin.subscribe(e => { - ${value_player} = e.player; + world.afterEvents.playerJoin.subscribe((e) => { + ${value_player} = e.playerName; ${statements_code} }); `; @@ -95,7 +95,7 @@ Blockly.JavaScript['gametest_on_player_leave'] = function (block) { const value_player = Blockly.JavaScript.valueToCode(block, 'PLAYER', Blockly.JavaScript.ORDER_ATOMIC); const statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); const code = ` - Minecraft.world.events.playerLeave.subscribe(e => { + world.afterEvents.PlayerLeave.subscribe((e) => { ${value_player} = e.playerName; ${statements_code} }); @@ -127,9 +127,9 @@ Blockly.JavaScript['gametest_on_block_place'] = function (block) { const value_block = Blockly.JavaScript.valueToCode(block, 'BLOCK', Blockly.JavaScript.ORDER_ATOMIC); const statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); const code = ` - Minecraft.world.events.blockPlace.subscribe(e => { + world.afterEvents.playerPlaceBlock.subscribe((e) => { ${value_player} = e.player; - ${value_block} = e.block; + ${value_block} = e.extends; ${statements_code} }); `; @@ -160,9 +160,9 @@ Blockly.JavaScript['gametest_on_block_break'] = function (block) { const value_block = Blockly.JavaScript.valueToCode(block, 'BLOCK', Blockly.JavaScript.ORDER_ATOMIC); const statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); const code = ` - Minecraft.world.events.blockBreak.subscribe(e => { + world.afterEvents.playerBreakBlock.subscribe((e) => ${value_player} = e.player; - ${value_block} = e.block; + ${value_block} = e.extends; ${statements_code} }); `; @@ -182,7 +182,7 @@ Blockly.Blocks['gametest_on_tick'] = { Blockly.JavaScript['gametest_on_tick'] = function (block) { var statements_code = Blockly.JavaScript.statementToCode(block, 'CODE'); var code = ` - Minecraft.world.events.tick.subscribe(e => { + system.runInterval(() => { ${statements_code} }); `; @@ -398,9 +398,9 @@ Blockly.JavaScript['gametest_onitemuse'] = function (block) { } let code = ` - Minecraft.world.events.beforeItemUse.subscribe(e => { + world.afterEvents.ItemCompleteUse.subscribe((e) => ${cancel} - ${value_item} = e.item; + ${value_item} = e.itemStack; ${value_player} = e.source; ${statements_do} }); @@ -549,7 +549,7 @@ Blockly.JavaScript['gametest_onchat'] = function (block) { } let code = ` - Minecraft.world.events.beforeChat.subscribe(e => { + world.beforeEvents.chatSend.subscribe((e) => { ${cancel} ${value_player} = e.sender; ${value_message} = e.message; @@ -575,7 +575,7 @@ Blockly.JavaScript['gametest_run_command'] = function (block) { let dropdown_dimension = block.getFieldValue('DIMENSION'); let value_command = Blockly.JavaScript.valueToCode(block, 'COMMAND', Blockly.JavaScript.ORDER_ATOMIC); - let code = `Minecraft.world.getDimension("${dropdown_dimension}").runCommand(${value_command});\n`; + let code = `world.getDimension("${dropdown_dimension}").runCommand(${value_command});\n`; return code; }; Blockly.Blocks['gametest_tellraw_command'] = { @@ -657,7 +657,10 @@ Blockly.Blocks['gametest_add_tag'] = { Blockly.JavaScript['gametest_add_tag'] = function (block) { var value_player = Blockly.JavaScript.valueToCode(block, 'PLAYER', Blockly.JavaScript.ORDER_ATOMIC); var value_tag = Blockly.JavaScript.valueToCode(block, 'TAG', Blockly.JavaScript.ORDER_ATOMIC); - var code = `${value_player}.addTag(${value_tag})` + var code = `system.run(() => { + ${value_player}.addTag(${value_tag}) + }) + ` return code; }; Blockly.Blocks['gametest_remove_tag'] = { @@ -681,7 +684,9 @@ Blockly.Blocks['gametest_remove_tag'] = { Blockly.JavaScript['gametest_remove_tag'] = function (block) { var value_player = Blockly.JavaScript.valueToCode(block, 'PLAYER', Blockly.JavaScript.ORDER_ATOMIC); var value_tag = Blockly.JavaScript.valueToCode(block, 'TAG', Blockly.JavaScript.ORDER_ATOMIC); - var code = `${value_player}.removeTag(${value_tag})` + var code = `system.run(() => { + ${value_player}.removeTag(${value_tag}) + })` return code; }; Blockly.Blocks['gametest_has_tag'] = { diff --git a/src/index.css b/src/index.css index a5ba9ad..18fe0d4 100644 --- a/src/index.css +++ b/src/index.css @@ -26,6 +26,17 @@ html,body { margin: 0; } +.button button{ + width: 150px; + border: 2px solid #2e8dcc; + cursor: pointer; + border-radius: 22px; +} +.button buttton[type="submit"]:hover { + background-color: #2ecc71; + transition: 0.5s; + } + body { background-color: #fff; font-family: sans-serif; diff --git a/src/lib.js b/src/lib.js index e6276ad..233e8b1 100644 --- a/src/lib.js +++ b/src/lib.js @@ -2,7 +2,7 @@ function generate() { var generate_code = Blockly.JavaScript.workspaceToCode(workspace); - var init_code = `import * as GameTest from "@minecraft/server-gametest";\nimport { BlockLocation } from "@minecraft/server";\nconst log = function(message) {let okay_message = message.toString().replaceAll('\\"',"''").replaceAll('\\\\',"/");Minecraft.world.getDimension("overworld")player.runCommand(\`tellraw @a {"rawtext":[{"text":"\${okay_message}"}]}\`)}\n` + var init_code = `import { world } from "@minecraft/server";\nexport function log (message) {\n let okay_message = message.toString().replaceAll('\\"',"''").replaceAll('\\\\',"/");\n world.getDimension("overworld").runCommandAsync(\`tellraw @a {"rawtext":[{"text":"\${okay_message}"}]}\`)}\n` return init_code + generate_code } function check() { @@ -119,17 +119,17 @@ function download_pack(packName, code) { "type": "script", "uuid": uuid(), "version": [0, 0, 1], - "entry": "blockly-gametest/main.js" + "entry": "scripts/main.js" } ], "dependencies": [ { "module_name": "@minecraft/server", - "version": "1.0.0-beta" + "version": "1.12.0-beta" }, { - "module_name": "@minecraft/server-gametest", - "version": "1.0.0-beta" + "module_name": "@minecraft/server-ui", + "version": "1.2.0-beta" } ] } @@ -138,7 +138,7 @@ function download_pack(packName, code) { //添加文字檔案 mcpack.file("manifest.json", JSON.stringify(manifest)); //添加資料夾 - let script = mcpack.folder("blockly-gametest"); + let script = mcpack.folder("scripts"); script.file("main.js", code); mcpack.generateAsync({ type: 'blob' }).then(function (content) {