Skip to content
This repository was archived by the owner on Feb 17, 2022. It is now read-only.

Commit 1675093

Browse files
authored
Merge pull request #5 from Lapis256/beta/1.18.20
Beta/1.18.20
2 parents 01ebd79 + 4ec7b40 commit 1675093

20 files changed

+287
-172
lines changed

index.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*export { Event } from "./event.js";
2+
export { GameRule } from "./gamerule.js";
3+
export { Command } from "./command.js";
4+
export { World } from "./world.js";
5+
export { Tick } from "./tick.js";
6+
export { Tag } from "./tag.js";
7+
export { Player } from "./player.js";
8+
export { Scoreboard } from "./scoreboard.js";
9+
export { EventEmitter } from "./eventEmitter.js";*/
10+
11+
import "./src/commandInitializer.js";
12+
13+
export * from "./src/utils/index.js";
14+
export * from "./src/debug/index.js";
15+
export { Tick } from "./src/tick.js";
16+
export { Command } from "./src/command.js";
17+
export { Dimension } from "./src/dimension.js";
18+
export { RawTextBuilder } from "./src/rawTextBuilder/index.js";

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "",
55
"main": "src/index.js",
66
"scripts": {
7-
"build": "webpack"
7+
"build": "webpack --config webpack.config.prod.js",
8+
"dev": "webpack --config webpack.config.dev.js"
89
},
910
"author": "Lapis256",
1011
"license": "MIT",

src/commandInitializer.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { world } from "mojang-minecraft";
2+
3+
void function() {
4+
const func = (ev) => {
5+
ev.player.runCommand("list");
6+
world.events.playerJoin.unsubscribe(func);
7+
}
8+
world.events.playerJoin.subscribe(func);
9+
}();

src/debug/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { print, pprint, p, pp } from "./print.js";
2+
export { default as toJson } from "./toJson.js";

src/debug/print.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { world } from "mojang-minecraft";
2+
3+
import toJson from "./toJson.js";
4+
import { RawTextBuilder } from "../rawTextBuilder/index.js";
5+
6+
7+
export function print(...obj) {
8+
const rawtext = new RawTextBuilder().addText(obj.map(String).join(" "));
9+
const dimension = world.getDimension("overworld");
10+
dimension.runCommand("tellraw @a " + rawtext.buildJson());
11+
}
12+
13+
14+
export function pprint(...obj) {
15+
print(...obj.map(o => toJson(o, 4)));
16+
}
17+
18+
19+
export function p(obj) {
20+
print(obj);
21+
return obj;
22+
}
23+
24+
25+
export function pp(obj) {
26+
pprint(obj);
27+
return obj;
28+
}
Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
1-
function isClass(obj) {
2-
return obj.toString().startsWith("class ");
3-
}
4-
5-
function isGenerator(obj) {
6-
return obj[Symbol.iterator] &&
7-
obj[Symbol.iterator].name === "[Symbol.iterator]" &&
8-
typeof obj.next === "function";
9-
}
10-
11-
export function toJson(data, indent = 4) {
12-
return JSON.stringify(data, (key, value) => {
13-
switch(typeof value) {
14-
case "function":
15-
if(isClass(value)) {
16-
return `[class ${value.name || key}]`;
17-
}
18-
return `[function ${value.name || key}]`;
19-
20-
case "object":
21-
if(isGenerator(value)) {
22-
return `[generator ${key || "Generator"}]`;
23-
}
24-
if(Array.isArray(value)) {
25-
return value;
26-
}
27-
let obj = {};
28-
for(const i in value) {
29-
obj[i] = value[i];
30-
}
31-
return obj;
32-
33-
case "undefined":
34-
return null;
35-
36-
default:
37-
return value;
38-
}
39-
}, indent);
40-
}
1+
function isClass(obj) {
2+
return obj.toString().startsWith("class ");
3+
}
4+
5+
function isGenerator(obj) {
6+
return obj[Symbol.iterator] &&
7+
obj[Symbol.iterator].name === "[Symbol.iterator]" &&
8+
typeof obj.next === "function";
9+
}
10+
11+
export default function toJson(data, indent = 4) {
12+
return JSON.stringify(data, (key, value) => {
13+
switch(typeof value) {
14+
case "function":
15+
if(isClass(value)) {
16+
return `[class ${value.name || key}]`;
17+
}
18+
return `[function ${value.name || key}]`;
19+
20+
case "object":
21+
if(isGenerator(value)) {
22+
return `[generator ${key || "Generator"}]`;
23+
}
24+
if(Array.isArray(value)) {
25+
return value;
26+
}
27+
let obj = {};
28+
for(const i in value) {
29+
obj[i] = value[i];
30+
}
31+
return obj;
32+
33+
case "undefined":
34+
return null;
35+
36+
default:
37+
return value;
38+
}
39+
}, indent);
40+
}

