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