Skip to content

Commit 4aef91c

Browse files
committed
WEB BUG FIX
1 parent 819aa1a commit 4aef91c

File tree

4 files changed

+104
-100
lines changed

4 files changed

+104
-100
lines changed

NBTool.js

Lines changed: 1 addition & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { NBTParser } = require("./NBTParser.js")
2-
const NBTFILE_LIB = require("./nbtfile_lib.js")
2+
33
function getNbtContent(nbttext) {
44
if (nbttext === undefined) return undefined;
55
if (typeof nbttext === 'boolean') return nbttext;
@@ -177,101 +177,6 @@ function removeNbtTag(dat) {
177177
const NBTools = {
178178
Class: {
179179
NbtObject: class { },
180-
},
181-
FromMCNBT: function (data) {
182-
function __pack(data) {
183-
let root = {};
184-
function parse_main(dat) {
185-
let t = dat.getType();
186-
return parse_body(dat, t);
187-
}
188-
function parse_body(dat, t) {
189-
if (t == 'component') {
190-
return parse_component(dat);
191-
} else if (t == 'byte_array') {
192-
return parse_number_list(dat.getValue(), "byte");
193-
} else if (t == 'int_array') {
194-
return parse_number_list(dat.getValue(), "int");
195-
} else if (t == 'long_array') {
196-
return parse_number_list(dat.getValue(), "long");
197-
} else if (t == 'list') {
198-
return parse_list(dat.getValue());
199-
} else if (t == 'string') {
200-
let str = (dat.getValue());
201-
return JSON.stringify(str);
202-
} else {
203-
return pack_num(dat);
204-
}
205-
}
206-
function pack_num(dat) {
207-
let t = dat.getType();
208-
if (t == 'byte') {
209-
return dat.getValue() + "b";
210-
} else if (t == 'int') {
211-
return dat.getValue() + "";
212-
} else if (t == 'long') {
213-
return dat.getValue() + "l";
214-
} else if (t == 'float') {
215-
return dat.getValue() + "f";
216-
} else if (t == 'double') {
217-
return dat.getValue() + "d";
218-
} else
219-
return dat.getValue();
220-
}
221-
function parse_number_list(dat, type) {
222-
let arrLen = dat.length;
223-
let res = "";
224-
let prefix = "I";
225-
if (type == 'byte') {
226-
prefix = "B";
227-
} else if (type == 'int') {
228-
prefix = "I";
229-
} else if (type == 'long') {
230-
prefix = "L";
231-
}
232-
let arr = new Array();
233-
for (let i = 0; i < arrLen; i++) {
234-
arr[i] = pack_num(dat[i]);
235-
}
236-
if (arr[0] != null) {
237-
arr[0] = `${prefix};${arr[0]}`;
238-
} else {
239-
arr[0] = `${prefix};`;
240-
}
241-
return arr;
242-
}
243-
function parse_list(dat) {
244-
let arrLen = dat.length;
245-
let arr = new Array();
246-
for (let i = 0; i < arrLen; i++) {
247-
arr[i] = parse_main(dat[i]);
248-
}
249-
return arr;
250-
}
251-
function parse_component(dat) {
252-
let __map = dat.getValue();
253-
254-
255-
let rt = {};
256-
let count = 0,last_key = null;
257-
for (let key in __map) {
258-
count++;
259-
last_key = key;
260-
let ele = __map[key];
261-
rt[key] = parse_main(ele);
262-
}
263-
if(count == 1 && last_key == ""){
264-
return rt[last_key];
265-
};
266-
return rt;
267-
}
268-
root = parse_component(data);
269-
return root;
270-
}
271-
return __pack(data);
272-
},
273-
ToMCNBT: function (data) {
274-
275180
},
276181
ToJSON: function (NbtObject) {
277182
let data = NbtObject;

build_web.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ cp "./web/" "./build/" -f -r
1111
cp "./tools/" "./build/web" -f -r
1212
cp "./build/web/index.html" "./build/web/public/index.html" -f -r
1313
cp "./favicon.ico" "./build/web/public/favicon.ico" -f -r
14-
npx -y browserify "build/web/index.js" -o "build/web/public/index.js"
14+
npx -y browserify "build/web/index.js" -o "build/web/public/index.js"
15+
echo Build Over. Output: ./build/web/public

nbtfile_lib.js

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,104 @@ const Stream = require('stream');
55
const { NBTStream } = require("./nbtstream.js");
66
const { JavaBufferUtils } = require("./java_buffer_utils.js");
77

8+
const NBTFILE_SNBT_TOOL = {
9+
FromMCNBT: function (data) {
10+
function __pack(data) {
11+
let root = {};
12+
function parse_main(dat) {
13+
let t = dat.getType();
14+
return parse_body(dat, t);
15+
}
16+
function parse_body(dat, t) {
17+
if (t == 'component') {
18+
return parse_component(dat);
19+
} else if (t == 'byte_array') {
20+
return parse_number_list(dat.getValue(), "byte");
21+
} else if (t == 'int_array') {
22+
return parse_number_list(dat.getValue(), "int");
23+
} else if (t == 'long_array') {
24+
return parse_number_list(dat.getValue(), "long");
25+
} else if (t == 'list') {
26+
return parse_list(dat.getValue());
27+
} else if (t == 'string') {
28+
let str = (dat.getValue());
29+
return JSON.stringify(str);
30+
} else {
31+
return pack_num(dat);
32+
}
33+
}
34+
function pack_num(dat) {
35+
let t = dat.getType();
36+
if (t == 'byte') {
37+
return dat.getValue() + "b";
38+
} else if (t == 'int') {
39+
return dat.getValue() + "";
40+
} else if (t == 'long') {
41+
return dat.getValue() + "l";
42+
} else if (t == 'float') {
43+
return dat.getValue() + "f";
44+
} else if (t == 'double') {
45+
return dat.getValue() + "d";
46+
} else
47+
return dat.getValue();
48+
}
49+
function parse_number_list(dat, type) {
50+
let arrLen = dat.length;
51+
let res = "";
52+
let prefix = "I";
53+
if (type == 'byte') {
54+
prefix = "B";
55+
} else if (type == 'int') {
56+
prefix = "I";
57+
} else if (type == 'long') {
58+
prefix = "L";
59+
}
60+
let arr = new Array();
61+
for (let i = 0; i < arrLen; i++) {
62+
arr[i] = pack_num(dat[i]);
63+
}
64+
if (arr[0] != null) {
65+
arr[0] = `${prefix};${arr[0]}`;
66+
} else {
67+
arr[0] = `${prefix};`;
68+
}
69+
return arr;
70+
}
71+
function parse_list(dat) {
72+
let arrLen = dat.length;
73+
let arr = new Array();
74+
for (let i = 0; i < arrLen; i++) {
75+
arr[i] = parse_main(dat[i]);
76+
}
77+
return arr;
78+
}
79+
function parse_component(dat) {
80+
let __map = dat.getValue();
81+
82+
83+
let rt = {};
84+
let count = 0, last_key = null;
85+
for (let key in __map) {
86+
count++;
87+
last_key = key;
88+
let ele = __map[key];
89+
rt[key] = parse_main(ele);
90+
}
91+
if (count == 1 && last_key == "") {
92+
return rt[last_key];
93+
};
94+
return rt;
95+
}
96+
root = parse_component(data);
97+
return root;
98+
}
99+
return __pack(data);
100+
},
101+
ToMCNBT: function (data) {
102+
103+
}
104+
}
105+
8106
class MCNBT {
9107
constructor(type = 'default', value = null) {
10108
this._type = type;
@@ -458,4 +556,4 @@ function NBTFILE_SAVER() {
458556
return bufs.getBuffer();
459557
}
460558
}
461-
module.exports = { NBTFILE_PARSER, NBTFILE_SAVER, MCNBT }
559+
module.exports = { NBTFILE_PARSER, NBTFILE_SAVER, MCNBT,NBTFILE_SNBT_TOOL }

nbtfile_lib_tester.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
const { NBTFILE_PARSER,NBTFILE_SAVER,MCNBT } = require("./nbtfile_lib.js");
1+
const { NBTFILE_PARSER, NBTFILE_SAVER, MCNBT, NBTFILE_SNBT_TOOL } = require("./nbtfile_lib.js");
22
const fs = require("fs");
33
const { NBTools } = require("./NBTool.js");
44
let tester = new NBTFILE_PARSER();
55
let saver = new NBTFILE_SAVER();
66
tester.try_load_file_with_gzip("./sample/nbtfile/player.dat");
77
// return false;
88
let res = tester.parse();
9-
let snbt = NBTools.FromMCNBT(res);
9+
let snbt = NBTFILE_SNBT_TOOL.FromMCNBT(res);
1010
let snbt_text = NBTools.ToString(snbt);
1111
saver.fromMCNBT(res);
1212

0 commit comments

Comments
 (0)