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

@@ -44,19 +44,35 @@ message.level1.name=Level 1
message.level1.started=Level 1 is started!
message.level1.complete=Level 1 is complete!
message.level1.make=Make Level 1
message.level1.outOfBoun=§cOut of bounds!§bwd
message.level1.outOfBounds=§cOut of bounds!§bwd
## Level 2 messages
message.level2.name=Level 2
message.level2.started=Level 2 is started!
message.level2.complete=Level 2 is complete!
message.level2.make=Make Level 2
message.level2.outOfBounds=§cOut of bounds!§bwd
## Level 3 messages
message.level3.name=Level 3
message.level3.started=Level 3 is started!
message.level3.complete=Level 3 is complete!
message.level3.make=Make Level 3
message.level3.outOfBounds=§cOut of bounds!§bwd
## Level 4 messages
message.level4.name=Level 4
message.level4.started=Level 4 is started!
message.level4.complete=Level 4 is complete!
message.level4.make=Make Level 4
message.level4.outOfBounds=§cOut of bounds!§bwd
## Level 5 messages
message.level5.name=Level 5
message.level5.started=Level 5 is started!
message.level5.complete=Level 5 is complete!
message.level5.make=Make Level 5
message.level5.outOfBounds=§cOut of bounds!§bwd
## Goto messages
message.goto.field.1=Go to the First Field

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

View File

@@ -1,4 +1,4 @@
import { World } from "@minecraft/server";
import { world, World } from "@minecraft/server";
class Level {
levelCompleteCallback: Function;
@@ -35,6 +35,7 @@ class Level {
this.levelUpdateCallback();
if (this.levelCheckCallback() && !this.isCompleted) {
this.levelCompleteCallback();
world.sendMessage("level completed.");
this.isCompleted = true;
}
}

View File

@@ -1,4 +1,4 @@
import { BlockType, BlockTypes, Vector3, world } from "@minecraft/server";
import { BlockType, BlockTypes, EntityInventoryComponent, Player, 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";
@@ -7,10 +7,49 @@ import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/ut
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 level1StartPosition: Vector3 = vector3(-73, 69, 267);
const Level1EndPosition: Vector3 = vector3(-82, 69, 265);
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,
MinecraftBlockTypes.GreenWool,
MinecraftBlockTypes.YellowWool,
MinecraftBlockTypes.BlueWool,
];
const level1ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
const level1: Level = new Level(
@@ -18,7 +57,7 @@ const level1: Level = new Level(
pupeteer.sendWorldMessage("%message.level1.started");
pupeteer.setTitleTimed("%message.level1.name", 2.5);
startLevel(Level1CommandBlockPos);
teleportAgent(level1StartPosition);
teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
},
() => {
pupeteer.setActionBar("%message.level1.make");
@@ -27,43 +66,102 @@ const level1: Level = new Level(
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level1.complete");
pupeteer.setTitleTimed("%message.level1.complete", 2.5);
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;
//6 blocks lower is lava
for (let i = 0; i < toolPositions.length; i++) {
let block = world.getDimension("overworld").getBlock(toolPositions[i]);
if (block?.type.id == MinecraftBlockTypes.Air) {
toolPositions.splice(i, 1);
}
}
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)));
let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0)));
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
isOutOfBounds = true;
if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) {
return false;
} else {
return true;
}
}
if (isAgentAt(Level1EndPosition) && hasAllTools) {
if (isAgentAt(Level1EndPosition) && hasAllTools && plantedAllFlowers) {
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");
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));
teleportAgent(level1StartPosition);
return false;
} else if (isComplete) {
return true;
}
return false;
},
() => {
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++) {
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

@@ -7,6 +7,7 @@ import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/ut
// 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);
const level2StartPosition: Vector3 = vector3(-111, 69, 272);
@@ -18,7 +19,7 @@ const level2: Level = new Level(
pupeteer.sendWorldMessage("%message.level2.started");
pupeteer.setTitleTimed("%message.level2.name", 2.5);
startLevel(level2CommandBlockPos);
teleportAgent(level2StartPosition);
teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272));
},
() => {
pupeteer.setActionBar("%message.level2.make");
@@ -27,15 +28,15 @@ 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;
//6 blocks lower is lava
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -47,22 +48,38 @@ const level2: Level = new Level(
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");
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");
teleportAgent(level2StartPosition);
teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272));
return false;
} else if (isComplete) {
return true;
}
return 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

