NPCs included, finishing touches zijn nog nodig

This commit is contained in:
2024-09-11 16:54:16 +02:00
parent 283f95e00a
commit c323e98bcd
25 changed files with 1665 additions and 891 deletions

View File

@@ -10,47 +10,17 @@ import {
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 { placeBlock, startLevel, teleportAndFaceAgent } 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";
import { MinecraftBiomeTypes } from "../../vanilla-data/mojang-biome";
import level2 from "../level2/mission1";
const Level1CommandBlockPos: Vector3 = vector3(-73, 71, 283);
const Level1CommandBlockPos: Vector3 = vector3(-73, 71, 283);
const level1StartPosition: Vector3 = vector3(-73, 69, 272);
const Level1EndPosition: Vector3 = vector3(-83, 69, 258);
let toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)];
let flowerPositions = [
vector3(-74, 69, 272),
vector3(-75, 69, 272),
vector3(-75, 69, 271),
vector3(-75, 69, 270),
vector3(-75, 69, 269),
vector3(-76, 69, 270),
vector3(-77, 69, 270),
vector3(-77, 69, 269),
vector3(-77, 69, 268),
vector3(-77, 69, 267),
vector3(-78, 69, 268),
vector3(-79, 69, 268),
vector3(-79, 69, 267),
vector3(-79, 69, 266),
vector3(-79, 69, 265),
vector3(-80, 69, 266),
vector3(-81, 69, 266),
vector3(-81, 69, 265),
vector3(-81, 69, 264),
vector3(-81, 69, 263),
vector3(-82, 69, 264),
vector3(-83, 69, 264),
vector3(-83, 69, 263),
vector3(-83, 69, 262),
vector3(-83, 69, 261),
vector3(-83, 69, 260),
vector3(-83, 69, 259),
];
let toolBlocks = [
MinecraftBlockTypes.RedWool,
@@ -61,8 +31,10 @@ let toolBlocks = [
let noDrillYet = true;
let noChainsawYet = true;
let isComplete = false;
let hasAllTools = false;
let isOutOfBounds = false;
const level1ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level1: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level1.started");
@@ -80,14 +52,8 @@ const level1: Level = new Level(
world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL);
level2.reset();
world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 barrier replace air");
},
() => {
let isComplete = false;
let isOutOfBounds = false;
let hasAllTools = false;
let plantedAllFlowers = false;
for (let i = 0; i < toolPositions.length; i++) {
let block = world.getDimension("overworld").getBlock(toolPositions[i]);
if (block?.type.id == MinecraftBlockTypes.Air) {
@@ -109,19 +75,9 @@ const level1: Level = new Level(
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
}
for (let i = 0; i < flowerPositions.length; i++) {
let block = world.getDimension("overworld").getBlock(flowerPositions[i]);
if (block?.type.id == MinecraftBlockTypes.BlueOrchid) {
flowerPositions.splice(i, 1);
}
}
if (toolPositions.length == 0) {
hasAllTools = true;
}
if (flowerPositions.length == 0) {
plantedAllFlowers = true;
}
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -129,31 +85,31 @@ const level1: Level = new Level(
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) {
return false;
isOutOfBounds = false;
} else {
return true;
isOutOfBounds = true;
}
}
if (isAgentAt(Level1EndPosition) && hasAllTools && plantedAllFlowers) {
if (isAgentAt(Level1EndPosition) && hasAllTools) {
isComplete = true;
} else if (isAgentAt(Level1EndPosition) && !hasAllTools) {
isOutOfBounds = true;
}
if (isOutOfBounds) {
teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
noDrillYet = true;
noChainsawYet = true;
pupeteer.sendWorldMessage("%message.level1.outOfBounds");
pupeteer.setTitleTimed("%message.level1.outOfBounds", 2.5);
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("Overworld").runCommand("/fill -74 69 272 -83 69 259 air replace blue_orchid");
toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)];
for (let i = 0; i < toolPositions.length; i++) {
let blockToReplace = world.getDimension("overworld").getBlock(toolPositions[i]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Air) {
placeBlock(toolPositions[i], toolBlocks[i]);
}
}
teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
return false;
} else if (isComplete) {
return true;
@@ -161,32 +117,18 @@ const level1: Level = new Level(
return false;
},
() => {
world.getDimension("Overworld").runCommand("/fill -74 69 272 -83 69 259 air replace blue_orchid");
isComplete = false;
noDrillYet = true;
noChainsawYet = true;
teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
toolPositions = [vector3(-75, 68, 268), vector3(-77, 68, 266), vector3(-79, 68, 264), vector3(-81, 68, 262)];
for (let i = 0; i < toolPositions.length; i++) {
placeBlock(toolPositions[i], toolBlocks[i]);
let blockToReplace = world.getDimension("overworld").getBlock(toolPositions[i]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Air) {
placeBlock(toolPositions[i], toolBlocks[i]);
}
}
}
);
function placeBlock(position: Vector3, blockType: MinecraftBlockTypes) {
const block = world.getDimension("overworld").getBlock(position);
block!.setType(blockType);
}
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
if (facing == vector3(-84, 69, 272)) {
world
.getDimension("overworld")
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
} else {
world
.getDimension("overworld")
.runCommand(
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
);
}
}
export default level1;

View File

@@ -2,18 +2,22 @@ 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 { 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";
const level2CommandBlockPos: Vector3 = vector3(-111, 70, 282);
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);
const level2ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
let isComplete = false;
let isOutOfBounds = false;
const level2: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level2.started");
@@ -28,15 +32,10 @@ const level2: Level = new Level(
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level2.complete");
pupeteer.setTitleTimed("%message.level2.complete", 2.5);
world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL);
level3.reset();
world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 barrier replace air");
},
() => {
let isComplete = false;
let isOutOfBounds = false;
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -44,15 +43,20 @@ const level2: Level = new Level(
isOutOfBounds = true;
}
if (isAgentAt(level2EndPosition)) {
const isCorrect = checkBlockCondition(level2Conditions);
if (isAgentAt(level2EndPosition) && isCorrect) {
isComplete = true;
}
if (isOutOfBounds) {
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);
}
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");
@@ -64,23 +68,10 @@ const level2: Level = new Level(
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");
}
);
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
if (facing == vector3(-125, 69, 272)) {
world
.getDimension("overworld")
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
} else {
world
.getDimension("overworld")
.runCommand(
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
);
}
}
export default level2;

