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

72 lines
2.8 KiB
TypeScript

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, teleportAndFaceAgent } 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";
import { level3Conditions } from "../../levelConditions/level3";
import { checkBlockCondition } from "../../Commandeer/level/levelTypes";
const level3CommandBlockPos: Vector3 = vector3(-133, 68, 281);
const level3StartPosition: Vector3 = vector3(-133, 68, 265);
const level3EndPosition: Vector3 = vector3(-148, 68, 265);
let volumeResetRedstoneBlock: BlockVolume = new BlockVolume(vector3(-133, 68, 281), vector3(-133, 68, 281));
let isComplete = false;
const level3: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level3.started");
pupeteer.setTitleTimed("%message.level3.name", 2.5);
startLevel(level3CommandBlockPos);
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
},
() => {
pupeteer.setActionBar("%message.level3.make");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level3.complete");
pupeteer.setTitleTimed("%message.level3.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
level4.reset();
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air");
},
() => {
const isCorrect = checkBlockCondition(level3Conditions);
if (isAgentAt(level3EndPosition) && isCorrect) {
isComplete = true;
}
if (isAgentAt(level3EndPosition) && !isCorrect) {
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
if (!isCorrect) {
pupeteer.sendWorldMessage("%message.level.inCorrect");
} else {
pupeteer.sendWorldMessage("%message.level3.outOfBounds");
pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5);
}
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
return false;
} else if (isComplete) {
return true;
}
return false;
},
() => {
isComplete = false;
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}
);
export default level3;