NPCs included, finishing touches zijn nog nodig
This commit is contained in:
@@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 gezondheidsrisico’s 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!
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
|
||||
15
scripts/Commandeer/utils/entityUtils.ts
Normal file
15
scripts/Commandeer/utils/entityUtils.ts
Normal 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 };
|
||||
@@ -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 };
|
||||
|
||||
59
scripts/Commandeer/utils/smallArrow.ts
Normal file
59
scripts/Commandeer/utils/smallArrow.ts
Normal 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 };
|
||||
@@ -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 };
|
||||
@@ -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),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -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),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
165
scripts/main.ts
165
scripts/main.ts
@@ -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");
|
||||
}
|
||||
});
|
||||
|
||||
41
scripts/trails/TransitionTrailBeforeLevel3.ts
Normal file
41
scripts/trails/TransitionTrailBeforeLevel3.ts
Normal 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 };
|
||||
24
scripts/trails/TransitionTrailBeforeLevel4.ts
Normal file
24
scripts/trails/TransitionTrailBeforeLevel4.ts
Normal 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 };
|
||||
51
scripts/trails/TransitionTrailBeforeLevel5.ts
Normal file
51
scripts/trails/TransitionTrailBeforeLevel5.ts
Normal 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 };
|
||||
@@ -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) },
|
||||
],
|
||||
};
|
||||
|
||||
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user