Compare commits

...

6 Commits

Author SHA1 Message Date
d6b9b18ef3 efs 2024-09-13 11:33:54 +02:00
f4632b0a10 translationtext 2024-09-12 11:13:40 +02:00
c323e98bcd NPCs included, finishing touches zijn nog nodig 2024-09-11 16:54:16 +02:00
283f95e00a final 2024-08-26 11:20:26 +02:00
a21af04b9e version without npcs, levels work, everything is build 2024-08-14 14:44:31 +02:00
bc51d6899f working version without custom blocks/textures 2024-08-13 14:13:00 +02:00
46 changed files with 2352 additions and 1058 deletions

View File

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

View File

@@ -0,0 +1,18 @@
{
"format_version": "1.20.13",
"minecraft:item": {
"description": {
"identifier": "cc:chainsaw",
"menu_category": {
"category": "items",
"is_hidden_in_commands": false
}
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:icon": {
"texture": "cc.chainsaw"
}
}
}
}

View File

@@ -0,0 +1,18 @@
{
"format_version": "1.20.13",
"minecraft:item": {
"description": {
"identifier": "cc:drill",
"menu_category": {
"category": "items",
"is_hidden_in_commands": false
}
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:icon": {
"texture": "cc.drill"
}
}
}
}

View File

@@ -1,15 +1,16 @@
## General messages ## General messages
message.trail.follow=Follow the trail message.trail.follow=Follow the trail.
message.levels.completed=You have completed all levels! message.levels.completed=You completed all the levels.
## Fail conditions ## Fail conditions
message.level.incorrect=§cIncorrect!§b message.level.incorrect=§cIncorrect!
message.level.incorrect.subtext=Probeer opnieuw! message.level.incorrect.subtext=Try again!
message.level.outofbounds=§cOut of bounds!§b message.level.outofbounds=§cOut of bounds!
message.level.outofbounds.subtext=You can't be over water!
item.cc:chainsaw=Chainsaw
item.cc:drill=Drill
## npc names ## npc names
npc.name.help=Help npc.name.help=Help
@@ -23,45 +24,87 @@ npc.name.turt=§aTurt
npc.name.mo=§4Mo npc.name.mo=§4Mo
npc.name.al=Al 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=Talk to §9Chanel
message.talkto.bilal=Talk to §6Bilal
message.talkto.farah=Talk to §5Farah
## Intro messages ## Intro messages
message.intro.started=Crack the Vault! message.intro=Leave the treehouse and go down the ladder.
message.intro.make=Break the code!
message.intro.done=§aYou have cracked the code!§b
## Level 1 messages ## Level 1 messages
message.level1.name=Level 1 message.level1.name=Level 1
message.level1.started=Level 1 is started! message.level1.started=Level 1 started!
message.level1.complete=Level 1 is complete! message.level1.complete=Level 1 is completed!
message.level1.make=Make Level 1 message.level1.make=Make Level 1
message.level1.outOfBoun=§cOut of bounds!§bwd message.level1.outOfBounds=§cOut of bounds!
## Level 2 messages ## Level 2 messages
message.level2.name=Level 2 message.level2.name=Level 2
message.level2.started=Level 2 is started! message.level2.started=Level 2 started!
message.level2.complete=Level 2 is complete! message.level2.complete=Level 2 is completed!
message.level2.make=Make Level 2 message.level2.make=Make Level 2
message.level2.outOfBounds=§cOut of bounds!
## Level 3 messages ## Level 3 messages
message.level3.name=Level 3 message.level3.name=Level 3
message.level3.started=Level 3 is started! message.level3.started=Level 3 started!
message.level3.complete=Level 3 is complete! message.level3.complete=Level 3 is completed!
message.level3.make=Make Level 3 message.level3.make=Make Level 3
message.level3.outOfBounds=§cOut of bounds!
## Goto messages ## Level 4 messages
message.goto.field.1=Go to the First Field message.level4.name=Level 4
message.goto.field.2=Go to the Second Field message.level4.started=Level 4 started!
message.goto.field.3=Go to the Last Field message.level4.complete=Level 4 is completed!
message.level4.make=Make Level 4
message.level4.outOfBounds=§cOut of bounds!
chanel.greeting.1.text=Hello! I'm §9Chanel§0, the scientist. I'm here to help you with the vault. ## Level 5 messages
chanel.greeting.1.button=Ok! message.level5.name=Level 5
message.level5.started=Level 5 started!
message.level5.complete=Level 5 is completed!
message.level5.make=Make Level 5
message.level5.outOfBounds=§cOut of bounds!
## End messages
message.end=You completed the mission!
## Npc messages
bilal.beforelevel.1.1.text=Hey you! This will be your last mission on the jungle planet. In this mission you will have to fight against poachers.
bilal.beforelevel.1.1.button=Poachers?
bilal.beforelevel.1.2.text=Poachers steal or kill animals to make money. That is why so many animalspecies are threatened with extinction by poachers.
bilal.beforelevel.1.2.button=How sad!
bilal.beforelevel.1.3.text=For the first assignment you have to try to collect 4 tools from the poachers, so that they no longer have any material to poach. You may choose how you get the tools, but you have to use loops.
bilal.beforelevel.1.3.button=OK!
bilal.afterlevel.1.1.text=Well done! Return to the learningplatform. But first: a little fact! Did you know that elephants and rhinos fall prey to poachers due to the high demand for ivory? It is a very popular product, especially in Asia.
bilal.afterlevel.1.1.button=O no!
chanel.beforelevel.2.1.text=In assignment 2, you will have to restore the fauna and flora of the jungle. There are three levels in total. After each level, you have to come back to me and I will explain what you will have to do in the next level. For level 1, program the following: if the Agent stands on a grassblock OR on a podzolblock, he plants a tree, otherwise he plants a bush.
chanel.beforelevel.2.1.button=Ok.
chanel.afterlevel.2.1.text=Onto the next level! If the Agent is on a grassblock AND standing next to bamboo, then he spawns a panda. Otherwise if the Agent is standing on a magmablock, then he replaces it with a cobblestoneblock. Else he places a bush.
chanel.afterlevel.2.1.button=Doe ik!
chanel.afterlevel.3.1.text=Hurray, already two levels completed! For level 3 you will need to program the following: Walk down the course until you come to a goldblock. If the Agent is standing on a grassblock AND is next to a bush, he spawns an ocelot. Otherwise if the Agent is standing next to a tree AND NOT on an ironblock, he spawns a parrot. Else if the Agent walks against a fence, he turns to the left, if the Agent walks against a torch, then he will turn to the right. Otherwise he does a 360 degree turn.
chanel.afterlevel.3.1.button=I will try!
chanel.afterlevel.4.1.text=You completed all the levels! Return to the learningplatform. But first: a little fact! Did you know that bushmeat is also a big reason why wildlife populations are declining? For example, in DR Congo alone, 1 million tons of bushmeat are consumed per year.
chanel.afterlevel.4.1.button=Why?
chanel.afterlevel.4.2.text=Especially in remote areas where it is difficult to keep cattle, bushmeat is often the only protein source available or affordable to people. But even in Belgium you can buy monkey meat, for example!
chanel.afterlevel.4.2.button=Oh dear!
farah.beforelevel.5.1.text=It is time for assignment 3. There is a course waiting for you where you have to get to the other side and end up on the goldblock. This way you can free the animals in the cages.
farah.beforelevel.5.1.button=How?
farah.beforelevel.5.2.text=Use atleast three of the following programblocks: Gebruik minstens drie van de volgende programmeerblokken: finite loop, conditional loop, multiple selection and boolean operators.
farah.beforelevel.5.2.button=OK!
farah.beforelevel.5.3.text=There are a few conditions:%s%s1. Don't walk on magmablocks or TNT%s2. Replace the stoneblocks that the Agent is standing with podzolblocks%s3. Spawn a parrot when the Agent is standing on a sandblock%s4. Spawn a panda when the Agent is standing on a grassblock and is next to bamboo%s5. Pick up the pickaxe and diamond if the Agent is standing them.
farah.beforelevel.5.3.button=I will try!
farah.afterlevel.5.1.text=Hooray, all the animals are out of the hands of the poachers! Return to the learning platform. But first, a fact! Did you know that hunting wild animals for consumption also poses major health risks? Many diseases originate in wild animals such as monkeys and bats. According to the World Health Organization (WHO), 75% of the last 30 emerging infections have been transmitted from animals to humans.
farah.afterlevel.5.1.button=Wow!

