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

@@ -0,0 +1,397 @@
{
"format_version": "1.19.50",
"minecraft:npc_dialogue": {
"scenes": [
{
"scene_tag": "bilal_beforelevel_1_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.bilal"
}
]
},
"text": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.1.button"
}
]
},
"commands": ["/dialogue open @e[tag=bilal1] @initiator bilal_beforelevel_1_2"]
}
]
},
{
"scene_tag": "bilal_beforelevel_1_2",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.bilal"
}
]
},
"text": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.2.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.2.button"
}
]
},
"commands": ["/dialogue open @e[tag=bilal1] @initiator bilal_beforelevel_1_3"]
}
]
},
{
"scene_tag": "bilal_beforelevel_1_3",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.bilal"
}
]
},
"text": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.3.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "bilal.beforelevel.1.3.button"
}
]
},
"commands": ["/scriptevent cc:startLevel1"]
}
]
},
{
"scene_tag": "bilal_afterlevel_1_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.bilal"
}
]
},
"text": {
"rawtext": [
{
"translate": "bilal.afterlevel.1.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "bilal.afterlevel.1.1.button"
}
]
},
"commands": ["/scriptevent cc:afterLevel1"]
}
]
},
{
"scene_tag": "chanel_beforelevel_2_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.chanel"
}
]
},
"text": {
"rawtext": [
{
"translate": "chanel.beforelevel.2.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "chanel.beforelevel.2.1.button"
}
]
},
"commands": ["/scriptevent cc:startLevel2"]
}
]
},
{
"scene_tag": "chanel_afterlevel_2_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.chanel"
}
]
},
"text": {
"rawtext": [
{
"translate": "chanel.afterlevel.2.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "chanel.afterlevel.2.1.button"
}
]
},
"commands": ["/scriptevent cc:afterLevel2"]
}
]
},
{
"scene_tag": "chanel_afterlevel_3_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.chanel"
}
]
},
"text": {
"rawtext": [
{
"translate": "chanel.afterlevel.3.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "chanel.afterlevel.3.1.button"
}
]
},
"commands": ["/scriptevent cc:afterLevel3"]
}
]
},
{
"scene_tag": "chanel_afterlevel_4_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.chanel"
}
]
},
"text": {
"rawtext": [
{
"translate": "chanel.afterlevel.4.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "chanel.afterlevel.4.1.button"
}
]
},
"commands": ["/dialogue open @e[tag=chanel1] @initiator chanel_afterlevel_4_2"]
}
]
},
{
"scene_tag": "chanel_afterlevel_4_2",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.chanel"
}
]
},
"text": {
"rawtext": [
{
"translate": "chanel.afterlevel.4.2.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "chanel.afterlevel.4.2.button"
}
]
},
"commands": ["/scriptevent cc:afterLevel4"]
}
]
},
{
"scene_tag": "farah_beforelevel_5_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.farah"
}
]
},
"text": {
"rawtext": [
{
"translate": "farah.beforelevel.5.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "farah.beforelevel.5.1.button"
}
]
},
"commands": ["/dialogue open @e[tag=farah1] @initiator farah_beforelevel_5_2"]
}
]
},
{
"scene_tag": "farah_beforelevel_5_2",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.farah"
}
]
},
"text": {
"rawtext": [
{
"translate": "farah.beforelevel.5.2.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "farah.beforelevel.5.2.button"
}
]
},
"commands": ["/dialogue open @e[tag=farah1] @initiator farah_beforelevel_5_3"]
}
]
},
{
"scene_tag": "farah_beforelevel_5_3",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.farah"
}
]
},
"text": {
"rawtext": [
{
"translate": "farah.beforelevel.5.3.text",
"with": ["\n", "\n", "\n", "\n", "\n", "\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "farah.beforelevel.5.3.button"
}
]
},
"commands": ["/scriptevent cc:startLevel5"]
}
]
},
{
"scene_tag": "farah_afterlevel_5_1",
"npc_name": {
"rawtext": [
{
"translate": "npc.name.farah"
}
]
},
"text": {
"rawtext": [
{
"translate": "farah.afterlevel.5.1.text",
"with": ["\n"]
}
]
},
"buttons": [
{
"name": {
"rawtext": [
{
"translate": "farah.afterlevel.5.1.button"
}
]
},
"commands": []
}
]
}
]
}
}

View File

