forked from TORO-Server/marumasign-cmd-generator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
76 lines (65 loc) · 2.62 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Get リクエスト
// json を return する
function get(url) {
return new Promise((resolve) => {
fetch(url)
.then((res) => res.json())
.then((json) => resolve(json))
.catch(() => resolve(undefined));
});
}
// アドレス、大きさ、位置、回転 のデータから
// 看板に書かれる文字を生成して
// それを return する
function createSignText(url, width, height, x, y, z, rx, ry, rz) {
const texts = [url, x, y, z, height, width, rx, ry, rz];
return texts.join("|");
}
// giveコマンドに変換して
// それを return する
function toCommand(signText, version) {
const maxLength = 15;
let texts = [];
for (let i = 0; i < signText.length; i += maxLength)
texts.push(signText.substr(i, maxLength));
if (version == "1.20" || version == null) {
texts = texts.map((text) => `'["${text}"]'`);
if (texts.length <= 4) {
let front_texts = texts.concat(Array(4).fill(`'[""]'`)).slice(0, 4);
return `/give @p minecraft:oak_sign{BlockEntityTag:{front_text:{messages:[${front_texts}]}}}`;
} else {
let front_texts = texts.concat(Array(4).fill(`'[""]'`)).slice(0, 4);
let back_texts = texts.concat(Array(8).fill(`'[""]'`)).slice(4, 8);
return `/give @p minecraft:oak_sign{BlockEntityTag:{front_text:{messages:[${front_texts}]},back_text:{messages:[${back_texts}]}}}`;
}
} else {
texts = texts.map((text, index) => `Text${index + 1}:'["${text}"]'`);
return `/give @p minecraft:oak_sign{BlockEntityTag:{${texts}}}`;
}
}
async function getShortURL(url) {
let shorturl = localStorage.getItem(url);
// ローカルストレージに短縮したURLがキャッシュされていたら
// それを return する
if (shorturl) return shorturl;
// https://is.gd/ の URL短縮APIを利用して 短縮URLを生成
json = await get(
`https://is.gd/create.php?format=json&url=${encodeURIComponent(url)}`
);
// 送られてきた json に shorturl があるかどうか チェック
// shorturl の値を置き換える
shorturl = json.shorturl;
if (shorturl) {
//もし あったら
// ローカルストレージを利用して 短縮したURLをキャッシュ
localStorage.setItem(url, shorturl);
// ログを送信
console.log(`URLを短縮しました: ${url}`);
return shorturl;
} else {
//もし なかったら
//エラーのログを送信
console.error("URLを短縮できませんでした");
return url;
}
}