First Version

This commit is contained in:
2024-09-09 09:28:16 +02:00
parent 1ab45204b9
commit e5d35618f8
9 changed files with 69 additions and 43 deletions

View File

@@ -0,0 +1 @@
connect 192.168.0.207/ws

View File

@@ -1,3 +1,7 @@
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-require-imports */
// === GULPFILE.JS ===
// === CONFIGURABLE VARIABLES
const bpfoldername = "Reeks2Missie6";
@@ -369,14 +373,6 @@ function copy_build_resource_pack_to_export_folder(cb) {
return gulp
.src(["build/resource_packs/**/**"])
.pipe(gulp.dest("export/" + bpfoldername + "/resource_packs/" + bpfoldername));
console.log(
"Copied build/resource_packs/" +
bpfoldername +
"/**/** to export/" +
bpfoldername +
"/resource_packs/" +
bpfoldername
);
}
function copy_build_behavior_pack_to_export_folder(cb) {

View File

@@ -3,8 +3,8 @@ 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.goto.airlock=Ga naar de luchtsluis
message.enter.airlock=Ga de luchtsluis binnen
message.follow.path.temple=Follow the path and talk to §6Bakker Bilal
message.goto.temple=Go to the Temple and talk to §2Veteraan Suki
@@ -60,6 +60,8 @@ message.intro.started=Crack the Vault!
message.intro.make=Break the code!
message.intro.done=§aYou have cracked the code!§b
message.teleport.airlock=Wat doe je? Je moet de agent redden!
## Level 1 messages
message.mission1part1.name=Level 1
message.mission1part1.started=Level 1 is started!
@@ -146,14 +148,14 @@ suki.afterlevel.1.3.text=Gebruik enkelvoudige en meervoudige selecties om de dod
suki.afterlevel.1.3.button=OK!
suki.afterlevel.2.1.intermezzo.1.text=Goed zo! Voor het tweede level wordt het terug een stuk moeilijker. Als de Agent op dood geel koraal stapt, dan plaats hij geel koraal. Anders als de Agent op dood rood koraal stapt, dan plaats bij rood koraal. Anders draait hij een toertje rond zijn as. (TODO)
suki.afterlevel.2.1.intermezzo.1.text=Goed zo! Voor het tweede level wordt het terug een stuk moeilijker. Als de Agent op dood geel koraal stapt, dan plaats hij geel koraal. Anders als de Agent op dood rood koraal stapt, dan plaats bij rood koraal.
suki.afterlevel.2.1.intermezzo.1.button=Ik Probeer!
suki.afterlevel.2.1.text=Goed gedaan! Je hebt het tweede level voltooid. Ga terug naar het leerplatform en vul de vraag in. Dan kan je starten met de deur te openen. Maar eerst nog een weetje! Wist je dat klimaatverandering de grootste bedreiging is voor koraalriffen? Daardoor stijgt de temperatuur en wordt het water zuurder. Daarnaast vormt ook overbevissing, vervuiling end e afvoer van landbouwgiffen een bedreiging.
suki.afterlevel.2.1.button=Wat Jammer!
suki.afterlevel.2.2.text=Ik heb even kunnen rondkijken en heb de uit knop van de deur gevonden! Hij is aan het einde van het parcours rechts in de tempel. Je zal de agent moeten sturen om dit te activeren!
suki.afterlevel.2.2.text=Ik heb even kunnen rondkijken en heb de uitknop van de deur gevonden! Hij is aan het einde van het parcours rechts in de tempel. Je zal de agent moeten sturen om dit te activeren!
suki.afterlevel.2.2.button=Hoe dan?
suki.afterlevel.2.3.text=Ik heb alvast wat code gemaakt om het door het parcours te geraken. Ik vrees dat ik niet zo een goede programmeur ben als jij. Er zitten nog wat bugs in. Kan jij deze oplossen en de agent bij de lever krijgen?

View File

@@ -28,19 +28,19 @@ export namespace TrailMaker {
OnChat(event: ChatSendAfterEvent) {
if (event.message == "!trailWand") {
let item: ItemStack = new ItemStack("minecraft:stick");
const item: ItemStack = new ItemStack("minecraft:stick");
item.nameTag = "AddPoint";
Pupeteer.givePlayerItem(event.sender as Player, item);
world.sendMessage("Thou shall have the Trailing Powah");
}
if (event.message == "!trailDeleteWand") {
let item: ItemStack = new ItemStack("minecraft:stick");
const item: ItemStack = new ItemStack("minecraft:stick");
item.nameTag = "DeletePoint";
Pupeteer.givePlayerItem(event.sender as Player, item);
world.sendMessage("Luke, i'm NOT your father");
}
if (event.message == "!trailLineWand") {
let item: ItemStack = new ItemStack("minecraft:stick");
const item: ItemStack = new ItemStack("minecraft:stick");
item.nameTag = "AddLine";
Pupeteer.givePlayerItem(event.sender as Player, item);
world.sendMessage(`This is where i draw the ${Chalk.red("Line")} >:(`);
@@ -50,7 +50,6 @@ export namespace TrailMaker {
}
}
OnItemUse(event: ItemUseOnBeforeEvent) {
const currentItemHeld: ItemStack = event.itemStack;
const blockInteracted: Block = event.block;
const player: Player = event.source as Player;
const oldLog = this.log.get(player.name)!;
@@ -58,8 +57,8 @@ export namespace TrailMaker {
if (oldLog + 150 >= Date.now()) return;
if (event.itemStack.typeId == "minecraft:stick" && event.itemStack.nameTag == "AddPoint") {
let block = event.block;
let pos = this.BlockToParticlePosition(block);
const block = event.block;
const pos = this.BlockToParticlePosition(block);
world.sendMessage(`Added Point ${Vector3ToString(pos)}`);
this.currentTrail.points.push(new Point(pos, this.currentTrail.currentPoint));
@@ -68,10 +67,10 @@ export namespace TrailMaker {
}
if (event.itemStack.typeId == "minecraft:stick" && event.itemStack.nameTag == "DeletePoint") {
let block = event.block;
let pos = this.BlockToParticlePosition(block);
const block = event.block;
const pos = this.BlockToParticlePosition(block);
let point = this.currentTrail.points.find((point) => Vector3ToString(point.position) == Vector3ToString(pos));
const point = this.currentTrail.points.find((point) => Vector3ToString(point.position) == Vector3ToString(pos));
if (point) {
this.currentTrail.points.splice(this.currentTrail.points.indexOf(point), 1);
Pupeteer.setActionBarTimed(`Deleted point ${point.index}`, 3);
@@ -96,18 +95,18 @@ export namespace TrailMaker {
//Calculate the blocks between these 2 points, andd add them to the trail
//Assume point1 is the start, and point2 is the end
let x1 = this.point1.x;
let x2 = this.point2.x;
let y1 = this.point1.y;
let y2 = this.point2.y;
let z1 = this.point1.z;
let z2 = this.point2.z;
const x1 = this.point1.x;
const x2 = this.point2.x;
const y1 = this.point1.y;
const y2 = this.point2.y;
const z1 = this.point1.z;
const z2 = this.point2.z;
//Find out what axis is the movement on, throw an error if it's on more than one axis
let xDiff = Math.abs(x2 - x1);
let yDiff = Math.abs(y2 - y1);
let zDiff = Math.abs(z2 - z1);
const xDiff = Math.abs(x2 - x1);
const yDiff = Math.abs(y2 - y1);
const zDiff = Math.abs(z2 - z1);
let axis = "";
@@ -165,8 +164,8 @@ export namespace TrailMaker {
Export() {
let output = "";
for (let i = 0; i < this.currentTrail.points.length; i++) {
let point = this.currentTrail.points[i];
let actualPos = point.position;
const point = this.currentTrail.points[i];
const actualPos = point.position;
output += `{ index: ${point.index}, position: vector3(${actualPos.x}, ${actualPos.y}, ${actualPos.z}) },\n`;
}
console.warn(output);
@@ -177,7 +176,7 @@ export namespace TrailMaker {
pos = Vector3Add(pos, vector3(0.5, 0, 0.5));
//If block is a slab or stair, offset by half a block
let isHalfBlock = block.typeId.includes("slab") || block.typeId.includes("stair");
const isHalfBlock = block.typeId.includes("slab") || block.typeId.includes("stair");
if (isHalfBlock) {
pos = Vector3Add(pos, vector3(0, 0.5, 0));
} else {

View File

@@ -8,7 +8,7 @@ const level1StartPosition: Vector3 = vector3(2488, -2, 7);
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
const Level1EndPosition: Vector3 = vector3(2488, -2, 22);
let mission3part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
const mission3part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
"mission3part1",
level1StartPosition,
level1AgentFacing,

View File

@@ -8,7 +8,7 @@ const level1StartPosition: Vector3 = vector3(2492, -2, 26);
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
const Level1EndPosition: Vector3 = vector3(2484, -2, 32);
let mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
"mission3part2",
level1StartPosition,
level1AgentFacing,

View File

@@ -9,7 +9,7 @@ const level1AgentFacing: Vector3 = vector3(1, 0, 0);
const Level1EndPosition: Vector3 = vector3(2488, -2, 57);
const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
"mission3part2",
"mission3part3",
level1StartPosition,
level1AgentFacing,
Level1EndPosition,

View File

@@ -16,6 +16,7 @@ import {
Vector3ToCommandString,
Vector3ToFancyString,
vector3,
vector3Distance,
} from "./Commandeer/utils/vectorUtils";
import { delay } from "./Commandeer/utils/waitUtil";
import { ParticleColumn, PARTICLES, spawnParticle } from "./Commandeer/utils/particleUtils";
@@ -56,7 +57,7 @@ const triggerManager = new CCTrigger.Manager(mindKeeper);
const CURRENT_LEVEL = "currentLevel";
const AGENT_ID = "agentid";
const PREFIX = "!";
let DEVELOPER_MODE = true;
let DEVELOPER_MODE = false;
export { mindKeeper, CURRENT_LEVEL, triggerManager, PREFIX, DEVELOPER_MODE };
@@ -104,11 +105,20 @@ system.runInterval(() => {
triggerManager.Update();
}
const currentLevel = mindKeeper.get(CURRENT_LEVEL);
if (prevCurrentLevel != currentLevel) {
world.sendMessage("Current level: " + currentLevel);
prevCurrentLevel = mindKeeper.get(CURRENT_LEVEL) as number;
if (tickCounter % 10 == 0) {
//Give the player water breathing
const player = world.getPlayers()[0];
player.addEffect("water_breathing", 200, { showParticles: false });
}
const currentLevel = mindKeeper.get(CURRENT_LEVEL);
if (DEVELOPER_MODE) {
if (prevCurrentLevel != currentLevel) {
world.sendMessage("Current level: " + currentLevel);
prevCurrentLevel = mindKeeper.get(CURRENT_LEVEL) as number;
}
}
switch (currentLevel) {
case 0:
// Show goto airlock text
@@ -117,6 +127,17 @@ system.runInterval(() => {
drawArrow(vector3(2478, 37, 89));
airlockParticles.update();
airlockParticles.draw();
//Check if the player is 100 blocks from /setblock 2475 11 91
{
const playerPos = world.getPlayers()[0].location;
const distance = vector3Distance(playerPos, vector3(2475, 11, 91));
if (distance > 40) {
world.getPlayers()[0].teleport(vector3(2480, 23, 88));
world.sendMessage("%message.teleport.airlock");
}
}
break;
case 1:
Pupeteer.setActionBar("%message.enter.airlock");
@@ -232,6 +253,14 @@ system.runInterval(() => {
}
});
Commands.register(PREFIX, "connect", () => {
//Websocket
system.run(() => {
world.sendMessage("Connecting to websocket");
world.getDimension("overworld").runCommand("/connect 192.168.0.207/ws");
});
});
triggerManager.RegisterFunctionTrigger("lightPath", () => {
lightUpPath();
});

View File

@@ -1,8 +1,7 @@
import { Vector3 } from "@minecraft/server";
import { TrailType } from "../Commandeer/trail/trailTypes";
import { vector3 } from "../Commandeer/utils/vectorUtils";
let IntroToLevel1Trail: TrailType = {
const IntroToLevel1Trail: TrailType = {
name: "IntroToLevel1Trail",
points: [
{ index: 0, position: vector3(2468, 11.1, 104.5) },