View File

@@ -1,3 +1 @@
[ ["en_US", "nl_NL"]
"en_US"
]

View File

@@ -0,0 +1,110 @@
## General messages
message.trail.follow=Volg het pad
message.levels.completed=Je hebt alle levels gemaakt.
## Fail conditions
message.level.incorrect=§cIncorrect!
message.level.incorrect.subtext=Probeer opnieuw!
message.level.outofbounds=§cBuiten de grenzen!
item.cc:chainsaw=Kettingzaag
item.cc:drill=Boor
## npc names
npc.name.help=Help
npc.name.suki=§2Suki
npc.name.bilal=§6Bilal
npc.name.ramses=§dRamses
npc.name.chanel=§9Wetenschapper Chanel
npc.name.paul=§7Paul
npc.name.farah=§5Farah
npc.name.turt=§aTurt
npc.name.mo=§4Mo
npc.name.al=Al
message.talkto.chanel=Praat met §9Chanel
message.talkto.bilal=Praat met §6Bilal
message.talkto.farah=Praat met §5Farah
## Intro messages
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 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 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 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 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 begonnen!
message.level5.complete=Level 5 is voltooid!
message.level5.make=Maak Level 5
message.level5.outOfBounds=§cOut of bounds!
## End messages
message.end=Je hebt de missie voltooid!
## 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 podzolblok 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 grasblok EN naast bamboe staat, dan spawnt hij een panda. Anders als de Agent op een magmablok staat, dan vervangt hij de magmablok met een keisteenblok. 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 grasblok EN naast een struik staat, spawnt hij een ocelot, anders als de Agent naast een boom EN NIET op een ijzerblok 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 magmablokken of op TNT%s2. Verander de steenblokken waar de Agent op staat door ze te veranderen in podzolblokken%s3. Spawn een papegaai als de Agent op een zandblok staat.%s4. Spawn een panda als de Agent op een grasblok staat EN naast bamboe.%s5. Raap een pikhouweel en een diamant op als de Agent er op staat.
farah.beforelevel.5.3.button=Ik probeer!
farah.afterlevel.5.1.text=Hoera, alle dieren zijn uit handen van de stropers! Ga terug naar het leerplatform. Maar eerst, een weetje! Wist je dat de jacht op wilde dieren voor consumptie ook grote gezondheidsrisicos met zich meebrengt? Veel ziektes kennen hun oorsprong bij wilde dieren zoals apen en vleermuizen. Volgens de World Health Organization (WHO) zijn 75% van de laatste 30 opkomende infecties, overgedragen van dier op mens.
farah.afterlevel.5.1.button=Wow!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

View File

@@ -0,0 +1,12 @@
{
"resource_pack_name": "cc",
"texture_name": "atlas.items",
"texture_data": {
"cc.drill": {
"textures": "textures/items/drill"
},
"cc.chainsaw": {
"textures": "textures/items/chainsaw"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

View File

@@ -1,11 +0,0 @@
{
"texture_name": "atlas.terrain",
"resource_pack_name": "cc",
"padding": 8,
"num_mip_levels": 4,
"texture_data": {
"cracked_glass": {
"textures": "textures/blocks/cracked_glass"
}
}
}

View File

@@ -95,7 +95,7 @@ export class Manager {
players.forEach((player) => { players.forEach((player) => {
// player.sendMessage(`Player ${player.name} is in trigger ${trigger.IsPlayerInside(player)}`); // player.sendMessage(`Player ${player.name} is in trigger ${trigger.IsPlayerInside(player)}`);
if (trigger.hasPlayerEnterdTrigger(player)) { if (trigger.hasPlayerEnterdTrigger(player)) {
world.sendMessage(`Player ${player.name} entered trigger`); // world.sendMessage(`Player ${player.name} entered trigger`);
//Check if a function trigger is set //Check if a function trigger is set
const isFunctionSet = this.functionTriggers.has(trigger.eventToDispatch); const isFunctionSet = this.functionTriggers.has(trigger.eventToDispatch);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,24 +1,46 @@
import { BlockType, BlockTypes, Vector3, world } from "@minecraft/server"; import {
BlockType,
BlockTypes,
BlockVolume,
EntityInventoryComponent,
Player,
Vector3,
world,
} from "@minecraft/server";
import Level from "../../Commandeer/level/level"; import Level from "../../Commandeer/level/level";
import pupeteer from "../../Commandeer/pupeteer"; import pupeteer from "../../Commandeer/pupeteer";
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; 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 { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
import { level1Conditions } from "../../levelConditions/level1";
import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { mindKeeper, CURRENT_LEVEL } from "../../main";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; 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)];
const level1StartPosition: Vector3 = vector3(-73, 69, 267); let toolBlocks = [
const Level1EndPosition: Vector3 = vector3(-82, 69, 265); MinecraftBlockTypes.RedWool,
MinecraftBlockTypes.GreenWool,
MinecraftBlockTypes.YellowWool,
MinecraftBlockTypes.BlueWool,
];
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( const level1: Level = new Level(
() => { () => {
pupeteer.sendWorldMessage("%message.level1.started"); pupeteer.sendWorldMessage("%message.level1.started");
pupeteer.setTitleTimed("%message.level1.name", 2.5); pupeteer.setTitleTimed("%message.level1.name", 2.5);
startLevel(Level1CommandBlockPos); startLevel(Level1CommandBlockPos);
teleportAgent(level1StartPosition); teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
}, },
() => { () => {
pupeteer.setActionBar("%message.level1.make"); pupeteer.setActionBar("%message.level1.make");
@@ -27,42 +49,85 @@ const level1: Level = new Level(
pupeteer.clearActionBar(); pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level1.complete"); pupeteer.sendWorldMessage("%message.level1.complete");
pupeteer.setTitleTimed("%message.level1.complete", 2.5); pupeteer.setTitleTimed("%message.level1.complete", 2.5);
world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL); mindKeeper.increment(CURRENT_LEVEL);
level2.reset();
}, },
() => { () => {
let isComplete = false; for (let i = 0; i < toolPositions.length; i++) {
let isOutOfBounds = false; let block = world.getDimension("overworld").getBlock(toolPositions[i]);
let hasAllTools = false; if (block?.type.id == MinecraftBlockTypes.Air) {
toolPositions.splice(i, 1);
}
}
//6 blocks lower is lava let drillBlock = world.getDimension("overworld").getBlock(vector3(-75, 68, 268));
if (drillBlock?.type.id == MinecraftBlockTypes.Air && noDrillYet) {
noDrillYet = false;
let volume: BlockVolume = new BlockVolume(vector3(-70, 71, 285), vector3(-70, 71, 285));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
}
let chainsawBlock = world.getDimension("overworld").getBlock(vector3(-79, 68, 264));
if (chainsawBlock?.type.id == MinecraftBlockTypes.Air && noChainsawYet) {
noChainsawYet = false;
let volume: BlockVolume = new BlockVolume(vector3(-69, 71, 285), vector3(-69, 71, 285));
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
}
if (toolPositions.length == 0) {
hasAllTools = true;
}
let agentPos = getAgentLocation(); let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
let blockBarrier = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -2, 0)));
if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) { if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
if (blockBarrier && blockBarrier.type.id === MinecraftBlockTypes.Barrier) {
isOutOfBounds = false;
} else {
isOutOfBounds = true;
}
}
if (isAgentAt(Level1EndPosition) && hasAllTools) {
isComplete = true;
} else if (isAgentAt(Level1EndPosition) && !hasAllTools) {
isOutOfBounds = true; isOutOfBounds = true;
} }
if (isAgentAt(Level1EndPosition) && hasAllTools) {
isComplete = true;
}
// world.sendMessage(`isComplete: ${isComplete}`);
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
if (isOutOfBounds) { if (isOutOfBounds) {
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
noDrillYet = true;
noChainsawYet = true;
pupeteer.sendWorldMessage("%message.level1.outOfBounds"); pupeteer.sendWorldMessage("%message.level1.outOfBounds");
pupeteer.setTitleTimed("%message.level1.outOfBounds", 2.5); pupeteer.setTitleTimed("%message.level1.outOfBounds", 2.5);
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
teleportAgent(level1StartPosition); 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; return false;
} else if (isComplete) { } else if (isComplete) {
return true; return true;
} }
return false; return false;
},
() => {
isComplete = false;
noDrillYet = true;
noChainsawYet = true;
teleportAndFaceAgent(level1StartPosition, vector3(-84, 69, 272));
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]);
}
}
} }
); );