@@ -1,17 +1,16 @@
## General messages
message.trail.follow=Follow the trail
message.levels.completed=You have completed all levels!
message.trail.follow=Volg het pad
message.levels.completed=Je hebt alle levels gemaakt.
## Fail conditions
message.level.incorrect=§cIncorrect!§b
message.level.incorrect=§cIncorrect!
message.level.incorrect.subtext=Probeer opnieuw!
message.level.outofbounds=§cOut of bounds!§b
message.level.outofbounds.subtext=You can't be over water!
message.level.outofbounds=§cOut of bounds!
item.cc:chainsaw=Chainsaw
item.cc:drill=Drill
item.cc:chainsaw=Kettingzaag
item.cc:drill=Boor
## npc names
npc.name.help=Help
@@ -25,61 +24,87 @@ npc.name.turt=§aTurt
npc.name.mo=§4Mo
npc.name.al=Al
## Default buttons
button.thanks=Thanks!
button.close=Close
button.ok=Ok
button.hello=Hello
button.noprob=No problem
button.letsgo=Let's Go!
message.talkto.ramses=Talk to §dRamses
message.talkto.chanel=Talk to §9Chanel
message.talkto.chanel=Praat met §9Chanel
message.talkto.bilal=Praat met §6Bilal
message.talkto.farah=Praat met §5Farah
## Intro messages
message.intro.started=Crack the Vault!
message.intro.make=Break the code!
message.intro.done=§aYou have cracked the code!§b
message.intro=Ga uit de boomhut en ga de ladder af.
## Level 1 messages
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.outOfBounds=§cOut of bounds!§bwd
message.level1.started=Level 1 is begonnen!
message.level1.complete=Level 1 is voltooid!
message.level1.make=Maak Level 1
message.level1.outOfBounds=§cOut of bounds!
## 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
message.level2.started=Level 2 is begonnen!
message.level2.complete=Level 2 is voltooid!
message.level2.make=Maak Level 2
message.level2.outOfBounds=§cOut of bounds!
## 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
message.level3.started=Level 3 is begonnen!
message.level3.complete=Level 3 is voltooid!
message.level3.make=Maak Level 3
message.level3.outOfBounds=§cOut of bounds!
## 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
message.level4.started=Level 4 is begonnen!
message.level4.complete=Level 4 is voltooid!
message.level4.make=Maak Level 4
message.level4.outOfBounds=§cOut of bounds!
## 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
message.level5.started=Level 5 is begonnen!
message.level5.complete=Level 5 is voltooid!
message.level5.make=Maak Level 5
message.level5.outOfBounds=§cOut of bounds!
## Goto messages
message.goto.field.1=Go to the First Field
message.goto.field.2=Go to the Second Field
message.goto.field.3=Go to the Last Field
## End messages
message.end=Je hebt de missie voltooid!
chanel.greeting.1.text=Hello! I'm §9Chanel§0, the scientist. I'm here to help you with the vault.
chanel.greeting.1.button=Ok!
## Npc messages
bilal.beforelevel.1.1.text=Hey jij! Dit wordt jouw laatste missie op de jungleplaneet. Je zal het in deze missie moeten opnemen tegen stropers.
bilal.beforelevel.1.1.button=Stropers?
bilal.beforelevel.1.2.text=Stropers stelen of doden dieren om er geld mee te verdienen. Zo zijn veel diersoorten met uitsterven bedreigd door stropers.
bilal.beforelevel.1.2.button=Wat erg!
bilal.beforelevel.1.3.text=Voor de eerste opdracht probeer je alle 4 de voorwerpen van de stropers op te rapen, zodat ze geen materiaal meer hebben om te stropen. Je mag zelf kiezen hoe je tot het voorwerp komt, maar je moet gebruik maken van lussen.
bilal.beforelevel.1.3.button=OK!
bilal.afterlevel.1.1.text=Goed gedaan! Ga nu terug naar het leerplatform. Maar eerst: een weetje! Wist je dat olifanten en neushoorns ten prooi vallen aan stropers door de grote vraag naar ivoor? Vooral in Azië is het een heel populair product.
bilal.afterlevel.1.1.button=O nee!
chanel.beforelevel.2.1.text=In opdracht 2 zal je de fauna en de flora van de jungle moeten herstellen. Er zijn er drie levels in totaal. Na elk level kom je terug naar mij en leg ik je het volgende level uit. Voor level 1 programmeer je het volgende: als de Agent op een grasblok OF op een blok podzol staat, dan plant hij een boom, Anders plant hij een struik.
chanel.beforelevel.2.1.button=Ok.
chanel.afterlevel.2.1.text=Op naar het volgende level! Als de Agent op een blok gras EN naast bamboe staat, dan spawnt hij een panda. Anders als de Agent op een blok magma staat, dan plaatst hij een blok keisteen, Anders plaatst hij een struik.
chanel.afterlevel.2.1.button=Doe ik!
chanel.afterlevel.3.1.text=Hoera, al twee levels volbracht! Voor level 3 programmeer je het volgende: Wandel het parcours af tot je op een goudblok komt. Als de Agent op een blok gras EN naast een struik staat, spawnt hij een ocelot, anders als de Agent naast een boom EN NIET op een blok ijzer staat, dan spawnt hij een papegaai, Anders als de Agent tegen een hek loopt, gaat hij naar links, Anders als de Agent tegen een fakkel komt, dan gaat hij naar rechts, Anders draait hij een toertje.
chanel.afterlevel.3.1.button=Ik probeer!
chanel.afterlevel.4.1.text=Je hebt alle levels voltooid! Nu kan je terug naar het leerplatform. Maar eerst: een weetje! Wist je dat oerwoudvlees (bushmeat) ook een grote reden is waarom de populatie van wilde dieren daalt? Zo wordt in het DR Congo alleen al 1 miljoen ton bushmeat per jaar geconsumeerd.
chanel.afterlevel.4.1.button=Waarom?
chanel.afterlevel.4.2.text=Vooral in afgelegen gebieden waar het lastig is om vee te houden, is bushmeat vaak de enige proteïnebron die beschikbaar of betaalbaar is voor mensen. Maar zelfs in België kan je bijvoorbeeld apenvlees kopen!
chanel.afterlevel.4.2.button=Oei!
farah.beforelevel.5.1.text=Het is tijd voor opdracht 3. Er staat een parcours op jou te wachten waarbij je naar de overkant moet geraken en op het goudblok moet eindigen. Zo kan je de dieren in de kooien bevrijden.
farah.beforelevel.5.1.button=Hoe?
farah.beforelevel.5.2.text=Gebruik minstens drie van de volgende programmeerblokken: eindige lus, conditionele lus, meervoudige selectie en booleaanse operatoren.
farah.beforelevel.5.2.button=OK!
farah.beforelevel.5.3.text=Er zijn ook nog enkele voorwaarden:%s%s1. Wandel niet op magma blokken of op TNT%s2. Verander de steenblokken waar je op staat in podzolblokken%s3. Spawn een papegaai als je op zand staat.%s4. Spawn een panda als je op gras staat EN naast bamboe.%s5. Raap een pikhouweel en een diamant op als je er één tegenkomt.
farah.beforelevel.5.3.button=Ik probeer!
farah.afterlevel.5.1.text=Hoera, alle dieren zijn uit handen van de stropers! Ga terug naar het leerplatform. Maar eerst, een weetje! Wist je dat de jacht op wilde dieren voor consumptie ook grote gezondheidsrisicos met zich meebrengt? Veel ziektes kennen hun oorsprong bij wilde dieren zoals apen en vleermuizen. Volgens de World Health Organization (WHO) zijn 75% van de laatste 30 opkomende infecties, overgedragen van dier op mens.
farah.afterlevel.5.1.button=Wow!

View File

