Files
Reeks2Missie9/scripts/levels/level2/mission1.ts

78 lines
3.0 KiB
TypeScript

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;