View File

@@ -2,23 +2,28 @@ import { Vector3, world } from "@minecraft/server";
import Level from "../../Commandeer/level/level"; import Level from "../../Commandeer/level/level";
import pupeteer from "../../Commandeer/pupeteer"; import pupeteer from "../../Commandeer/pupeteer";
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; 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 { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
// import { level2Conditions } from "../../levelConditions/level2"; // import { level2Conditions } from "../../levelConditions/level2";
import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { mindKeeper, CURRENT_LEVEL } from "../../main";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
const level2CommandBlockPos: Vector3 = vector3(-111, 70, 282); import level3 from "./mission2";
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 level2StartPosition: Vector3 = vector3(-111, 69, 272);
const level2EndPosition: Vector3 = vector3(-124, 69, 258); 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( const level2: Level = new Level(
() => { () => {
pupeteer.sendWorldMessage("%message.level2.started"); pupeteer.sendWorldMessage("%message.level2.started");
pupeteer.setTitleTimed("%message.level2.name", 2.5); pupeteer.setTitleTimed("%message.level2.name", 2.5);
startLevel(level2CommandBlockPos); startLevel(level2CommandBlockPos);
teleportAgent(level2StartPosition); teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272));
}, },
() => { () => {
pupeteer.setActionBar("%message.level2.make"); pupeteer.setActionBar("%message.level2.make");
@@ -27,15 +32,10 @@ const level2: Level = new Level(
pupeteer.clearActionBar(); pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level2.complete"); pupeteer.sendWorldMessage("%message.level2.complete");
pupeteer.setTitleTimed("%message.level2.complete", 2.5); pupeteer.setTitleTimed("%message.level2.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL); mindKeeper.increment(CURRENT_LEVEL);
level3.reset();
}, },
() => { () => {
let isComplete = false;
let isOutOfBounds = false;
//6 blocks lower is lava
let agentPos = getAgentLocation(); let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
@@ -43,25 +43,34 @@ const level2: Level = new Level(
isOutOfBounds = true; isOutOfBounds = true;
} }
if (isAgentAt(level2EndPosition)) { const isCorrect = checkBlockCondition(level2Conditions);
if (isAgentAt(level2EndPosition) && isCorrect) {
isComplete = true; isComplete = true;
} }
// world.sendMessage(`isComplete: ${isComplete}`); if (isOutOfBounds || (isAgentAt(level2EndPosition) && !isCorrect)) {
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); teleportAndFaceAgent(level2StartPosition, vector3(-125, 69, 272));
if (!isCorrect) {
if (isOutOfBounds) { pupeteer.sendWorldMessage("%message.level.inCorrect");
} else {
pupeteer.sendWorldMessage("%message.level2.outOfBounds"); pupeteer.sendWorldMessage("%message.level2.outOfBounds");
pupeteer.setTitleTimed("%message.level2.outOfBounds", 2.5); pupeteer.setTitleTimed("%message.level2.outOfBounds", 2.5);
// world.getDimension("overworld").runCommand("/kill @e[type=agent]"); }
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace sweet_berry_bush");
world.getDimension("Overworld").runCommand("/fill -111 69 272 -124 69 258 air replace jungle_sapling");
teleportAgent(level2StartPosition);
return false; return false;
} else if (isComplete) { } else if (isComplete) {
return true; return true;
} }
return false; 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");
} }
); );

View File

