72 lines
2.8 KiB
TypeScript
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;
|