First Version
This commit is contained in:
1
behavior_packs/functions/balls.mcfunction
Normal file
1
behavior_packs/functions/balls.mcfunction
Normal file
@@ -0,0 +1 @@
|
|||||||
|
connect 192.168.0.207/ws
|
||||||
12
gulpfile.js
12
gulpfile.js
@@ -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
|
// === CONFIGURABLE VARIABLES
|
||||||
|
|
||||||
const bpfoldername = "Reeks2Missie6";
|
const bpfoldername = "Reeks2Missie6";
|
||||||
@@ -369,14 +373,6 @@ function copy_build_resource_pack_to_export_folder(cb) {
|
|||||||
return gulp
|
return gulp
|
||||||
.src(["build/resource_packs/**/**"])
|
.src(["build/resource_packs/**/**"])
|
||||||
.pipe(gulp.dest("export/" + bpfoldername + "/resource_packs/" + bpfoldername));
|
.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) {
|
function copy_build_behavior_pack_to_export_folder(cb) {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ message.trail.follow=Follow the trail
|
|||||||
message.levels.completed=You have completed all levels!
|
message.levels.completed=You have completed all levels!
|
||||||
|
|
||||||
## goto messages
|
## goto messages
|
||||||
message.goto.airlock=Go to the Airlock
|
message.goto.airlock=Ga naar de luchtsluis
|
||||||
message.enter.airlock=Enter the Airlock
|
message.enter.airlock=Ga de luchtsluis binnen
|
||||||
|
|
||||||
message.follow.path.temple=Follow the path and talk to §6Bakker Bilal
|
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.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.make=Break the code!
|
||||||
message.intro.done=§aYou have cracked the code!§b
|
message.intro.done=§aYou have cracked the code!§b
|
||||||
|
|
||||||
|
message.teleport.airlock=Wat doe je? Je moet de agent redden!
|
||||||
|
|
||||||
## Level 1 messages
|
## Level 1 messages
|
||||||
message.mission1part1.name=Level 1
|
message.mission1part1.name=Level 1
|
||||||
message.mission1part1.started=Level 1 is started!
|
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.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.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.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.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.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?
|
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?
|
||||||
|
|||||||
@@ -28,19 +28,19 @@ export namespace TrailMaker {
|
|||||||
|
|
||||||
OnChat(event: ChatSendAfterEvent) {
|
OnChat(event: ChatSendAfterEvent) {
|
||||||
if (event.message == "!trailWand") {
|
if (event.message == "!trailWand") {
|
||||||
let item: ItemStack = new ItemStack("minecraft:stick");
|
const item: ItemStack = new ItemStack("minecraft:stick");
|
||||||
item.nameTag = "AddPoint";
|
item.nameTag = "AddPoint";
|
||||||
Pupeteer.givePlayerItem(event.sender as Player, item);
|
Pupeteer.givePlayerItem(event.sender as Player, item);
|
||||||
world.sendMessage("Thou shall have the Trailing Powah");
|
world.sendMessage("Thou shall have the Trailing Powah");
|
||||||
}
|
}
|
||||||
if (event.message == "!trailDeleteWand") {
|
if (event.message == "!trailDeleteWand") {
|
||||||
let item: ItemStack = new ItemStack("minecraft:stick");
|
const item: ItemStack = new ItemStack("minecraft:stick");
|
||||||
item.nameTag = "DeletePoint";
|
item.nameTag = "DeletePoint";
|
||||||
Pupeteer.givePlayerItem(event.sender as Player, item);
|
Pupeteer.givePlayerItem(event.sender as Player, item);
|
||||||
world.sendMessage("Luke, i'm NOT your father");
|
world.sendMessage("Luke, i'm NOT your father");
|
||||||
}
|
}
|
||||||
if (event.message == "!trailLineWand") {
|
if (event.message == "!trailLineWand") {
|
||||||
let item: ItemStack = new ItemStack("minecraft:stick");
|
const item: ItemStack = new ItemStack("minecraft:stick");
|
||||||
item.nameTag = "AddLine";
|
item.nameTag = "AddLine";
|
||||||
Pupeteer.givePlayerItem(event.sender as Player, item);
|
Pupeteer.givePlayerItem(event.sender as Player, item);
|
||||||
world.sendMessage(`This is where i draw the ${Chalk.red("Line")} >:(`);
|
world.sendMessage(`This is where i draw the ${Chalk.red("Line")} >:(`);
|
||||||
@@ -50,7 +50,6 @@ export namespace TrailMaker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
OnItemUse(event: ItemUseOnBeforeEvent) {
|
OnItemUse(event: ItemUseOnBeforeEvent) {
|
||||||
const currentItemHeld: ItemStack = event.itemStack;
|
|
||||||
const blockInteracted: Block = event.block;
|
const blockInteracted: Block = event.block;
|
||||||
const player: Player = event.source as Player;
|
const player: Player = event.source as Player;
|
||||||
const oldLog = this.log.get(player.name)!;
|
const oldLog = this.log.get(player.name)!;
|
||||||
@@ -58,8 +57,8 @@ export namespace TrailMaker {
|
|||||||
if (oldLog + 150 >= Date.now()) return;
|
if (oldLog + 150 >= Date.now()) return;
|
||||||
|
|
||||||
if (event.itemStack.typeId == "minecraft:stick" && event.itemStack.nameTag == "AddPoint") {
|
if (event.itemStack.typeId == "minecraft:stick" && event.itemStack.nameTag == "AddPoint") {
|
||||||
let block = event.block;
|
const block = event.block;
|
||||||
let pos = this.BlockToParticlePosition(block);
|
const pos = this.BlockToParticlePosition(block);
|
||||||
world.sendMessage(`Added Point ${Vector3ToString(pos)}`);
|
world.sendMessage(`Added Point ${Vector3ToString(pos)}`);
|
||||||
this.currentTrail.points.push(new Point(pos, this.currentTrail.currentPoint));
|
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") {
|
if (event.itemStack.typeId == "minecraft:stick" && event.itemStack.nameTag == "DeletePoint") {
|
||||||
let block = event.block;
|
const block = event.block;
|
||||||
let pos = this.BlockToParticlePosition(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) {
|
if (point) {
|
||||||
this.currentTrail.points.splice(this.currentTrail.points.indexOf(point), 1);
|
this.currentTrail.points.splice(this.currentTrail.points.indexOf(point), 1);
|
||||||
Pupeteer.setActionBarTimed(`Deleted point ${point.index}`, 3);
|
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
|
//Calculate the blocks between these 2 points, andd add them to the trail
|
||||||
//Assume point1 is the start, and point2 is the end
|
//Assume point1 is the start, and point2 is the end
|
||||||
let x1 = this.point1.x;
|
const x1 = this.point1.x;
|
||||||
let x2 = this.point2.x;
|
const x2 = this.point2.x;
|
||||||
let y1 = this.point1.y;
|
const y1 = this.point1.y;
|
||||||
let y2 = this.point2.y;
|
const y2 = this.point2.y;
|
||||||
let z1 = this.point1.z;
|
const z1 = this.point1.z;
|
||||||
let z2 = this.point2.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
|
//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);
|
const xDiff = Math.abs(x2 - x1);
|
||||||
let yDiff = Math.abs(y2 - y1);
|
const yDiff = Math.abs(y2 - y1);
|
||||||
let zDiff = Math.abs(z2 - z1);
|
const zDiff = Math.abs(z2 - z1);
|
||||||
|
|
||||||
let axis = "";
|
let axis = "";
|
||||||
|
|
||||||
@@ -165,8 +164,8 @@ export namespace TrailMaker {
|
|||||||
Export() {
|
Export() {
|
||||||
let output = "";
|
let output = "";
|
||||||
for (let i = 0; i < this.currentTrail.points.length; i++) {
|
for (let i = 0; i < this.currentTrail.points.length; i++) {
|
||||||
let point = this.currentTrail.points[i];
|
const point = this.currentTrail.points[i];
|
||||||
let actualPos = point.position;
|
const actualPos = point.position;
|
||||||
output += `{ index: ${point.index}, position: vector3(${actualPos.x}, ${actualPos.y}, ${actualPos.z}) },\n`;
|
output += `{ index: ${point.index}, position: vector3(${actualPos.x}, ${actualPos.y}, ${actualPos.z}) },\n`;
|
||||||
}
|
}
|
||||||
console.warn(output);
|
console.warn(output);
|
||||||
@@ -177,7 +176,7 @@ export namespace TrailMaker {
|
|||||||
pos = Vector3Add(pos, vector3(0.5, 0, 0.5));
|
pos = Vector3Add(pos, vector3(0.5, 0, 0.5));
|
||||||
//If block is a slab or stair, offset by half a block
|
//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) {
|
if (isHalfBlock) {
|
||||||
pos = Vector3Add(pos, vector3(0, 0.5, 0));
|
pos = Vector3Add(pos, vector3(0, 0.5, 0));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const level1StartPosition: Vector3 = vector3(2488, -2, 7);
|
|||||||
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
|
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
|
||||||
const Level1EndPosition: Vector3 = vector3(2488, -2, 22);
|
const Level1EndPosition: Vector3 = vector3(2488, -2, 22);
|
||||||
|
|
||||||
let mission3part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
const mission3part1: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||||
"mission3part1",
|
"mission3part1",
|
||||||
level1StartPosition,
|
level1StartPosition,
|
||||||
level1AgentFacing,
|
level1AgentFacing,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const level1StartPosition: Vector3 = vector3(2492, -2, 26);
|
|||||||
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
|
const level1AgentFacing: Vector3 = vector3(0, 0, 1);
|
||||||
const Level1EndPosition: Vector3 = vector3(2484, -2, 32);
|
const Level1EndPosition: Vector3 = vector3(2484, -2, 32);
|
||||||
|
|
||||||
let mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||||
"mission3part2",
|
"mission3part2",
|
||||||
level1StartPosition,
|
level1StartPosition,
|
||||||
level1AgentFacing,
|
level1AgentFacing,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const level1AgentFacing: Vector3 = vector3(1, 0, 0);
|
|||||||
const Level1EndPosition: Vector3 = vector3(2488, -2, 57);
|
const Level1EndPosition: Vector3 = vector3(2488, -2, 57);
|
||||||
|
|
||||||
const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
const mission3part2: AbstractAgentTrackMission = new AbstractAgentTrackMission(
|
||||||
"mission3part2",
|
"mission3part3",
|
||||||
level1StartPosition,
|
level1StartPosition,
|
||||||
level1AgentFacing,
|
level1AgentFacing,
|
||||||
Level1EndPosition,
|
Level1EndPosition,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
Vector3ToCommandString,
|
Vector3ToCommandString,
|
||||||
Vector3ToFancyString,
|
Vector3ToFancyString,
|
||||||
vector3,
|
vector3,
|
||||||
|
vector3Distance,
|
||||||
} from "./Commandeer/utils/vectorUtils";
|
} from "./Commandeer/utils/vectorUtils";
|
||||||
import { delay } from "./Commandeer/utils/waitUtil";
|
import { delay } from "./Commandeer/utils/waitUtil";
|
||||||
import { ParticleColumn, PARTICLES, spawnParticle } from "./Commandeer/utils/particleUtils";
|
import { ParticleColumn, PARTICLES, spawnParticle } from "./Commandeer/utils/particleUtils";
|
||||||
@@ -56,7 +57,7 @@ const triggerManager = new CCTrigger.Manager(mindKeeper);
|
|||||||
const CURRENT_LEVEL = "currentLevel";
|
const CURRENT_LEVEL = "currentLevel";
|
||||||
const AGENT_ID = "agentid";
|
const AGENT_ID = "agentid";
|
||||||
const PREFIX = "!";
|
const PREFIX = "!";
|
||||||
let DEVELOPER_MODE = true;
|
let DEVELOPER_MODE = false;
|
||||||
|
|
||||||
export { mindKeeper, CURRENT_LEVEL, triggerManager, PREFIX, DEVELOPER_MODE };
|
export { mindKeeper, CURRENT_LEVEL, triggerManager, PREFIX, DEVELOPER_MODE };
|
||||||
|
|
||||||
@@ -104,11 +105,20 @@ system.runInterval(() => {
|
|||||||
triggerManager.Update();
|
triggerManager.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
const currentLevel = mindKeeper.get(CURRENT_LEVEL);
|
||||||
|
if (DEVELOPER_MODE) {
|
||||||
if (prevCurrentLevel != currentLevel) {
|
if (prevCurrentLevel != currentLevel) {
|
||||||
world.sendMessage("Current level: " + currentLevel);
|
world.sendMessage("Current level: " + currentLevel);
|
||||||
prevCurrentLevel = mindKeeper.get(CURRENT_LEVEL) as number;
|
prevCurrentLevel = mindKeeper.get(CURRENT_LEVEL) as number;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (currentLevel) {
|
switch (currentLevel) {
|
||||||
case 0:
|
case 0:
|
||||||
// Show goto airlock text
|
// Show goto airlock text
|
||||||
@@ -117,6 +127,17 @@ system.runInterval(() => {
|
|||||||
drawArrow(vector3(2478, 37, 89));
|
drawArrow(vector3(2478, 37, 89));
|
||||||
airlockParticles.update();
|
airlockParticles.update();
|
||||||
airlockParticles.draw();
|
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;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Pupeteer.setActionBar("%message.enter.airlock");
|
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", () => {
|
triggerManager.RegisterFunctionTrigger("lightPath", () => {
|
||||||
lightUpPath();
|
lightUpPath();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import { Vector3 } from "@minecraft/server";
|
|
||||||
import { TrailType } from "../Commandeer/trail/trailTypes";
|
import { TrailType } from "../Commandeer/trail/trailTypes";
|
||||||
import { vector3 } from "../Commandeer/utils/vectorUtils";
|
import { vector3 } from "../Commandeer/utils/vectorUtils";
|
||||||
|
|
||||||
let IntroToLevel1Trail: TrailType = {
|
const IntroToLevel1Trail: TrailType = {
|
||||||
name: "IntroToLevel1Trail",
|
name: "IntroToLevel1Trail",
|
||||||
points: [
|
points: [
|
||||||
{ index: 0, position: vector3(2468, 11.1, 104.5) },
|
{ index: 0, position: vector3(2468, 11.1, 104.5) },
|
||||||
|
|||||||
Reference in New Issue
Block a user