@@ -1,23 +1,30 @@
import { Vector3, world } from "@minecraft/server"; import { BlockVolume, Vector3, world } from "@minecraft/server";
import Level from "../../Commandeer/level/level"; import Level from "../../Commandeer/level/level";
import pupeteer from "../../Commandeer/pupeteer"; import pupeteer from "../../Commandeer/pupeteer";
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; 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 { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { mindKeeper, CURRENT_LEVEL } from "../../main";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
const Level3CommandBlockPos: Vector3 = vector3(-133, 68, 281); import level4 from "./mission3";
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 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( const level3: Level = new Level(
() => { () => {
pupeteer.sendWorldMessage("%message.level3.started"); pupeteer.sendWorldMessage("%message.level3.started");
pupeteer.setTitleTimed("%message.level3.name", 2.5); pupeteer.setTitleTimed("%message.level3.name", 2.5);
startLevel(Level3CommandBlockPos); startLevel(level3CommandBlockPos);
teleportAgent(level3StartPosition); teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}, },
() => { () => {
pupeteer.setActionBar("%message.level3.make"); pupeteer.setActionBar("%message.level3.make");
@@ -26,47 +33,38 @@ const level3: Level = new Level(
pupeteer.clearActionBar(); pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level3.complete"); pupeteer.sendWorldMessage("%message.level3.complete");
pupeteer.setTitleTimed("%message.level3.complete", 2.5); pupeteer.setTitleTimed("%message.level3.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL); mindKeeper.increment(CURRENT_LEVEL);
level4.reset();
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air");
}, },
() => { () => {
let isComplete = false; const isCorrect = checkBlockCondition(level3Conditions);
let isOutOfBounds = false;
//6 blocks lower is lava if (isAgentAt(level3EndPosition) && isCorrect) {
let agentPos = getAgentLocation();
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
if (
blockLava &&
blockLava.type.id === MinecraftBlockTypes.Lava &&
blockAir &&
blockAir.type.id === MinecraftBlockTypes.Air
) {
isOutOfBounds = true;
}
if (isAgentAt(Level3EndPosition)) {
isComplete = true; isComplete = true;
} }
if (isAgentAt(level3EndPosition) && !isCorrect) {
teleportAndFaceAgent(level3StartPosition, vector3(-148, 68, 265));
// world.sendMessage(`isComplete: ${isComplete}`); if (!isCorrect) {
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`); pupeteer.sendWorldMessage("%message.level.inCorrect");
} else {
if (isOutOfBounds) {
pupeteer.sendWorldMessage("%message.level3.outOfBounds"); pupeteer.sendWorldMessage("%message.level3.outOfBounds");
pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5); pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5);
// world.getDimension("overworld").runCommand("/kill @e[type=agent]"); }
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
teleportAgent(level3StartPosition);
return false; return false;
} else if (isComplete) { } else if (isComplete) {
return true; return true;
} }
return false; return false;
},
() => {
isComplete = false;
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
} }
); );

View File

@@ -1,22 +1,29 @@
import { Vector3, world } from "@minecraft/server"; import { BlockVolume, Vector3, world } from "@minecraft/server";
import Level from "../../Commandeer/level/level"; import Level from "../../Commandeer/level/level";
import pupeteer from "../../Commandeer/pupeteer"; import pupeteer from "../../Commandeer/pupeteer";
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils"; 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 { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
import { mindKeeper, CURRENT_LEVEL } from "../../main"; import { mindKeeper, CURRENT_LEVEL } from "../../main";
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block"; import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
import level5 from "../level3/mission1";
const Level4CommandBlockPos: Vector3 = vector3(-161, 68, 291); const Level4CommandBlockPos: Vector3 = vector3(-161, 68, 291);
const level4StartPosition: Vector3 = vector3(-161, 62, 261); const level4StartPosition: Vector3 = vector3(-161, 62, 261);
const level4EndPosition: Vector3 = vector3(-174, 62, 268); 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( const level4: Level = new Level(
() => { () => {
pupeteer.sendWorldMessage("%message.level4.started"); pupeteer.sendWorldMessage("%message.level4.started");
pupeteer.setTitleTimed("%message.level4.name", 2.5); pupeteer.setTitleTimed("%message.level4.name", 2.5);
startLevel(Level4CommandBlockPos); startLevel(Level4CommandBlockPos);
teleportAgent(level4StartPosition); teleportAndFaceAgent(level4StartPosition, vector3(-175, 62, 261));
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}, },
() => { () => {
pupeteer.setActionBar("%message.level4.make"); pupeteer.setActionBar("%message.level4.make");
@@ -25,25 +32,15 @@ const level4: Level = new Level(
pupeteer.clearActionBar(); pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level4.complete"); pupeteer.sendWorldMessage("%message.level4.complete");
pupeteer.setTitleTimed("%message.level4.complete", 2.5); pupeteer.setTitleTimed("%message.level4.complete", 2.5);
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 air replace barrier");
mindKeeper.increment(CURRENT_LEVEL); mindKeeper.increment(CURRENT_LEVEL);
level5.reset();
}, },
() => { () => {
let isComplete = false;
let isOutOfBounds = false;
//6 blocks lower is lava
let agentPos = getAgentLocation(); let agentPos = getAgentLocation();
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0))); let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
if ( if (blockAir && blockAir.type.id === MinecraftBlockTypes.Air) {
blockLava &&
blockLava.type.id === MinecraftBlockTypes.Lava &&
blockAir &&
blockAir.type.id === MinecraftBlockTypes.Air
) {
isOutOfBounds = true; isOutOfBounds = true;
} }
@@ -51,21 +48,23 @@ const level4: Level = new Level(
isComplete = true; isComplete = true;
} }
// world.sendMessage(`isComplete: ${isComplete}`);
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
if (isOutOfBounds) { 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.sendWorldMessage("%message.level4.outOfBounds");
pupeteer.setTitleTimed("%message.level4.outOfBounds", 2.5); pupeteer.setTitleTimed("%message.level4.outOfBounds", 2.5);
// world.getDimension("overworld").runCommand("/kill @e[type=agent]"); world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
teleportAgent(level4StartPosition);
return false; return false;
} else if (isComplete) { } else if (isComplete) {
return true; return true;
} }
return false; return false;
},
() => {
isComplete = false;
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
} }
); );

View File

@@ -0,0 +1,116 @@
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 { 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 level5StartPosition: Vector3 = vector3(-226, 65, 244);
const level5EndPosition: Vector3 = vector3(-226, 65, 229);
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(-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(
() => {
pupeteer.sendWorldMessage("%message.level5.started");
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");
},
() => {
pupeteer.clearActionBar();
pupeteer.sendWorldMessage("%message.level5.complete");
pupeteer.setTitleTimed("%message.level5.complete", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
},
() => {
let agentPos = getAgentLocation();
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
let blockMagma = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
let blockTNT = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
if (
blockAir &&
blockAir.type.id === MinecraftBlockTypes.Air &&
blockMagma &&
blockMagma.type.id === MinecraftBlockTypes.Magma &&
blockTNT &&
blockTNT.type.id === MinecraftBlockTypes.Tnt
) {
isOutOfBounds = true;
}
if (isAgentAt(level5EndPosition)) {
isComplete = true;
}
if (isOutOfBounds) {
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").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
for (let i = 0; i < diamondAndPickaxePositions.length; i++) {
let blockToReplace = world.getDimension("overworld").getBlock(diamondAndPickaxePositions[i]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) {
placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool);
}
}
return false;
} else if (isComplete) {
return true;
}
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]);
if (blockToReplace?.type.id === MinecraftBlockTypes.Stone) {
placeBlock(diamondAndPickaxePositions[i], MinecraftBlockTypes.PurpleWool);
}
}
world.getDimension("overworld").fillBlocks(volumeResetRedstoneBlock, MinecraftBlockTypes.RedstoneBlock);
}
);
export default level5;

View File

@@ -1,115 +0,0 @@
import { BlockType, Vector3, world } from "@minecraft/server";
import Level from "../Commandeer/level/level";
import { leverOn } from "../Commandeer/level/levelTypes";
import { teleportAgent, isAgentAt } from "../Commandeer/utils/agentUtils";
import { startLevel } from "../Commandeer/utils/levelUtils";
import { vector3 } from "../Commandeer/utils/vectorUtils";
import { levelIntroConditions } from "../levelConditions/levelIntro";
import { CURRENT_LEVEL, mindKeeper } from "../main";
import Pupeteer from "../Commandeer/pupeteer";
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
// const levelIntroCommandBlockPos: Vector3 = vector3(58, 66, 276);
// const levelIntroStartPosition: Vector3 = vector3(28, 70, 269);
// const levelIntroEndPosition: Vector3 = vector3(39, 70, 269);
const buttonPositions: Vector3[] = [
vector3(2471, 11, 106),
vector3(2469, 11, 106),
vector3(2468, 11, 106),
vector3(2464, 11, 106),
];
const blockPositions: Vector3[] = [
vector3(2471, 12, 108),
vector3(2469, 12, 108),
vector3(2468, 12, 108),
vector3(2464, 12, 108),
];
let currentBlockSequence: string[] = [];
let currentBlockSeuqenceIndex: number[] = [];
const blockCycle: string[] = [
MinecraftBlockTypes.RedstoneBlock,
MinecraftBlockTypes.GoldBlock,
MinecraftBlockTypes.DiamondBlock,
MinecraftBlockTypes.EmeraldBlock,
MinecraftBlockTypes.LapisBlock,
];
let buttonPressed: boolean[] = buttonPositions.map(() => false);
const levelIntro: Level = new Level(
() => {
Pupeteer.sendWorldMessage("%message.intro.started");
Pupeteer.setTitleTimed("%message.intro.started", 2.5);
// startLevel(levelIntroCommandBlockPos);
// teleportAgent(levelIntroStartPosition);
blockPositions.forEach((pos) => {
let block = world.getDimension("overworld").getBlock(pos);
let index = blockPositions.indexOf(pos);
let blockType = block!.type;
currentBlockSequence[index] = blockType.id;
});
},
() => {
Pupeteer.setActionBar("%message.intro.make");
buttonPositions.forEach((pos) => {
let block = world.getDimension("overworld").getBlock(pos);
if (!block) return;
let index = buttonPositions.indexOf(pos);
let prevState = buttonPressed[index];
let currentState = block!.getRedstonePower()! > 0;
if (currentState && !prevState) {
buttonPressed[index] = true;
//NextBlock
let nextBlock = currentBlockSequence[index];
let nextIndex = blockCycle.indexOf(nextBlock);
nextIndex = (nextIndex + 1) % blockCycle.length;
currentBlockSequence[index] = blockCycle[nextIndex];
//Update the block
let blockPos = blockPositions[index];
world.getDimension("overworld").getBlock(blockPos)!.setType(blockCycle[nextIndex]);
}
if (!currentState && prevState) {
buttonPressed[index] = false;
}
});
},
() => {
Pupeteer.clearActionBar();
world.sendMessage("%message.intro.done");
Pupeteer.setTitleTimed("%message.intro.done", 2.5);
mindKeeper.increment(CURRENT_LEVEL);
},
() => {
let counter = 0;
let isComplete = true;
levelIntroConditions.conditions.forEach((condition) => {
let blockInworld = world.getDimension("overworld").getBlock(condition.position);
if (blockInworld?.type.id !== condition.block) {
isComplete = false;
counter++;
}
});
world.sendMessage(`%message.intro.progress ${counter}/${levelIntroConditions.conditions.length}`);
world.sendMessage(`isComplete: ${isComplete}`);
if (isComplete) {
return true;
}
return false;
},
() => {
blockPositions.forEach((pos) => {
let block = world.getDimension("overworld").getBlock(pos);
let randomBlock = blockCycle[Math.floor(Math.random() * blockCycle.length)];
block!.setType(randomBlock);
});
}
);
export default levelIntro;

View File

@@ -7,6 +7,7 @@ import {
Dimension, Dimension,
TicksPerSecond, TicksPerSecond,
BlockVolume, BlockVolume,
ScriptEventCommandMessageAfterEvent,
} from "@minecraft/server"; } from "@minecraft/server";
import { Mindkeeper, StoreType } from "./Commandeer/mindKeeper"; import { Mindkeeper, StoreType } from "./Commandeer/mindKeeper";
import Pupeteer from "./Commandeer/pupeteer"; import Pupeteer from "./Commandeer/pupeteer";
@@ -17,15 +18,22 @@ import { TrailMaker } from "./Commandeer/trail/trailMaker";
import * as CCTrigger from "./Commandeer/Trigger/CCTrigger"; import * as CCTrigger from "./Commandeer/Trigger/CCTrigger";
import { Commands } from "./Commandeer/command/command"; import { Commands } from "./Commandeer/command/command";
import { Trail } from "./Commandeer/trail/trailEngine"; import { Trail } from "./Commandeer/trail/trailEngine";
import { startTrail } from "./trails/startTrail"; import { levelStartTrail } from "./trails/startTrail";
import level1 from "./levels/level1/mission1"; import level1 from "./levels/level1/mission1";
import level2 from "./levels/level2/mission1"; import level2 from "./levels/level2/mission1";
import level3 from "./levels/level2/mission2"; import level3 from "./levels/level2/mission2";
import level4 from "./levels/level2/mission3"; import level4 from "./levels/level2/mission3";
import level5 from "./levels/level3/mission1";
import { MinecraftBlockTypes } from "./vanilla-data/mojang-block"; import { MinecraftBlockTypes } from "./vanilla-data/mojang-block";
import { TransitionTrailToLevel1 } from "./trails/TransitionTrailToLevel1";
import { TransitionTrailToLevel2 } from "./trails/TransitionTrailToLevel2"; import { TransitionTrailToLevel2 } from "./trails/TransitionTrailToLevel2";
import { TransitionTrailToLevel3 } from "./trails/TransitionTrailToLevel3"; 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 mindKeeper = new Mindkeeper(world);
const trailMaker: TrailMaker.Maker = new TrailMaker.Maker(); const trailMaker: TrailMaker.Maker = new TrailMaker.Maker();
@@ -33,36 +41,34 @@ const triggerManager = new CCTrigger.Manager(mindKeeper);
const CURRENT_LEVEL = "currentLevel"; const CURRENT_LEVEL = "currentLevel";
const AGENT_ID = "agentid"; const AGENT_ID = "agentid";
const PREFIX = "!"; const PREFIX = "!";
const frameDuration = 7;
const DEVELOPER_MODE = true;
export { mindKeeper, CURRENT_LEVEL, triggerManager }; export { mindKeeper, CURRENT_LEVEL, triggerManager };
triggerManager.RegisterFunctionTrigger("resetPath", (event) => { let startTrail: Trail = new Trail("startTrail", 4, 4);
resetLightPath(); startTrail.fromTrail(levelStartTrail);
});
async function resetLightPath() {
world.getDimension("overworld").runCommand("/fill 2467 9 87 2468 9 105 air");
}
let isIntroToLevel1Sqeuence = false;
let isMakingLevel1 = false;
let isMakingLevel2 = false;
let isMakingLevel3 = false;
let isMakingLevel4 = false;
let introTrail: Trail = new Trail("introTrail", 4, 4);
introTrail.fromTrail(startTrail);
let transitionTrail1 = new Trail("transitionTrail1", 2, 2); let transitionTrail1 = new Trail("transitionTrail1", 2, 2);
transitionTrail1.fromTrail(TransitionTrailToLevel1); transitionTrail1.fromTrail(TransitionTrailToLevel2);
let transitionTrail2 = new Trail("transitionTrail2", 2, 2); let transitionTrail2 = new Trail("transitionTrail2", 2, 2);
transitionTrail2.fromTrail(TransitionTrailToLevel2); transitionTrail2.fromTrail(TransitionTrailBeforeLevel3);
let transitionTrail3 = new Trail("transitionTrail3", 2, 2); let transitionTrail3 = new Trail("transitionTrail3", 2, 2);
transitionTrail3.fromTrail(TransitionTrailToLevel3); transitionTrail3.fromTrail(TransitionTrailBeforeLevel4);
let transitionTrail4 = new Trail("transitionTrail4", 2, 2);
transitionTrail4.fromTrail(TransitionTrailBeforeLevel5);
let transitionTrail5 = new Trail("transitionTrail5", 2, 2);
transitionTrail5.fromTrail(TransitionTrailToLevel5);
let transitionTrail6 = new Trail("transitionTrail6", 2, 2);
transitionTrail6.fromTrail(TransitionTrailToTheEnd);
const DEVELOPER_MODE = true; let animationPlaying = false;
let tickCounter = 0; let tickCounter = 0;
let gateRoot = vector3(-226, 68, 223);
enum GateState {
open,
closed,
}
let gateState = GateState.closed;
system.runInterval(async () => { system.runInterval(async () => {
tickCounter++; tickCounter++;
if (mindKeeper.initialised) { if (mindKeeper.initialised) {
@@ -74,129 +80,97 @@ system.runInterval(async () => {
const currentLevel = mindKeeper.get(CURRENT_LEVEL); const currentLevel = mindKeeper.get(CURRENT_LEVEL);
switch (currentLevel) { switch (currentLevel) {
case 0: case 0:
Pupeteer.setActionBar("Leave the treehouse and go down the ladder."); Pupeteer.setActionBar("%message.intro");
introTrail.spawnNext(); setNPCDialog("bilal1", "bilal_beforelevel_1_1");
startTrail.spawnNext();
break; break;
case 1: case 1:
Pupeteer.setActionBar("Trigger1 works"); Pupeteer.setActionBar("%message.talkto.bilal");
if (!isMakingLevel1) {
isMakingLevel1 = true;
world.sendMessage("Starting level1");
level1.update();
}
break; break;
case 2: case 2:
Pupeteer.setActionBar("Go to the next level.");
transitionTrail1.spawnNext();
break; break;
case 3: case 3:
Pupeteer.setActionBar("Trigger2 works"); level1.update();
if (!isMakingLevel2) {
isMakingLevel2 = true;
world.sendMessage("Starting level2");
level2.update();
}
break; break;
case 4: case 4:
Pupeteer.setActionBar("Trigger3 works"); setNPCDialog("bilal1", "bilal_afterlevel_1_1");
if (!isMakingLevel3) { Pupeteer.setActionBar("%message.talkto.bilal");
isMakingLevel3 = true;
world.sendMessage("Starting level3");
level3.update();
}
break; break;
case 5: case 5:
Pupeteer.setActionBar("Trigger4 works"); transitionTrail1.spawnNext();
if (!isMakingLevel4) { Pupeteer.setActionBarTimed("%message.trail.follow", 2.5);
isMakingLevel4 = true; setNPCDialog("chanel1", "chanel_beforelevel_2_1");
world.sendMessage("Starting level4"); Pupeteer.setActionBar("%message.talkto.chanel");
level4.update();
}
break; break;
case 6: case 6:
drawArrow(vector3(-118.5, 78, 265.5));
level2.update();
break;
case 7:
setNPCDialog("chanel1", "chanel_afterlevel_2_1");
transitionTrail2.spawnNext();
Pupeteer.setActionBar("%message.talkto.chanel");
break;
case 8:
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("%message.trail.follow");
transitionTrail5.spawnNext();
break;
case 13:
setNPCDialog("farah1", "farah_beforelevel_5_1");
Pupeteer.setActionBar("%message.talkto.farah");
break;
case 14:
level5.update();
break;
case 15:
transitionTrail6.spawnNext();
if (gateState == GateState.closed) {
gateState = GateState.open;
PlayGateOpenAnimation();
}
break;
case 16:
Pupeteer.setActionBar("%message.end");
break; break;
} }
} }
}); });
triggerManager.RegisterFunctionTrigger("lightPath", (event) => {
lightUpPath();
});
async function lightUpPath() {
let overworld: Dimension = world.getDimension("overworld");
let pos1 = vector3(2467, 9, 87);
let pos2 = vector3(2468, 9, 105);
for (let z = pos2.z; z >= pos1.z; z--) {
let volume: BlockVolume = new BlockVolume(vector3(pos1.x, pos1.y, z), vector3(pos1.x + 1, pos1.y, z));
overworld.fillBlocks(volume, MinecraftBlockTypes.RedstoneBlock);
await delay(4);
}
}
world.afterEvents.worldInitialize.subscribe(() => {
mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number);
mindKeeper.registerStore(AGENT_ID, StoreType.string);
triggerManager.RegisterStores();
mindKeeper.registerToWorld();
triggerManager.Load();
});
world.beforeEvents.itemUseOn.subscribe((event) => {
trailMaker.OnItemUse(event);
triggerManager.OnItemUse(event);
});
async function randomExplosions() {
let pos1 = vector3(2465, 10, 82);
let pos2 = vector3(2471, 18, 90);
for (let i = 0; i < 5; i++) {
let pos = vector3(
pos1.x + Math.random() * (pos2.x - pos1.x),
pos1.y + Math.random() * (pos2.y - pos1.y),
pos1.z + Math.random() * (pos2.z - pos1.z)
);
system.run(() => {
spawnParticle(pos, "minecraft:huge_explosion_emitter", new MolangVariableMap());
});
}
}
world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
const command = event.message.split(" ")[0];
trailMaker.OnChat(event);
mindKeeper.chatCommands(event);
triggerManager.OnChat(event);
if (command === "!reset") {
world.sendMessage("Resetting");
mindKeeper.set(CURRENT_LEVEL, 0);
resetLightPath();
level1.reset();
level2.reset();
level3.reset();
level4.reset();
isIntroToLevel1Sqeuence = false;
}
});
system.afterEvents.scriptEventReceive.subscribe((event) => {
if (event.id == "cc:getId") {
let id = event.message;
world.sendMessage("Script got the id " + id);
mindKeeper.set(AGENT_ID, id);
}
});
class ClonePos { class ClonePos {
point1: Vector3; point1: Vector3;
point2: Vector3; point2: Vector3;
@@ -207,45 +181,36 @@ class ClonePos {
} }
} }
triggerManager.RegisterFunctionTrigger("BottomTreeHouse", async (event) => { const gateFrames: ClonePos[] = [
if (mindKeeper.get(CURRENT_LEVEL) == 0) { {
// mindKeeper.increment(CURRENT_LEVEL); point1: vector3(-226, 66, 223),
mindKeeper.set(CURRENT_LEVEL, 1); point2: vector3(-219, 62, 223),
} },
}); {
point1: vector3(-226, 61, 223),
point2: vector3(-219, 57, 223),
},
{
point1: vector3(-226, 56, 223),
point2: vector3(-219, 52, 223),
},
{
point1: vector3(-226, 51, 223),
point2: vector3(-219, 47, 223),
},
{
point1: vector3(-226, 46, 223),
point2: vector3(-219, 42, 223),
},
];
triggerManager.RegisterFunctionTrigger("PastLevel1", async (event) => { let PlayGateOpenAnimation = async () => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) { playAnimation(gateFrames, frameDuration, false, gateRoot);
// mindKeeper.increment(CURRENT_LEVEL); };
mindKeeper.set(CURRENT_LEVEL, 2);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel2", async (event) => { let ResetGate = () => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) { SetFrame(gateFrames[0], gateRoot);
// mindKeeper.increment(CURRENT_LEVEL); };
mindKeeper.set(CURRENT_LEVEL, 3);
}
});
triggerManager.RegisterFunctionTrigger("PastLevel3", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
// mindKeeper.increment(CURRENT_LEVEL);
mindKeeper.set(CURRENT_LEVEL, 4);
}
});
Commands.register(PREFIX, "info", (arg) => {
world.sendMessage("-----------------");
world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID));
world.sendMessage("Engine Version: 1.0.2");
world.sendMessage("Engine is running");
world.sendMessage("Active players: " + world.getPlayers().length);
world.sendMessage("Current dimension: " + arg.player.dimension.id);
world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location));
world.sendMessage("-----------------");
});
async function SetFrame(frame: ClonePos, destination: Vector3) { async function SetFrame(frame: ClonePos, destination: Vector3) {
await world await world
@@ -257,7 +222,6 @@ async function SetFrame(frame: ClonePos, destination: Vector3) {
); );
} }
let animationPlaying = false;
async function playAnimation( async function playAnimation(
frames: ClonePos[], frames: ClonePos[],
delayTime: number, delayTime: number,
@@ -266,7 +230,7 @@ async function playAnimation(
force: boolean = false force: boolean = false
) { ) {
if (animationPlaying && !force) { if (animationPlaying && !force) {
world.sendMessage("Animation already playing"); // world.sendMessage("Animation already playing");
return; return;
} }
let frameCount = frames.length; let frameCount = frames.length;
@@ -290,10 +254,101 @@ async function playAnimation(
} }
} }
triggerManager.RegisterFunctionTrigger("BottomTreehouse", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 0) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
triggerManager.RegisterFunctionTrigger("level1", async (event) => {
if (mindKeeper.get(CURRENT_LEVEL) == 2) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
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) == 15) {
mindKeeper.increment(CURRENT_LEVEL);
}
});
Commands.register(PREFIX, "info", (arg) => {
world.sendMessage("-----------------");
world.sendMessage("Current level: " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Agent ID: " + mindKeeper.get(AGENT_ID));
world.sendMessage("Engine Version: 1.0.2");
world.sendMessage("Engine is running");
world.sendMessage("Active players: " + world.getPlayers().length);
world.sendMessage("Current dimension: " + arg.player.dimension.id);
world.sendMessage("Current position: " + Vector3ToFancyString(arg.player.location));
world.sendMessage("-----------------");
});
system.afterEvents.scriptEventReceive.subscribe((event) => { system.afterEvents.scriptEventReceive.subscribe((event) => {
if (event.id == "cc:getId") { if (event.id == "cc:getId") {
let id = event.message; let id = event.message;
world.sendMessage("Script got the id " + id); // world.sendMessage("Script got the id " + id);
mindKeeper.set(AGENT_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);
});
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);
mindKeeper.registerStore(AGENT_ID, StoreType.string);
triggerManager.RegisterStores();
mindKeeper.registerToWorld();
triggerManager.Load();
});
world.beforeEvents.itemUseOn.subscribe((event) => {
trailMaker.OnItemUse(event);
triggerManager.OnItemUse(event);
});
world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
const command = event.message.split(" ")[0];
trailMaker.OnChat(event);
mindKeeper.chatCommands(event);
triggerManager.OnChat(event);
if (command === "!reset") {
ResetGate();
mindKeeper.set(CURRENT_LEVEL, 0);
world.sendMessage("currentlevel = " + mindKeeper.get(CURRENT_LEVEL));
world.sendMessage("Resetting");
level1.reset();
level2.reset();
level3.reset();
level4.reset();
level5.reset();
world.getDimension("Overworld").runCommand("/fill -86 71 253 -86 75 275 barrier replace air");
world.getDimension("Overworld").runCommand("/fill -182 69 255 -182 74 276 barrier replace air");
setNPCDialog("bilal1", "bilal_beforelevel_1_1");
setNPCDialog("chanel1", "chanel_beforelevel_2_1");
setNPCDialog("farah1", "farah_beforelevel_5_1");
}
}); });

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,42 +5,93 @@ import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel2: TrailType = { let TransitionTrailToLevel2: TrailType = {
name: "TransitionTrailToLevel2", name: "TransitionTrailToLevel2",
points: [ points: [
{ index: 0, position: vector3(-54, 88.1, 265.5) }, { index: 0, position: vector3(-72, 71.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) }, { index: 1, position: vector3(-73, 71.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) }, { index: 2, position: vector3(-74, 71.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) }, { index: 3, position: vector3(-75, 71.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) }, { index: 4, position: vector3(-76, 71.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) }, { index: 5, position: vector3(-77, 71.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) }, { index: 6, position: vector3(-78, 71.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) }, { index: 7, position: vector3(-79, 71.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) }, { index: 8, position: vector3(-80, 71.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) }, { index: 9, position: vector3(-81, 71.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) }, { index: 10, position: vector3(-82, 71.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) }, { index: 11, position: vector3(-83, 71.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) }, { index: 12, position: vector3(-84, 71.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) }, { index: 13, position: vector3(-85, 71.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) }, { index: 14, position: vector3(-85, 71.1, 264.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) }, { index: 15, position: vector3(-85, 71.1, 263.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) }, { index: 16, position: vector3(-86, 71.1, 263.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) }, { index: 17, position: vector3(-87, 71.1, 263.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) }, { index: 18, position: vector3(-88, 71.1, 263.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) }, { index: 19, position: vector3(-89, 71.1, 263.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) }, { index: 20, position: vector3(-90, 71.1, 263.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) }, { index: 21, position: vector3(-91, 71.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) }, { index: 22, position: vector3(-92, 71.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) }, { index: 23, position: vector3(-92, 71.1, 264.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) }, { index: 24, position: vector3(-93, 71.1, 264.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) }, { index: 25, position: vector3(-94, 71.1, 264.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) }, { index: 26, position: vector3(-95, 71.1, 264.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) }, { index: 27, position: vector3(-96, 71.1, 264.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) }, { index: 28, position: vector3(-97, 71.1, 264.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) }, { index: 29, position: vector3(-98, 71.1, 264.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) }, { index: 30, position: vector3(-99, 71.1, 264.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) }, { index: 31, position: vector3(-100, 71.1, 264.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) }, { index: 32, position: vector3(-100, 71.1, 265.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) }, { index: 33, position: vector3(-101, 71.1, 265.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) }, { index: 34, position: vector3(-102, 71.1, 265.5) },
{ index: 35, position: vector3(-70, 71.1, 263.5) }, { index: 35, position: vector3(-103, 71.1, 265.5) },
{ index: 36, position: vector3(-104, 71.1, 265.5) },
{ index: 37, position: vector3(-105, 71.1, 265.5) },
{ index: 38, position: vector3(-106, 71.1, 265.5) },
{ index: 39, position: vector3(-107, 71.1, 265.5) },
{ index: 40, position: vector3(-108, 71.1, 265.5) },
{ index: 41, position: vector3(-109, 71.1, 265.5) },
{ index: 42, position: vector3(-110, 71.1, 265.5) },
{ index: 43, position: vector3(-111, 71.1, 265.5) },
{ index: 44, position: vector3(-112, 71.1, 265.5) },
{ index: 45, position: vector3(-113, 71.1, 265.5) },
{ index: 46, position: vector3(-114, 71.1, 265.5) },
{ index: 47, position: vector3(-115, 71.1, 265.5) },
{ index: 48, position: vector3(-116, 71.1, 265.5) },
{ index: 49, position: vector3(-117, 71.1, 265.5) },
{ index: 50, position: vector3(-118, 71.1, 265.5) },
{ index: 51, position: vector3(-119, 71.1, 265.5) },
{ index: 52, position: vector3(-120, 71.1, 265.5) },
{ index: 53, position: vector3(-121, 71.1, 265.5) },
{ index: 54, position: vector3(-122, 71.1, 265.5) },
{ index: 55, position: vector3(-123, 71.1, 265.5) },
{ index: 56, position: vector3(-124, 71.1, 265.5) },
{ index: 57, position: vector3(-125, 71.1, 265.5) },
{ index: 58, position: vector3(-126, 71.1, 265.5) },
{ index: 59, position: vector3(-127, 71.1, 265.5) },
{ index: 60, position: vector3(-128, 71.1, 265.5) },
{ index: 61, position: vector3(-129, 71.1, 265.5) },
{ index: 62, position: vector3(-130, 71.1, 265.5) },
{ index: 63, position: vector3(-131, 71.1, 265.5) },
{ index: 64, position: vector3(-132, 71.1, 265.5) },
{ index: 65, position: vector3(-133, 71.1, 265.5) },
{ index: 66, position: vector3(-134, 71.1, 265.5) },
{ index: 67, position: vector3(-135, 71.1, 265.5) },
{ index: 68, position: vector3(-136, 71.1, 265.5) },
{ index: 69, position: vector3(-137, 71.1, 265.5) },
{ index: 70, position: vector3(-138, 71.1, 265.5) },
{ index: 71, position: vector3(-139, 71.1, 265.5) },
{ index: 72, position: vector3(-140, 71.1, 265.5) },
{ index: 73, position: vector3(-141, 71.1, 265.5) },
{ index: 74, position: vector3(-141.5, 71.1, 265.5) },
{ index: 75, position: vector3(-141.5, 71.1, 266) },
{ index: 76, position: vector3(-141.5, 71.1, 267) },
{ index: 77, position: vector3(-141.5, 71.1, 268) },
{ index: 78, position: vector3(-141.5, 71.1, 269) },
{ index: 79, position: vector3(-141.5, 71.1, 270) },
{ index: 80, position: vector3(-141.5, 71.1, 271) },
{ index: 81, position: vector3(-141.5, 71.1, 272) },
{ index: 82, position: vector3(-141.5, 71.1, 273) },
{ index: 83, position: vector3(-141.5, 71.1, 274) },
{ index: 84, position: vector3(-141.5, 71.1, 275) },
{ index: 85, position: vector3(-141.5, 71.1, 276) },
{ index: 86, position: vector3(-141.5, 71.1, 277) },
], ],
}; };

View File

@@ -1,47 +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(-54, 88.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) },
{ index: 35, position: vector3(-70, 71.1, 263.5) },
],
};
export { TransitionTrailToLevel3 };

View File

@@ -0,0 +1,120 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let TransitionTrailToLevel5: TrailType = {
name: "TransitionTrailToLevel5",
points: [
{ index: 1, position: vector3(-141.5, 71.1, 277) },
{ index: 2, position: vector3(-141.5, 71.1, 276) },
{ index: 3, position: vector3(-141.5, 71.1, 275) },
{ index: 4, position: vector3(-141.5, 71.1, 274) },
{ index: 5, position: vector3(-141.5, 71.1, 273) },
{ index: 6, position: vector3(-141.5, 71.1, 272) },
{ index: 7, position: vector3(-141.5, 71.1, 271) },
{ index: 8, position: vector3(-141.5, 71.1, 270) },
{ index: 9, position: vector3(-141.5, 71.1, 269) },
{ index: 10, position: vector3(-141.5, 71.1, 268) },
{ index: 11, position: vector3(-141.5, 71.1, 267) },
{ index: 12, position: vector3(-141.5, 71.1, 266) },
{ index: 13, position: vector3(-141.5, 71.1, 265.5) },
{ index: 14, position: vector3(-142, 71.1, 265.5) },
{ index: 15, position: vector3(-143, 71.1, 265.5) },
{ index: 16, position: vector3(-144, 71.1, 265.5) },
{ index: 17, position: vector3(-145, 71.1, 265.5) },
{ index: 18, position: vector3(-146, 71.1, 265.5) },
{ index: 19, position: vector3(-147, 71.1, 265.5) },
{ index: 20, position: vector3(-148, 71.1, 265.5) },
{ index: 21, position: vector3(-149, 71.1, 265.5) },
{ index: 22, position: vector3(-150, 71.1, 265.5) },
{ index: 23, position: vector3(-151, 71.1, 265.5) },
{ index: 24, position: vector3(-152, 71.1, 265.5) },
{ index: 25, position: vector3(-153, 71.1, 265.5) },
{ index: 26, position: vector3(-154, 71.1, 265.5) },
{ index: 27, position: vector3(-155, 71.1, 265.5) },
{ index: 28, position: vector3(-156, 71.1, 265.5) },
{ index: 29, position: vector3(-157, 71.1, 265.5) },
{ index: 30, position: vector3(-158, 71.1, 265.5) },
{ index: 31, position: vector3(-159, 71.1, 265.5) },
{ index: 32, position: vector3(-160, 71.1, 265.5) },
{ index: 33, position: vector3(-161, 71.1, 265.5) },
{ index: 34, position: vector3(-162, 71.1, 265.5) },
{ index: 35, position: vector3(-163, 71.1, 265.5) },
{ index: 36, position: vector3(-164, 71.1, 265.5) },
{ index: 37, position: vector3(-165, 71.1, 265.5) },
{ index: 38, position: vector3(-166, 71.1, 265.5) },
{ index: 39, position: vector3(-167, 71.1, 265.5) },
{ index: 40, position: vector3(-168, 71.1, 265.5) },
{ index: 41, position: vector3(-169, 71.1, 265.5) },
{ index: 42, position: vector3(-170, 71.1, 265.5) },
{ index: 43, position: vector3(-171, 71.1, 265.5) },
{ index: 44, position: vector3(-172, 71.1, 265.5) },
{ index: 45, position: vector3(-173, 71.1, 265.5) },
{ index: 46, position: vector3(-174, 71.1, 265.5) },
{ index: 47, position: vector3(-175, 71.1, 265.5) },
{ index: 48, position: vector3(-176, 71.1, 265.5) },
{ index: 49, position: vector3(-177, 71.1, 265.5) },
{ index: 50, position: vector3(-178, 71.1, 265.5) },
{ index: 51, position: vector3(-179, 71.1, 265.5) },
{ index: 52, position: vector3(-180, 71.1, 265.5) },
{ index: 53, position: vector3(-181, 71.1, 265.5) },
{ index: 54, position: vector3(-182, 71.1, 265.5) },
{ index: 55, position: vector3(-183, 71.1, 265.5) },
{ index: 56, position: vector3(-184, 71.1, 265.5) },
{ index: 57, position: vector3(-185, 71.1, 265.5) },
{ index: 58, position: vector3(-186, 71.1, 265.5) },
{ index: 59, position: vector3(-187, 71.1, 265.5) },
{ index: 60, position: vector3(-188, 71.1, 265.5) },
{ index: 61, position: vector3(-189, 71.1, 265.5) },
{ index: 62, position: vector3(-190, 71.1, 265.5) },
{ index: 63, position: vector3(-191, 71.1, 265.5) },
{ index: 64, position: vector3(-192, 71.1, 265.5) },
{ index: 65, position: vector3(-193, 71.1, 265.5) },
{ index: 66, position: vector3(-194, 71.1, 265.5) },
{ index: 67, position: vector3(-195, 71.1, 265.5) },
{ index: 68, position: vector3(-196, 71.1, 265.5) },
{ index: 69, position: vector3(-197, 71.1, 265.5) },
{ index: 70, position: vector3(-198, 71.1, 265.5) },
{ index: 71, position: vector3(-199, 71.1, 265.5) },
{ index: 72, position: vector3(-200, 71.1, 265.5) },
{ index: 73, position: vector3(-201, 71.1, 265.5) },
{ index: 74, position: vector3(-202, 71.1, 265.5) },
{ index: 75, position: vector3(-203, 71.1, 265.5) },
{ index: 76, position: vector3(-203, 70.1, 265.5) },
{ index: 77, position: vector3(-204, 70.1, 265.5) },
{ index: 78, position: vector3(-205, 70.1, 265.5) },
{ index: 79, position: vector3(-206, 70.1, 265.5) },
{ index: 80, position: vector3(-207, 70.1, 265.5) },
{ index: 81, position: vector3(-208, 70.1, 265.5) },
{ index: 82, position: vector3(-209, 70.1, 265.5) },
{ index: 83, position: vector3(-210, 70.1, 265.5) },
{ index: 84, position: vector3(-211, 70.1, 265.5) },
{ index: 85, position: vector3(-211, 69.1, 265.5) },
{ index: 86, position: vector3(-212.5, 69.1, 265.5) },
{ index: 87, position: vector3(-212.5, 69.1, 264.5) },
{ index: 88, position: vector3(-212.5, 69.1, 263.5) },
{ index: 89, position: vector3(-212.5, 69.1, 262.5) },
{ index: 90, position: vector3(-212.5, 69.1, 261.5) },
{ index: 91, position: vector3(-212.5, 69.1, 260.5) },
{ index: 92, position: vector3(-212.5, 69.1, 259.5) },
{ index: 93, position: vector3(-213.5, 69.1, 259.5) },
{ index: 94, position: vector3(-214.5, 69.1, 259.5) },
{ index: 95, position: vector3(-215.5, 69.1, 259.5) },
{ index: 96, position: vector3(-216.5, 69.1, 259.5) },
{ index: 97, position: vector3(-217.5, 69.1, 259.5) },
{ index: 98, position: vector3(-217.5, 69.1, 258.5) },
{ index: 99, position: vector3(-217.5, 69.1, 257.5) },
{ index: 100, position: vector3(-217.5, 69.1, 256.5) },
{ index: 101, position: vector3(-217.5, 69.1, 255.5) },
{ index: 102, position: vector3(-217.5, 69.1, 254.5) },
{ index: 103, position: vector3(-217.5, 69.1, 253.5) },
{ index: 104, position: vector3(-217.5, 69.1, 252.5) },
{ index: 105, position: vector3(-217.5, 68.1, 252.5) },
{ index: 106, position: vector3(-217.5, 68.1, 251.5) },
{ index: 107, position: vector3(-217.5, 68.1, 250.5) },
{ index: 108, position: vector3(-217.5, 68.1, 249.5) },
{ index: 109, position: vector3(-217.5, 68.1, 248.5) },
],
};
export { TransitionTrailToLevel5 };

View File

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

View File

@@ -2,46 +2,50 @@ import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes"; import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils"; import { vector3 } from "../Commandeer/utils/vectorUtils";
let startTrail: TrailType = { let levelStartTrail: TrailType = {
name: "startTrail", name: "levelStartTrail",
points: [ points: [
{ index: 0, position: vector3(-54, 88.1, 265.5) }, { index: 0, position: vector3(-54, 88.1, 265.5) },
{ index: 1, position: vector3(-55, 88.1, 265.5) }, { index: 1, position: vector3(-55, 88.1, 265.5) },
{ index: 2, position: vector3(-56, 88.1, 265.5) }, { index: 2, position: vector3(-56, 88.1, 265.5) },
{ index: 3, position: vector3(-57, 88.1, 265.5) }, { index: 3, position: vector3(-57, 88.1, 265.5) },
{ index: 4, position: vector3(-58, 88.1, 265.5) }, { index: 4, position: vector3(-57.5, 88.1, 265.5) },
{ index: 5, position: vector3(-58, 87.1, 265.5) }, { index: 5, position: vector3(-57.5, 87.1, 265.5) },
{ index: 6, position: vector3(-58, 86.1, 265.5) }, { index: 6, position: vector3(-57.5, 86.1, 265.5) },
{ index: 7, position: vector3(-58, 85.1, 265.5) }, { index: 7, position: vector3(-57.5, 85.1, 265.5) },
{ index: 8, position: vector3(-58, 84.1, 265.5) }, { index: 8, position: vector3(-57.5, 84.1, 265.5) },
{ index: 9, position: vector3(-58, 83.1, 265.5) }, { index: 9, position: vector3(-57.5, 83.1, 265.5) },
{ index: 10, position: vector3(-58, 82.1, 265.5) }, { index: 10, position: vector3(-57.5, 82.1, 265.5) },
{ index: 11, position: vector3(-58, 81.1, 265.5) }, { index: 11, position: vector3(-57.5, 81.1, 265.5) },
{ index: 12, position: vector3(-58, 80.1, 265.5) }, { index: 12, position: vector3(-57.5, 80.1, 265.5) },
{ index: 13, position: vector3(-58, 79.1, 265.5) }, { index: 13, position: vector3(-57.5, 79.1, 265.5) },
{ index: 14, position: vector3(-58, 78.1, 265.5) }, { index: 14, position: vector3(-57.5, 78.1, 265.5) },
{ index: 15, position: vector3(-58, 77.1, 265.5) }, { index: 15, position: vector3(-57.5, 77.1, 265.5) },
{ index: 16, position: vector3(-58, 76.1, 265.5) }, { index: 16, position: vector3(-57.5, 76.1, 265.5) },
{ index: 17, position: vector3(-58, 75.1, 265.5) }, { index: 17, position: vector3(-57.5, 75.1, 265.5) },
{ index: 18, position: vector3(-58, 74.1, 265.5) }, { index: 18, position: vector3(-57.5, 74.1, 265.5) },
{ index: 19, position: vector3(-58, 74.1, 264.5) }, { index: 19, position: vector3(-57.5, 74.1, 264.5) },
{ index: 20, position: vector3(-59, 74.1, 264.5) }, { index: 20, position: vector3(-58.5, 74.1, 264.5) },
{ index: 21, position: vector3(-59, 74.1, 263.5) }, { index: 21, position: vector3(-58.5, 74.1, 263.5) },
{ index: 22, position: vector3(-60, 74.1, 263.5) }, { index: 22, position: vector3(-59.5, 74.1, 263.5) },
{ index: 23, position: vector3(-61, 74.1, 263.5) }, { index: 23, position: vector3(-60.5, 74.1, 263.5) },
{ index: 24, position: vector3(-62, 74.1, 263.5) }, { index: 24, position: vector3(-60.5, 74.1, 262.5) },
{ index: 25, position: vector3(-63, 74.1, 263.5) }, { index: 25, position: vector3(-60.5, 74.1, 261.5) },
{ index: 26, position: vector3(-63, 73.1, 263.5) }, { index: 26, position: vector3(-61.5, 74.1, 261.5) },
{ index: 27, position: vector3(-63, 72.1, 263.5) }, { index: 27, position: vector3(-62.5, 74.1, 261.5) },
{ index: 28, position: vector3(-63, 71.1, 263.5) }, { index: 28, position: vector3(-62.5, 73.1, 261.5) },
{ index: 29, position: vector3(-64, 71.1, 263.5) }, { index: 29, position: vector3(-63.5, 73.1, 261.5) },
{ index: 30, position: vector3(-65, 71.1, 263.5) }, { index: 30, position: vector3(-63.5, 72.1, 261.5) },
{ index: 31, position: vector3(-66, 71.1, 263.5) }, { index: 31, position: vector3(-64.5, 72.1, 261.5) },
{ index: 32, position: vector3(-67, 71.1, 263.5) }, { index: 32, position: vector3(-65.5, 72.1, 261.5) },
{ index: 33, position: vector3(-68, 71.1, 263.5) }, { index: 33, position: vector3(-66.5, 72.1, 261.5) },
{ index: 34, position: vector3(-69, 71.1, 263.5) }, { index: 34, position: vector3(-67.5, 71.1, 261.5) },
{ index: 35, position: vector3(-70, 71.1, 263.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 };