Add alot
This commit is contained in:
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"format_version": "1.19.50",
|
||||
"minecraft:npc_dialogue": {
|
||||
"scenes": [
|
||||
{
|
||||
"scene_tag": "chanel_greeting_1",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.chanel"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.1.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.1.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/dialogue open @e[tag=chanel1] @initiator chanel_greeting_2"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "chanel_greeting_2",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.chanel"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.2.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.2.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/dialogue open @e[tag=chanel1] @initiator chanel_greeting_3"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "chanel_greeting_3",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.chanel"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.3.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.greeting.3.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/scriptevent cc:startIntro"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "chanel_goto_temple",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.chanel"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.goto_temple.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "chanel.goto_temple.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "bilal_greeting_1",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.bilal"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "bilal.greeting.1.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "bilal.greeting.1.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/scriptevent cc:startTemple"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "suki_greeting_1",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.suki"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "suki.greeting.1.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "suki.greeting.1.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/dialogue open @e[tag=suki1] @initiator suki_greeting_2"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"scene_tag": "suki_greeting_2",
|
||||
"npc_name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "npc.name.suki"
|
||||
}
|
||||
]
|
||||
},
|
||||
"text": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "suki.greeting.2.text",
|
||||
"with": ["\n"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"name": {
|
||||
"rawtext": [
|
||||
{
|
||||
"translate": "suki.greeting.2.button"
|
||||
}
|
||||
]
|
||||
},
|
||||
"commands": ["/scriptevent cc:StartLevel1"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
0
resource_packs/sounds.json
Normal file
0
resource_packs/sounds.json
Normal file
BIN
resource_packs/sounds/alarm.ogg
Normal file
BIN
resource_packs/sounds/alarm.ogg
Normal file
Binary file not shown.
BIN
resource_packs/sounds/samgooris.ogg
Normal file
BIN
resource_packs/sounds/samgooris.ogg
Normal file
Binary file not shown.
13
resource_packs/sounds/sound_definitions.json
Normal file
13
resource_packs/sounds/sound_definitions.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"format_version": "1.14.0",
|
||||
"sound_definitions": {
|
||||
"cc.alarm": {
|
||||
"category": "neutral",
|
||||
"sounds": ["sounds/alarm"]
|
||||
},
|
||||
"cc.sam": {
|
||||
"category": "neutral",
|
||||
"sounds": ["sounds/samgooris"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,17 @@
|
||||
message.trail.follow=Follow the trail
|
||||
message.levels.completed=You have completed all levels!
|
||||
|
||||
## goto messages
|
||||
message.goto.airlock=Go to the Airlock
|
||||
message.enter.airlock=Enter the Airlock
|
||||
|
||||
message.follow.path.temple=Follow the path and talk to §6Bakker Bilal
|
||||
message.goto.temple=Go to the Temple and talk to §2Veteraan Suki
|
||||
|
||||
message.goto.level1=Go to Level 1
|
||||
message.goto.level2=Go to Level 2
|
||||
message.goto.level3=Go to Level 3
|
||||
|
||||
|
||||
## Fail conditions
|
||||
message.level.incorrect=§cIncorrect!§b
|
||||
@@ -13,8 +24,8 @@ message.level.outofbounds.subtext=You can't be over water!
|
||||
|
||||
## npc names
|
||||
npc.name.help=Help
|
||||
npc.name.suki=§2Suki
|
||||
npc.name.bilal=§6Bilal
|
||||
npc.name.suki=§2Veteraan Suki
|
||||
npc.name.bilal=§6Bakker Bilal
|
||||
npc.name.ramses=§dRamses
|
||||
npc.name.chanel=§9Wetenschapper Chanel
|
||||
npc.name.paul=§7Paul
|
||||
@@ -31,6 +42,11 @@ button.hello=Hello
|
||||
button.noprob=No problem
|
||||
button.letsgo=Let's Go!
|
||||
|
||||
## Common
|
||||
message.outofbounds=§cOut of bounds!§b
|
||||
message.incorrect=§cIncorrect!§b
|
||||
|
||||
|
||||
message.talkto.ramses=Talk to §dRamses
|
||||
message.talkto.chanel=Talk to §9Chanel
|
||||
|
||||
@@ -40,28 +56,77 @@ message.intro.make=Break the code!
|
||||
message.intro.done=§aYou have cracked the code!§b
|
||||
|
||||
## Level 1 messages
|
||||
message.level1.name=Level 1
|
||||
message.level1.started=Level 1 is started!
|
||||
message.level1.complete=Level 1 is complete!
|
||||
message.level1.make=Make Level 1
|
||||
message.level1.outOfBoun=§cOut of bounds!§bwd
|
||||
message.mission1part1.name=Level 1
|
||||
message.mission1part1.started=Level 1 is started!
|
||||
message.mission1part1.complete=Level 1 is complete!
|
||||
message.mission1part1.make=Make Level 1
|
||||
|
||||
## Level 2 messages
|
||||
message.level2.name=Level 2
|
||||
message.level2.started=Level 2 is started!
|
||||
message.level2.complete=Level 2 is complete!
|
||||
message.level2.make=Make Level 2
|
||||
message.mission1part2.name=Level 2
|
||||
message.mission1part2.started=Level 2 is started!
|
||||
message.mission1part2.complete=Level 2 is complete!
|
||||
message.mission1part2.make=Make Level 2
|
||||
|
||||
## Level 3 messages
|
||||
message.level3.name=Level 3
|
||||
message.level3.started=Level 3 is started!
|
||||
message.level3.complete=Level 3 is complete!
|
||||
message.level3.make=Make Level 3
|
||||
message.mission1part3.name=Level 3
|
||||
message.mission1part3.started=Level 3 is started!
|
||||
message.mission1part3.complete=Level 3 is complete!
|
||||
message.mission1part3.make=Make Level 3
|
||||
|
||||
## mission 2 part 1
|
||||
message.mission2part1.name=Level 1
|
||||
message.mission2part1.started=Level 1 is started!
|
||||
message.mission2part1.complete=Level 1 is complete!
|
||||
message.mission2part1.make=Make Level 1
|
||||
|
||||
|
||||
## mission 2 part 2
|
||||
message.mission2part2.name=Level 2
|
||||
message.mission2part2.started=Level 2 is started!
|
||||
message.mission2part2.complete=Level 2 is complete!
|
||||
message.mission2part2.make=Make Level 2
|
||||
|
||||
## mission 3 part 1
|
||||
message.mission3part1.name=Level 1
|
||||
message.mission3part1.started=Level 1 is started!
|
||||
message.mission3part1.complete=Level 1 is complete!
|
||||
message.mission3part1.make=Make Level 1
|
||||
|
||||
## mission 3 part 2
|
||||
message.mission3part2.name=Level 2
|
||||
message.mission3part2.started=Level 2 is started!
|
||||
message.mission3part2.complete=Level 2 is complete!
|
||||
message.mission3part2.make=Make Level 2
|
||||
|
||||
## mission 3 part 3
|
||||
message.mission3part3.name=Level 3
|
||||
message.mission3part3.started=Level 3 is started!
|
||||
message.mission3part3.complete=Level 3 is complete!
|
||||
message.mission3part3.make=Make Level 3
|
||||
|
||||
## Goto messages
|
||||
message.goto.field.1=Go to the First Field
|
||||
message.goto.field.2=Go to the Second Field
|
||||
message.goto.field.3=Go to the Last Field
|
||||
|
||||
chanel.greeting.1.text=Hello! I'm §9Chanel§0, the scientist. I'm here to help you with the vault.
|
||||
chanel.greeting.1.button=Ok!
|
||||
|
||||
|
||||
## Npc messages
|
||||
|
||||
chanel.greeting.1.text=Hey daar! Dit is jouw laatste missie in deze onderwaterwereld. De gemene piraten hebben de agent gevangengenomen in de onderwatertempel. Nadat je de agent helpt ontsnappen moet je ook wat koraal herstellen.
|
||||
chanel.greeting.1.button=Hoe?
|
||||
|
||||
chanel.greeting.2.text=Je bevrijdt jouw Agent door alles van de afgelopen missies te gebruiken. In de opdrachten zullen zowel sequentie, eindige herhaling, enkelvoudige en meervoudige selecties voorkomen.
|
||||
chanel.greeting.2.button=Wow!
|
||||
|
||||
chanel.greeting.3.text=Top! Eerst ga je de code moeten kraken om de ingestorte grot open te blazen. De code volgt een patroon. Alleen ik ben vergeten welk patroon...
|
||||
chanel.greeting.3.button=Oké!
|
||||
|
||||
chanel.goto_temple.text=Snel! Ga door het opgeblazen gat voor het terug instort. Ik regel wel dat niks hier instort.
|
||||
chanel.goto_temple.button=Let's Go!
|
||||
|
||||
bilal.greeting.1.text=De agent word gevangengehouden in deze tempel. Pas op, ik denk dat er vallen zijn in die tempel. Wees voorzichtig.
|
||||
bilal.greeting.1.button=Oké!
|
||||
|
||||
suki.greeting.1.text=Oeps, je hebt de val geactiveerd. We zitten nu vast in deze tempel. Ik zal even rondkijken of er een manier is om de deur terug open te krijgen. Probeer jij ondertussen om de agent vrij te krijgen.
|
||||
suki.greeting.1.button=Zal ik doen!
|
||||
|
||||
suki.greeting.2.text=Je moet de agent door het parcours laten wandelen. Pas op, je mag niet boven lava gaan anders zal de agent doodgaan! Veel succes!
|
||||
suki.greeting.2.button=Oké!
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -139,11 +139,19 @@ export class Maker {
|
||||
} else {
|
||||
map.setColorRGB("variable.color", { red: 0, green: 255, blue: 0 });
|
||||
const particleData: MolangVariableMap = new MolangVariableMap();
|
||||
particleData.setColorRGB("variable.color", {
|
||||
red: 1,
|
||||
green: 1,
|
||||
blue: 1,
|
||||
});
|
||||
if (color == PaletteColor.Red) {
|
||||
particleData.setColorRGB("variable.color", {
|
||||
red: 1,
|
||||
green: 0,
|
||||
blue: 0,
|
||||
});
|
||||
} else if (color == PaletteColor.White) {
|
||||
particleData.setColorRGB("variable.color", {
|
||||
red: 1,
|
||||
green: 1,
|
||||
blue: 1,
|
||||
});
|
||||
}
|
||||
spawnParticle(vector3(x, y + 0.1, z), "codecosmos:point", particleData);
|
||||
}
|
||||
}
|
||||
@@ -162,16 +170,16 @@ export class Maker {
|
||||
(trigger.point1.y + trigger.point2.y) / 2,
|
||||
(trigger.point1.z + trigger.point2.z) / 2
|
||||
);
|
||||
const distnaces = players.map((player) => {
|
||||
const distances = players.map((player) => {
|
||||
return {
|
||||
player: player,
|
||||
distance: vector3Distance(player.location, triggerCenter),
|
||||
};
|
||||
});
|
||||
|
||||
distnaces.sort((a, b) => a.distance - b.distance);
|
||||
const closestPlayer = distnaces[0].player;
|
||||
const distance = distnaces[0].distance;
|
||||
distances.sort((a, b) => a.distance - b.distance);
|
||||
const closestPlayer = distances[0].player;
|
||||
const distance = distances[0].distance;
|
||||
|
||||
if (distance > 25) return;
|
||||
|
||||
|
||||
@@ -69,14 +69,14 @@ export class Trigger {
|
||||
}
|
||||
|
||||
Update() {
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.getEntities({ type: "minecraft:player" })
|
||||
.forEach((player) => {
|
||||
//Check if the distance between the player and the trigger is less than the width of the trigger
|
||||
// if (this.hasPlayerEnterdTrigger(player.location)) {
|
||||
// world.sendMessage(`Player ${player.nameTag} is in trigger`);
|
||||
// }
|
||||
});
|
||||
// world
|
||||
// .getDimension("overworld")
|
||||
// .getEntities({ type: "minecraft:player" })
|
||||
// .forEach((player) => {
|
||||
// //Check if the distance between the player and the trigger is less than the width of the trigger
|
||||
// // if (this.hasPlayerEnterdTrigger(player.location)) {
|
||||
// // world.sendMessage(`Player ${player.nameTag} is in trigger`);
|
||||
// // }
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
66
scripts/Commandeer/animations/animation.ts
Normal file
66
scripts/Commandeer/animations/animation.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import { Vector3ToCommandString } from "../utils/vectorUtils";
|
||||
import { delay } from "../utils/waitUtil";
|
||||
|
||||
let animationPlaying = false;
|
||||
|
||||
function setAmimationPlaying(value: boolean) {
|
||||
animationPlaying = value;
|
||||
}
|
||||
function getAnimationPlaying() {
|
||||
return animationPlaying;
|
||||
}
|
||||
|
||||
class ClonePos {
|
||||
point1: Vector3;
|
||||
point2: Vector3;
|
||||
|
||||
constructor(point1: Vector3, point2: Vector3) {
|
||||
this.point1 = point1;
|
||||
this.point2 = point2;
|
||||
}
|
||||
}
|
||||
|
||||
async function SetFrame(frame: ClonePos, destination: Vector3) {
|
||||
await world
|
||||
.getDimension("overworld")
|
||||
.runCommandAsync(
|
||||
`/clone ${Vector3ToCommandString(frame.point1)} ${Vector3ToCommandString(frame.point2)} ${Vector3ToCommandString(
|
||||
destination
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
async function playAnimation(
|
||||
frames: ClonePos[],
|
||||
delayTime: number,
|
||||
reverse: boolean,
|
||||
destination: Vector3,
|
||||
force: boolean = false
|
||||
) {
|
||||
if (animationPlaying && !force) {
|
||||
world.sendMessage("Animation already playing");
|
||||
return;
|
||||
}
|
||||
let frameCount = frames.length;
|
||||
if (!force) {
|
||||
animationPlaying = true;
|
||||
}
|
||||
|
||||
for (let i = 0; i < frameCount; i++) {
|
||||
let frame = reverse ? frames[frameCount - i - 1] : frames[i];
|
||||
await world
|
||||
.getDimension("overworld")
|
||||
.runCommandAsync(
|
||||
`/clone ${Vector3ToCommandString(frame.point1)} ${Vector3ToCommandString(
|
||||
frame.point2
|
||||
)} ${Vector3ToCommandString(destination)}`
|
||||
);
|
||||
await delay(delayTime);
|
||||
}
|
||||
if (!force) {
|
||||
animationPlaying = false;
|
||||
}
|
||||
}
|
||||
|
||||
export { SetFrame, ClonePos, playAnimation, animationPlaying, setAmimationPlaying, getAnimationPlaying };
|
||||
74
scripts/Commandeer/level/abstractTrackFollowMission.ts
Normal file
74
scripts/Commandeer/level/abstractTrackFollowMission.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "./level";
|
||||
import pupeteer from "../pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../utils/agentUtils";
|
||||
import { startLevel } from "../utils/levelUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../utils/vectorUtils";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
|
||||
class AbstractAgentTrackMission extends Level {
|
||||
levelid: string;
|
||||
constructor(
|
||||
levelid: string,
|
||||
agentStartPositon: Vector3,
|
||||
agentEndPosition: Vector3,
|
||||
startLevelCommandBlockPos: Vector3
|
||||
) {
|
||||
super(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage(`%message.${levelid}.started`);
|
||||
pupeteer.setTitleTimed(`%message.${levelid}.name`, 2.5);
|
||||
startLevel(startLevelCommandBlockPos);
|
||||
teleportAgent(agentStartPositon);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar(`%message.${levelid}.make`);
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage(`%message.${levelid}.complete`);
|
||||
pupeteer.setTitleTimed(`%message.${levelid}.complete`, 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
let isComplete = false;
|
||||
let isOutOfBounds = false;
|
||||
|
||||
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(agentEndPosition)) {
|
||||
isComplete = true;
|
||||
}
|
||||
|
||||
if (isOutOfBounds) {
|
||||
pupeteer.sendWorldMessage(`%message.outofbounds`);
|
||||
pupeteer.setTitleTimed(`%message.outofbounds`, 2.5);
|
||||
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
|
||||
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
|
||||
|
||||
teleportAgent(agentStartPositon);
|
||||
return false;
|
||||
} else if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
this.levelid = levelid;
|
||||
}
|
||||
}
|
||||
|
||||
export default AbstractAgentTrackMission;
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BlockType, Vector3, World } from "@minecraft/server";
|
||||
import { BlockType, Vector3, world, World } from "@minecraft/server";
|
||||
|
||||
export type blockCondition = {
|
||||
block: string;
|
||||
@@ -42,3 +42,14 @@ export type AgentNoGoZone = {
|
||||
export type LevelNoGoZone = {
|
||||
zones: AgentNoGoZone[];
|
||||
};
|
||||
|
||||
export const checkBlockCondition = (condition: LevelBlockCondition): boolean => {
|
||||
let isComplete: boolean = true;
|
||||
condition.conditions.forEach((condition) => {
|
||||
let block = world.getDimension("overworld").getBlock(condition.position);
|
||||
if (block!.typeId != condition.block) {
|
||||
isComplete = false;
|
||||
}
|
||||
});
|
||||
return isComplete;
|
||||
};
|
||||
|
||||
@@ -29,7 +29,6 @@ enum StoreType {
|
||||
*/
|
||||
class Mindkeeper {
|
||||
registerdStores: Array<Store> = [];
|
||||
// propertyManager = new DynamicPropertiesDefinition();
|
||||
world: World;
|
||||
initialised: boolean = false;
|
||||
debugLog: string[] = [];
|
||||
@@ -75,7 +74,6 @@ class Mindkeeper {
|
||||
registerToWorld() {
|
||||
for (let i = 0; i < this.registerdStores.length; i++) {
|
||||
let isAlreadyDefined = true;
|
||||
|
||||
try {
|
||||
let test = this.world.getDynamicProperty(this.registerdStores[i].getName());
|
||||
if (test === undefined) {
|
||||
@@ -218,9 +216,8 @@ class Mindkeeper {
|
||||
if (command === "!deleteStoresConfirm") {
|
||||
this.getStores().forEach((store) => {
|
||||
this.world.sendMessage(`Deleting ${store.getName()}`);
|
||||
this.world.sendMessage("This feature no longer works, thanks minecraft ");
|
||||
// this.world.dynami(store.getName());
|
||||
});
|
||||
this.world.clearDynamicProperties();
|
||||
this.secondWarning = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,22 @@
|
||||
import { Entity, Vector3, world } from "@minecraft/server";
|
||||
import { Vector3ToString, vector3 } from "./vectorUtils";
|
||||
import { mindKeeper } from "../../main";
|
||||
function teleportAgent(position: Vector3) {
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
|
||||
|
||||
//Make a facing with vector3
|
||||
type Facing = Vector3;
|
||||
|
||||
function teleportAgent(position: Vector3, facing: Vector3 = vector3(0, 0, 0)): void {
|
||||
if (facing == vector3(0, 0, 0)) {
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.runCommand(`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z}`);
|
||||
} else {
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.runCommand(
|
||||
`/execute as @a run tp @e[type=agent] ${position.x} ${position.y} ${position.z} facing ${facing.x} ${facing.y} ${facing.z}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function isAgentAt(position: Vector3): boolean {
|
||||
|
||||
15
scripts/Commandeer/utils/entityUtils.ts
Normal file
15
scripts/Commandeer/utils/entityUtils.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { system, world } from "@minecraft/server";
|
||||
|
||||
function runEntityEventOnTag(tag: string, event: string) {
|
||||
system.run(() => {
|
||||
world.getDimension("overworld").runCommand(`/event entity @e[tag=${tag}] ${event}`);
|
||||
});
|
||||
}
|
||||
|
||||
function setNPCDialog(npcTag: string, dialogId: string) {
|
||||
system.run(() => {
|
||||
world.getDimension("overworld").runCommand(`/dialogue change @e[tag=${npcTag}] ${dialogId} @a`);
|
||||
});
|
||||
}
|
||||
|
||||
export { runEntityEventOnTag, setNPCDialog };
|
||||
@@ -11,7 +11,7 @@ function clearWall(wall: Wall) {
|
||||
world.getDimension("overworld").fillBlocks(volume, MinecraftBlockTypes.Air);
|
||||
}
|
||||
|
||||
function fillWall(wall: Wall, block: BlockType) {
|
||||
function fillWall(wall: Wall, block: string) {
|
||||
let volume: BlockVolume = new BlockVolume(wall.startPos, wall.endPos);
|
||||
world.getDimension("overworld").fillBlocks(volume, block);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
|
||||
enum Direction {
|
||||
North = 0,
|
||||
East = 1,
|
||||
South = 2,
|
||||
West = 3,
|
||||
Up = 4,
|
||||
Down = 5,
|
||||
}
|
||||
|
||||
function directionToVector3(direction: Direction): Vector3 {
|
||||
switch (direction) {
|
||||
case Direction.North:
|
||||
return vector3(0, 0, -1);
|
||||
case Direction.East:
|
||||
return vector3(1, 0, 0);
|
||||
case Direction.South:
|
||||
return vector3(0, 0, 1);
|
||||
case Direction.West:
|
||||
return vector3(-1, 0, 0);
|
||||
case Direction.Up:
|
||||
return vector3(0, 1, 0);
|
||||
case Direction.Down:
|
||||
return vector3(0, -1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
function vector3(x: number, y: number, z: number): Vector3 {
|
||||
return { x: x, y: y, z: z };
|
||||
}
|
||||
@@ -55,6 +81,8 @@ function vector3Distance(vector1: Vector3, vector2: Vector3): number {
|
||||
}
|
||||
|
||||
export {
|
||||
Direction,
|
||||
directionToVector3,
|
||||
Vector3ToString,
|
||||
Vector3ToFancyString,
|
||||
Vector3Add,
|
||||
|
||||
@@ -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 };
|
||||
@@ -1,145 +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 level2Conditions: LevelBlockCondition = {
|
||||
conditions: [
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(45, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(44, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(43, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(42, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(41, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(40, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(39, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(38, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(37, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(36, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(35, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(34, 70, 220),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 220),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 219),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 218),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 217),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 216),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 215),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 214),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 213),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(33, 70, 212),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(34, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(35, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(36, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(37, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(38, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(39, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(40, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(41, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(42, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(43, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(44, 70, 212),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(45, 70, 212),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export { level2Conditions };
|
||||
@@ -1,140 +0,0 @@
|
||||
import { BlockType, Vector3 } from "@minecraft/server";
|
||||
import { LevelBlockCondition } from "../Commandeer/level/levelTypes";
|
||||
import { vector3 } from "../Commandeer/utils/vectorUtils";
|
||||
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
|
||||
|
||||
let level3Conditions: LevelBlockCondition = {
|
||||
conditions: [
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(57, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(58, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(59, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(60, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(60, 70, 234),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(60, 70, 233),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(60, 70, 232),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(60, 70, 231),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(61, 70, 231),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(62, 70, 231),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(63, 70, 231),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 231),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 232),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 233),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 234),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 236),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 237),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 238),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(64, 70, 239),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(65, 70, 239),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(66, 70, 239),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(67, 70, 239),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(68, 70, 239),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(68, 70, 238),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(68, 70, 237),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(68, 70, 236),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(68, 70, 235),
|
||||
},
|
||||
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(69, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(70, 70, 235),
|
||||
},
|
||||
{
|
||||
block: MinecraftBlockTypes.Air,
|
||||
position: vector3(71, 70, 235),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export { level3Conditions };
|
||||
@@ -1,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 };
|
||||
50
scripts/levelConditions/mission2part1Conditions.ts
Normal file
50
scripts/levelConditions/mission2part1Conditions.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes";
|
||||
import { vector3 } from "../Commandeer/utils/vectorUtils";
|
||||
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
|
||||
|
||||
let mission2part1Conditions: LevelBlockCondition = {
|
||||
conditions: [
|
||||
{
|
||||
position: vector3(2455, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2456, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2457, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2458, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2459, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2460, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2461, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2462, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2463, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2464, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export { mission2part1Conditions };
|
||||
66
scripts/levelConditions/mission2part2Conditions.ts
Normal file
66
scripts/levelConditions/mission2part2Conditions.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { LevelBlockCondition, LevelLeverCondition } from "../Commandeer/level/levelTypes";
|
||||
import { vector3 } from "../Commandeer/utils/vectorUtils";
|
||||
import { MinecraftBlockTypes } from "../vanilla-data/mojang-block";
|
||||
|
||||
let mission2part2Conditions: LevelBlockCondition = {
|
||||
conditions: [
|
||||
{
|
||||
position: vector3(2467, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2468, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2469, -2, 11),
|
||||
block: MinecraftBlockTypes.HornCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2470, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2471, -2, 11),
|
||||
block: MinecraftBlockTypes.HornCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2472, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2473, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2474, -2, 11),
|
||||
block: MinecraftBlockTypes.HornCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2475, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
{
|
||||
position: vector3(2476, -2, 11),
|
||||
block: MinecraftBlockTypes.HornCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2477, -2, 11),
|
||||
block: MinecraftBlockTypes.HornCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2478, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2479, -2, 11),
|
||||
block: MinecraftBlockTypes.FireCoralBlock,
|
||||
},
|
||||
{
|
||||
position: vector3(2480, -2, 11),
|
||||
block: MinecraftBlockTypes.RedNetherBrick,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export { mission2part2Conditions };
|
||||
@@ -1,74 +0,0 @@
|
||||
import { BlockType, BlockTypes, Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
import { level1Conditions } from "../../levelConditions/level1";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
const Level1CommandBlockPos: Vector3 = vector3(2439, 0, 36);
|
||||
|
||||
const level1StartPosition: Vector3 = vector3(2451, -2, 57);
|
||||
const Level1EndPosition: Vector3 = vector3(2451, -2, 41);
|
||||
|
||||
const level1ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
const level1: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.level1.started");
|
||||
pupeteer.setTitleTimed("%message.level1.name", 2.5);
|
||||
startLevel(Level1CommandBlockPos);
|
||||
teleportAgent(level1StartPosition);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.level1.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.level1.complete");
|
||||
pupeteer.setTitleTimed("%message.level1.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
let isComplete = false;
|
||||
let isOutOfBounds = false;
|
||||
|
||||
//6 blocks lower is lava
|
||||
|
||||
let agentPos = getAgentLocation();
|
||||
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
|
||||
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
|
||||
|
||||
if (
|
||||
blockLava &&
|
||||
blockLava.type.id === MinecraftBlockTypes.Lava &&
|
||||
blockAir &&
|
||||
blockAir.type.id === MinecraftBlockTypes.Air
|
||||
) {
|
||||
isOutOfBounds = true;
|
||||
}
|
||||
|
||||
if (isAgentAt(Level1EndPosition)) {
|
||||
isComplete = true;
|
||||
}
|
||||
|
||||
// world.sendMessage(`isComplete: ${isComplete}`);
|
||||
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
|
||||
|
||||
if (isOutOfBounds) {
|
||||
pupeteer.sendWorldMessage("%message.level1.outOfBounds");
|
||||
pupeteer.setTitleTimed("%message.level1.outOfBounds", 2.5);
|
||||
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
|
||||
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
|
||||
|
||||
teleportAgent(level1StartPosition);
|
||||
return false;
|
||||
} else if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
export default level1;
|
||||
@@ -1,73 +0,0 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
const Level2CommandBlockPos: Vector3 = vector3(2439, 0, 35);
|
||||
|
||||
const level2StartPosition: Vector3 = vector3(2446, -2, 40);
|
||||
const Level2EndPosition: Vector3 = vector3(2446, -2, 30);
|
||||
|
||||
const level2ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
const level2: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.level2.started");
|
||||
pupeteer.setTitleTimed("%message.level2.name", 2.5);
|
||||
startLevel(Level2CommandBlockPos);
|
||||
teleportAgent(level2StartPosition);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.level2.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.level2.complete");
|
||||
pupeteer.setTitleTimed("%message.level2.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
let isComplete = false;
|
||||
let isOutOfBounds = false;
|
||||
|
||||
//6 blocks lower is lava
|
||||
|
||||
let agentPos = getAgentLocation();
|
||||
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
|
||||
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
|
||||
|
||||
if (
|
||||
blockLava &&
|
||||
blockLava.type.id === MinecraftBlockTypes.Lava &&
|
||||
blockAir &&
|
||||
blockAir.type.id === MinecraftBlockTypes.Air
|
||||
) {
|
||||
isOutOfBounds = true;
|
||||
}
|
||||
|
||||
if (isAgentAt(Level2EndPosition)) {
|
||||
isComplete = true;
|
||||
}
|
||||
|
||||
// world.sendMessage(`isComplete: ${isComplete}`);
|
||||
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
|
||||
|
||||
if (isOutOfBounds) {
|
||||
pupeteer.sendWorldMessage("%message.level2.outOfBounds");
|
||||
pupeteer.setTitleTimed("%message.level2.outOfBounds", 2.5);
|
||||
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
|
||||
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
|
||||
|
||||
teleportAgent(level2StartPosition);
|
||||
return false;
|
||||
} else if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
export default level2;
|
||||
@@ -1,72 +0,0 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
const Level3CommandBlockPos: Vector3 = vector3(2439, 0, 34);
|
||||
const level3StartPosition: Vector3 = vector3(2447, -2, 30);
|
||||
const level3EndPosition: Vector3 = vector3(2451, -2, 18);
|
||||
|
||||
const level3ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
const level3: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.level3.started");
|
||||
pupeteer.setTitleTimed("%message.level3.name", 2.5);
|
||||
startLevel(Level3CommandBlockPos);
|
||||
teleportAgent(level3StartPosition);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.level3.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.level3.complete");
|
||||
pupeteer.setTitleTimed("%message.level3.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
let isComplete = false;
|
||||
let isOutOfBounds = false;
|
||||
|
||||
//6 blocks lower is lava
|
||||
|
||||
let agentPos = getAgentLocation();
|
||||
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
|
||||
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
|
||||
|
||||
if (
|
||||
blockLava &&
|
||||
blockLava.type.id === MinecraftBlockTypes.Lava &&
|
||||
blockAir &&
|
||||
blockAir.type.id === MinecraftBlockTypes.Air
|
||||
) {
|
||||
isOutOfBounds = true;
|
||||
}
|
||||
|
||||
if (isAgentAt(level3EndPosition)) {
|
||||
isComplete = true;
|
||||
}
|
||||
|
||||
// world.sendMessage(`isComplete: ${isComplete}`);
|
||||
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
|
||||
|
||||
if (isOutOfBounds) {
|
||||
pupeteer.sendWorldMessage("%message.level3.outOfBounds");
|
||||
pupeteer.setTitleTimed("%message.level3.outOfBounds", 2.5);
|
||||
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
|
||||
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
|
||||
|
||||
teleportAgent(level3StartPosition);
|
||||
return false;
|
||||
} else if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
export default level3;
|
||||
@@ -1,74 +0,0 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
// import { level4Conditions } from "../../levelConditions/level4";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
const level4CommandBlockPos: Vector3 = vector3(2439, 0, 36);
|
||||
|
||||
const level4StartPosition: Vector3 = vector3(2451, -2, 57);
|
||||
const level4EndPosition: Vector3 = vector3(2451, -2, 41);
|
||||
|
||||
const level4ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
const level4: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.level4.started");
|
||||
pupeteer.setTitleTimed("%message.level4.name", 2.5);
|
||||
startLevel(level4CommandBlockPos);
|
||||
teleportAgent(level4StartPosition);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.level4.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.level4.complete");
|
||||
pupeteer.setTitleTimed("%message.level4.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
let isComplete = false;
|
||||
let isOutOfBounds = false;
|
||||
|
||||
//6 blocks lower is lava
|
||||
|
||||
let agentPos = getAgentLocation();
|
||||
let blockLava = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -7, 0)));
|
||||
let blockAir = world.getDimension("overworld").getBlock(Vector3Add(agentPos, vector3(0, -1, 0)));
|
||||
|
||||
if (
|
||||
blockLava &&
|
||||
blockLava.type.id === MinecraftBlockTypes.Lava &&
|
||||
blockAir &&
|
||||
blockAir.type.id === MinecraftBlockTypes.Air
|
||||
) {
|
||||
isOutOfBounds = true;
|
||||
}
|
||||
|
||||
if (isAgentAt(level4EndPosition)) {
|
||||
isComplete = true;
|
||||
}
|
||||
|
||||
// world.sendMessage(`isComplete: ${isComplete}`);
|
||||
// world.sendMessage(`isOutOfBounds: ${isOutOfBounds}`);
|
||||
|
||||
if (isOutOfBounds) {
|
||||
pupeteer.sendWorldMessage("%message.level4.outOfBounds");
|
||||
pupeteer.setTitleTimed("%message.level4.outOfBounds", 2.5);
|
||||
// world.getDimension("overworld").runCommand("/kill @e[type=agent]");
|
||||
world.getDimension("overworld").runCommand("execute as @p run codebuilder runtime stop @s");
|
||||
|
||||
teleportAgent(level4StartPosition);
|
||||
return false;
|
||||
} else if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
export default level4;
|
||||
@@ -96,8 +96,6 @@ const levelIntro: Level = new Level(
|
||||
counter++;
|
||||
}
|
||||
});
|
||||
world.sendMessage(`%message.intro.progress ${counter}/${levelIntroConditions.conditions.length}`);
|
||||
world.sendMessage(`isComplete: ${isComplete}`);
|
||||
if (isComplete) {
|
||||
return true;
|
||||
}
|
||||
|
||||
17
scripts/levels/mission1/mission1part1.ts
Normal file
17
scripts/levels/mission1/mission1part1.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level1CommandBlockPos: Vector3 = vector3(2439, 0, 36);
|
||||
|
||||
const level1StartPosition: Vector3 = vector3(2451, -2, 57);
|
||||
const Level1EndPosition: Vector3 = vector3(2451, -2, 41);
|
||||
|
||||
let mission1part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission1part1",
|
||||
level1StartPosition,
|
||||
Level1EndPosition,
|
||||
Level1CommandBlockPos
|
||||
);
|
||||
|
||||
export default mission1part1;
|
||||
19
scripts/levels/mission1/mission1part2.ts
Normal file
19
scripts/levels/mission1/mission1part2.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level2CommandBlockPos: Vector3 = vector3(2439, 0, 35);
|
||||
|
||||
const level2StartPosition: Vector3 = vector3(2446, -2, 40);
|
||||
const Level2EndPosition: Vector3 = vector3(2446, -2, 30);
|
||||
|
||||
const level2ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
|
||||
let mission1part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission1part2",
|
||||
level2StartPosition,
|
||||
Level2EndPosition,
|
||||
Level2CommandBlockPos
|
||||
);
|
||||
|
||||
export default mission1part2;
|
||||
17
scripts/levels/mission1/mission1part3.ts
Normal file
17
scripts/levels/mission1/mission1part3.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level3CommandBlockPos: Vector3 = vector3(2439, 0, 34);
|
||||
const level3StartPosition: Vector3 = vector3(2447, -2, 30);
|
||||
const level3EndPosition: Vector3 = vector3(2451, -2, 18);
|
||||
|
||||
const level3ResetCommandBlockPos: Vector3 = vector3(56, 68, 211);
|
||||
|
||||
let mission1part3: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission1part3",
|
||||
level3StartPosition,
|
||||
level3EndPosition,
|
||||
Level3CommandBlockPos
|
||||
);
|
||||
export default mission1part3;
|
||||
62
scripts/levels/mission2/mission2part1.ts
Normal file
62
scripts/levels/mission2/mission2part1.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
import { mission2part1Conditions } from "../../levelConditions/mission2part1Conditions";
|
||||
import { checkBlockCondition } from "../../Commandeer/level/levelTypes";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
|
||||
const mission2part1CommandBlockPos: Vector3 = vector3(2460, -1, 4);
|
||||
|
||||
const mission2part1StartPosition: Vector3 = vector3(2455, -1, 11);
|
||||
const mission2part1EndPosition: Vector3 = vector3(2465, -1, 11);
|
||||
|
||||
const mission2part1ResetCommandBlockPos: Vector3 = vector3(2456, -1, 4);
|
||||
const mission2part1: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.mission2part1.started");
|
||||
pupeteer.setTitleTimed("%message.mission2part1.name", 2.5);
|
||||
startLevel(mission2part1CommandBlockPos);
|
||||
teleportAgent(mission2part1StartPosition);
|
||||
startLevel(mission2part1ResetCommandBlockPos);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.mission2part1.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.mission2part1.complete");
|
||||
pupeteer.setTitleTimed("%message.mission2part1.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
//Check if the agent is at the end position
|
||||
//than check if the level is correct
|
||||
let isComplete = false;
|
||||
let isAgentAtEndPosition = isAgentAt(mission2part1EndPosition);
|
||||
if (isAgentAtEndPosition) {
|
||||
let isCorrect = checkBlockCondition(mission2part1Conditions);
|
||||
|
||||
if (isCorrect) {
|
||||
isComplete = true;
|
||||
world.sendMessage("Shit works");
|
||||
} else {
|
||||
isComplete = false;
|
||||
pupeteer.sendWorldMessage("%message.incorrect");
|
||||
pupeteer.setTitleTimed("%message.incorrect", 2.5);
|
||||
teleportAgent(mission2part1StartPosition);
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.setBlockType(mission2part1ResetCommandBlockPos, MinecraftBlockTypes.RedstoneBlock);
|
||||
}
|
||||
}
|
||||
|
||||
return isComplete;
|
||||
}
|
||||
);
|
||||
|
||||
export default mission2part1;
|
||||
62
scripts/levels/mission2/mission2part2.ts
Normal file
62
scripts/levels/mission2/mission2part2.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Vector3, world } from "@minecraft/server";
|
||||
import Level from "../../Commandeer/level/level";
|
||||
import pupeteer from "../../Commandeer/pupeteer";
|
||||
import { teleportAgent, isAgentAt, getAgentLocation, getAgent } from "../../Commandeer/utils/agentUtils";
|
||||
import { vector3, Vector3Add, Vector3ToCommandString } from "../../Commandeer/utils/vectorUtils";
|
||||
import { mindKeeper, CURRENT_LEVEL } from "../../main";
|
||||
import { MinecraftBlockTypes } from "../../vanilla-data/mojang-block";
|
||||
import { checkBlockCondition } from "../../Commandeer/level/levelTypes";
|
||||
import { mission2part2Conditions } from "../../levelConditions/mission2part2Conditions";
|
||||
import { startLevel } from "../../Commandeer/utils/levelUtils";
|
||||
|
||||
const mission2part2CommandBlockPos: Vector3 = vector3(2461, -1, 4);
|
||||
|
||||
const mission2part2StartPosition: Vector3 = vector3(2467, -1, 11);
|
||||
const mission2part2EndPosition: Vector3 = vector3(2481, -1, 11);
|
||||
|
||||
const mission2part2ResetCommandBlockPos: Vector3 = vector3(2457, -1, 4);
|
||||
const mission2part2: Level = new Level(
|
||||
() => {
|
||||
pupeteer.sendWorldMessage("%message.mission2part2.started");
|
||||
pupeteer.setTitleTimed("%message.mission2part2.name", 2.5);
|
||||
startLevel(mission2part2CommandBlockPos);
|
||||
teleportAgent(mission2part2StartPosition);
|
||||
startLevel(mission2part2ResetCommandBlockPos);
|
||||
},
|
||||
() => {
|
||||
pupeteer.setActionBar("%message.mission2part2.make");
|
||||
},
|
||||
() => {
|
||||
pupeteer.clearActionBar();
|
||||
pupeteer.sendWorldMessage("%message.mission2part2.complete");
|
||||
pupeteer.setTitleTimed("%message.mission2part2.complete", 2.5);
|
||||
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
},
|
||||
() => {
|
||||
//Check if the agent is at the end position
|
||||
//than check if the level is correct
|
||||
let isComplete = false;
|
||||
let isAgentAtEndPosition = isAgentAt(mission2part2EndPosition);
|
||||
if (isAgentAtEndPosition) {
|
||||
let isCorrect = checkBlockCondition(mission2part2Conditions);
|
||||
|
||||
if (isCorrect) {
|
||||
isComplete = true;
|
||||
world.sendMessage("Shit works");
|
||||
} else {
|
||||
isComplete = false;
|
||||
pupeteer.sendWorldMessage("%message.incorrect");
|
||||
pupeteer.setTitleTimed("%message.incorrect", 2.5);
|
||||
teleportAgent(mission2part2StartPosition);
|
||||
world
|
||||
.getDimension("overworld")
|
||||
.setBlockType(mission2part2ResetCommandBlockPos, MinecraftBlockTypes.RedstoneBlock);
|
||||
}
|
||||
}
|
||||
|
||||
return isComplete;
|
||||
}
|
||||
);
|
||||
|
||||
export default mission2part2;
|
||||
17
scripts/levels/mission3/mission3part1.ts
Normal file
17
scripts/levels/mission3/mission3part1.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level1CommandBlockPos: Vector3 = vector3(2495, -1, 26);
|
||||
|
||||
const level1StartPosition: Vector3 = vector3(2488, -2, 7);
|
||||
const Level1EndPosition: Vector3 = vector3(2488, -2, 22);
|
||||
|
||||
let mission3part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission3part1",
|
||||
level1StartPosition,
|
||||
Level1EndPosition,
|
||||
Level1CommandBlockPos
|
||||
);
|
||||
|
||||
export default mission3part1;
|
||||
17
scripts/levels/mission3/mission3part2.ts
Normal file
17
scripts/levels/mission3/mission3part2.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level1CommandBlockPos: Vector3 = vector3(2495, -1, 27);
|
||||
|
||||
const level1StartPosition: Vector3 = vector3(2492, -2, 26);
|
||||
const Level1EndPosition: Vector3 = vector3(2484, -2, 32);
|
||||
|
||||
let mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission3part2",
|
||||
level1StartPosition,
|
||||
Level1EndPosition,
|
||||
Level1CommandBlockPos
|
||||
);
|
||||
|
||||
export default mission3part2;
|
||||
17
scripts/levels/mission3/mission3part3.ts
Normal file
17
scripts/levels/mission3/mission3part3.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { Vector3 } from "@minecraft/server";
|
||||
import AbstractAgentTrackMission from "../../Commandeer/level/abstractTrackFollowMission";
|
||||
import { vector3 } from "../../Commandeer/utils/vectorUtils";
|
||||
|
||||
const Level1CommandBlockPos: Vector3 = vector3(2495, -1, 28);
|
||||
|
||||
const level1StartPosition: Vector3 = vector3(2487, -2, 36);
|
||||
const Level1EndPosition: Vector3 = vector3(2488, -2, 57);
|
||||
|
||||
let mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||
"mission3part2",
|
||||
level1StartPosition,
|
||||
Level1EndPosition,
|
||||
Level1CommandBlockPos
|
||||
);
|
||||
|
||||
export default mission3part2;
|
||||
360
scripts/main.ts
360
scripts/main.ts
@@ -10,9 +10,9 @@ import {
|
||||
} from "@minecraft/server";
|
||||
import { Mindkeeper, StoreType } from "./Commandeer/mindKeeper";
|
||||
import Pupeteer from "./Commandeer/pupeteer";
|
||||
import { Vector3ToCommandString, Vector3ToFancyString, vector3 } from "./Commandeer/utils/vectorUtils";
|
||||
import { Vector3Add, Vector3ToCommandString, Vector3ToFancyString, vector3 } from "./Commandeer/utils/vectorUtils";
|
||||
import { delay } from "./Commandeer/utils/waitUtil";
|
||||
import { spawnParticle } from "./Commandeer/utils/particleUtils";
|
||||
import { PARTICLES, spawnParticle } from "./Commandeer/utils/particleUtils";
|
||||
import { TrailMaker } from "./Commandeer/trail/trailMaker";
|
||||
import * as CCTrigger from "./Commandeer/Trigger/CCTrigger";
|
||||
import { Commands } from "./Commandeer/command/command";
|
||||
@@ -20,10 +20,28 @@ import levelIntro from "./levels/levelIntro";
|
||||
import { Trail } from "./Commandeer/trail/trailEngine";
|
||||
import { startTrail } from "./trails/startTrail";
|
||||
import { IntroToLevel1Trail } from "./trails/IntroToLevel1Trail";
|
||||
import level1 from "./levels/level1/mission1";
|
||||
import level2 from "./levels/level1/mission2";
|
||||
import level3 from "./levels/level1/mission3";
|
||||
import { MinecraftBlockTypes } from "./vanilla-data/mojang-block";
|
||||
import mission1part1 from "./levels/mission1/mission1part1";
|
||||
import mission1part2 from "./levels/mission1/mission1part2";
|
||||
import mission1part3 from "./levels/mission1/mission1part3";
|
||||
import mission2part1 from "./levels/mission2/mission2part1";
|
||||
import { mission2part1Conditions } from "./levelConditions/mission2part1Conditions";
|
||||
import mission2part2 from "./levels/mission2/mission2part2";
|
||||
import { mission2part2Conditions } from "./levelConditions/mission2part2Conditions";
|
||||
import Chalk from "./Commandeer/chalk";
|
||||
import mission3part1 from "./levels/mission3/mission3part1";
|
||||
import mission3part2 from "./levels/mission3/mission3part2";
|
||||
import mission3part3 from "./levels/mission3/mission3part3";
|
||||
import { runEntityEventOnTag, setNPCDialog } from "./Commandeer/utils/entityUtils";
|
||||
import {
|
||||
animationPlaying,
|
||||
ClonePos,
|
||||
playAnimation,
|
||||
setAmimationPlaying,
|
||||
SetFrame,
|
||||
} from "./Commandeer/animations/animation";
|
||||
import { doNothingStupidTSIWantFilesNotAGiantAssMainFile } from "./triggers";
|
||||
import { clearWall, fillWall, Wall } from "./Commandeer/utils/levelUtils";
|
||||
// import { loadTriggers } from "./triggers";
|
||||
|
||||
const mindKeeper = new Mindkeeper(world);
|
||||
@@ -46,7 +64,7 @@ async function resetLightPath() {
|
||||
}
|
||||
|
||||
let introToGlassBreakTimer: number = 0;
|
||||
const glassBreakTime = 2 * TicksPerSecond;
|
||||
const glassBreakTime = 5 * TicksPerSecond;
|
||||
|
||||
let isIntroToLevel1Sqeuence = false;
|
||||
|
||||
@@ -56,6 +74,14 @@ introTrail.fromTrail(startTrail);
|
||||
let introToLevelTrail = new Trail("introToLevelTrail", 2, 2);
|
||||
introToLevelTrail.fromTrail(IntroToLevel1Trail);
|
||||
|
||||
//fill 2466 0 48 2469 -1 48
|
||||
let bilalBlock: Wall = {
|
||||
startPos: vector3(2466, 0, 48),
|
||||
endPos: vector3(2469, -1, 48),
|
||||
};
|
||||
|
||||
// spawn a sphere of particle
|
||||
|
||||
const DEVELOPER_MODE = true;
|
||||
let tickCounter = 0;
|
||||
system.runInterval(async () => {
|
||||
@@ -70,59 +96,89 @@ system.runInterval(async () => {
|
||||
switch (currentLevel) {
|
||||
case 0:
|
||||
// Show goto airlock text
|
||||
Pupeteer.setActionBar("Go to the airlock");
|
||||
Pupeteer.setActionBar("%message.goto.airlock");
|
||||
introTrail.spawnNext();
|
||||
break;
|
||||
case 1:
|
||||
Pupeteer.setActionBar("Enter the airlock");
|
||||
// Show Enter airlock text
|
||||
Pupeteer.setActionBar("%message.enter.airlock");
|
||||
break;
|
||||
case 2:
|
||||
levelIntro.update();
|
||||
Pupeteer.setActionBar("%message.talkto.chanel");
|
||||
//Wait for the scriptevent cc:startIntro
|
||||
break;
|
||||
case 3:
|
||||
levelIntro.update();
|
||||
break;
|
||||
case 4:
|
||||
if (!isIntroToLevel1Sqeuence) {
|
||||
isIntroToLevel1Sqeuence = true;
|
||||
world.sendMessage("Intro to level1 sequence start");
|
||||
// world.sendMessage("Intro to level1 sequence start");
|
||||
await lightUpPath();
|
||||
await randomExplosions();
|
||||
blowUpDoor();
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
triggerAlarm();
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
introToGlassBreakTimer++;
|
||||
world.sendMessage("Glass break timer: " + introToGlassBreakTimer);
|
||||
// world.sendMessage("Glass break timer: " + introToGlassBreakTimer);
|
||||
if (introToGlassBreakTimer > glassBreakTime) {
|
||||
introToGlassBreakTimer = 0;
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
}
|
||||
case 4:
|
||||
case 6:
|
||||
// Show Goto Level 1
|
||||
if (glassWindowState == GlassWindowState.Fixed) {
|
||||
glassWindowState = GlassWindowState.Broken;
|
||||
system.run(async () => {
|
||||
world.sendMessage("Breaking glass");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Breaking glass");
|
||||
}
|
||||
await delay(10);
|
||||
breakGlassWindow();
|
||||
await breakGlassWindow();
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
setNPCDialog("chanel1", "chanel_goto_temple");
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
introToLevelTrail.spawnNext();
|
||||
Pupeteer.setActionBar("Follow the path to the temple");
|
||||
break;
|
||||
case 6:
|
||||
level1.update();
|
||||
break;
|
||||
case 7:
|
||||
level2.update();
|
||||
introToLevelTrail.spawnNext();
|
||||
Pupeteer.setActionBar("%message.follow.path.temple");
|
||||
//Talk to Bilal
|
||||
break;
|
||||
case 8:
|
||||
level3.update();
|
||||
Pupeteer.setActionBar("%message.goto.temple");
|
||||
//Talk to Suki
|
||||
break;
|
||||
case 9:
|
||||
mission1part1.update();
|
||||
break;
|
||||
case 10:
|
||||
mission1part2.update();
|
||||
break;
|
||||
case 11:
|
||||
mission1part3.update();
|
||||
break;
|
||||
case 12:
|
||||
Pupeteer.setActionBar("%message.goto.level2");
|
||||
case 13:
|
||||
mission2part1.update();
|
||||
break;
|
||||
case 14:
|
||||
mission2part2.update();
|
||||
break;
|
||||
case 15:
|
||||
mission3part1.update();
|
||||
break;
|
||||
case 15:
|
||||
mission3part2.update();
|
||||
break;
|
||||
case 16:
|
||||
mission3part3.update();
|
||||
break;
|
||||
case 17:
|
||||
Pupeteer.setActionBar("Goto the door");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -146,7 +202,9 @@ async function lightUpPath() {
|
||||
// let pos2 = vector3(2468, 9, 105);
|
||||
}
|
||||
|
||||
//iojediojaiw
|
||||
let triggerAlarm = () => runEntityEventOnTag("alarmLights", "cc:add_rotating");
|
||||
|
||||
let resetAlarm = () => runEntityEventOnTag("alarmLights", "cc:remove_rotating");
|
||||
|
||||
world.afterEvents.worldInitialize.subscribe(() => {
|
||||
mindKeeper.registerStore(CURRENT_LEVEL, StoreType.number);
|
||||
@@ -156,6 +214,8 @@ world.afterEvents.worldInitialize.subscribe(() => {
|
||||
mindKeeper.registerToWorld();
|
||||
|
||||
triggerManager.Load();
|
||||
|
||||
doNothingStupidTSIWantFilesNotAGiantAssMainFile();
|
||||
// loadCommands();
|
||||
});
|
||||
|
||||
@@ -190,11 +250,15 @@ let doorSize = vector3(7, 7, 7);
|
||||
///clone 2463 -30 81 2470 -23 87 2463 10 81
|
||||
|
||||
function blowUpDoor() {
|
||||
world.sendMessage("Blowing up door");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Blowing up door");
|
||||
}
|
||||
world.getDimension("overworld").runCommand("/clone 2463 -10 81 2470 -3 87 2463 10 81");
|
||||
}
|
||||
function restoreDoor() {
|
||||
world.sendMessage("Restoring door");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Restoring door");
|
||||
}
|
||||
world.getDimension("overworld").runCommandAsync("/clone 2463 -30 81 2470 -23 87 2463 10 81");
|
||||
}
|
||||
|
||||
@@ -217,11 +281,24 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
|
||||
resetLightPath();
|
||||
|
||||
levelIntro.reset();
|
||||
level1.reset();
|
||||
level2.reset();
|
||||
mission1part1.reset();
|
||||
mission1part2.reset();
|
||||
mission1part3.reset();
|
||||
|
||||
mission2part1.reset();
|
||||
mission2part2.reset();
|
||||
|
||||
//Reset the combination to a random squence
|
||||
|
||||
resetAlarm();
|
||||
deactivateAirlockLights();
|
||||
|
||||
setNPCDialog("chanel1", "chanel_greeting_1");
|
||||
setNPCDialog("bilal1", "bilal_greeting_1");
|
||||
setNPCDialog("suki1", "suki_greeting_1");
|
||||
|
||||
fillWall(bilalBlock, MinecraftBlockTypes.Barrier);
|
||||
|
||||
isIntroToLevel1Sqeuence = false;
|
||||
}
|
||||
});
|
||||
@@ -229,20 +306,88 @@ world.afterEvents.chatSend.subscribe(async (event: ChatSendAfterEvent) => {
|
||||
system.afterEvents.scriptEventReceive.subscribe((event) => {
|
||||
if (event.id == "cc:getId") {
|
||||
let id = event.message;
|
||||
world.sendMessage("Script got the id " + id);
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Script got the id " + id);
|
||||
}
|
||||
mindKeeper.set(AGENT_ID, id);
|
||||
}
|
||||
|
||||
if (event.id == "cc:startIntro") {
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 2) {
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
} else {
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Intro already started?");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (event.id == "cc:startTemple") {
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 7) {
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
fillWall(bilalBlock, MinecraftBlockTypes.Air);
|
||||
}
|
||||
}
|
||||
|
||||
if (event.id == "cc:startLevel1") {
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 8) {
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
}
|
||||
}
|
||||
|
||||
if (event.id == "cc:afterLevel1") {
|
||||
}
|
||||
});
|
||||
|
||||
class ClonePos {
|
||||
point1: Vector3;
|
||||
point2: Vector3;
|
||||
Commands.register(PREFIX, "fien", (arg) => {
|
||||
system.run(() => {
|
||||
arg.player.teleport(vector3(2468, 11, 114));
|
||||
});
|
||||
});
|
||||
|
||||
constructor(point1: Vector3, point2: Vector3) {
|
||||
this.point1 = point1;
|
||||
this.point2 = point2;
|
||||
Commands.register(PREFIX, "openDoor", () => openDoor());
|
||||
Commands.register(PREFIX, "closeDoor", () => closeDoor());
|
||||
|
||||
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.3");
|
||||
world.sendMessage("Engine is running, duh :)");
|
||||
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("-----------------");
|
||||
});
|
||||
|
||||
Commands.register(PREFIX, "kboom", (arg) => {
|
||||
(async () => {
|
||||
for (let i = 0; i < 10; i++) {
|
||||
randomExplosions();
|
||||
await delay(1);
|
||||
}
|
||||
blowUpDoor();
|
||||
})();
|
||||
});
|
||||
|
||||
let openDoor = () => {
|
||||
runEntityEventOnTag("door", "cc:add_open");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Opening door");
|
||||
}
|
||||
}
|
||||
};
|
||||
let closeDoor = () => {
|
||||
runEntityEventOnTag("door", "cc:remove_open");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Closing door");
|
||||
}
|
||||
};
|
||||
|
||||
Commands.register(PREFIX, "restore", (arg) => {
|
||||
restoreDoor();
|
||||
});
|
||||
|
||||
//#region Airlock
|
||||
|
||||
enum GlassWindowState {
|
||||
Broken,
|
||||
@@ -302,24 +447,6 @@ const glassBreakingFrames: ClonePos[] = [
|
||||
},
|
||||
];
|
||||
|
||||
const crackedGlass: string = "cc:cracked_glass";
|
||||
Commands.register(PREFIX, "breakGlass", (arg) => {
|
||||
breakGlassWindow();
|
||||
glassWindowState = GlassWindowState.Broken;
|
||||
});
|
||||
Commands.register(PREFIX, "restoreGlass", (arg) => {
|
||||
restoreGlassWindow();
|
||||
glassWindowState = GlassWindowState.Fixed;
|
||||
});
|
||||
|
||||
async function breakGlassWindow() {
|
||||
playAnimation(glassBreakingFrames, 5, false, doorRoot);
|
||||
glassWindowState = GlassWindowState.Broken;
|
||||
}
|
||||
async function restoreGlassWindow(force: boolean = false) {
|
||||
playAnimation(glassBreakingFrames, 5, true, doorRoot, force);
|
||||
}
|
||||
|
||||
const FrontAirLockOpenFrames: ClonePos[] = [
|
||||
{
|
||||
point1: vector3(2476, 9, 94),
|
||||
@@ -377,12 +504,29 @@ const AirLockWaterFrames: ClonePos[] = [
|
||||
},
|
||||
];
|
||||
|
||||
Commands.register(PREFIX, "breakGlass", (arg) => {
|
||||
breakGlassWindow();
|
||||
glassWindowState = GlassWindowState.Broken;
|
||||
});
|
||||
Commands.register(PREFIX, "restoreGlass", (arg) => {
|
||||
restoreGlassWindow();
|
||||
glassWindowState = GlassWindowState.Fixed;
|
||||
});
|
||||
|
||||
async function breakGlassWindow() {
|
||||
playAnimation(glassBreakingFrames, 5, false, doorRoot);
|
||||
glassWindowState = GlassWindowState.Broken;
|
||||
}
|
||||
async function restoreGlassWindow(force: boolean = false) {
|
||||
playAnimation(glassBreakingFrames, 5, true, doorRoot, force);
|
||||
}
|
||||
|
||||
async function CycleAirLockWater(fill: boolean, delayTime: number) {
|
||||
if (animationPlaying) {
|
||||
world.sendMessage("Animation already playing");
|
||||
return;
|
||||
}
|
||||
animationPlaying = true;
|
||||
setAmimationPlaying(true);
|
||||
let frameCount = AirLockWaterFrames.length;
|
||||
|
||||
for (let i = 0; i < frameCount; i++) {
|
||||
@@ -395,7 +539,7 @@ async function CycleAirLockWater(fill: boolean, delayTime: number) {
|
||||
);
|
||||
await delay(delayTime);
|
||||
}
|
||||
animationPlaying = false;
|
||||
setAmimationPlaying(false);
|
||||
}
|
||||
|
||||
let frontAirlockState: AirLockState = AirLockState.Closed;
|
||||
@@ -408,7 +552,9 @@ let chamberState: AirLockChamberState = AirLockChamberState.Full;
|
||||
//Front door opens
|
||||
triggerManager.RegisterFunctionTrigger("FrontAirLockOutside", async (event) => {
|
||||
if (chamberState == AirLockChamberState.Empty) {
|
||||
world.sendMessage("Filling airlock");
|
||||
if (DEVELOPER_MODE) {
|
||||
world.sendMessage("Filling airlock");
|
||||
}
|
||||
await FillAirlockWater();
|
||||
chamberState = AirLockChamberState.Full;
|
||||
}
|
||||
@@ -420,8 +566,13 @@ triggerManager.RegisterFunctionTrigger("FrontAirLockOutside", async (event) => {
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("TempleFrontDoor", async (event) => {
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 5) {
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 8) {
|
||||
mindKeeper.increment(CURRENT_LEVEL);
|
||||
closeDoor();
|
||||
}
|
||||
|
||||
if (mindKeeper.get(CURRENT_LEVEL) == 15) {
|
||||
openDoor();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -435,8 +586,10 @@ triggerManager.RegisterFunctionTrigger("FrontAirLockInside", async (event) => {
|
||||
frontAirlockState = AirLockState.Closed;
|
||||
}
|
||||
if (chamberState == AirLockChamberState.Full) {
|
||||
await delay(7);
|
||||
activateAirlockLights();
|
||||
await delay(50);
|
||||
await EmptyAirlockWater();
|
||||
deactivateAirlockLights();
|
||||
chamberState = AirLockChamberState.Empty;
|
||||
}
|
||||
|
||||
@@ -458,38 +611,10 @@ triggerManager.RegisterFunctionTrigger("BackAirLockOutside", async (event) => {
|
||||
}
|
||||
});
|
||||
|
||||
// function loadCommands() {
|
||||
Commands.register(PREFIX, "fien", (arg) => {
|
||||
system.run(() => {
|
||||
arg.player.teleport(vector3(2468, 11, 114));
|
||||
});
|
||||
});
|
||||
//#endregion Airlock
|
||||
|
||||
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("-----------------");
|
||||
});
|
||||
|
||||
Commands.register(PREFIX, "kboom", (arg) => {
|
||||
(async () => {
|
||||
for (let i = 0; i < 10; i++) {
|
||||
randomExplosions();
|
||||
await delay(1);
|
||||
}
|
||||
blowUpDoor();
|
||||
})();
|
||||
});
|
||||
|
||||
Commands.register(PREFIX, "restore", (arg) => {
|
||||
restoreDoor();
|
||||
});
|
||||
let activateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:add_rotating");
|
||||
let deactivateAirlockLights = () => runEntityEventOnTag("airlockLights", "cc:remove_rotating");
|
||||
|
||||
function resetAirLock() {
|
||||
SetFrontDoorClosed();
|
||||
@@ -540,54 +665,3 @@ triggerManager.RegisterFunctionTrigger("closeBackDoor", (event) => PlayBackDoorC
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("fillAirlock", (event) => FillAirlockWater());
|
||||
triggerManager.RegisterFunctionTrigger("emptyAirlock", (event) => EmptyAirlockWater());
|
||||
|
||||
async function SetFrame(frame: ClonePos, destination: Vector3) {
|
||||
await world
|
||||
.getDimension("overworld")
|
||||
.runCommandAsync(
|
||||
`/clone ${Vector3ToCommandString(frame.point1)} ${Vector3ToCommandString(frame.point2)} ${Vector3ToCommandString(
|
||||
destination
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
let animationPlaying = false;
|
||||
async function playAnimation(
|
||||
frames: ClonePos[],
|
||||
delayTime: number,
|
||||
reverse: boolean,
|
||||
destination: Vector3,
|
||||
force: boolean = false
|
||||
) {
|
||||
if (animationPlaying && !force) {
|
||||
world.sendMessage("Animation already playing");
|
||||
return;
|
||||
}
|
||||
let frameCount = frames.length;
|
||||
if (!force) {
|
||||
animationPlaying = true;
|
||||
}
|
||||
|
||||
for (let i = 0; i < frameCount; i++) {
|
||||
let frame = reverse ? frames[frameCount - i - 1] : frames[i];
|
||||
await world
|
||||
.getDimension("overworld")
|
||||
.runCommandAsync(
|
||||
`/clone ${Vector3ToCommandString(frame.point1)} ${Vector3ToCommandString(
|
||||
frame.point2
|
||||
)} ${Vector3ToCommandString(destination)}`
|
||||
);
|
||||
await delay(delayTime);
|
||||
}
|
||||
if (!force) {
|
||||
animationPlaying = 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);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5,44 +5,13 @@ import { vector3 } from "./Commandeer/utils/vectorUtils";
|
||||
import { delay } from "./Commandeer/utils/waitUtil";
|
||||
import { MinecraftBlockTypes } from "./vanilla-data/mojang-block";
|
||||
|
||||
// const triggerManager = new CCTrigger.Manager(mindKeeper);
|
||||
function doNothingStupidTSIWantFilesNotAGiantAssMainFile() {
|
||||
triggerManager.RegisterFunctionTrigger("helpme", (event) => {
|
||||
world.sendMessage("Wow, this is a trigger :O");
|
||||
world.sendMessage("This was caused by " + event.player.name);
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("test", (event) => {
|
||||
world.sendMessage("Wow, this is a trigger :O");
|
||||
world.sendMessage("This was caused by " + event.player.name);
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("lightPath", (event) => {
|
||||
lightUpPath();
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("resetPath", (event) => {
|
||||
resetLightPath();
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("test2", (event) => {
|
||||
world.sendMessage("Wow, this is another trigger :O");
|
||||
});
|
||||
|
||||
triggerManager.RegisterFunctionTrigger("die", (event) => {
|
||||
world.sendMessage("You died");
|
||||
event.player.applyDamage(1000);
|
||||
});
|
||||
|
||||
//fill 2467 9 87 2468 9 105 redstone_block
|
||||
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);
|
||||
}
|
||||
// let pos2 = vector3(2468, 9, 105);
|
||||
return;
|
||||
}
|
||||
|
||||
async function resetLightPath() {
|
||||
world.getDimension("overworld").runCommand("/fill 2467 9 87 2468 9 105 air");
|
||||
}
|
||||
export { doNothingStupidTSIWantFilesNotAGiantAssMainFile };
|
||||
|
||||
Reference in New Issue
Block a user