@@ -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;

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 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);
@@ -16,7 +17,7 @@ const level4: Level = new Level(
pupeteer.sendWorldMessage("%message.level4.started");
pupeteer.setTitleTimed("%message.level4.name", 2.5);
startLevel(Level4CommandBlockPos);
teleportAgent(level4StartPosition);
teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261));
},
() => {
pupeteer.setActionBar("%message.level4.make");
@@ -25,25 +26,18 @@ const level4: Level = new Level(
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level4.complete");
pupeteer.setTitleTimed("%message.level4.complete", 2.5);
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL);
level5.reset();
},
() => {
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
) {
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
isOutOfBounds = true;
}
@@ -51,16 +45,14 @@ const level4: Level = new Level(
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");
let volume: BlockVolume = new BlockVolume(vector3(-163, 67, 291), vector3(-163, 67, 291));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
teleportAgent(level4StartPosition);
teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261));
return false;
} else if (isComplete) {
return true;
@@ -69,4 +61,18 @@ const level4: Level = new Level(
}
);
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

@@ -0,0 +1,133 @@
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 { 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 level5StartPosition: Vector3 = vector3(-226, 65, 244);
const level5EndPosition: Vector3 = vector3(-226, 65, 229);
const level5ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
let diamondAndPickaxePositions = [
vector3(-224, 64, 242),
vector3(-216, 64, 242),
vector3(-217, 64, 240),
vector3(-226, 64, 239),
vector3(-214, 64, 238),
vector3(-220, 64, 238),
vector3(-219, 64, 236),
vector3(-221, 64, 235),
vector3(-225, 64, 235),
vector3(-215, 64, 233),
vector3(-227, 64, 232),
vector3(-225, 64, 231),
vector3(-218, 64, 231),
vector3(-223, 64, 230),
vector3(-219, 64, 229),
];
const level5: Level = new Level(
() => {
pupeteer.sendWorldMessage("%message.level5.started");
pupeteer.setTitleTimed("%message.level5.name", 2.5);
startLevel(level5CommandBlockPos);
teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229));
},
() => {
pupeteer.setActionBar("%message.level5.make");
},
() => {
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)));
let blockTNT = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
if (
blockAir &&
blockAir.type.id === MinecraftBlockTypes.Air &&
blockMagma &&
blockMagma.type.id === MinecraftBlockTypes.Magma &&
blockTNT &&
blockTNT.type.id === MinecraftBlockTypes.Tnt
) {
isOutOfBounds = true;
}
if (isAgentAt(level5EndPosition)) {
isComplete = true;
}
if (isOutOfBounds) {
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(-163, 67, 291), vector3(-163, 67, 291));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
for (let i = 0; i < diamondAndPickaxePositions.length; i++) {
let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) {
placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool);
}
}
teleportAndFaceAgent(level5StartPosition, vector3(-226, 65, 229));
return false;
} else if (isComplete) {
return true;
}
return 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]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) {
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);
}
);
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;

View File

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

View File

