This commit is contained in:
2024-08-07 09:45:15 +02:00
commit 9d7b1e71ce
88 changed files with 21647 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
import { BlockType, BlockTypes, 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 { level1Conditions } from "../../levelConditions/level1";
import { mindKeeper, CURRENT_LEVEL } from "../../main";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
const Level1CommandBlockPos: Vector3 = vector3(-73, 71, 283);
const level1StartPosition: Vector3 = vector3(-73, 69, 267);
const Level1EndPosition: Vector3 = vector3(-82, 69, 265);
const level1ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level1: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level1.started");
pupeteer.setTitleTimed("%message.level1.name", 2.5);
startLevel(Level1CommandBlockPos);
teleportAgent(level1StartPosition);
},
() => {
pupeteer.setActionBar("%message.level1.make");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level1.complete");
pupeteer.setTitleTimed("%message.level1.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
},
() => {
let isComplete = false;
let isOutOfBounds = false;
let hasAllTools = false;
//6 blocks lower is lava
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
isOutOfBounds = true;
}
if (isAgentAt(Level1EndPosition) && hasAllTools) {
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");
teleportAgent(level1StartPosition);
return false;
} else if (isComplete) {
return true;
}
return false;
}
);
export default level1;

View File

@@ -0,0 +1,68 @@
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 } 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 level2CommandBlockPos: Vector3 = vector3(-111, 70, 282);
const level2StartPosition: Vector3 = vector3(-111, 69, 272);
const level2EndPosition: Vector3 = vector3(-124, 69, 258);
const level2ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level2: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level2.started");
pupeteer.setTitleTimed("%message.level2.name", 2.5);
startLevel(level2CommandBlockPos);
teleportAgent(level2StartPosition);
},
() => {
pupeteer.setActionBar("%message.level2.make");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level2.complete");
pupeteer.setTitleTimed("%message.level2.complete", 2.5);
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)));
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
isOutOfBounds = true;
}
if (isAgentAt(level2EndPosition)) {
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");
teleportAgent(level2StartPosition);
return false;
} else if (isComplete) {
return true;
}
return false;
}
);
export default level2;

View File

@@ -0,0 +1,73 @@
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 } 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";
const Level3CommandBlockPos: Vector3 = vector3(-133, 68, 281);
const level3StartPosition: Vector3 = vector3(-133, 68, 265);
const Level3EndPosition: Vector3 = vector3(-148, 68, 265);
const level3ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level3: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level3.started");
pupeteer.setTitleTimed("%message.level3.name", 2.5);
startLevel(Level3CommandBlockPos);
teleportAgent(level3StartPosition);
},
() => {
pupeteer.setActionBar("%message.level3.make");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level3.complete");
pupeteer.setTitleTimed("%message.level3.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
},
() => {
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
) {
isOutOfBounds = 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");
teleportAgent(level3StartPosition);
return false;
} else if (isComplete) {
return true;
}
return false;
}
);
export default level3;

View File

@@ -0,0 +1,72 @@
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 } 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";
const Level4CommandBlockPos: Vector3 = vector3(-161, 68, 291);
const level4StartPosition: Vector3 = vector3(-161, 62, 261);
const level4EndPosition: Vector3 = vector3(-174, 62, 268);
const level4ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level4: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level4.started");
pupeteer.setTitleTimed("%message.level4.name", 2.5);
startLevel(Level4CommandBlockPos);
teleportAgent(level4StartPosition);
},
() => {
pupeteer.setActionBar("%message.level4.make");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level4.complete");
pupeteer.setTitleTimed("%message.level4.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
},
() => {
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
) {
isOutOfBounds = true;
}
if (isAgentAt(level4EndPosition)) {
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");
teleportAgent(level4StartPosition);
return false;
} else if (isComplete) {
return true;
}
return false;
}
);
export default level4;

View File

@@ -0,0 +1,115 @@
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;