@@ -1,7 +1,9 @@
import { BlockType, Vector3, World } from "@minecraft/server";
import { Vector3, world, World } from "@minecraft/server";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
import { vector3 } from "../utils/vectorUtils";
export type blockCondition = {
block: string;
block: (string | MinecraftBlockTypes)[];
position: Vector3;
};
@@ -14,7 +16,7 @@ export type blockCondition = {
* @throws Throws an error if there is no lever at the specified position.
*/
export function leverOn(world: World, position: Vector3): boolean {
let lever = world.getDimension("overworld").getBlock(position);
const lever = world.getDimension("overworld").getBlock(position);
if (!(lever?.typeId == "minecraft:lever")) {
throw new Error(`No lever at ${position}`);
}
@@ -42,3 +44,14 @@ export type AgentNoGoZone = {
export type LevelNoGoZone = {
zones: AgentNoGoZone[];
};
export const checkBlockCondition = (condition: LevelBlockCondition): boolean => {
let isComplete: boolean = true;
condition.conditions.forEach((condition) => {
const block = world.getDimension("overworld").getBlock(condition.position);
if (condition.block.indexOf(block!.typeId) === -1) {
isComplete = false;
}
});
return isComplete;
};

View File

@@ -39,8 +39,8 @@ function rotate(pos: Vector3, angle: number) {
const particleData = new MolangVariableMap();
particleData.setColorRGB("variable.color", {
red: 1,
green: 1,
red: 0,
green: 0.5,
blue: 1,
});

View File

@@ -0,0 +1,15 @@
import { system, world } from "@minecraft/server";
function runEntityEventOnTag(tag: string, event: string) {
system.run(() => {
world.getDimension("overworld").runCommand(`/event entity @e[tag=${tag}] ${event}`);
});
}
function setNPCDialog(npcTag: string, dialogId: string) {
system.run(() => {
world.getDimension("overworld").runCommand(`/dialogue change @e[tag=${npcTag}] ${dialogId} @a`);
});
}
export { runEntityEventOnTag, setNPCDialog };

View File

@@ -1,5 +1,6 @@
import { BlockType, BlockTypes, BlockVolume, Vector3, world } from "@minecraft/server";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
import { vector3 } from "./vectorUtils";
type Wall = {
startPos: Vector3;
@@ -20,5 +21,19 @@ function startLevel(commandBlockPos: Vector3) {
let volume: BlockVolume = new BlockVolume(commandBlockPos, commandBlockPos);
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
}
function teleportAndFaceAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
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}`
);
}
function placeBlock(position: Vector3, blockType: MinecraftBlockTypes) {
const block = world.getDimension("overworld").getBlock(position);
block!.setType(blockType);
}
BlockTypes;
export { Wall, clearWall, fillWall, startLevel };
export { Wall, clearWall, fillWall, startLevel, teleportAndFaceAgent, placeBlock };

View File

@@ -0,0 +1,59 @@
import { MolangVariableMap, Vector3, world } from "@minecraft/server";
import { Vector3Add, vector3 } from "./vectorUtils";
import { PARTICLES, spawnParticle } from "./particleUtils";
let arrowTemplate: Vector3[] = [
vector3(0, 0, 0),
vector3(0.5, 0.5, 0),
vector3(-0.5, 0.5, 0),
vector3(0.75, 1, 0),
vector3(-0.75, 1, 0),
vector3(0, 0.5, 0),
vector3(0, 1, 0),
vector3(0, 1.5, 0),
vector3(0, 2, 0),
vector3(0, 2.5, 0),
];
let offset: Vector3 = vector3(0, 0, 0);
let angleOffset = 0;
let heightBobbing = 0;
let tickCounter = 0;
function rotate(pos: Vector3, angle: number) {
let x = pos.x;
let z = pos.z;
let newX = x * Math.cos(angle) - z * Math.sin(angle);
let newZ = x * Math.sin(angle) + z * Math.cos(angle);
return vector3(newX, pos.y, newZ);
}
const particleData = new MolangVariableMap();
particleData.setColorRGB("variable.color", {
red: 0,
green: 0.5,
blue: 1,
});
function drawSmallArrow(offsetPos: Vector3) {
tickCounter++;
if (tickCounter % 2 == 0) {
angleOffset += 0.1;
heightBobbing += 0.3;
offset = vector3(46.5, 75, 220.5);
arrowTemplate.forEach((pos) => {
let rotatedPos = rotate(pos, angleOffset);
let finalPos = Vector3Add(offsetPos, rotatedPos);
finalPos.y += Math.sin(heightBobbing) / 2;
spawnParticle(finalPos, PARTICLES.point, particleData);
});
}
}
export { drawSmallArrow };

View File

@@ -1,141 +0,0 @@
import { BlockType, Vector3 } from "@minecraft/server";
import { LevelBlockCondition, LevelNoGoZone } from "../Commandeer/level/levelTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
let level1Conditions: LevelBlockCondition = {
conditions: [
{
block: MinecraftBlockTypes.Air,
position: vector3(55, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(56, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(57, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(58, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(59, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(61, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(62, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(63, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(65, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(66, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(67, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(69, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(70, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(71, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(72, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(73, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(74, 70, 216),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(74, 70, 216),
},
],
};
let level1NoGoZones: LevelNoGoZone = {
zones: [
{ position: vector3(55, 70, 215) },
{ position: vector3(56, 70, 215) },
{ position: vector3(57, 70, 215) },
{ position: vector3(58, 70, 215) },
{ position: vector3(59, 70, 215) },
{ position: vector3(60, 70, 215) },
{ position: vector3(61, 70, 215) },
{ position: vector3(62, 70, 215) },
{ position: vector3(63, 70, 215) },
{ position: vector3(64, 70, 215) },
{ position: vector3(65, 70, 215) },
{ position: vector3(66, 70, 215) },
{ position: vector3(67, 70, 215) },
{ position: vector3(68, 70, 215) },
{ position: vector3(69, 70, 215) },
{ position: vector3(70, 70, 215) },
{ position: vector3(71, 70, 215) },
{ position: vector3(72, 70, 215) },
{ position: vector3(73, 70, 215) },
{ position: vector3(74, 70, 215) },
{ position: vector3(55, 70, 217) },
{ position: vector3(56, 70, 217) },
{ position: vector3(57, 70, 217) },
{ position: vector3(58, 70, 217) },
{ position: vector3(59, 70, 217) },
{ position: vector3(60, 70, 217) },
{ position: vector3(61, 70, 217) },
{ position: vector3(62, 70, 217) },
{ position: vector3(63, 70, 217) },
{ position: vector3(64, 70, 217) },
{ position: vector3(65, 70, 217) },
{ position: vector3(66, 70, 217) },
{ position: vector3(67, 70, 217) },
{ position: vector3(68, 70, 217) },
{ position: vector3(69, 70, 217) },
{ position: vector3(70, 70, 217) },
{ position: vector3(71, 70, 217) },
{ position: vector3(72, 70, 217) },
{ position: vector3(73, 70, 217) },
{ position: vector3(74, 70, 217) },
],
};
export { level1Conditions, level1NoGoZones };

View File

@@ -6,138 +6,316 @@ import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
let level2Conditions: LevelBlockCondition = {
conditions: [
{
block: MinecraftBlockTypes.Air,
position: vector3(45, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-112, 69, 272),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(44, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-112, 69, 271),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(43, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-111, 69, 271),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(42, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-111, 69, 270),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(41, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-111, 69, 269),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(40, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-113, 69, 271),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(39, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-114, 69, 271),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(38, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-114, 69, 270),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(37, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-115, 69, 270),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(36, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-115, 69, 269),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(35, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-115, 69, 268),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(34, 70, 220),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 268),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 220),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 219),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 269),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 218),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-117, 69, 267),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 217),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-117, 69, 266),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 216),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-117, 69, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 215),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-117, 69, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 214),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-117, 69, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 213),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 261),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(33, 70, 212),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(34, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 262),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(35, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(36, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(37, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(38, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-116, 69, 266),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(39, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-118, 69, 268),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(40, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-118, 69, 267),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(41, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-119, 69, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(42, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-119, 69, 267),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(43, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-119, 69, 268),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(44, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-120, 69, 269),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(45, 70, 212),
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-120, 69, 268),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-120, 69, 267),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-121, 69, 269),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 268),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-123, 69, 267),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-123, 69, 266),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 266),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-121, 69, 265),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 265),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-123, 69, 265),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-123, 69, 263),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 263),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 262),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 261),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-119, 69, 261),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-118, 69, 261),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-118, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-119, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-120, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-124, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-124, 69, 259),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 259),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-122, 69, 258),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.JungleSapling],
position: vector3(-123, 69, 258),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-113, 69, 269),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-114, 69, 269),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-114, 69, 268),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-116, 69, 267),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-117, 69, 269),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-117, 69, 268),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-117, 69, 262),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-117, 69, 261),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-118, 69, 262),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-118, 69, 265),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-118, 69, 266),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-119, 69, 266),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-120, 69, 261),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-121, 69, 259),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-121, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-121, 69, 266),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-121, 69, 267),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-121, 69, 268),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-122, 69, 267),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-122, 69, 264),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-123, 69, 264),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-123, 69, 260),
},
{
block: [MinecraftBlockTypes.Air, MinecraftBlockTypes.SweetBerryBush],
position: vector3(-123, 69, 259),
},
],
};

View File

@@ -1,138 +1,509 @@
import { BlockType, Vector3 } from "@minecraft/server";
import { LevelBlockCondition } from "../Commandeer/level/levelTypes";
import { LevelBlockCondition, LevelNoGoZone } from "../Commandeer/level/levelTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
let level3Conditions: LevelBlockCondition = {
conditions: [
{
block: MinecraftBlockTypes.Air,
position: vector3(57, 70, 235),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-134, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(58, 70, 235),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-135, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(59, 70, 235),
block: [MinecraftBlockTypes.Podzol],
position: vector3(-136, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 235),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-137, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 234),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 233),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-139, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 232),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-141, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(61, 70, 231),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-146, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(62, 70, 231),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 265),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(63, 70, 231),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 232),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-134, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 233),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-135, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 234),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-136, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 235),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 236),
block: [MinecraftBlockTypes.Podzol],
position: vector3(-139, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 237),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-140, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 238),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(65, 70, 239),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-145, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(66, 70, 239),
block: [MinecraftBlockTypes.Podzol],
position: vector3(-146, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(67, 70, 239),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 238),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 264),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 237),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 236),
block: [MinecraftBlockTypes.Podzol],
position: vector3(-135, 67, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(69, 70, 235),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-137, 67, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(70, 70, 235),
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 263),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(71, 70, 235),
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-139, 67, 263),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-140, 67, 263),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 263),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-142, 67, 263),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-143, 67, 263),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-144, 67, 263),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-145, 67, 263),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-146, 67, 263),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-147, 67, 263),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 263),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-134, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-135, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-139, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-140, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-142, 67, 262),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-143, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-144, 67, 262),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-145, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 262),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 261),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-134, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-135, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-136, 67, 261),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-138, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-139, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-140, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 261),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-142, 67, 261),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-143, 67, 261),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-145, 67, 261),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-146, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 261),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 260),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-134, 67, 260),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-135, 67, 260),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-136, 67, 260),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-137, 67, 260),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-138, 67, 260),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-139, 67, 260),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 260),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-142, 67, 260),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-143, 67, 260),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-144, 67, 260),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-145, 67, 260),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 260),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-148, 67, 260),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-133, 67, 259),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-134, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-135, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-136, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-137, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 259),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-139, 67, 259),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-140, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-142, 67, 259),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-143, 67, 259),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-144, 67, 259),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-145, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-146, 67, 259),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-147, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 259),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-133, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-134, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-138, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-139, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-140, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-141, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-142, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-143, 67, 258),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-144, 67, 258),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-145, 67, 258),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-146, 67, 258),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-147, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 258),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-145, 67, 266),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-145, 67, 267),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-145, 67, 269),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-146, 67, 266),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-146, 67, 269),
},
{
block: [MinecraftBlockTypes.Magma, MinecraftBlockTypes.Cobblestone],
position: vector3(-146, 67, 270),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-146, 67, 272),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-147, 67, 266),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 267),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 268),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 269),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 270),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 271),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-147, 67, 272),
},
{
block: [MinecraftBlockTypes.Podzol],
position: vector3(-148, 67, 266),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 267),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 268),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 269),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 270),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 271),
},
{
block: [MinecraftBlockTypes.GrassBlock],
position: vector3(-148, 67, 272),
},
],
};

View File

@@ -1,140 +0,0 @@
import { BlockType, Vector3 } from "@minecraft/server";
import { LevelBlockCondition } from "../Commandeer/level/levelTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
let level3Conditions: LevelBlockCondition = {
conditions: [
{
block: MinecraftBlockTypes.Air,
position: vector3(57, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(58, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(59, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 234),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 233),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 232),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(60, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(61, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(62, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(63, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 231),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 232),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 233),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 234),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 236),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 237),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 238),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(64, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(65, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(66, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(67, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 239),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 238),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 237),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 236),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(68, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(69, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(70, 70, 235),
},
{
block: MinecraftBlockTypes.Air,
position: vector3(71, 70, 235),
},
],
};
export { level3Conditions };

View File

@@ -1,26 +0,0 @@
import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
let levelIntroConditions: LevelBlockCondition = {
conditions: [
{
block: MinecraftBlockTypes.EmeraldBlock,
position: vector3(2471, 12, 108),
},
{
block: MinecraftBlockTypes.EmeraldBlock,
position: vector3(2469, 12, 108),
},
{
block: MinecraftBlockTypes.LapisBlock,
position: vector3(2468, 12, 108),
},
{
block: MinecraftBlockTypes.LapisBlock,
position: vector3(2464, 12, 108),
},
],
};
export { levelIntroConditions };

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;

View File

@@ -7,6 +7,7 @@ import {
Dimension,
TicksPerSecond,
BlockVolume,
ScriptEventCommandMessageAfterEvent,
} from "@minecraft/server";
import { Mindkeeper, StoreType } from "./Commandeer/mindKeeper";
import Pupeteer from "./Commandeer/pupeteer";
@@ -17,7 +18,7 @@ import { TrailMaker } from "./Commandeer/trail/trailMaker";
import * as CCTrigger from "./Commandeer/Trigger/CCTrigger";
import { Commands } from "./Commandeer/command/command";
import { Trail } from "./Commandeer/trail/trailEngine";
import { startTrail } from "./trails/startTrail";
import { levelStartTrail } from "./trails/startTrail";
import level1 from "./levels/level1/mission1";
import level2 from "./levels/level2/mission1";
import level3 from "./levels/level2/mission2";
@@ -25,10 +26,14 @@ import level4 from "./levels/level2/mission3";
import level5 from "./levels/level3/mission1";
import { MinecraftBlockTypes } from "./vanilla-data/mojang-block";
import { TransitionTrailToLevel2 } from "./trails/TransitionTrailToLevel2";
import { TransitionTrailToLevel3 } from "./trails/TransitionTrailToLevel3";
import { TransitionTrailToLevel4 } from "./trails/TransitionTrailToLevel4";
import { TransitionTrailBeforeLevel3 } from "./trails/TransitionTrailBeforeLevel3";
import { TransitionTrailToLevel5 } from "./trails/TransitionTrailToLevel5";
import { TransitionTrailToTheEnd } from "./trails/TransitionTrailToTheEnd";
import { setNPCDialog } from "./Commandeer/utils/entityUtils";
import { drawArrow } from "./Commandeer/utils/arrow";
import { TransitionTrailBeforeLevel5 } from "./trails/TransitionTrailBeforeLevel5";
import { TransitionTrailBeforeLevel4 } from "./trails/TransitionTrailBeforeLevel4";
import { drawSmallArrow } from "./Commandeer/utils/smallArrow";
const mindKeeper = new Mindkeeper(world);
const trailMaker: TrailMaker.Maker = new TrailMaker.Maker();
@@ -36,27 +41,27 @@ const triggerManager = new CCTrigger.Manager(mindKeeper);
const CURRENT_LEVEL = "currentLevel";
const AGENT_ID = "agentid";
const PREFIX = "!";
const frameDuration = 7;
const DEVELOPER_MODE = true;
export { mindKeeper, CURRENT_LEVEL, triggerManager };
let introTrail: Trail = new Trail("introTrail", 4, 4);
introTrail.fromTrail(startTrail);
let startTrail: Trail = new Trail("startTrail", 4, 4);
startTrail.fromTrail(levelStartTrail);
let transitionTrail1 = new Trail("transitionTrail1", 2, 2);
transitionTrail1.fromTrail(TransitionTrailToLevel2);
let transitionTrail2 = new Trail("transitionTrail2", 2, 2);
transitionTrail2.fromTrail(TransitionTrailToLevel3);
transitionTrail2.fromTrail(TransitionTrailBeforeLevel3);
let transitionTrail3 = new Trail("transitionTrail3", 2, 2);
transitionTrail3.fromTrail(TransitionTrailToLevel4);
transitionTrail3.fromTrail(TransitionTrailBeforeLevel4);
let transitionTrail4 = new Trail("transitionTrail4", 2, 2);
transitionTrail4.fromTrail(TransitionTrailToLevel5);
transitionTrail4.fromTrail(TransitionTrailBeforeLevel5);
let transitionTrail5 = new Trail("transitionTrail5", 2, 2);
transitionTrail5.fromTrail(TransitionTrailToTheEnd);
transitionTrail5.fromTrail(TransitionTrailToLevel5);
let transitionTrail6 = new Trail("transitionTrail6", 2, 2);
transitionTrail6.fromTrail(TransitionTrailToTheEnd);
const frameDuration = 7;
let animationPlaying = false;
let tickCounter = 0;
let gateRoot = vector3(-226, 68, 223);
enum GateState {
open,
@@ -64,8 +69,6 @@ enum GateState {
}
let gateState = GateState.closed;
const DEVELOPER_MODE = true;
let tickCounter = 0;
system.runInterval(async () => {
tickCounter++;
if (mindKeeper.initialised) {
@@ -77,57 +80,92 @@ system.runInterval(async () => {
const currentLevel = mindKeeper.get(CURRENT_LEVEL);
switch (currentLevel) {
case 0:
Pupeteer.setActionBar("Leave the treehouse and go down the ladder.");
introTrail.spawnNext();
Pupeteer.setActionBar("%message.intro");
setNPCDialog("bilal1", "bilal_beforelevel_1_1");
startTrail.spawnNext();
break;
case 1:
level1.update();
Pupeteer.setActionBar("%message.talkto.bilal");
break;
case 2:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail1.spawnNext();
break;
case 3:
level2.update();
level1.update();
break;
case 4:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail2.spawnNext();
setNPCDialog("bilal1", "bilal_afterlevel_1_1");
Pupeteer.setActionBar("%message.talkto.bilal");
break;
case 5:
level3.update();
transitionTrail1.spawnNext();
setNPCDialog("chanel1", "chanel_beforelevel_2_1");
Pupeteer.setActionBar("%message.talkto.chanel");
break;
case 6:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail3.spawnNext();
drawArrow(vector3(-118.5, 78, 265.5));
level2.update();
break;
case 7:
level4.update();
setNPCDialog("chanel1", "chanel_afterlevel_2_1");
transitionTrail2.spawnNext();
Pupeteer.setActionBar("%message.talkto.chanel");
break;
case 8:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail4.spawnNext();
drawArrow(vector3(-141.5, 78, 265.5));
level3.update();
break;
case 9:
setNPCDialog("chanel1", "chanel_afterlevel_3_1");
transitionTrail3.spawnNext();
Pupeteer.setActionBar("%message.talkto.chanel");
break;
case 10:
drawArrow(vector3(-167.5, 78, 265.5));
drawSmallArrow(vector3(-161.5, 76, 276.5));
level4.update();
break;
case 11:
setNPCDialog("chanel1", "chanel_afterlevel_4_1");
transitionTrail4.spawnNext();
Pupeteer.setActionBar("%message.talkto.chanel");
break;
case 12:
Pupeteer.setActionBar("Follow the trail to the next level.");
transitionTrail5.spawnNext();
break;
case 13:
setNPCDialog("farah1", "farah_beforelevel_5_1");
Pupeteer.setActionBar("%message.talkto.farah");
break;
case 14:
level5.update();
break;
case 10:
transitionTrail5.spawnNext();
case 15:
transitionTrail6.spawnNext();
if (gateState == GateState.closed) {
PlayGateOpenAnimation();
gateState = GateState.open;
PlayGateOpenAnimation();
}
break;
case 11:
Pupeteer.setActionBar("You completed the mission.");
case 16:
Pupeteer.setActionBar("%message.end");
break;
}
}
});
@@ -167,9 +205,6 @@ const gateFrames: ClonePos[] = [
let PlayGateOpenAnimation = async () => {
playAnimation(gateFrames, frameDuration, false, gateRoot);
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
mindKeeper.increment(CURRENT_LEVEL);
}
};
let ResetGate = () => SetFrame(gateFrames[0], gateRoot);
@@ -184,7 +219,6 @@ async function SetFrame(frame: ClonePos, destination: Vector3) {
);
}
let animationPlaying = false;
async function playAnimation(
frames: ClonePos[],
delayTime: number,
@@ -217,38 +251,26 @@ async function playAnimation(
}
}
triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => {
triggerManager.RegisterFunctionTrigger("BottomTreehouse", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => {
triggerManager.RegisterFunctionTrigger("level1", 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) {
triggerManager.RegisterFunctionTrigger("level5", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 12) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("CompletedTheMission", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 10) {
if (mindKeeper.get(CURRENT_LEVEL) == 15) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
@@ -271,15 +293,23 @@ system.afterEvents.scriptEventReceive.subscribe((event) => {
world.sendMessage("Script got the id " + id);
mindKeeper.set(AGENT_ID, id);
}
checkNpcResponse(event, "cc:startLevel1", 1);
checkNpcResponse(event, "cc:afterLevel1", 4);
checkNpcResponse(event, "cc:startLevel2", 5);
checkNpcResponse(event, "cc:afterLevel2", 7);
checkNpcResponse(event, "cc:afterLevel3", 9);
checkNpcResponse(event, "cc:afterLevel4", 11);
checkNpcResponse(event, "cc:startLevel5", 13);
});
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);
function checkNpcResponse(event: ScriptEventCommandMessageAfterEvent, id: string, level: number) {
if (event.id == id) {
if (mindKeeper.get(CURRENT_LEVEL) == level) {
mindKeeper.increment(CURRENT_LEVEL);
}
}
});
}
world.afterEvents.worldInitialize.subscribe(() => {
mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number);
@@ -303,6 +333,8 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
triggerManager.OnChat(event);
if (command === "!reset") {
mindKeeper.set(CURRENT_LEVEL, 0);
world.sendMessage("currentlevel = " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Resetting");
level1.reset();
level2.reset();
@@ -311,10 +343,9 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
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, 0);
world.sendMessage("currentlevel = " + mindKeeper.get(CURRENT_LEVEL));
setNPCDialog("bilal1", "bilal_beforelevel_1_1");
setNPCDialog("chanel1", "chanel_beforelevel_2_1");
setNPCDialog("farah1", "farah_beforelevel_5_1");
}
});

View File

@@ -0,0 +1,41 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailBeforeLevel3: TrailType = {
name: "TransitionTrailBeforeLevel3",
points: [
{ index: 1, position: vector3(-125, 71.1, 265.5) },
{ index: 2, position: vector3(-126, 71.1, 265.5) },
{ index: 3, position: vector3(-127, 71.1, 265.5) },
{ index: 4, position: vector3(-128, 71.1, 265.5) },
{ index: 5, position: vector3(-129, 71.1, 265.5) },
{ index: 6, position: vector3(-130, 71.1, 265.5) },
{ index: 7, position: vector3(-131, 71.1, 265.5) },
{ index: 8, position: vector3(-132, 71.1, 265.5) },
{ index: 9, position: vector3(-133, 71.1, 265.5) },
{ index: 10, position: vector3(-134, 71.1, 265.5) },
{ index: 11, position: vector3(-135, 71.1, 265.5) },
{ index: 12, position: vector3(-136, 71.1, 265.5) },
{ index: 13, position: vector3(-137, 71.1, 265.5) },
{ index: 14, position: vector3(-138, 71.1, 265.5) },
{ index: 15, position: vector3(-139, 71.1, 265.5) },
{ index: 16, position: vector3(-140, 71.1, 265.5) },
{ index: 17, position: vector3(-141, 71.1, 265.5) },
{ index: 18, position: vector3(-141.5, 71.1, 265.5) },
{ index: 19, position: vector3(-141.5, 71.1, 266) },
{ index: 20, position: vector3(-141.5, 71.1, 267) },
{ index: 21, position: vector3(-141.5, 71.1, 268) },
{ index: 22, position: vector3(-141.5, 71.1, 269) },
{ index: 23, position: vector3(-141.5, 71.1, 270) },
{ index: 24, position: vector3(-141.5, 71.1, 271) },
{ index: 25, position: vector3(-141.5, 71.1, 272) },
{ index: 26, position: vector3(-141.5, 71.1, 273) },
{ index: 27, position: vector3(-141.5, 71.1, 274) },
{ index: 28, position: vector3(-141.5, 71.1, 275) },
{ index: 29, position: vector3(-141.5, 71.1, 276) },
{ index: 30, position: vector3(-141.5, 71.1, 277) },
],
};
export { TransitionTrailBeforeLevel3 };

View File

@@ -0,0 +1,24 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailBeforeLevel4: TrailType = {
name: "TransitionTrailBeforeLevel4",
points: [
{ index: 1, position: vector3(-141.5, 71.1, 265.5) },
{ index: 2, position: vector3(-141.5, 71.1, 266) },
{ index: 3, position: vector3(-141.5, 71.1, 267) },
{ index: 4, position: vector3(-141.5, 71.1, 268) },
{ index: 5, position: vector3(-141.5, 71.1, 269) },
{ index: 6, position: vector3(-141.5, 71.1, 270) },
{ index: 7, position: vector3(-141.5, 71.1, 271) },
{ index: 8, position: vector3(-141.5, 71.1, 272) },
{ index: 9, position: vector3(-141.5, 71.1, 273) },
{ index: 10, position: vector3(-141.5, 71.1, 274) },
{ index: 11, position: vector3(-141.5, 71.1, 275) },
{ index: 12, position: vector3(-141.5, 71.1, 276) },
{ index: 13, position: vector3(-141.5, 71.1, 277) },
],
};
export { TransitionTrailBeforeLevel4 };

View File

@@ -0,0 +1,51 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailBeforeLevel5: TrailType = {
name: "TransitionTrailBeforeLevel5",
points: [
{ index: 1, position: vector3(-168, 71.1, 265.5) },
{ index: 2, position: vector3(-167, 71.1, 265.5) },
{ index: 3, position: vector3(-166, 71.1, 265.5) },
{ index: 4, position: vector3(-165, 71.1, 265.5) },
{ index: 5, position: vector3(-164, 71.1, 265.5) },
{ index: 6, position: vector3(-163, 71.1, 265.5) },
{ index: 7, position: vector3(-162, 71.1, 265.5) },
{ index: 8, position: vector3(-161, 71.1, 265.5) },
{ index: 9, position: vector3(-160, 71.1, 265.5) },
{ index: 10, position: vector3(-159, 71.1, 265.5) },
{ index: 11, position: vector3(-158, 71.1, 265.5) },
{ index: 12, position: vector3(-157, 71.1, 265.5) },
{ index: 13, position: vector3(-156, 71.1, 265.5) },
{ index: 14, position: vector3(-155, 71.1, 265.5) },
{ index: 15, position: vector3(-154, 71.1, 265.5) },
{ index: 16, position: vector3(-153, 71.1, 265.5) },
{ index: 17, position: vector3(-152, 71.1, 265.5) },
{ index: 18, position: vector3(-151, 71.1, 265.5) },
{ index: 19, position: vector3(-150, 71.1, 265.5) },
{ index: 20, position: vector3(-149, 71.1, 265.5) },
{ index: 21, position: vector3(-148, 71.1, 265.5) },
{ index: 22, position: vector3(-147, 71.1, 265.5) },
{ index: 23, position: vector3(-146, 71.1, 265.5) },
{ index: 24, position: vector3(-145, 71.1, 265.5) },
{ index: 25, position: vector3(-144, 71.1, 265.5) },
{ index: 26, position: vector3(-143, 71.1, 265.5) },
{ index: 27, position: vector3(-142, 71.1, 265.5) },
{ index: 28, position: vector3(-141.5, 71.1, 265.5) },
{ index: 29, position: vector3(-141.5, 71.1, 266) },
{ index: 30, position: vector3(-141.5, 71.1, 267) },
{ index: 31, position: vector3(-141.5, 71.1, 268) },
{ index: 32, position: vector3(-141.5, 71.1, 269) },
{ index: 33, position: vector3(-141.5, 71.1, 270) },
{ index: 34, position: vector3(-141.5, 71.1, 271) },
{ index: 35, position: vector3(-141.5, 71.1, 272) },
{ index: 36, position: vector3(-141.5, 71.1, 273) },
{ index: 37, position: vector3(-141.5, 71.1, 274) },
{ index: 38, position: vector3(-141.5, 71.1, 275) },
{ index: 39, position: vector3(-141.5, 71.1, 276) },
{ index: 40, position: vector3(-141.5, 71.1, 277) },
],
};
export { TransitionTrailBeforeLevel5 };

View File

@@ -46,6 +46,52 @@ let TransitionTrailToLevel2: TrailType = {
{ 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) },
{ index: 41, position: vector3(-109, 71.1, 265.5) },
{ index: 42, position: vector3(-110, 71.1, 265.5) },
{ index: 43, position: vector3(-111, 71.1, 265.5) },
{ index: 44, position: vector3(-112, 71.1, 265.5) },
{ index: 45, position: vector3(-113, 71.1, 265.5) },
{ index: 46, position: vector3(-114, 71.1, 265.5) },
{ index: 47, position: vector3(-115, 71.1, 265.5) },
{ index: 48, position: vector3(-116, 71.1, 265.5) },
{ index: 49, position: vector3(-117, 71.1, 265.5) },
{ index: 50, position: vector3(-118, 71.1, 265.5) },
{ index: 51, position: vector3(-119, 71.1, 265.5) },
{ index: 52, position: vector3(-120, 71.1, 265.5) },
{ index: 53, position: vector3(-121, 71.1, 265.5) },
{ index: 54, position: vector3(-122, 71.1, 265.5) },
{ index: 55, position: vector3(-123, 71.1, 265.5) },
{ index: 56, position: vector3(-124, 71.1, 265.5) },
{ index: 57, position: vector3(-125, 71.1, 265.5) },
{ index: 58, position: vector3(-126, 71.1, 265.5) },
{ index: 59, position: vector3(-127, 71.1, 265.5) },
{ index: 60, position: vector3(-128, 71.1, 265.5) },
{ index: 61, position: vector3(-129, 71.1, 265.5) },
{ index: 62, position: vector3(-130, 71.1, 265.5) },
{ index: 63, position: vector3(-131, 71.1, 265.5) },
{ index: 64, position: vector3(-132, 71.1, 265.5) },
{ index: 65, position: vector3(-133, 71.1, 265.5) },
{ index: 66, position: vector3(-134, 71.1, 265.5) },
{ index: 67, position: vector3(-135, 71.1, 265.5) },
{ index: 68, position: vector3(-136, 71.1, 265.5) },
{ index: 69, position: vector3(-137, 71.1, 265.5) },
{ index: 70, position: vector3(-138, 71.1, 265.5) },
{ index: 71, position: vector3(-139, 71.1, 265.5) },
{ index: 72, position: vector3(-140, 71.1, 265.5) },
{ index: 73, position: vector3(-141, 71.1, 265.5) },
{ index: 74, position: vector3(-141.5, 71.1, 265.5) },
{ index: 75, position: vector3(-141.5, 71.1, 266) },
{ index: 76, position: vector3(-141.5, 71.1, 267) },
{ index: 77, position: vector3(-141.5, 71.1, 268) },
{ index: 78, position: vector3(-141.5, 71.1, 269) },
{ index: 79, position: vector3(-141.5, 71.1, 270) },
{ index: 80, position: vector3(-141.5, 71.1, 271) },
{ index: 81, position: vector3(-141.5, 71.1, 272) },
{ index: 82, position: vector3(-141.5, 71.1, 273) },
{ index: 83, position: vector3(-141.5, 71.1, 274) },
{ index: 84, position: vector3(-141.5, 71.1, 275) },
{ index: 85, position: vector3(-141.5, 71.1, 276) },
{ index: 86, position: vector3(-141.5, 71.1, 277) },
],
};

View File

@@ -1,31 +0,0 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel3: TrailType = {
name: "TransitionTrailToLevel3",
points: [
{ 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) },
],
};
export { TransitionTrailToLevel3 };

View File

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

@@ -2,46 +2,50 @@ import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let startTrail: TrailType = {
name: "startTrail",
let levelStartTrail: TrailType = {
name: "levelStartTrail",
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: 4, position: vector3(-57.5, 88.1, 265.5) },
{ index: 5, position: vector3(-57.5, 87.1, 265.5) },
{ index: 6, position: vector3(-57.5, 86.1, 265.5) },
{ index: 7, position: vector3(-57.5, 85.1, 265.5) },
{ index: 8, position: vector3(-57.5, 84.1, 265.5) },
{ index: 9, position: vector3(-57.5, 83.1, 265.5) },
{ index: 10, position: vector3(-57.5, 82.1, 265.5) },
{ index: 11, position: vector3(-57.5, 81.1, 265.5) },
{ index: 12, position: vector3(-57.5, 80.1, 265.5) },
{ index: 13, position: vector3(-57.5, 79.1, 265.5) },
{ index: 14, position: vector3(-57.5, 78.1, 265.5) },
{ index: 15, position: vector3(-57.5, 77.1, 265.5) },
{ index: 16, position: vector3(-57.5, 76.1, 265.5) },
{ index: 17, position: vector3(-57.5, 75.1, 265.5) },
{ index: 18, position: vector3(-57.5, 74.1, 265.5) },
{ index: 19, position: vector3(-57.5, 74.1, 264.5) },
{ index: 20, position: vector3(-58.5, 74.1, 264.5) },
{ index: 21, position: vector3(-58.5, 74.1, 263.5) },
{ index: 22, position: vector3(-59.5, 74.1, 263.5) },
{ index: 23, position: vector3(-60.5, 74.1, 263.5) },
{ index: 24, position: vector3(-60.5, 74.1, 262.5) },
{ index: 25, position: vector3(-60.5, 74.1, 261.5) },
{ index: 26, position: vector3(-61.5, 74.1, 261.5) },
{ index: 27, position: vector3(-62.5, 74.1, 261.5) },
{ index: 28, position: vector3(-62.5, 73.1, 261.5) },
{ index: 29, position: vector3(-63.5, 73.1, 261.5) },
{ index: 30, position: vector3(-63.5, 72.1, 261.5) },
{ index: 31, position: vector3(-64.5, 72.1, 261.5) },
{ index: 32, position: vector3(-65.5, 72.1, 261.5) },
{ index: 33, position: vector3(-66.5, 72.1, 261.5) },
{ index: 34, position: vector3(-67.5, 71.1, 261.5) },
{ index: 35, position: vector3(-68.5, 71.1, 261.5) },
{ index: 36, position: vector3(-68.5, 71.1, 260.5) },
{ index: 37, position: vector3(-68.5, 71.1, 259.5) },
{ index: 38, position: vector3(-68.5, 71.1, 258.5) },
{ index: 39, position: vector3(-68.5, 71.1, 257.5) },
],
};
export { startTrail };
export { levelStartTrail };