src/dimension.js

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
import { Command } from "./command.js";
2-
import { mergeObject } from "./object.js";
3-
4-
5-
export class Dimension {
6-
#dimension;
7-
8-
constructor(dimension) {
9-
this.#dimension = dimension;
10-
mergeObject(this, dimension);
11-
}
12-
commandRun(command) {
13-
return Command.run(command, this.#dimension);
14-
}
15-
commandRunSafe(command) {
16-
return Command.runSafe(command, this.#dimension);
17-
}
18-
}
1+
import { world } from "mojang-minecraft";
2+
3+
4+
const dimensions = [
5+
"overworld",
6+
"nether",
7+
"the end"
8+
].map(name => ({ name, dim: world.getDimension(name)}));
9+
Object.freeze(dimensions);
10+
11+
12+
class _Dimension {
13+
getName(dimension) {
14+
const { name } = dimensions.find(({ dim }) => dim === dimension);
15+
return name;
16+
}
17+
18+
get(dimName) {
19+
const { dim } = dimensions.find(({ name }) => name === dimName);
20+
return dim;
21+
}
22+
}
23+
24+
export const Dimension = new _Dimension();

src/eventEmitter.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/index.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/iterator.js

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
1-
export class AdvancedIterator {
2-
#iterator;
3-
4-
constructor(iterator) {
5-
this.#iterator = iterator;
6-
}
7-
8-
*[Symbol.iterator]() {
9-
for(const i of this.#iterator){
10-
yield i;
11-
}
12-
}
13-
14-
map(func) {
15-
const iterator = this.#iterator;
16-
return new AdvancedIterator((function*() {
17-
for(const i of iterator) {
18-
yield func(i);
19-
}
20-
})());
21-
}
22-
23-
filter(check) {
24-
const iterator = this.#iterator;
25-
return new AdvancedIterator((function*() {
26-
for(const i of iterator) {
27-
if(!check(i)) continue;
28-
yield i;
29-
}
30-
})());
31-
}
32-
33-
find(check) {
34-
for(const i of this.#iterator) {
35-
if(!check(i)) continue;
36-
return i;
37-
}
38-
}
39-
}
1+
const CANCEL = Symbol("Cancel");
2+
3+
export class Iterator {
4+
#iterator;
5+
6+
constructor(iterator) {
7+
this.#iterator = iterator;
8+
}
9+
10+
*[Symbol.iterator]() {
11+
yield* this.#iterator;
12+
}
13+
14+
#wrapper(func) {
15+
const iterator = this.#iterator;
16+
const iter = function* () {
17+
for(const v of iterator) {
18+
const result = func(v);
19+
if(result === CANCEL) {
20+
continue;
21+
}
22+
yield result;
23+
}
24+
}
25+
this.#iterator = iter();
26+
return this;
27+
}
28+
29+
map(func) {
30+
return this.#wrapper(func);
31+
}
32+
33+
filter(check) {
34+
return this.#wrapper(v => check(v) ? v : CANCEL);
35+
}
36+
37+
find(check) {
38+
for(const i of this.#iterator) {
39+
if(check(i)) return i;
40+
}
41+
}
42+
}

0 commit comments

Comments
 (0)