diff --git a/resource_packs/texts/en_US.lang b/resource_packs/texts/en_US.lang index b44adfe..e41f6bb 100644 --- a/resource_packs/texts/en_US.lang +++ b/resource_packs/texts/en_US.lang @@ -44,19 +44,35 @@ message.level1.name=Level 1 message.level1.started=Level 1 is started! message.level1.complete=Level 1 is complete! message.level1.make=Make Level 1 -message.level1.outOfBoun=§cOut of bounds!§bwd +message.level1.outOfBounds=§cOut of bounds!§bwd ## Level 2 messages message.level2.name=Level 2 message.level2.started=Level 2 is started! message.level2.complete=Level 2 is complete! message.level2.make=Make Level 2 +message.level2.outOfBounds=§cOut of bounds!§bwd ## Level 3 messages message.level3.name=Level 3 message.level3.started=Level 3 is started! message.level3.complete=Level 3 is complete! message.level3.make=Make Level 3 +message.level3.outOfBounds=§cOut of bounds!§bwd + +## Level 4 messages +message.level4.name=Level 4 +message.level4.started=Level 4 is started! +message.level4.complete=Level 4 is complete! +message.level4.make=Make Level 4 +message.level4.outOfBounds=§cOut of bounds!§bwd + +## Level 5 messages +message.level5.name=Level 5 +message.level5.started=Level 5 is started! +message.level5.complete=Level 5 is complete! +message.level5.make=Make Level 5 +message.level5.outOfBounds=§cOut of bounds!§bwd ## Goto messages message.goto.field.1=Go to the First Field diff --git a/resource_packs/textures/blocks/wool_colored_purple.png b/resource_packs/textures/blocks/wool_colored_purple.png new file mode 100644 index 0000000..e5dee3b Binary files /dev/null and b/resource_packs/textures/blocks/wool_colored_purple.png differ diff --git a/scripts/Commandeer/level/level.ts b/scripts/Commandeer/level/level.ts index 90797a4..cfbbbea 100644 --- a/scripts/Commandeer/level/level.ts +++ b/scripts/Commandeer/level/level.ts @@ -1,4 +1,4 @@ -import { World } from "@minecraft/server"; +import { world, World } from "@minecraft/server"; class Level { levelCompleteCallback: Function; @@ -35,6 +35,7 @@ class Level { this.levelUpdateCallback(); if (this.levelCheckCallback() && !this.isCompleted) { this.levelCompleteCallback(); + world.sendMessage("level completed."); this.isCompleted = true; } } diff --git a/scripts/levels/level1/mission1.ts b/scripts/levels/level1/mission1.ts index f535517..af98b29 100644 --- a/scripts/levels/level1/mission1.ts +++ b/scripts/levels/level1/mission1.ts @@ -1,4 +1,4 @@ -import { BlockType, BlockTypes, Vector3, world } from "@minecraft/server"; +import { BlockType, BlockTypes, EntityInventoryComponent, Player, Vector3, world } from "@minecraft/server"; import Level from "../../Commandeer/level/level"; import pupeteer from "../../Commandeer/pupeteer"; import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; @@ -7,10 +7,49 @@ import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/ut import { level1Conditions } from "../../levelConditions/level1"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; +import { MinecraftBiomeTypes } from "../../vanilla-data/mojang-biome"; +import level2 from "../level2/mission1"; const Level1CommandBlockPos: Vector3 = vector3(-73, 71, 283); -const level1StartPosition: Vector3 = vector3(-73, 69, 267); -const Level1EndPosition: Vector3 = vector3(-82, 69, 265); +const level1StartPosition: Vector3 = vector3(-73, 69, 272); +const Level1EndPosition: Vector3 = vector3(-83, 69, 258); +let toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)]; +let flowerPositions = [ + vector3(-74, 69, 272), + vector3(-75, 69, 272), + vector3(-75, 69, 271), + vector3(-75, 69, 270), + vector3(-75, 69, 269), + vector3(-76, 69, 270), + vector3(-77, 69, 270), + vector3(-77, 69, 269), + vector3(-77, 69, 268), + vector3(-77, 69, 267), + vector3(-78, 69, 268), + vector3(-79, 69, 268), + vector3(-79, 69, 267), + vector3(-79, 69, 266), + vector3(-79, 69, 265), + vector3(-80, 69, 266), + vector3(-81, 69, 266), + vector3(-81, 69, 265), + vector3(-81, 69, 264), + vector3(-81, 69, 263), + vector3(-82, 69, 264), + vector3(-83, 69, 264), + vector3(-83, 69, 263), + vector3(-83, 69, 262), + vector3(-83, 69, 261), + vector3(-83, 69, 260), + vector3(-83, 69, 259), +]; + +let toolBlocks = [ + MinecraftBlockTypes.RedWool, + MinecraftBlockTypes.GreenWool, + MinecraftBlockTypes.YellowWool, + MinecraftBlockTypes.BlueWool, +]; const level1ResetCommandBlockPos: Vector3 = vector3(56, 68, 211); const level1: Level = new Level( @@ -18,7 +57,7 @@ const level1: Level = new Level( pupeteer.sendWorldMessage("%message.level1.started"); pupeteer.setTitleTimed("%message.level1.name", 2.5); startLevel(Level1CommandBlockPos); - teleportAgent(level1StartPosition); + teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272)); }, () => { pupeteer.setActionBar("%message.level1.make"); @@ -27,43 +66,102 @@ const level1: Level = new Level( pupeteer.clearActionBar(); pupeteer.sendWorldMessage("%message.level1.complete"); pupeteer.setTitleTimed("%message.level1.complete", 2.5); - + world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 air replace barrier"); mindKeeper.increment(CURRENT_LEVEL); + level2.reset(); + world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 barrier replace air"); }, () => { let isComplete = false; let isOutOfBounds = false; let hasAllTools = false; + let plantedAllFlowers = false; - //6 blocks lower is lava + for (let i = 0; i < toolPositions.length; i++) { + let block = world.getDimension("overworld").getBlock(toolPositions[i]); + if (block?.type.id == MinecraftBlockTypes.Air) { + toolPositions.splice(i, 1); + } + } + + for (let i = 0; i < flowerPositions.length; i++) { + let block = world.getDimension("overworld").getBlock(flowerPositions[i]); + if (block?.type.id == MinecraftBlockTypes.BlueOrchid) { + flowerPositions.splice(i, 1); + } + } + + if (toolPositions.length == 0) { + hasAllTools = true; + } + if (flowerPositions.length == 0) { + plantedAllFlowers = true; + } let agentPos = getAgentLocation(); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0))); if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) { - isOutOfBounds = true; + if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) { + return false; + } else { + return true; + } } - - if (isAgentAt(Level1EndPosition) && hasAllTools) { + if (isAgentAt(Level1EndPosition) && hasAllTools && plantedAllFlowers) { isComplete = true; } - // world.sendMessage(`isComplete: ${isComplete}`); - // world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); - if (isOutOfBounds) { pupeteer.sendWorldMessage("%message.level1.outOfBounds"); pupeteer.setTitleTimed("%message.level1.outOfBounds", 2.5); - // world.getDimension("overworld").runCommand("/kill @e[type=agent]"); world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s"); + world.getDimension("Overworld").runCommand("/fill -74 69 272 -83 69 259 air replace blue_orchid"); + + toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)]; + for (let i = 0; i < toolPositions.length; i++) { + let blockToReplace = world.getDimension("overworld").getBlock(toolPositions[i]); + if (blockToReplace?.type.id === MinecraftBlockTypes.Air) { + placeBlock(toolPositions[i], toolBlocks[i]); + } + } + + teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272)); - teleportAgent(level1StartPosition); return false; } else if (isComplete) { return true; } return false; + }, + () => { + world.getDimension("Overworld").runCommand("/fill -74 69 272 -83 69 259 air replace blue_orchid"); + + toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)]; + for (let i = 0; i < toolPositions.length; i++) { + placeBlock(toolPositions[i], toolBlocks[i]); + } } ); +function placeBlock(position: Vector3, blockType: MinecraftBlockTypes) { + const block = world.getDimension("overworld").getBlock(position); + block!.setType(blockType); +} + +function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { + if (facing == vector3(-84, 69, 272)) { + world + .getDimension("overworld") + .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); + } else { + world + .getDimension("overworld") + .runCommand( + `/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}` + ); + } +} + export default level1; diff --git a/scripts/levels/level2/mission1.ts b/scripts/levels/level2/mission1.ts index 5da4cc7..ec22f70 100644 --- a/scripts/levels/level2/mission1.ts +++ b/scripts/levels/level2/mission1.ts @@ -7,6 +7,7 @@ import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/ut // import { level2Conditions } from "../../levelConditions/level2"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; +import level3 from "./mission2"; const level2CommandBlockPos: Vector3 = vector3(-111, 70, 282); const level2StartPosition: Vector3 = vector3(-111, 69, 272); @@ -18,7 +19,7 @@ const level2: Level = new Level( pupeteer.sendWorldMessage("%message.level2.started"); pupeteer.setTitleTimed("%message.level2.name", 2.5); startLevel(level2CommandBlockPos); - teleportAgent(level2StartPosition); + teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272)); }, () => { pupeteer.setActionBar("%message.level2.make"); @@ -27,15 +28,15 @@ const level2: Level = new Level( pupeteer.clearActionBar(); pupeteer.sendWorldMessage("%message.level2.complete"); pupeteer.setTitleTimed("%message.level2.complete", 2.5); - + world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 air replace barrier"); mindKeeper.increment(CURRENT_LEVEL); + level3.reset(); + world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 barrier replace air"); }, () => { let isComplete = false; let isOutOfBounds = false; - //6 blocks lower is lava - let agentPos = getAgentLocation(); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); @@ -47,22 +48,38 @@ const level2: Level = new Level( isComplete = true; } - // world.sendMessage(`isComplete: ${isComplete}`); - // world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); - if (isOutOfBounds) { pupeteer.sendWorldMessage("%message.level2.outOfBounds"); pupeteer.setTitleTimed("%message.level2.outOfBounds", 2.5); - // world.getDimension("overworld").runCommand("/kill @e[type=agent]"); world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s"); + world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace sweet_berry_bush"); + world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace jungle_sapling"); - teleportAgent(level2StartPosition); + teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272)); return false; } else if (isComplete) { return true; } return false; + }, + () => { + world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace sweet_berry_bush"); + world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace jungle_sapling"); } ); +function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { + if (facing == vector3(-125, 69, 272)) { + world + .getDimension("overworld") + .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); + } else { + world + .getDimension("overworld") + .runCommand( + `/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}` + ); + } +} + export default level2; diff --git a/scripts/levels/level2/mission2.ts b/scripts/levels/level2/mission2.ts index 2adee90..d9fa7b6 100644 --- a/scripts/levels/level2/mission2.ts +++ b/scripts/levels/level2/mission2.ts @@ -1,4 +1,4 @@ -import { Vector3, world } from "@minecraft/server"; +import { BlockVolume, Vector3, world } from "@minecraft/server"; import Level from "../../Commandeer/level/level"; import pupeteer from "../../Commandeer/pupeteer"; import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; @@ -6,6 +6,7 @@ import { startLevel } from "../../Commandeer/utils/levelUtils"; import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; +import level4 from "./mission3"; const Level3CommandBlockPos: Vector3 = vector3(-133, 68, 281); const level3StartPosition: Vector3 = vector3(-133, 68, 265); @@ -17,7 +18,7 @@ const level3: Level = new Level( pupeteer.sendWorldMessage("%message.level3.started"); pupeteer.setTitleTimed("%message.level3.name", 2.5); startLevel(Level3CommandBlockPos); - teleportAgent(level3StartPosition); + teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265)); }, () => { pupeteer.setActionBar("%message.level3.make"); @@ -26,48 +27,66 @@ const level3: Level = new Level( pupeteer.clearActionBar(); pupeteer.sendWorldMessage("%message.level3.complete"); pupeteer.setTitleTimed("%message.level3.complete", 2.5); - + world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 air replace barrier"); mindKeeper.increment(CURRENT_LEVEL); + level4.reset(); + world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air"); }, () => { let isComplete = false; let isOutOfBounds = false; - //6 blocks lower is lava - let agentPos = getAgentLocation(); - let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0))); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0))); - if ( - blockLava && - blockLava.type.id === MinecraftBlockTypes.Lava && - blockAir && - blockAir.type.id === MinecraftBlockTypes.Air - ) { - isOutOfBounds = true; + if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) { + if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) { + return false; + } else { + return true; + } } if (isAgentAt(Level3EndPosition)) { isComplete = true; } - // world.sendMessage(`isComplete: ${isComplete}`); - // world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); - if (isOutOfBounds) { pupeteer.sendWorldMessage("%message.level3.outOfBounds"); pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5); - // world.getDimension("overworld").runCommand("/kill @e[type=agent]"); world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s"); + world.getDimension("Overworld").runCommand("/fill -133 68 272 -148 68 258 air replace sweet_berry_bush"); + world.getDimension("Overworld").runCommand("/fill -133 67 272 -148 67 258 magma replace cobblestone"); + world.getDimension("overworld").runCommand("/execute at @e[tag=KillingPandas] run kill @e[type=panda, r=10]"); - teleportAgent(level3StartPosition); + teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265)); return false; } else if (isComplete) { return true; } return false; + }, + () => { + world.getDimension("Overworld").runCommand("/fill -133 68 272 -148 68 258 air replace sweet_berry_bush"); + world.getDimension("Overworld").runCommand("/fill -133 67 272 -148 67 258 magma replace cobblestone"); + let volume: BlockVolume = new BlockVolume(vector3(-131, 69, 284), vector3(-131, 69, 284)); + world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); } ); +function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { + if (facing == vector3(-148, 68, 265)) { + world + .getDimension("overworld") + .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); + } else { + world + .getDimension("overworld") + .runCommand( + `/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}` + ); + } +} + export default level3; diff --git a/scripts/levels/level2/mission3.ts b/scripts/levels/level2/mission3.ts index 9e03c73..a304292 100644 --- a/scripts/levels/level2/mission3.ts +++ b/scripts/levels/level2/mission3.ts @@ -1,4 +1,4 @@ -import { Vector3, world } from "@minecraft/server"; +import { BlockVolume, Vector3, world } from "@minecraft/server"; import Level from "../../Commandeer/level/level"; import pupeteer from "../../Commandeer/pupeteer"; import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; @@ -6,6 +6,7 @@ import { startLevel } from "../../Commandeer/utils/levelUtils"; import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils"; import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; +import level5 from "../level3/mission1"; const Level4CommandBlockPos: Vector3 = vector3(-161, 68, 291); const level4StartPosition: Vector3 = vector3(-161, 62, 261); const level4EndPosition: Vector3 = vector3(-174, 62, 268); @@ -16,7 +17,7 @@ const level4: Level = new Level( pupeteer.sendWorldMessage("%message.level4.started"); pupeteer.setTitleTimed("%message.level4.name", 2.5); startLevel(Level4CommandBlockPos); - teleportAgent(level4StartPosition); + teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261)); }, () => { pupeteer.setActionBar("%message.level4.make"); @@ -25,25 +26,18 @@ const level4: Level = new Level( pupeteer.clearActionBar(); pupeteer.sendWorldMessage("%message.level4.complete"); pupeteer.setTitleTimed("%message.level4.complete", 2.5); - + world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 air replace barrier"); mindKeeper.increment(CURRENT_LEVEL); + level5.reset(); }, () => { let isComplete = false; let isOutOfBounds = false; - //6 blocks lower is lava - let agentPos = getAgentLocation(); - let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0))); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); - if ( - blockLava && - blockLava.type.id === MinecraftBlockTypes.Lava && - blockAir && - blockAir.type.id === MinecraftBlockTypes.Air - ) { + if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) { isOutOfBounds = true; } @@ -51,16 +45,14 @@ const level4: Level = new Level( isComplete = true; } - // world.sendMessage(`isComplete: ${isComplete}`); - // world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); - if (isOutOfBounds) { pupeteer.sendWorldMessage("%message.level4.outOfBounds"); pupeteer.setTitleTimed("%message.level4.outOfBounds", 2.5); - // world.getDimension("overworld").runCommand("/kill @e[type=agent]"); world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s"); + let volume: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291)); + world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); - teleportAgent(level4StartPosition); + teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261)); return false; } else if (isComplete) { return true; @@ -69,4 +61,18 @@ const level4: Level = new Level( } ); +function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { + if (facing == vector3(-175, 62, 261)) { + world + .getDimension("overworld") + .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); + } else { + world + .getDimension("overworld") + .runCommand( + `/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}` + ); + } +} + export default level4; diff --git a/scripts/levels/level3/mission1.ts b/scripts/levels/level3/mission1.ts new file mode 100644 index 0000000..0b76fd8 --- /dev/null +++ b/scripts/levels/level3/mission1.ts @@ -0,0 +1,133 @@ +import { BlockVolume, Vector3, world } from "@minecraft/server"; +import Level from "../../Commandeer/level/level"; +import pupeteer from "../../Commandeer/pupeteer"; +import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; +import { startLevel } from "../../Commandeer/utils/levelUtils"; +import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils"; +// import { level2Conditions } from "../../levelConditions/level2"; +import { mindKeeper, CURRENT_LEVEL } from "../../main"; +import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; +const level5CommandBlockPos: Vector3 = vector3(-255, 67, 244); + +const level5StartPosition: Vector3 = vector3(-226, 65, 244); +const level5EndPosition: Vector3 = vector3(-226, 65, 229); + +const level5ResetCommandBlockPos: Vector3 = vector3(56, 68, 211); + +let diamondAndPickaxePositions = [ + vector3(-224, 64, 242), + vector3(-216, 64, 242), + vector3(-217, 64, 240), + vector3(-226, 64, 239), + vector3(-214, 64, 238), + vector3(-220, 64, 238), + vector3(-219, 64, 236), + vector3(-221, 64, 235), + vector3(-225, 64, 235), + vector3(-215, 64, 233), + vector3(-227, 64, 232), + vector3(-225, 64, 231), + vector3(-218, 64, 231), + vector3(-223, 64, 230), + vector3(-219, 64, 229), +]; + +const level5: Level = new Level( + () => { + pupeteer.sendWorldMessage("%message.level5.started"); + pupeteer.setTitleTimed("%message.level5.name", 2.5); + startLevel(level5CommandBlockPos); + teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229)); + }, + () => { + pupeteer.setActionBar("%message.level5.make"); + }, + () => { + pupeteer.clearActionBar(); + pupeteer.sendWorldMessage("%message.level5.complete"); + pupeteer.setTitleTimed("%message.level5.complete", 2.5); + // world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 air replace barrier"); + + mindKeeper.increment(CURRENT_LEVEL); + }, + () => { + let isComplete = false; + let isOutOfBounds = false; + + //6 blocks lower is lava + + let agentPos = getAgentLocation(); + let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + let blockMagma = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + let blockTNT = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); + + if ( + blockAir && + blockAir.type.id === MinecraftBlockTypes.Air && + blockMagma && + blockMagma.type.id === MinecraftBlockTypes.Magma && + blockTNT && + blockTNT.type.id === MinecraftBlockTypes.Tnt + ) { + isOutOfBounds = true; + } + + if (isAgentAt(level5EndPosition)) { + isComplete = true; + } + + if (isOutOfBounds) { + pupeteer.sendWorldMessage("%message.level5.outOfBounds"); + pupeteer.setTitleTimed("%message.level5.outOfBounds", 2.5); + world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s"); + + let volume: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291)); + world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); + + for (let i = 0; i < diamondAndPickaxePositions.length; i++) { + let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]); + if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) { + placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool); + } + } + + teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229)); + return false; + } else if (isComplete) { + return true; + } + return false; + }, + () => { + world.getDimension("Overworld").runCommand("/fill -213 64 244 -227 64 229 stone replace podzol"); + for (let i = 0; i < diamondAndPickaxePositions.length; i++) { + let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]); + if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) { + placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool); + } + } + let volume: BlockVolume = new BlockVolume(vector3(-255, 67, 246), vector3(-255, 67, 246)); + world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); + } +); + +function placeBlock(position: Vector3, blockType: MinecraftBlockTypes) { + const block = world.getDimension("overworld").getBlock(position); + block!.setType(blockType); +} + +function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void { + if (facing == vector3(-226, 65, 229)) { + world + .getDimension("overworld") + .runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`); + } else { + world + .getDimension("overworld") + .runCommand( + `/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}` + ); + } +} + +export default level5; diff --git a/scripts/levels/levelIntro.ts b/scripts/levels/levelIntro.ts deleted file mode 100644 index 06eda8f..0000000 --- a/scripts/levels/levelIntro.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { BlockType, Vector3, world } from "@minecraft/server"; -import Level from "../Commandeer/level/level"; -import { leverOn } from "../Commandeer/level/levelTypes"; -import { teleportAgent, isAgentAt } from "../Commandeer/utils/agentUtils"; -import { startLevel } from "../Commandeer/utils/levelUtils"; -import { vector3 } from "../Commandeer/utils/vectorUtils"; -import { levelIntroConditions } from "../levelConditions/levelIntro"; -import { CURRENT_LEVEL, mindKeeper } from "../main"; -import Pupeteer from "../Commandeer/pupeteer"; -import { MinecraftBlockTypes } from "../vanilla-data/mojang-block"; - -// const levelIntroCommandBlockPos: Vector3 = vector3(58, 66, 276); -// const levelIntroStartPosition: Vector3 = vector3(28, 70, 269); -// const levelIntroEndPosition: Vector3 = vector3(39, 70, 269); -const buttonPositions: Vector3[] = [ - vector3(2471, 11, 106), - vector3(2469, 11, 106), - vector3(2468, 11, 106), - vector3(2464, 11, 106), -]; - -const blockPositions: Vector3[] = [ - vector3(2471, 12, 108), - vector3(2469, 12, 108), - vector3(2468, 12, 108), - vector3(2464, 12, 108), -]; - -let currentBlockSequence: string[] = []; -let currentBlockSeuqenceIndex: number[] = []; - -const blockCycle: string[] = [ - MinecraftBlockTypes.RedstoneBlock, - MinecraftBlockTypes.GoldBlock, - MinecraftBlockTypes.DiamondBlock, - MinecraftBlockTypes.EmeraldBlock, - MinecraftBlockTypes.LapisBlock, -]; - -let buttonPressed: boolean[] = buttonPositions.map(() => false); - -const levelIntro: Level = new Level( - () => { - Pupeteer.sendWorldMessage("%message.intro.started"); - Pupeteer.setTitleTimed("%message.intro.started", 2.5); - // startLevel(levelIntroCommandBlockPos); - // teleportAgent(levelIntroStartPosition); - blockPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); - let index = blockPositions.indexOf(pos); - let blockType = block!.type; - currentBlockSequence[index] = blockType.id; - }); - }, - () => { - Pupeteer.setActionBar("%message.intro.make"); - - buttonPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); - if (!block) return; - let index = buttonPositions.indexOf(pos); - let prevState = buttonPressed[index]; - let currentState = block!.getRedstonePower()! > 0; - - if (currentState && !prevState) { - buttonPressed[index] = true; - //NextBlock - let nextBlock = currentBlockSequence[index]; - let nextIndex = blockCycle.indexOf(nextBlock); - nextIndex = (nextIndex + 1) % blockCycle.length; - currentBlockSequence[index] = blockCycle[nextIndex]; - //Update the block - let blockPos = blockPositions[index]; - world.getDimension("overworld").getBlock(blockPos)!.setType(blockCycle[nextIndex]); - } - - if (!currentState && prevState) { - buttonPressed[index] = false; - } - }); - }, - () => { - Pupeteer.clearActionBar(); - world.sendMessage("%message.intro.done"); - Pupeteer.setTitleTimed("%message.intro.done", 2.5); - - mindKeeper.increment(CURRENT_LEVEL); - }, - () => { - let counter = 0; - let isComplete = true; - levelIntroConditions.conditions.forEach((condition) => { - let blockInworld = world.getDimension("overworld").getBlock(condition.position); - if (blockInworld?.type.id !== condition.block) { - isComplete = false; - counter++; - } - }); - world.sendMessage(`%message.intro.progress ${counter}/${levelIntroConditions.conditions.length}`); - world.sendMessage(`isComplete: ${isComplete}`); - if (isComplete) { - return true; - } - return false; - }, - () => { - blockPositions.forEach((pos) => { - let block = world.getDimension("overworld").getBlock(pos); - let randomBlock = blockCycle[Math.floor(Math.random() * blockCycle.length)]; - block!.setType(randomBlock); - }); - } -); - -export default levelIntro; diff --git a/scripts/main.ts b/scripts/main.ts index 24837e7..7057770 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -22,10 +22,13 @@ import level1 from "./levels/level1/mission1"; import level2 from "./levels/level2/mission1"; import level3 from "./levels/level2/mission2"; import level4 from "./levels/level2/mission3"; +import level5 from "./levels/level3/mission1"; import { MinecraftBlockTypes } from "./vanilla-data/mojang-block"; -import { TransitionTrailToLevel1 } from "./trails/TransitionTrailToLevel1"; import { TransitionTrailToLevel2 } from "./trails/TransitionTrailToLevel2"; import { TransitionTrailToLevel3 } from "./trails/TransitionTrailToLevel3"; +import { TransitionTrailToLevel4 } from "./trails/TransitionTrailToLevel4"; +import { TransitionTrailToLevel5 } from "./trails/TransitionTrailToLevel5"; +import { TransitionTrailToTheEnd } from "./trails/TransitionTrailToTheEnd"; const mindKeeper = new Mindkeeper(world); const trailMaker: TrailMaker.Maker = new TrailMaker.Maker(); @@ -35,31 +38,31 @@ const AGENT_ID = "agentid"; const PREFIX = "!"; export { mindKeeper, CURRENT_LEVEL, triggerManager }; -triggerManager.RegisterFunctionTrigger("resetPath", (event) => { - resetLightPath(); -}); - -async function resetLightPath() { - world.getDimension("overworld").runCommand("/fill 2467 9 87 2468 9 105 air"); -} - -let isIntroToLevel1Sqeuence = false; -let isMakingLevel1 = false; -let isMakingLevel2 = false; -let isMakingLevel3 = false; -let isMakingLevel4 = false; - let introTrail: Trail = new Trail("introTrail", 4, 4); introTrail.fromTrail(startTrail); let transitionTrail1 = new Trail("transitionTrail1", 2, 2); -transitionTrail1.fromTrail(TransitionTrailToLevel1); +transitionTrail1.fromTrail(TransitionTrailToLevel2); let transitionTrail2 = new Trail("transitionTrail2", 2, 2); -transitionTrail2.fromTrail(TransitionTrailToLevel2); +transitionTrail2.fromTrail(TransitionTrailToLevel3); let transitionTrail3 = new Trail("transitionTrail3", 2, 2); -transitionTrail3.fromTrail(TransitionTrailToLevel3); +transitionTrail3.fromTrail(TransitionTrailToLevel4); + +let transitionTrail4 = new Trail("transitionTrail4", 2, 2); +transitionTrail4.fromTrail(TransitionTrailToLevel5); + +let transitionTrail5 = new Trail("transitionTrail5", 2, 2); +transitionTrail5.fromTrail(TransitionTrailToTheEnd); + +const frameDuration = 7; +let gateRoot = vector3(-226, 68, 223); +enum GateState { + open, + closed, +} +let gateState = GateState.closed; const DEVELOPER_MODE = true; let tickCounter = 0; @@ -78,94 +81,55 @@ system.runInterval(async () => { introTrail.spawnNext(); break; case 1: - Pupeteer.setActionBar("Trigger1 works"); - if (!isMakingLevel1) { - isMakingLevel1 = true; - world.sendMessage("Starting level1"); - level1.update(); - } + level1.update(); break; + case 2: - Pupeteer.setActionBar("Go to the next level."); + Pupeteer.setActionBar("Follow the trail to the next level."); transitionTrail1.spawnNext(); break; + case 3: - Pupeteer.setActionBar("Trigger2 works"); - if (!isMakingLevel2) { - isMakingLevel2 = true; - world.sendMessage("Starting level2"); - level2.update(); - } + level2.update(); break; + case 4: - Pupeteer.setActionBar("Trigger3 works"); - if (!isMakingLevel3) { - isMakingLevel3 = true; - world.sendMessage("Starting level3"); - level3.update(); - } + Pupeteer.setActionBar("Follow the trail to the next level."); + transitionTrail2.spawnNext(); break; + case 5: - Pupeteer.setActionBar("Trigger4 works"); - if (!isMakingLevel4) { - isMakingLevel4 = true; - world.sendMessage("Starting level4"); - level4.update(); - } + level3.update(); break; + case 6: + Pupeteer.setActionBar("Follow the trail to the next level."); + transitionTrail3.spawnNext(); + break; + + case 7: + level4.update(); + break; + + case 8: + Pupeteer.setActionBar("Follow the trail to the next level."); + transitionTrail4.spawnNext(); + break; + + case 9: + level5.update(); + break; + case 10: + transitionTrail5.spawnNext(); + if (gateState == GateState.closed) { + PlayGateOpenAnimation(); + gateState = GateState.open; + } break; } } }); -triggerManager.RegisterFunctionTrigger("lightPath", (event) => { - lightUpPath(); -}); - -async function lightUpPath() { - let overworld: Dimension = world.getDimension("overworld"); - let pos1 = vector3(2467, 9, 87); - let pos2 = vector3(2468, 9, 105); - - for (let z = pos2.z; z >= pos1.z; z--) { - let volume: BlockVolume = new BlockVolume(vector3(pos1.x, pos1.y, z), vector3(pos1.x + 1, pos1.y, z)); - overworld.fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock); - await delay(4); - } -} - -world.afterEvents.worldInitialize.subscribe(() => { - mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number); - mindKeeper.registerStore(AGENT_ID, StoreType.string); - triggerManager.RegisterStores(); - mindKeeper.registerToWorld(); - - triggerManager.Load(); -}); - -world.beforeEvents.itemUseOn.subscribe((event) => { - trailMaker.OnItemUse(event); - triggerManager.OnItemUse(event); -}); - -async function randomExplosions() { - let pos1 = vector3(2465, 10, 82); - let pos2 = vector3(2471, 18, 90); - - for (let i = 0; i < 5; i++) { - let pos = vector3( - pos1.x + Math.random() * (pos2.x - pos1.x), - pos1.y + Math.random() * (pos2.y - pos1.y), - pos1.z + Math.random() * (pos2.z - pos1.z) - ); - - system.run(() => { - spawnParticle(pos, "minecraft:huge_explosion_emitter", new MolangVariableMap()); - }); - } -} - world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => { const command = event.message.split(" ")[0]; @@ -175,25 +139,18 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => { if (command === "!reset") { world.sendMessage("Resetting"); - - mindKeeper.set(CURRENT_LEVEL, 0); - - resetLightPath(); - level1.reset(); level2.reset(); level3.reset(); level4.reset(); - - isIntroToLevel1Sqeuence = false; - } -}); - -system.afterEvents.scriptEventReceive.subscribe((event) => { - if (event.id == "cc:getId") { - let id = event.message; - world.sendMessage("Script got the id " + id); - mindKeeper.set(AGENT_ID, id); + level5.reset(); + ResetGate(); + world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 barrier replace air"); + world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 barrier replace air"); + world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 barrier replace air"); + world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air"); + mindKeeper.set(CURRENT_LEVEL, 8); + world.sendMessage("currentlevel = " + mindKeeper.get(CURRENT_LEVEL)); } }); @@ -207,45 +164,37 @@ class ClonePos { } } -triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => { - if (mindKeeper.get(CURRENT_LEVEL) == 0) { - // mindKeeper.increment(CURRENT_LEVEL); - mindKeeper.set(CURRENT_LEVEL, 1); - } -}); +const gateFrames: ClonePos[] = [ + { + point1: vector3(-226, 66, 223), + point2: vector3(-219, 62, 223), + }, + { + point1: vector3(-226, 61, 223), + point2: vector3(-219, 57, 223), + }, + { + point1: vector3(-226, 56, 223), + point2: vector3(-219, 52, 223), + }, + { + point1: vector3(-226, 51, 223), + point2: vector3(-219, 47, 223), + }, + { + point1: vector3(-226, 46, 223), + point2: vector3(-219, 42, 223), + }, +]; -triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => { +let PlayGateOpenAnimation = async () => { + playAnimation(gateFrames, frameDuration, false, gateRoot); if (mindKeeper.get(CURRENT_LEVEL) == 0) { - // mindKeeper.increment(CURRENT_LEVEL); - mindKeeper.set(CURRENT_LEVEL, 2); + mindKeeper.increment(CURRENT_LEVEL); } -}); +}; -triggerManager.RegisterFunctionTrigger("PastLevel2", async (event) => { - if (mindKeeper.get(CURRENT_LEVEL) == 0) { - // mindKeeper.increment(CURRENT_LEVEL); - mindKeeper.set(CURRENT_LEVEL, 3); - } -}); - -triggerManager.RegisterFunctionTrigger("PastLevel3", async (event) => { - if (mindKeeper.get(CURRENT_LEVEL) == 0) { - // mindKeeper.increment(CURRENT_LEVEL); - mindKeeper.set(CURRENT_LEVEL, 4); - } -}); - -Commands.register(PREFIX, "info", (arg) => { - world.sendMessage("-----------------"); - world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL)); - world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID)); - world.sendMessage("Engine Version: 1.0.2"); - world.sendMessage("Engine is running"); - world.sendMessage("Active players: " + world.getPlayers().length); - world.sendMessage("Current dimension: " + arg.player.dimension.id); - world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location)); - world.sendMessage("-----------------"); -}); +let ResetGate = () => SetFrame(gateFrames[0], gateRoot); async function SetFrame(frame: ClonePos, destination: Vector3) { await world @@ -290,6 +239,48 @@ async function playAnimation( } } +triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => { + if (mindKeeper.get(CURRENT_LEVEL) == 0) { + mindKeeper.increment(CURRENT_LEVEL); + } +}); + +triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => { + if (mindKeeper.get(CURRENT_LEVEL) == 2) { + mindKeeper.increment(CURRENT_LEVEL); + } +}); + +triggerManager.RegisterFunctionTrigger("PastLevel2", async (event) => { + if (mindKeeper.get(CURRENT_LEVEL) == 4) { + mindKeeper.increment(CURRENT_LEVEL); + } +}); + +triggerManager.RegisterFunctionTrigger("PastLevel3", async (event) => { + if (mindKeeper.get(CURRENT_LEVEL) == 6) { + mindKeeper.increment(CURRENT_LEVEL); + } +}); + +triggerManager.RegisterFunctionTrigger("PastLevel4", async (event) => { + if (mindKeeper.get(CURRENT_LEVEL) == 8) { + mindKeeper.increment(CURRENT_LEVEL); + } +}); + +Commands.register(PREFIX, "info", (arg) => { + world.sendMessage("-----------------"); + world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL)); + world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID)); + world.sendMessage("Engine Version: 1.0.2"); + world.sendMessage("Engine is running"); + world.sendMessage("Active players: " + world.getPlayers().length); + world.sendMessage("Current dimension: " + arg.player.dimension.id); + world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location)); + world.sendMessage("-----------------"); +}); + system.afterEvents.scriptEventReceive.subscribe((event) => { if (event.id == "cc:getId") { let id = event.message; @@ -297,3 +288,25 @@ system.afterEvents.scriptEventReceive.subscribe((event) => { mindKeeper.set(AGENT_ID, id); } }); + +system.afterEvents.scriptEventReceive.subscribe((event) => { + if (event.id == "cc:getId") { + let id = event.message; + world.sendMessage("Script got the id " + id); + mindKeeper.set(AGENT_ID, id); + } +}); + +world.afterEvents.worldInitialize.subscribe(() => { + mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number); + mindKeeper.registerStore(AGENT_ID, StoreType.string); + triggerManager.RegisterStores(); + mindKeeper.registerToWorld(); + + triggerManager.Load(); +}); + +world.beforeEvents.itemUseOn.subscribe((event) => { + trailMaker.OnItemUse(event); + triggerManager.OnItemUse(event); +}); diff --git a/scripts/trails/TransitionTrailToLevel1.ts b/scripts/trails/TransitionTrailToLevel1.ts deleted file mode 100644 index a9cc712..0000000 --- a/scripts/trails/TransitionTrailToLevel1.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Vector3 } from "@minecraft/server"; -import { TrailType } from "../Commandeer/trail/trailTypes"; -import { vector3 } from "../Commandeer/utils/vectorUtils"; - -let TransitionTrailToLevel1: TrailType = { - name: "TransitionTrailToLevel1", - points: [ - { index: 0, position: vector3(-54, 88.1, 265.5) }, - { index: 1, position: vector3(-55, 88.1, 265.5) }, - { index: 2, position: vector3(-56, 88.1, 265.5) }, - { index: 3, position: vector3(-57, 88.1, 265.5) }, - { index: 4, position: vector3(-58, 88.1, 265.5) }, - { index: 5, position: vector3(-58, 87.1, 265.5) }, - { index: 6, position: vector3(-58, 86.1, 265.5) }, - { index: 7, position: vector3(-58, 85.1, 265.5) }, - { index: 8, position: vector3(-58, 84.1, 265.5) }, - { index: 9, position: vector3(-58, 83.1, 265.5) }, - { index: 10, position: vector3(-58, 82.1, 265.5) }, - { index: 11, position: vector3(-58, 81.1, 265.5) }, - { index: 12, position: vector3(-58, 80.1, 265.5) }, - { index: 13, position: vector3(-58, 79.1, 265.5) }, - { index: 14, position: vector3(-58, 78.1, 265.5) }, - { index: 15, position: vector3(-58, 77.1, 265.5) }, - { index: 16, position: vector3(-58, 76.1, 265.5) }, - { index: 17, position: vector3(-58, 75.1, 265.5) }, - { index: 18, position: vector3(-58, 74.1, 265.5) }, - { index: 19, position: vector3(-58, 74.1, 264.5) }, - { index: 20, position: vector3(-59, 74.1, 264.5) }, - { index: 21, position: vector3(-59, 74.1, 263.5) }, - { index: 22, position: vector3(-60, 74.1, 263.5) }, - { index: 23, position: vector3(-61, 74.1, 263.5) }, - { index: 24, position: vector3(-62, 74.1, 263.5) }, - { index: 25, position: vector3(-63, 74.1, 263.5) }, - { index: 26, position: vector3(-63, 73.1, 263.5) }, - { index: 27, position: vector3(-63, 72.1, 263.5) }, - { index: 28, position: vector3(-63, 71.1, 263.5) }, - { index: 29, position: vector3(-64, 71.1, 263.5) }, - { index: 30, position: vector3(-65, 71.1, 263.5) }, - { index: 31, position: vector3(-66, 71.1, 263.5) }, - { index: 32, position: vector3(-67, 71.1, 263.5) }, - { index: 33, position: vector3(-68, 71.1, 263.5) }, - { index: 34, position: vector3(-69, 71.1, 263.5) }, - { index: 35, position: vector3(-70, 71.1, 263.5) }, - ], -}; - -export { TransitionTrailToLevel1 }; diff --git a/scripts/trails/TransitionTrailToLevel2.ts b/scripts/trails/TransitionTrailToLevel2.ts index c28ed15..ff31941 100644 --- a/scripts/trails/TransitionTrailToLevel2.ts +++ b/scripts/trails/TransitionTrailToLevel2.ts @@ -5,42 +5,47 @@ import { vector3 } from "../Commandeer/utils/vectorUtils"; let TransitionTrailToLevel2: TrailType = { name: "TransitionTrailToLevel2", points: [ - { index: 0, position: vector3(-54, 88.1, 265.5) }, - { index: 1, position: vector3(-55, 88.1, 265.5) }, - { index: 2, position: vector3(-56, 88.1, 265.5) }, - { index: 3, position: vector3(-57, 88.1, 265.5) }, - { index: 4, position: vector3(-58, 88.1, 265.5) }, - { index: 5, position: vector3(-58, 87.1, 265.5) }, - { index: 6, position: vector3(-58, 86.1, 265.5) }, - { index: 7, position: vector3(-58, 85.1, 265.5) }, - { index: 8, position: vector3(-58, 84.1, 265.5) }, - { index: 9, position: vector3(-58, 83.1, 265.5) }, - { index: 10, position: vector3(-58, 82.1, 265.5) }, - { index: 11, position: vector3(-58, 81.1, 265.5) }, - { index: 12, position: vector3(-58, 80.1, 265.5) }, - { index: 13, position: vector3(-58, 79.1, 265.5) }, - { index: 14, position: vector3(-58, 78.1, 265.5) }, - { index: 15, position: vector3(-58, 77.1, 265.5) }, - { index: 16, position: vector3(-58, 76.1, 265.5) }, - { index: 17, position: vector3(-58, 75.1, 265.5) }, - { index: 18, position: vector3(-58, 74.1, 265.5) }, - { index: 19, position: vector3(-58, 74.1, 264.5) }, - { index: 20, position: vector3(-59, 74.1, 264.5) }, - { index: 21, position: vector3(-59, 74.1, 263.5) }, - { index: 22, position: vector3(-60, 74.1, 263.5) }, - { index: 23, position: vector3(-61, 74.1, 263.5) }, - { index: 24, position: vector3(-62, 74.1, 263.5) }, - { index: 25, position: vector3(-63, 74.1, 263.5) }, - { index: 26, position: vector3(-63, 73.1, 263.5) }, - { index: 27, position: vector3(-63, 72.1, 263.5) }, - { index: 28, position: vector3(-63, 71.1, 263.5) }, - { index: 29, position: vector3(-64, 71.1, 263.5) }, - { index: 30, position: vector3(-65, 71.1, 263.5) }, - { index: 31, position: vector3(-66, 71.1, 263.5) }, - { index: 32, position: vector3(-67, 71.1, 263.5) }, - { index: 33, position: vector3(-68, 71.1, 263.5) }, - { index: 34, position: vector3(-69, 71.1, 263.5) }, - { index: 35, position: vector3(-70, 71.1, 263.5) }, + { index: 0, position: vector3(-72, 71.1, 265.5) }, + { index: 1, position: vector3(-73, 71.1, 265.5) }, + { index: 2, position: vector3(-74, 71.1, 265.5) }, + { index: 3, position: vector3(-75, 71.1, 265.5) }, + { index: 4, position: vector3(-76, 71.1, 265.5) }, + { index: 5, position: vector3(-77, 71.1, 265.5) }, + { index: 6, position: vector3(-78, 71.1, 265.5) }, + { index: 7, position: vector3(-79, 71.1, 265.5) }, + { index: 8, position: vector3(-80, 71.1, 265.5) }, + { index: 9, position: vector3(-81, 71.1, 265.5) }, + { index: 10, position: vector3(-82, 71.1, 265.5) }, + { index: 11, position: vector3(-83, 71.1, 265.5) }, + { index: 12, position: vector3(-84, 71.1, 265.5) }, + { index: 13, position: vector3(-85, 71.1, 265.5) }, + { index: 14, position: vector3(-85, 71.1, 264.5) }, + { index: 15, position: vector3(-85, 71.1, 263.5) }, + { index: 16, position: vector3(-86, 71.1, 263.5) }, + { index: 17, position: vector3(-87, 71.1, 263.5) }, + { index: 18, position: vector3(-88, 71.1, 263.5) }, + { index: 19, position: vector3(-89, 71.1, 263.5) }, + { index: 20, position: vector3(-90, 71.1, 263.5) }, + { index: 21, position: vector3(-91, 71.1, 263.5) }, + { index: 22, position: vector3(-92, 71.1, 263.5) }, + { index: 23, position: vector3(-92, 71.1, 264.5) }, + { index: 24, position: vector3(-93, 71.1, 264.5) }, + { index: 25, position: vector3(-94, 71.1, 264.5) }, + { index: 26, position: vector3(-95, 71.1, 264.5) }, + { index: 27, position: vector3(-96, 71.1, 264.5) }, + { index: 28, position: vector3(-97, 71.1, 264.5) }, + { index: 29, position: vector3(-98, 71.1, 264.5) }, + { index: 30, position: vector3(-99, 71.1, 264.5) }, + { index: 31, position: vector3(-100, 71.1, 264.5) }, + { index: 32, position: vector3(-100, 71.1, 265.5) }, + { index: 33, position: vector3(-101, 71.1, 265.5) }, + { index: 34, position: vector3(-102, 71.1, 265.5) }, + { index: 35, position: vector3(-103, 71.1, 265.5) }, + { index: 36, position: vector3(-104, 71.1, 265.5) }, + { index: 37, position: vector3(-105, 71.1, 265.5) }, + { index: 38, position: vector3(-106, 71.1, 265.5) }, + { index: 39, position: vector3(-107, 71.1, 265.5) }, + { index: 40, position: vector3(-108, 71.1, 265.5) }, ], }; diff --git a/scripts/trails/TransitionTrailToLevel3.ts b/scripts/trails/TransitionTrailToLevel3.ts index 0fefd41..24e2fe6 100644 --- a/scripts/trails/TransitionTrailToLevel3.ts +++ b/scripts/trails/TransitionTrailToLevel3.ts @@ -5,42 +5,26 @@ import { vector3 } from "../Commandeer/utils/vectorUtils"; let TransitionTrailToLevel3: TrailType = { name: "TransitionTrailToLevel3", points: [ - { index: 0, position: vector3(-54, 88.1, 265.5) }, - { index: 1, position: vector3(-55, 88.1, 265.5) }, - { index: 2, position: vector3(-56, 88.1, 265.5) }, - { index: 3, position: vector3(-57, 88.1, 265.5) }, - { index: 4, position: vector3(-58, 88.1, 265.5) }, - { index: 5, position: vector3(-58, 87.1, 265.5) }, - { index: 6, position: vector3(-58, 86.1, 265.5) }, - { index: 7, position: vector3(-58, 85.1, 265.5) }, - { index: 8, position: vector3(-58, 84.1, 265.5) }, - { index: 9, position: vector3(-58, 83.1, 265.5) }, - { index: 10, position: vector3(-58, 82.1, 265.5) }, - { index: 11, position: vector3(-58, 81.1, 265.5) }, - { index: 12, position: vector3(-58, 80.1, 265.5) }, - { index: 13, position: vector3(-58, 79.1, 265.5) }, - { index: 14, position: vector3(-58, 78.1, 265.5) }, - { index: 15, position: vector3(-58, 77.1, 265.5) }, - { index: 16, position: vector3(-58, 76.1, 265.5) }, - { index: 17, position: vector3(-58, 75.1, 265.5) }, - { index: 18, position: vector3(-58, 74.1, 265.5) }, - { index: 19, position: vector3(-58, 74.1, 264.5) }, - { index: 20, position: vector3(-59, 74.1, 264.5) }, - { index: 21, position: vector3(-59, 74.1, 263.5) }, - { index: 22, position: vector3(-60, 74.1, 263.5) }, - { index: 23, position: vector3(-61, 74.1, 263.5) }, - { index: 24, position: vector3(-62, 74.1, 263.5) }, - { index: 25, position: vector3(-63, 74.1, 263.5) }, - { index: 26, position: vector3(-63, 73.1, 263.5) }, - { index: 27, position: vector3(-63, 72.1, 263.5) }, - { index: 28, position: vector3(-63, 71.1, 263.5) }, - { index: 29, position: vector3(-64, 71.1, 263.5) }, - { index: 30, position: vector3(-65, 71.1, 263.5) }, - { index: 31, position: vector3(-66, 71.1, 263.5) }, - { index: 32, position: vector3(-67, 71.1, 263.5) }, - { index: 33, position: vector3(-68, 71.1, 263.5) }, - { index: 34, position: vector3(-69, 71.1, 263.5) }, - { index: 35, position: vector3(-70, 71.1, 263.5) }, + { index: 0, position: vector3(-110, 71.1, 265.5) }, + { index: 1, position: vector3(-111, 71.1, 265.5) }, + { index: 2, position: vector3(-112, 71.1, 265.5) }, + { index: 3, position: vector3(-113, 71.1, 265.5) }, + { index: 4, position: vector3(-114, 71.1, 265.5) }, + { index: 5, position: vector3(-115, 71.1, 265.5) }, + { index: 6, position: vector3(-116, 71.1, 265.5) }, + { index: 7, position: vector3(-117, 71.1, 265.5) }, + { index: 8, position: vector3(-118, 71.1, 265.5) }, + { index: 9, position: vector3(-119, 71.1, 265.5) }, + { index: 10, position: vector3(-120, 71.1, 265.5) }, + { index: 11, position: vector3(-121, 71.1, 265.5) }, + { index: 12, position: vector3(-122, 71.1, 265.5) }, + { index: 13, position: vector3(-123, 71.1, 265.5) }, + { index: 14, position: vector3(-124, 71.1, 265.5) }, + { index: 15, position: vector3(-125, 71.1, 265.5) }, + { index: 16, position: vector3(-126, 71.1, 265.5) }, + { index: 17, position: vector3(-127, 71.1, 265.5) }, + { index: 18, position: vector3(-128, 71.1, 265.5) }, + { index: 19, position: vector3(-129, 71.1, 265.5) }, ], }; diff --git a/scripts/trails/TransitionTrailToLevel4.ts b/scripts/trails/TransitionTrailToLevel4.ts new file mode 100644 index 0000000..e2c1bc7 --- /dev/null +++ b/scripts/trails/TransitionTrailToLevel4.ts @@ -0,0 +1,38 @@ +import { Vector3 } from "@minecraft/server"; +import { TrailType } from "../Commandeer/trail/trailTypes"; +import { vector3 } from "../Commandeer/utils/vectorUtils"; + +let TransitionTrailToLevel4: TrailType = { + name: "TransitionTrailToLevel4", + points: [ + { index: 0, position: vector3(-132, 71.1, 265.5) }, + { index: 1, position: vector3(-133, 71.1, 265.5) }, + { index: 2, position: vector3(-134, 71.1, 265.5) }, + { index: 3, position: vector3(-135, 71.1, 265.5) }, + { index: 4, position: vector3(-136, 71.1, 265.5) }, + { index: 5, position: vector3(-137, 71.1, 265.5) }, + { index: 6, position: vector3(-138, 71.1, 265.5) }, + { index: 7, position: vector3(-139, 71.1, 265.5) }, + { index: 8, position: vector3(-140, 71.1, 265.5) }, + { index: 9, position: vector3(-141, 71.1, 265.5) }, + { index: 10, position: vector3(-142, 71.1, 265.5) }, + { index: 11, position: vector3(-143, 71.1, 265.5) }, + { index: 12, position: vector3(-144, 71.1, 265.5) }, + { index: 13, position: vector3(-145, 71.1, 265.5) }, + { index: 14, position: vector3(-146, 71.1, 265.5) }, + { index: 15, position: vector3(-147, 71.1, 265.5) }, + { index: 16, position: vector3(-148, 71.1, 265.5) }, + { index: 17, position: vector3(-149, 71.1, 265.5) }, + { index: 18, position: vector3(-150, 71.1, 265.5) }, + { index: 19, position: vector3(-151, 71.1, 265.5) }, + { index: 20, position: vector3(-152, 71.1, 265.5) }, + { index: 21, position: vector3(-153, 71.1, 265.5) }, + { index: 22, position: vector3(-154, 71.1, 265.5) }, + { index: 23, position: vector3(-155, 71.1, 265.5) }, + { index: 24, position: vector3(-156, 71.1, 265.5) }, + { index: 25, position: vector3(-157, 71.1, 265.5) }, + { index: 26, position: vector3(-158, 71.1, 265.5) }, + ], +}; + +export { TransitionTrailToLevel4 }; diff --git a/scripts/trails/TransitionTrailToLevel5.ts b/scripts/trails/TransitionTrailToLevel5.ts new file mode 100644 index 0000000..05ca517 --- /dev/null +++ b/scripts/trails/TransitionTrailToLevel5.ts @@ -0,0 +1,91 @@ +import { Vector3 } from "@minecraft/server"; +import { TrailType } from "../Commandeer/trail/trailTypes"; +import { vector3 } from "../Commandeer/utils/vectorUtils"; + +let TransitionTrailToLevel5: TrailType = { + name: "TransitionTrailToLevel5", + points: [ + { index: 0, position: vector3(-160, 71.1, 265.5) }, + { index: 1, position: vector3(-161, 71.1, 265.5) }, + { index: 2, position: vector3(-162, 71.1, 265.5) }, + { index: 3, position: vector3(-163, 71.1, 265.5) }, + { index: 4, position: vector3(-164, 71.1, 265.5) }, + { index: 5, position: vector3(-165, 71.1, 265.5) }, + { index: 6, position: vector3(-166, 71.1, 265.5) }, + { index: 7, position: vector3(-167, 71.1, 265.5) }, + { index: 8, position: vector3(-168, 71.1, 265.5) }, + { index: 9, position: vector3(-169, 71.1, 265.5) }, + { index: 10, position: vector3(-170, 71.1, 265.5) }, + { index: 11, position: vector3(-171, 71.1, 265.5) }, + { index: 12, position: vector3(-172, 71.1, 265.5) }, + { index: 13, position: vector3(-173, 71.1, 265.5) }, + { index: 14, position: vector3(-174, 71.1, 265.5) }, + { index: 15, position: vector3(-175, 71.1, 265.5) }, + { index: 16, position: vector3(-176, 71.1, 265.5) }, + { index: 17, position: vector3(-177, 71.1, 265.5) }, + { index: 18, position: vector3(-178, 71.1, 265.5) }, + { index: 19, position: vector3(-179, 71.1, 265.5) }, + { index: 20, position: vector3(-180, 71.1, 265.5) }, + { index: 21, position: vector3(-181, 71.1, 265.5) }, + { index: 22, position: vector3(-182, 71.1, 265.5) }, + { index: 23, position: vector3(-183, 71.1, 265.5) }, + { index: 24, position: vector3(-184, 71.1, 265.5) }, + { index: 25, position: vector3(-185, 71.1, 265.5) }, + { index: 26, position: vector3(-186, 71.1, 265.5) }, + { index: 27, position: vector3(-187, 71.1, 265.5) }, + { index: 28, position: vector3(-188, 71.1, 265.5) }, + { index: 29, position: vector3(-189, 71.1, 265.5) }, + { index: 30, position: vector3(-190, 71.1, 265.5) }, + { index: 31, position: vector3(-191, 71.1, 265.5) }, + { index: 32, position: vector3(-192, 71.1, 265.5) }, + { index: 33, position: vector3(-193, 71.1, 265.5) }, + { index: 34, position: vector3(-194, 71.1, 265.5) }, + { index: 35, position: vector3(-195, 71.1, 265.5) }, + { index: 36, position: vector3(-196, 71.1, 265.5) }, + { index: 37, position: vector3(-197, 71.1, 265.5) }, + { index: 38, position: vector3(-198, 71.1, 265.5) }, + { index: 39, position: vector3(-199, 71.1, 265.5) }, + { index: 40, position: vector3(-200, 71.1, 265.5) }, + { index: 41, position: vector3(-201, 71.1, 265.5) }, + { index: 42, position: vector3(-202, 71.1, 265.5) }, + { index: 43, position: vector3(-203, 71.1, 265.5) }, + { index: 44, position: vector3(-203, 70.1, 265.5) }, + { index: 45, position: vector3(-204, 70.1, 265.5) }, + { index: 46, position: vector3(-205, 70.1, 265.5) }, + { index: 47, position: vector3(-206, 70.1, 265.5) }, + { index: 48, position: vector3(-207, 70.1, 265.5) }, + { index: 49, position: vector3(-208, 70.1, 265.5) }, + { index: 50, position: vector3(-209, 70.1, 265.5) }, + { index: 51, position: vector3(-210, 70.1, 265.5) }, + { index: 52, position: vector3(-211, 70.1, 265.5) }, + { index: 53, position: vector3(-211, 69.1, 265.5) }, + { index: 54, position: vector3(-212.5, 69.1, 265.5) }, + { index: 55, position: vector3(-212.5, 69.1, 264.5) }, + { index: 56, position: vector3(-212.5, 69.1, 263.5) }, + { index: 57, position: vector3(-212.5, 69.1, 262.5) }, + { index: 58, position: vector3(-212.5, 69.1, 261.5) }, + { index: 59, position: vector3(-212.5, 69.1, 260.5) }, + { index: 60, position: vector3(-212.5, 69.1, 259.5) }, + { index: 61, position: vector3(-213.5, 69.1, 259.5) }, + { index: 62, position: vector3(-214.5, 69.1, 259.5) }, + { index: 63, position: vector3(-215.5, 69.1, 259.5) }, + { index: 64, position: vector3(-216.5, 69.1, 259.5) }, + { index: 65, position: vector3(-217.5, 69.1, 259.5) }, + { index: 66, position: vector3(-218.5, 69.1, 259.5) }, + { index: 67, position: vector3(-219.5, 69.1, 259.5) }, + { index: 68, position: vector3(-219.5, 69.1, 258.5) }, + { index: 69, position: vector3(-219.5, 69.1, 257.5) }, + { index: 70, position: vector3(-219.5, 69.1, 256.5) }, + { index: 71, position: vector3(-219.5, 69.1, 255.5) }, + { index: 72, position: vector3(-219.5, 69.1, 254.5) }, + { index: 73, position: vector3(-219.5, 69.1, 253.5) }, + { index: 74, position: vector3(-219.5, 69.1, 252.5) }, + { index: 75, position: vector3(-219.5, 68.1, 252.5) }, + { index: 76, position: vector3(-219.5, 68.1, 251.5) }, + { index: 77, position: vector3(-219.5, 68.1, 250.5) }, + { index: 78, position: vector3(-219.5, 68.1, 249.5) }, + { index: 79, position: vector3(-219.5, 68.1, 248.5) }, + ], +}; + +export { TransitionTrailToLevel5 }; diff --git a/scripts/trails/TransitionTrailToTheEnd.ts b/scripts/trails/TransitionTrailToTheEnd.ts new file mode 100644 index 0000000..667acac --- /dev/null +++ b/scripts/trails/TransitionTrailToTheEnd.ts @@ -0,0 +1,40 @@ +import { Vector3 } from "@minecraft/server"; +import { TrailType } from "../Commandeer/trail/trailTypes"; +import { vector3 } from "../Commandeer/utils/vectorUtils"; + +let TransitionTrailToTheEnd: TrailType = { + name: "TransitionTrailToTheEnd", + points: [ + { index: 0, position: vector3(-220, 68.1, 245.5) }, + { index: 1, position: vector3(-220, 68.1, 244.5) }, + { index: 2, position: vector3(-220, 68.1, 243.5) }, + { index: 3, position: vector3(-220, 68.1, 242.5) }, + { index: 4, position: vector3(-220, 68.1, 241.5) }, + { index: 5, position: vector3(-220, 68.1, 240.5) }, + { index: 6, position: vector3(-220, 68.1, 239.5) }, + { index: 7, position: vector3(-220, 68.1, 238.5) }, + { index: 8, position: vector3(-220, 68.1, 237.5) }, + { index: 9, position: vector3(-220, 68.1, 236.5) }, + { index: 10, position: vector3(-220, 68.1, 235.5) }, + { index: 11, position: vector3(-220, 68.1, 234.5) }, + { index: 12, position: vector3(-220, 68.1, 233.5) }, + { index: 13, position: vector3(-220, 68.1, 232.5) }, + { index: 14, position: vector3(-220, 68.1, 231.5) }, + { index: 15, position: vector3(-220, 68.1, 230.5) }, + { index: 16, position: vector3(-221, 68.1, 230.5) }, + { index: 17, position: vector3(-222, 68.1, 230.5) }, + { index: 18, position: vector3(-222, 68.1, 229.5) }, + { index: 19, position: vector3(-222, 68.1, 228.5) }, + { index: 20, position: vector3(-222, 68.1, 227.5) }, + { index: 21, position: vector3(-222, 68.1, 226.5) }, + { index: 22, position: vector3(-222, 68.1, 225.5) }, + { index: 23, position: vector3(-222, 68.1, 224.5) }, + { index: 24, position: vector3(-222, 68.1, 223.5) }, + { index: 25, position: vector3(-222, 68.1, 222.5) }, + { index: 26, position: vector3(-222, 68.1, 221.5) }, + { index: 27, position: vector3(-222, 68.1, 220.5) }, + { index: 28, position: vector3(-222, 68.1, 219.5) }, + ], +}; + +export { TransitionTrailToTheEnd };