working version without custom blocks/textures

This commit is contained in:
2024-08-13 14:13:00 +02:00
parent 9d7b1e71ce
commit bc51d6899f
16 changed files with 733 additions and 434 deletions

View File

@@ -1,4 +1,4 @@
import { Vector3, world } from "@minecraft/server";
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";
@@ -6,6 +6,7 @@ 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";
import level4 from "./mission3";
const Level3CommandBlockPos: Vector3 = vector3(-133, 68, 281);
const level3StartPosition: Vector3 = vector3(-133, 68, 265);
@@ -17,7 +18,7 @@ const level3: Level = new Level(
pupeteer.sendWorldMessage("%message.level3.started");
pupeteer.setTitleTimed("%message.level3.name", 2.5);
startLevel(Level3CommandBlockPos);
teleportAgent(level3StartPosition);
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
},
() => {
pupeteer.setActionBar("%message.level3.make");
@@ -26,48 +27,66 @@ 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;
//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)));
let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0)));
if (
blockLava &&
blockLava.type.id === MinecraftBlockTypes.Lava &&
blockAir &&
blockAir.type.id === MinecraftBlockTypes.Air
) {
isOutOfBounds = true;
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) {
return false;
} else {
return 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");
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");
world.getDimension("overworld").runCommand("/execute at @e[tag=KillingPandas] run kill @e[type=panda, r=10]");
teleportAgent(level3StartPosition);
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
return false;
} else if (isComplete) {
return true;
}
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);
}
);
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;