View File

@@ -2,23 +2,29 @@ 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 } from "../../Commandeer/utils/levelUtils";
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";
const Level3CommandBlockPos: Vector3 = vector3(-133, 68, 281);
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);
const level3EndPosition: Vector3 = vector3(-148, 68, 265);
let volumeResetRedstoneBlock: BlockVolume = new BlockVolume(vector3(-133, 68, 281), vector3(-133, 68, 281));
let isComplete = false;
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);
startLevel(level3CommandBlockPos);
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
},
() => {
pupeteer.setActionBar("%message.level3.make");
@@ -27,41 +33,28 @@ const level3: Level = new Level(
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level3.complete");
pupeteer.setTitleTimed("%message.level3.complete", 2.5);
world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL);
level4.reset();
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air");
},
() => {
let isComplete = false;
let isOutOfBounds = false;
const isCorrect = checkBlockCondition(level3Conditions);
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0)));
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) {
return false;
} else {
return true;
}
}
if (isAgentAt(Level3EndPosition)) {
if (isAgentAt(level3EndPosition) && isCorrect) {
isComplete = true;
}
if (isOutOfBounds) {
if (isAgentAt(level3EndPosition) && !isCorrect) {
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
pupeteer.sendWorldMessage("%message.level3.outOfBounds");
pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5);
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").runCommand("/fill -133 68 272 -148 68 258 air replace sweet_berry_bush");
world.getDimension("Overworld").runCommand("/fill -133 67 272 -148 67 258 magma replace cobblestone");
let volume: BlockVolume = new BlockVolume(vector3(-131, 69, 284), vector3(-131, 69, 284));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
return false;
} else if (isComplete) {
@@ -70,25 +63,9 @@ const level3: Level = new Level(
return false;
},
() => {
world.getDimension("Overworld").runCommand("/fill -133 68 272 -148 68 258 air replace sweet_berry_bush");
world.getDimension("Overworld").runCommand("/fill -133 67 272 -148 67 258 magma replace cobblestone");
let volume: BlockVolume = new BlockVolume(vector3(-131, 69, 284), vector3(-131, 69, 284));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
isComplete = false;
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}
);
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
if (facing == vector3(-148, 68, 265)) {
world
.getDimension("overworld")
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
} else {
world
.getDimension("overworld")
.runCommand(
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
);
}
}
export default level3;

View File