@@ -22,10 +22,13 @@ import level1 from "./levels/level1/mission1";
import level2 from "./levels/level2/mission1";
import level3 from "./levels/level2/mission2";
import level4 from "./levels/level2/mission3";
import level5 from "./levels/level3/mission1";
import { MinecraftBlockTypes } from "./vanilla-data/mojang-block";
import { TransitionTrailToLevel1 } from "./trails/TransitionTrailToLevel1";
import { TransitionTrailToLevel2 } from "./trails/TransitionTrailToLevel2";
import { TransitionTrailToLevel3 } from "./trails/TransitionTrailToLevel3";
import { TransitionTrailToLevel4 } from "./trails/TransitionTrailToLevel4";
import { TransitionTrailToLevel5 } from "./trails/TransitionTrailToLevel5";
import { TransitionTrailToTheEnd } from "./trails/TransitionTrailToTheEnd";
const mindKeeper = new Mindkeeper(world);
const trailMaker: TrailMaker.Maker = new TrailMaker.Maker();
@@ -35,31 +38,31 @@ const AGENT_ID = "agentid";
const PREFIX = "!";
export { mindKeeper, CURRENT_LEVEL, triggerManager };
triggerManager.RegisterFunctionTrigger("resetPath", (event) => {
resetLightPath();
});
async function resetLightPath() {
world.getDimension("overworld").runCommand("/fill 2467 9 87 2468 9 105 air");
}
let isIntroToLevel1Sqeuence = false;
let isMakingLevel1 = false;
let isMakingLevel2 = false;
let isMakingLevel3 = false;
let isMakingLevel4 = false;
let introTrail: Trail = new Trail("introTrail", 4, 4);
introTrail.fromTrail(startTrail);
let transitionTrail1 = new Trail("transitionTrail1", 2, 2);
transitionTrail1.fromTrail(TransitionTrailToLevel1);
transitionTrail1.fromTrail(TransitionTrailToLevel2);
let transitionTrail2 = new Trail("transitionTrail2", 2, 2);
transitionTrail2.fromTrail(TransitionTrailToLevel2);
transitionTrail2.fromTrail(TransitionTrailToLevel3);
let transitionTrail3 = new Trail("transitionTrail3", 2, 2);
transitionTrail3.fromTrail(TransitionTrailToLevel3);
transitionTrail3.fromTrail(TransitionTrailToLevel4);
let transitionTrail4 = new Trail("transitionTrail4", 2, 2);
transitionTrail4.fromTrail(TransitionTrailToLevel5);
let transitionTrail5 = new Trail("transitionTrail5", 2, 2);
transitionTrail5.fromTrail(TransitionTrailToTheEnd);
const frameDuration = 7;
let gateRoot = vector3(-226, 68, 223);
enum GateState {
open,
closed,
}
let gateState = GateState.closed;
const DEVELOPER_MODE = true;
let tickCounter = 0;
@@ -78,94 +81,55 @@ system.runInterval(async () => {
introTrail.spawnNext();
break;
case 1:
Pupeteer.setActionBar("Trigger1 works");
if (!isMakingLevel1) {
isMakingLevel1 = true;
world.sendMessage("Starting level1");
level1.update();
}
level1.update();
break;
case 2:
Pupeteer.setActionBar("Go to the next level.");
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail1.spawnNext();
break;
case 3:
Pupeteer.setActionBar("Trigger2 works");
if (!isMakingLevel2) {
isMakingLevel2 = true;
world.sendMessage("Starting level2");
level2.update();
}
level2.update();
break;
case 4:
Pupeteer.setActionBar("Trigger3 works");
if (!isMakingLevel3) {
isMakingLevel3 = true;
world.sendMessage("Starting level3");
level3.update();
}
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail2.spawnNext();
break;
case 5:
Pupeteer.setActionBar("Trigger4 works");
if (!isMakingLevel4) {
isMakingLevel4 = true;
world.sendMessage("Starting level4");
level4.update();
}
level3.update();
break;
case 6:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail3.spawnNext();
break;
case 7:
level4.update();
break;
case 8:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail4.spawnNext();
break;
case 9:
level5.update();
break;
case 10:
transitionTrail5.spawnNext();
if (gateState == GateState.closed) {
PlayGateOpenAnimation();
gateState = GateState.open;
}
break;
}
}
});
triggerManager.RegisterFunctionTrigger("lightPath", (event) => {
lightUpPath();
});
async function lightUpPath() {
let overworld: Dimension = world.getDimension("overworld");
let pos1 = vector3(2467, 9, 87);
let pos2 = vector3(2468, 9, 105);
for (let z = pos2.z; z >= pos1.z; z--) {
let volume: BlockVolume = new BlockVolume(vector3(pos1.x, pos1.y, z), vector3(pos1.x + 1, pos1.y, z));
overworld.fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
await delay(4);
}
}
world.afterEvents.worldInitialize.subscribe(() => {
mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number);
mindKeeper.registerStore(AGENT_ID, StoreType.string);
triggerManager.RegisterStores();
mindKeeper.registerToWorld();
triggerManager.Load();
});
world.beforeEvents.itemUseOn.subscribe((event) => {
trailMaker.OnItemUse(event);
triggerManager.OnItemUse(event);
});
async function randomExplosions() {
let pos1 = vector3(2465, 10, 82);
let pos2 = vector3(2471, 18, 90);
for (let i = 0; i < 5; i++) {
let pos = vector3(
pos1.x + Math.random() * (pos2.x - pos1.x),
pos1.y + Math.random() * (pos2.y - pos1.y),
pos1.z + Math.random() * (pos2.z - pos1.z)
);
system.run(() => {
spawnParticle(pos, "minecraft:huge_explosion_emitter", new MolangVariableMap());
});
}
}
world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
const command = event.message.split(" ")[0];
@@ -175,25 +139,18 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
if (command === "!reset") {
world.sendMessage("Resetting");
mindKeeper.set(CURRENT_LEVEL, 0);
resetLightPath();
level1.reset();
level2.reset();
level3.reset();
level4.reset();
isIntroToLevel1Sqeuence = false;
}
});
system.afterEvents.scriptEventReceive.subscribe((event) => {
if (event.id == "cc:getId") {
let id = event.message;
world.sendMessage("Script got the id " + id);
mindKeeper.set(AGENT_ID, id);
level5.reset();
ResetGate();
world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 barrier replace air");
world.getDimension("Overworld").runCommand("/fill -128 71 255 -128 74 276 barrier replace air");
world.getDimension("Overworld").runCommand("/fill -154 69 255 -154 74 276 barrier replace air");
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air");
mindKeeper.set(CURRENT_LEVEL, 8);
world.sendMessage("currentlevel = " + mindKeeper.get(CURRENT_LEVEL));
}
});
@@ -207,45 +164,37 @@ class ClonePos {
}
}
triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
// mindKeeper.increment(CURRENT_LEVEL);
mindKeeper.set(CURRENT_LEVEL, 1);
}
});
const gateFrames: ClonePos[] = [
{
point1: vector3(-226, 66, 223),
point2: vector3(-219, 62, 223),
},
{
point1: vector3(-226, 61, 223),
point2: vector3(-219, 57, 223),
},
{
point1: vector3(-226, 56, 223),
point2: vector3(-219, 52, 223),
},
{
point1: vector3(-226, 51, 223),
point2: vector3(-219, 47, 223),
},
{
point1: vector3(-226, 46, 223),
point2: vector3(-219, 42, 223),
},
];
triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => {
let PlayGateOpenAnimation = async () => {
playAnimation(gateFrames, frameDuration, false, gateRoot);
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
// mindKeeper.increment(CURRENT_LEVEL);
mindKeeper.set(CURRENT_LEVEL, 2);
mindKeeper.increment(CURRENT_LEVEL);
}
});
};
triggerManager.RegisterFunctionTrigger("PastLevel2", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
// mindKeeper.increment(CURRENT_LEVEL);
mindKeeper.set(CURRENT_LEVEL, 3);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel3", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
// mindKeeper.increment(CURRENT_LEVEL);
mindKeeper.set(CURRENT_LEVEL, 4);
}
});
Commands.register(PREFIX, "info", (arg) => {
world.sendMessage("-----------------");
world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID));
world.sendMessage("Engine Version: 1.0.2");
world.sendMessage("Engine is running");
world.sendMessage("Active players: " + world.getPlayers().length);
world.sendMessage("Current dimension: " + arg.player.dimension.id);
world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location));
world.sendMessage("-----------------");
});
let ResetGate = () => SetFrame(gateFrames[0], gateRoot);
async function SetFrame(frame: ClonePos, destination: Vector3) {
await world
@@ -290,6 +239,48 @@ async function playAnimation(
}
}
triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 2) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel2", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 4) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel3", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 6) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel4", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 8) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
Commands.register(PREFIX, "info", (arg) => {
world.sendMessage("-----------------");
world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID));
world.sendMessage("Engine Version: 1.0.2");
world.sendMessage("Engine is running");
world.sendMessage("Active players: " + world.getPlayers().length);
world.sendMessage("Current dimension: " + arg.player.dimension.id);
world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location));
world.sendMessage("-----------------");
});
system.afterEvents.scriptEventReceive.subscribe((event) => {
if (event.id == "cc:getId") {
let id = event.message;
@@ -297,3 +288,25 @@ system.afterEvents.scriptEventReceive.subscribe((event) => {
mindKeeper.set(AGENT_ID, id);
}
});
system.afterEvents.scriptEventReceive.subscribe((event) => {
if (event.id == "cc:getId") {
let id = event.message;
world.sendMessage("Script got the id " + id);
mindKeeper.set(AGENT_ID, id);
}
});
world.afterEvents.worldInitialize.subscribe(() => {
mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number);
mindKeeper.registerStore(AGENT_ID, StoreType.string);
triggerManager.RegisterStores();
mindKeeper.registerToWorld();
triggerManager.Load();
});
world.beforeEvents.itemUseOn.subscribe((event) => {
trailMaker.OnItemUse(event);
triggerManager.OnItemUse(event);
});

View File

@@ -1,47 +0,0 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel1: TrailType = {
name: "TransitionTrailToLevel1",
points: [
{ index: 0, position: vector3(-54, 88.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) },
{ index: 35, position: vector3(-70, 71.1, 263.5) },
],
};
export { TransitionTrailToLevel1 };

View File

@@ -5,42 +5,47 @@ import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel2: TrailType = {
name: "TransitionTrailToLevel2",
points: [
{ index: 0, position: vector3(-54, 88.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) },
{ index: 35, position: vector3(-70, 71.1, 263.5) },
{ index: 0, position: vector3(-72, 71.1, 265.5) },
{ index: 1, position: vector3(-73, 71.1, 265.5) },
{ index: 2, position: vector3(-74, 71.1, 265.5) },
{ index: 3, position: vector3(-75, 71.1, 265.5) },
{ index: 4, position: vector3(-76, 71.1, 265.5) },
{ index: 5, position: vector3(-77, 71.1, 265.5) },
{ index: 6, position: vector3(-78, 71.1, 265.5) },
{ index: 7, position: vector3(-79, 71.1, 265.5) },
{ index: 8, position: vector3(-80, 71.1, 265.5) },
{ index: 9, position: vector3(-81, 71.1, 265.5) },
{ index: 10, position: vector3(-82, 71.1, 265.5) },
{ index: 11, position: vector3(-83, 71.1, 265.5) },
{ index: 12, position: vector3(-84, 71.1, 265.5) },
{ index: 13, position: vector3(-85, 71.1, 265.5) },
{ index: 14, position: vector3(-85, 71.1, 264.5) },
{ index: 15, position: vector3(-85, 71.1, 263.5) },
{ index: 16, position: vector3(-86, 71.1, 263.5) },
{ index: 17, position: vector3(-87, 71.1, 263.5) },
{ index: 18, position: vector3(-88, 71.1, 263.5) },
{ index: 19, position: vector3(-89, 71.1, 263.5) },
{ index: 20, position: vector3(-90, 71.1, 263.5) },
{ index: 21, position: vector3(-91, 71.1, 263.5) },
{ index: 22, position: vector3(-92, 71.1, 263.5) },
{ index: 23, position: vector3(-92, 71.1, 264.5) },
{ index: 24, position: vector3(-93, 71.1, 264.5) },
{ index: 25, position: vector3(-94, 71.1, 264.5) },
{ index: 26, position: vector3(-95, 71.1, 264.5) },
{ index: 27, position: vector3(-96, 71.1, 264.5) },
{ index: 28, position: vector3(-97, 71.1, 264.5) },
{ index: 29, position: vector3(-98, 71.1, 264.5) },
{ index: 30, position: vector3(-99, 71.1, 264.5) },
{ index: 31, position: vector3(-100, 71.1, 264.5) },
{ index: 32, position: vector3(-100, 71.1, 265.5) },
{ index: 33, position: vector3(-101, 71.1, 265.5) },
{ index: 34, position: vector3(-102, 71.1, 265.5) },
{ index: 35, position: vector3(-103, 71.1, 265.5) },
{ index: 36, position: vector3(-104, 71.1, 265.5) },
{ index: 37, position: vector3(-105, 71.1, 265.5) },
{ index: 38, position: vector3(-106, 71.1, 265.5) },
{ index: 39, position: vector3(-107, 71.1, 265.5) },
{ index: 40, position: vector3(-108, 71.1, 265.5) },
],
};

View File

@@ -5,42 +5,26 @@ import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel3: TrailType = {
name: "TransitionTrailToLevel3",
points: [
{ index: 0, position: vector3(-54, 88.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) },
{ index: 35, position: vector3(-70, 71.1, 263.5) },
{ index: 0, position: vector3(-110, 71.1, 265.5) },
{ index: 1, position: vector3(-111, 71.1, 265.5) },
{ index: 2, position: vector3(-112, 71.1, 265.5) },
{ index: 3, position: vector3(-113, 71.1, 265.5) },
{ index: 4, position: vector3(-114, 71.1, 265.5) },
{ index: 5, position: vector3(-115, 71.1, 265.5) },
{ index: 6, position: vector3(-116, 71.1, 265.5) },
{ index: 7, position: vector3(-117, 71.1, 265.5) },
{ index: 8, position: vector3(-118, 71.1, 265.5) },
{ index: 9, position: vector3(-119, 71.1, 265.5) },
{ index: 10, position: vector3(-120, 71.1, 265.5) },
{ index: 11, position: vector3(-121, 71.1, 265.5) },
{ index: 12, position: vector3(-122, 71.1, 265.5) },
{ index: 13, position: vector3(-123, 71.1, 265.5) },
{ index: 14, position: vector3(-124, 71.1, 265.5) },
{ index: 15, position: vector3(-125, 71.1, 265.5) },
{ index: 16, position: vector3(-126, 71.1, 265.5) },
{ index: 17, position: vector3(-127, 71.1, 265.5) },
{ index: 18, position: vector3(-128, 71.1, 265.5) },
{ index: 19, position: vector3(-129, 71.1, 265.5) },
],
};

View File

@@ -0,0 +1,38 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel4: TrailType = {
name: "TransitionTrailToLevel4",
points: [
{ index: 0, position: vector3(-132, 71.1, 265.5) },
{ index: 1, position: vector3(-133, 71.1, 265.5) },
{ index: 2, position: vector3(-134, 71.1, 265.5) },
{ index: 3, position: vector3(-135, 71.1, 265.5) },
{ index: 4, position: vector3(-136, 71.1, 265.5) },
{ index: 5, position: vector3(-137, 71.1, 265.5) },
{ index: 6, position: vector3(-138, 71.1, 265.5) },
{ index: 7, position: vector3(-139, 71.1, 265.5) },
{ index: 8, position: vector3(-140, 71.1, 265.5) },
{ index: 9, position: vector3(-141, 71.1, 265.5) },
{ index: 10, position: vector3(-142, 71.1, 265.5) },
{ index: 11, position: vector3(-143, 71.1, 265.5) },
{ index: 12, position: vector3(-144, 71.1, 265.5) },
{ index: 13, position: vector3(-145, 71.1, 265.5) },
{ index: 14, position: vector3(-146, 71.1, 265.5) },
{ index: 15, position: vector3(-147, 71.1, 265.5) },
{ index: 16, position: vector3(-148, 71.1, 265.5) },
{ index: 17, position: vector3(-149, 71.1, 265.5) },
{ index: 18, position: vector3(-150, 71.1, 265.5) },
{ index: 19, position: vector3(-151, 71.1, 265.5) },
{ index: 20, position: vector3(-152, 71.1, 265.5) },
{ index: 21, position: vector3(-153, 71.1, 265.5) },
{ index: 22, position: vector3(-154, 71.1, 265.5) },
{ index: 23, position: vector3(-155, 71.1, 265.5) },
{ index: 24, position: vector3(-156, 71.1, 265.5) },
{ index: 25, position: vector3(-157, 71.1, 265.5) },
{ index: 26, position: vector3(-158, 71.1, 265.5) },
],
};
export { TransitionTrailToLevel4 };

View File

@@ -0,0 +1,91 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel5: TrailType = {
name: "TransitionTrailToLevel5",
points: [
{ index: 0, position: vector3(-160, 71.1, 265.5) },
{ index: 1, position: vector3(-161, 71.1, 265.5) },
{ index: 2, position: vector3(-162, 71.1, 265.5) },
{ index: 3, position: vector3(-163, 71.1, 265.5) },
{ index: 4, position: vector3(-164, 71.1, 265.5) },
{ index: 5, position: vector3(-165, 71.1, 265.5) },
{ index: 6, position: vector3(-166, 71.1, 265.5) },
{ index: 7, position: vector3(-167, 71.1, 265.5) },
{ index: 8, position: vector3(-168, 71.1, 265.5) },
{ index: 9, position: vector3(-169, 71.1, 265.5) },
{ index: 10, position: vector3(-170, 71.1, 265.5) },
{ index: 11, position: vector3(-171, 71.1, 265.5) },
{ index: 12, position: vector3(-172, 71.1, 265.5) },
{ index: 13, position: vector3(-173, 71.1, 265.5) },
{ index: 14, position: vector3(-174, 71.1, 265.5) },
{ index: 15, position: vector3(-175, 71.1, 265.5) },
{ index: 16, position: vector3(-176, 71.1, 265.5) },
{ index: 17, position: vector3(-177, 71.1, 265.5) },
{ index: 18, position: vector3(-178, 71.1, 265.5) },
{ index: 19, position: vector3(-179, 71.1, 265.5) },
{ index: 20, position: vector3(-180, 71.1, 265.5) },
{ index: 21, position: vector3(-181, 71.1, 265.5) },
{ index: 22, position: vector3(-182, 71.1, 265.5) },
{ index: 23, position: vector3(-183, 71.1, 265.5) },
{ index: 24, position: vector3(-184, 71.1, 265.5) },
{ index: 25, position: vector3(-185, 71.1, 265.5) },
{ index: 26, position: vector3(-186, 71.1, 265.5) },
{ index: 27, position: vector3(-187, 71.1, 265.5) },
{ index: 28, position: vector3(-188, 71.1, 265.5) },
{ index: 29, position: vector3(-189, 71.1, 265.5) },
{ index: 30, position: vector3(-190, 71.1, 265.5) },
{ index: 31, position: vector3(-191, 71.1, 265.5) },
{ index: 32, position: vector3(-192, 71.1, 265.5) },
{ index: 33, position: vector3(-193, 71.1, 265.5) },
{ index: 34, position: vector3(-194, 71.1, 265.5) },
{ index: 35, position: vector3(-195, 71.1, 265.5) },
{ index: 36, position: vector3(-196, 71.1, 265.5) },
{ index: 37, position: vector3(-197, 71.1, 265.5) },
{ index: 38, position: vector3(-198, 71.1, 265.5) },
{ index: 39, position: vector3(-199, 71.1, 265.5) },
{ index: 40, position: vector3(-200, 71.1, 265.5) },
{ index: 41, position: vector3(-201, 71.1, 265.5) },
{ index: 42, position: vector3(-202, 71.1, 265.5) },
{ index: 43, position: vector3(-203, 71.1, 265.5) },
{ index: 44, position: vector3(-203, 70.1, 265.5) },
{ index: 45, position: vector3(-204, 70.1, 265.5) },
{ index: 46, position: vector3(-205, 70.1, 265.5) },
{ index: 47, position: vector3(-206, 70.1, 265.5) },
{ index: 48, position: vector3(-207, 70.1, 265.5) },
{ index: 49, position: vector3(-208, 70.1, 265.5) },
{ index: 50, position: vector3(-209, 70.1, 265.5) },
{ index: 51, position: vector3(-210, 70.1, 265.5) },
{ index: 52, position: vector3(-211, 70.1, 265.5) },
{ index: 53, position: vector3(-211, 69.1, 265.5) },
{ index: 54, position: vector3(-212.5, 69.1, 265.5) },
{ index: 55, position: vector3(-212.5, 69.1, 264.5) },
{ index: 56, position: vector3(-212.5, 69.1, 263.5) },
{ index: 57, position: vector3(-212.5, 69.1, 262.5) },
{ index: 58, position: vector3(-212.5, 69.1, 261.5) },
{ index: 59, position: vector3(-212.5, 69.1, 260.5) },
{ index: 60, position: vector3(-212.5, 69.1, 259.5) },
{ index: 61, position: vector3(-213.5, 69.1, 259.5) },
{ index: 62, position: vector3(-214.5, 69.1, 259.5) },
{ index: 63, position: vector3(-215.5, 69.1, 259.5) },
{ index: 64, position: vector3(-216.5, 69.1, 259.5) },
{ index: 65, position: vector3(-217.5, 69.1, 259.5) },
{ index: 66, position: vector3(-218.5, 69.1, 259.5) },
{ index: 67, position: vector3(-219.5, 69.1, 259.5) },
{ index: 68, position: vector3(-219.5, 69.1, 258.5) },
{ index: 69, position: vector3(-219.5, 69.1, 257.5) },
{ index: 70, position: vector3(-219.5, 69.1, 256.5) },
{ index: 71, position: vector3(-219.5, 69.1, 255.5) },
{ index: 72, position: vector3(-219.5, 69.1, 254.5) },
{ index: 73, position: vector3(-219.5, 69.1, 253.5) },
{ index: 74, position: vector3(-219.5, 69.1, 252.5) },
{ index: 75, position: vector3(-219.5, 68.1, 252.5) },
{ index: 76, position: vector3(-219.5, 68.1, 251.5) },
{ index: 77, position: vector3(-219.5, 68.1, 250.5) },
{ index: 78, position: vector3(-219.5, 68.1, 249.5) },
{ index: 79, position: vector3(-219.5, 68.1, 248.5) },
],
};
export { TransitionTrailToLevel5 };

View File

@@ -0,0 +1,40 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToTheEnd: TrailType = {
name: "TransitionTrailToTheEnd",
points: [
{ index: 0, position: vector3(-220, 68.1, 245.5) },
{ index: 1, position: vector3(-220, 68.1, 244.5) },
{ index: 2, position: vector3(-220, 68.1, 243.5) },
{ index: 3, position: vector3(-220, 68.1, 242.5) },
{ index: 4, position: vector3(-220, 68.1, 241.5) },
{ index: 5, position: vector3(-220, 68.1, 240.5) },
{ index: 6, position: vector3(-220, 68.1, 239.5) },
{ index: 7, position: vector3(-220, 68.1, 238.5) },
{ index: 8, position: vector3(-220, 68.1, 237.5) },
{ index: 9, position: vector3(-220, 68.1, 236.5) },
{ index: 10, position: vector3(-220, 68.1, 235.5) },
{ index: 11, position: vector3(-220, 68.1, 234.5) },
{ index: 12, position: vector3(-220, 68.1, 233.5) },
{ index: 13, position: vector3(-220, 68.1, 232.5) },
{ index: 14, position: vector3(-220, 68.1, 231.5) },
{ index: 15, position: vector3(-220, 68.1, 230.5) },
{ index: 16, position: vector3(-221, 68.1, 230.5) },
{ index: 17, position: vector3(-222, 68.1, 230.5) },
{ index: 18, position: vector3(-222, 68.1, 229.5) },
{ index: 19, position: vector3(-222, 68.1, 228.5) },
{ index: 20, position: vector3(-222, 68.1, 227.5) },
{ index: 21, position: vector3(-222, 68.1, 226.5) },
{ index: 22, position: vector3(-222, 68.1, 225.5) },
{ index: 23, position: vector3(-222, 68.1, 224.5) },
{ index: 24, position: vector3(-222, 68.1, 223.5) },
{ index: 25, position: vector3(-222, 68.1, 222.5) },
{ index: 26, position: vector3(-222, 68.1, 221.5) },
{ index: 27, position: vector3(-222, 68.1, 220.5) },
{ index: 28, position: vector3(-222, 68.1, 219.5) },
],
};
export { TransitionTrailToTheEnd };