import { 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, teleportAndFaceAgent } 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"; import level3 from "./mission2"; import { checkBlockCondition } from "../../Commandeer/level/levelTypes"; import { level2Conditions } from "../../levelConditions/level2"; const level2CommandBlockPos: Vector3 = vector3(-111, 70, 282); const level2StartPosition: Vector3 = vector3(-111, 69, 272); const level2EndPosition: Vector3 = vector3(-124, 69, 258); let isComplete = false; let isOutOfBounds = false; const level2: Level = new Level( () => { pupeteer.sendWorldMessage("%message.level2.started"); pupeteer.setTitleTimed("%message.level2.name", 2.5); startLevel(level2CommandBlockPos); teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272)); }, () => { pupeteer.setActionBar("%message.level2.make"); }, () => { pupeteer.clearActionBar(); pupeteer.sendWorldMessage("%message.level2.complete"); pupeteer.setTitleTimed("%message.level2.complete", 2.5); mindKeeper.increment(CURRENT_LEVEL); level3.reset(); }, () => { let agentPos = getAgentLocation(); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) { isOutOfBounds = true; } const isCorrect = checkBlockCondition(level2Conditions); if (isAgentAt(level2EndPosition) && isCorrect) { isComplete = true; } if (isOutOfBounds || (isAgentAt(level2EndPosition) && !isCorrect)) { teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272)); if (!isCorrect) { pupeteer.sendWorldMessage("%message.level.inCorrect"); } else { pupeteer.sendWorldMessage("%message.level2.outOfBounds"); pupeteer.setTitleTimed("%message.level2.outOfBounds", 2.5); } 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"); return false; } else if (isComplete) { return true; } return false; }, () => { isComplete = 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"); } ); export default level2;