@@ -2,22 +2,28 @@ 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 } from "../../Commandeer/utils/levelUtils";
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 level5 from "../level3/mission1";
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);
let volumeResetRedstoneBlock: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291));
let isComplete = false;
let isOutOfBounds = false;
const level4: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level4.started");
pupeteer.setTitleTimed("%message.level4.name", 2.5);
startLevel(Level4CommandBlockPos);
teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
},
() => {
pupeteer.setActionBar("%message.level4.make");
@@ -31,9 +37,6 @@ const level4: Level = new Level(
level5.reset();
},
() => {
let isComplete = false;
let isOutOfBounds = false;
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -46,13 +49,12 @@ const level4: Level = new Level(
}
if (isOutOfBounds) {
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261));
pupeteer.sendWorldMessage("%message.level4.outOfBounds");
pupeteer.setTitleTimed("%message.level4.outOfBounds", 2.5);
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
let volume: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
return false;
} else if (isComplete) {
@@ -61,23 +63,9 @@ const level4: Level = new Level(
return false;
},
() => {
let volume: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
isComplete = false;
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}
);
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
if (facing == vector3(-175, 62, 261)) {
world
.getDimension("overworld")
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
} else {
world
.getDimension("overworld")
.runCommand(
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
);
}
}
export default level4;

View File

@@ -2,34 +2,41 @@ 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 } from "../../Commandeer/utils/levelUtils";
import { placeBlock, 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";
const level5CommandBlockPos: Vector3 = vector3(-255, 67, 244);
const level5CommandBlockPos: Vector3 = vector3(-255, 67, 244);
const level5StartPosition: Vector3 = vector3(-226, 65, 244);
const level5EndPosition: Vector3 = vector3(-226, 65, 229);
const level5ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
let volumeResetRedstoneBlock: BlockVolume = new BlockVolume(vector3(-255, 67, 246), vector3(-255, 67, 246));
let isOutOfBounds = false;
let isComplete = false;
let diamondAndPickaxePositions = [
vector3(-220, 64, 243),
vector3(-224, 64, 242),
vector3(-216, 64, 242),
vector3(-217, 64, 240),
vector3(-218, 64, 241),
vector3(-226, 64, 239),
vector3(-214, 64, 238),
vector3(-217, 64, 238),
vector3(-220, 64, 238),
vector3(-219, 64, 236),
vector3(-221, 64, 235),
vector3(-225, 64, 235),
vector3(-217, 64, 235),
vector3(-215, 64, 233),
vector3(-227, 64, 232),
vector3(-225, 64, 231),
vector3(-218, 64, 231),
vector3(-223, 64, 230),
vector3(-214, 64, 230),
vector3(-219, 64, 229),
vector3(-225, 64, 229),
];
const level5: Level = new Level(
@@ -38,6 +45,7 @@ const level5: Level = new Level(
pupeteer.setTitleTimed("%message.level5.name", 2.5);
startLevel(level5CommandBlockPos);
teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
},
() => {
pupeteer.setActionBar("%message.level5.make");
@@ -46,16 +54,10 @@ const level5: Level = new Level(
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level5.complete");
pupeteer.setTitleTimed("%message.level5.complete", 2.5);
// world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 air replace barrier");
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)));
let blockMagma = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -77,14 +79,13 @@ const level5: Level = new Level(
}
if (isOutOfBounds) {
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229));
pupeteer.sendWorldMessage("%message.level5.outOfBounds");
pupeteer.setTitleTimed("%message.level5.outOfBounds", 2.5);
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
let volume: BlockVolume = new BlockVolume(vector3(-255, 67, 246), vector3(-255, 67, 246));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
for (let i = 0; i < diamondAndPickaxePositions.length; i++) {
let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]);
@@ -100,6 +101,7 @@ const level5: Level = new Level(
return false;
},
() => {
isComplete = false;
world.getDimension("Overworld").runCommand("/fill -213 64 244 -227 64 229 stone replace podzol");
for (let i = 0; i < diamondAndPickaxePositions.length; i++) {
let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]);
@@ -107,28 +109,8 @@ const level5: Level = new Level(
placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool);
}
}
let volume: BlockVolume = new BlockVolume(vector3(-255, 67, 246), vector3(-255, 67, 246));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}
);
function placeBlock(position: Vector3, blockType: MinecraftBlockTypes) {
const block = world.getDimension("overworld").getBlock(position);
block!.setType(blockType);
}
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
if (facing == vector3(-226, 65, 229)) {
world
.getDimension("overworld")
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
} else {
world
.getDimension("overworld")
.runCommand(
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
);
}
}
export default level5;