Skip to content

Commit 73285c3

Browse files
committed
updates
1 parent e5a266e commit 73285c3

File tree

5 files changed

+353
-0
lines changed

5 files changed

+353
-0
lines changed

docs/MinecraftApi/dependencies.md

+183
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,188 @@ This documents all scripting API modules dependencies, including manifest depend
2121

2222
---
2323

24+
## Preview 1.19.60.24
25+
26+
### Beta API modules
27+
28+
- **@minecraft/server**
29+
30+
<!-- Minecraft: **1.1.0-beta** -->
31+
32+
Dependencies:
33+
34+
```json
35+
{
36+
"module_name": "@minecraft/server",
37+
"version": "1.1.0-beta"
38+
}
39+
```
40+
41+
npm: [**1.1.0-beta.1.19.60-preview.24**](https://www.npmjs.com/package/@minecraft/server/v/1.1.0-beta.1.19.60-preview.24)
42+
43+
```
44+
npm i @minecraft/[email protected] --save-exact
45+
```
46+
47+
- **@minecraft/server-ui**
48+
49+
<!-- Minecraft: **1.0.0-beta** -->
50+
51+
Dependencies:
52+
53+
```json
54+
{
55+
"module_name": "@minecraft/server-ui",
56+
"version": "1.0.0-beta"
57+
},
58+
{
59+
"module_name": "@minecraft/server",
60+
"version": "1.1.0-beta"
61+
}
62+
```
63+
64+
npm: [**1.0.0-beta.1.19.60-preview.24**](https://www.npmjs.com/package/@minecraft/server-ui/v/1.0.0-beta.1.19.60-preview.24)
65+
66+
```
67+
npm i @minecraft/[email protected] --save-exact
68+
```
69+
70+
- **@minecraft/server-admin**
71+
72+
<!-- Minecraft: **1.0.0-beta** -->
73+
74+
Dependencies:
75+
76+
```json
77+
{
78+
"module_name": "@minecraft/server-admin",
79+
"version": "1.0.0-beta"
80+
}
81+
```
82+
83+
npm: [**1.0.0-beta.1.19.60-preview.24**](https://www.npmjs.com/package/@minecraft/server-admin/v/1.0.0-beta.1.19.60-preview.24)
84+
85+
```
86+
npm i @minecraft/[email protected] --save-exact
87+
```
88+
89+
- **@minecraft/server-gametest**
90+
91+
<!-- Minecraft: **1.0.0-beta** -->
92+
93+
Dependencies:
94+
95+
```json
96+
{
97+
"module_name": "@minecraft/server-gametest",
98+
"version": "1.0.0-beta"
99+
},
100+
{
101+
"module_name": "@minecraft/server",
102+
"version": "1.0.0-beta"
103+
}
104+
```
105+
106+
npm: [**1.0.0-beta.1.19.60-preview.24**](https://www.npmjs.com/package/@minecraft/server-gametest/v/1.0.0-beta.1.19.60-preview.24)
107+
108+
```
109+
npm i @minecraft/[email protected] --save-exact
110+
```
111+
112+
- **@minecraft/server-net**
113+
114+
<!-- Minecraft: **1.0.0-beta** -->
115+
116+
Dependencies:
117+
118+
```json
119+
{
120+
"module_name": "@minecraft/server-net",
121+
"version": "1.0.0-beta"
122+
}
123+
```
124+
125+
npm: [**1.0.0-beta.1.19.60-preview.24**](https://www.npmjs.com/package/@minecraft/server-net/v/1.0.0-beta.1.19.60-preview.24)
126+
127+
```
128+
npm i @minecraft/[email protected] --save-exact
129+
```
130+
131+
### Stable API modules
132+
133+
- **@minecraft/server**
134+
135+
> ⚠️Warning: This script module is not compatible with Beta API script modules
136+
137+
<!-- Minecraft: **1.0.0** -->
138+
139+
Dependencies:
140+
141+
```json
142+
{
143+
"module_name": "@minecraft/server",
144+
"version": "1.0.0"
145+
}
146+
```
147+
148+
npm: [**1.0.0**](https://www.npmjs.com/package/@minecraft/server/v/1.0.0)
149+
150+
```
151+
npm i @minecraft/[email protected] --save-exact
152+
```
153+
154+
- **mojang-minecraft**
155+
156+
> ⚠️Warning: This module is not compatible with script modules version 0.1.0 or above
157+
158+
<!-- Minecraft: **0.1.0** -->
159+
160+
Dependencies:
161+
162+
```json
163+
{
164+
"module_name": "mojang-minecraft",
165+
"version": "0.1.0"
166+
}
167+
```
168+
169+
npm: [**0.1.6**](https://www.npmjs.com/package/@types/mojang-minecraft-ui/v/0.1.0)
170+
171+
```
172+
npm i @types/[email protected] --save-exact
173+
```
174+
175+
- **mojang-minecraft-ui**
176+
177+
> ⚠️Warning: This module is not compatible with script modules version 0.1.0 or above
178+
179+
<!-- Minecraft: **0.1.0** -->
180+
181+
Dependencies:
182+
183+
```json
184+
{
185+
"module_name": "mojang-minecraft-ui",
186+
"version": "0.1.0"
187+
},
188+
{
189+
"module_name": "mojang-minecraft",
190+
"version": "0.1.0"
191+
}
192+
```
193+
194+
npm: [**0.1.0**](https://www.npmjs.com/package/@types/mojang-minecraft-ui/v/0.1.0)
195+
196+
```
197+
npm i @types/[email protected]
198+
```
199+
200+
---
201+
24202
## Preview 1.19.60.23
25203

204+
<details>
205+
26206
### Beta API modules
27207

28208
- **@minecraft/server**
@@ -197,8 +377,11 @@ This documents all scripting API modules dependencies, including manifest depend
197377
npm i @types/[email protected]
198378
```
199379

380+
</details>
381+
200382
---
201383

384+
202385
## Release 1.19.50
203386

204387
### Beta API modules

scripts/page-form/README.md

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Page Form
2+
3+
split buttons to different forms
4+
5+
![video](./example.gif)
6+
7+
Dependencies:
8+
- [`force-show`](../force-show/index.js)
9+
10+
Example:
11+
12+
```js
13+
import { Player, world } from "@minecraft/server";
14+
import FormatActionFormButtons from "page-form";
15+
16+
world.events.itemUse.subscribe(({ source }) => {
17+
if (source instanceof Player)
18+
FormatActionFormButtons(
19+
{
20+
titleText: "title",
21+
bodyText: "body",
22+
buttons: [
23+
{ text: "text" },
24+
{ text: "text" },
25+
{ text: "text" },
26+
{ text: "text" },
27+
{ text: "text" },
28+
],
29+
},
30+
3,
31+
source
32+
).then(console.warn);
33+
});
34+
35+
```

scripts/page-form/example.gif

5.32 MB
Loading

scripts/page-form/index.js

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import { Player } from "@minecraft/server";
2+
import { ActionFormData } from "@minecraft/server-ui";
3+
import { forceShow } from "force-show";
4+
5+
6+
/**
7+
* @typedef ActionFormDataButton
8+
* @property {string} text
9+
* @property {string} [iconPath]
10+
*/
11+
/**
12+
* @typedef formData
13+
* @property {string} bodyText
14+
* @property {string} titleText
15+
* @property {ActionFormDataButton[]} buttons
16+
*/
17+
/**
18+
* Format action form data buttons, if number of buttons excceeds it redirects to another form.
19+
* @param {number} pageLimit limit the number of buttons can exist in 1 form
20+
* @param {formData} formData Action form data in JSON form
21+
* @param {Player} showPlayer Show player with generated form by the function
22+
* @returns {Promise<number>}
23+
*/
24+
function FormatActionFormButtons (formData, pageLimit, showPlayer) {
25+
/**
26+
* @type {ActionFormData[]}
27+
*/
28+
const actionForms = [];
29+
/**
30+
* @type {number[]}
31+
*/
32+
const buttonsInForms = [];
33+
const { buttons, bodyText, titleText } = formData;
34+
const numberOfForms = intDivide(buttons.length, pageLimit) - 1;
35+
36+
if (pageLimit > 1) {
37+
for (let pageIndex = 0; pageIndex <= numberOfForms; pageIndex++) {
38+
const form = new ActionFormData();
39+
let numberOfButtons = 0;
40+
form.body(bodyText);
41+
form.title(titleText);
42+
43+
for (let index = 0; index < pageLimit; index++) {
44+
const button = buttons[index];
45+
if (!button) continue;
46+
47+
if (typeof button.iconPath !== 'undefined') form.button(button.text, button.iconPath);
48+
else form.button(button.text);
49+
numberOfButtons++;
50+
}
51+
52+
if (pageIndex !== 0) form.button('Previous', 'textures/blocks/wool_colored_silver');
53+
if (pageIndex !== numberOfForms) form.button('Next', 'textures/blocks/wool_colored_lime');
54+
55+
actionForms.push(form);
56+
buttonsInForms.push(numberOfButtons);
57+
}
58+
}
59+
else {
60+
const form = new ActionFormData();
61+
form.body(bodyText);
62+
form.title(titleText);
63+
64+
actionForms.push(form);
65+
buttonsInForms.push(0);
66+
};
67+
68+
return ShowPlayerActionForm(actionForms, showPlayer, 0, buttonsInForms);
69+
};
70+
71+
/**
72+
* @param {ActionFormData[]} formDatas
73+
* @param {Player} player
74+
* @param {number} formIndex
75+
* @param {number[]} buttonsInForms
76+
* @returns {Promise<number>}
77+
*/
78+
async function ShowPlayerActionForm (formDatas, player, formIndex, buttonsInForms) {
79+
const response = await forceShow(player, formDatas[formIndex]);
80+
const lastButtonIndex = buttonsInForms[formIndex];
81+
const isFirstForm = formIndex === 0;
82+
const isLastForm = formIndex === buttonsInForms.length - 1;
83+
if (response.canceled) return;
84+
85+
if (response.selection === lastButtonIndex && (isFirstForm || (!isFirstForm && !isLastForm))) {
86+
return await ShowPlayerActionForm(formDatas, player, formIndex + 1, buttonsInForms);
87+
}
88+
else if (response.selection === lastButtonIndex && isLastForm) {
89+
return await ShowPlayerActionForm(formDatas, player, formIndex - 1, buttonsInForms);
90+
}
91+
else if (response.selection === (lastButtonIndex - 1) && !isFirstForm && !isLastForm) {
92+
return await ShowPlayerActionForm(formDatas, player, formIndex - 1, buttonsInForms);
93+
}
94+
else {
95+
let { selection } = response;
96+
97+
for (let index = 0; index <= (formIndex - 1); index++) {
98+
selection += buttonsInForms[index];
99+
};
100+
101+
return selection;
102+
};
103+
};
104+
105+
/**
106+
* @param {number} a
107+
* @param {number} b
108+
*/
109+
function intDivide (a, b) {
110+
const result = a / b;
111+
return Math.floor(result) + (result % 1 !== 0 ? 1 : 0);
112+
};
113+
114+
export default FormatActionFormButtons;

scripts/page-form/tests.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Player, world } from "@minecraft/server";
2+
import FormatActionFormButtons from "page-form";
3+
4+
world.events.itemUse.subscribe(({ source }) => {
5+
if (source instanceof Player)
6+
FormatActionFormButtons(
7+
{
8+
titleText: "title",
9+
bodyText: "body",
10+
buttons: [
11+
{ text: "text" },
12+
{ text: "text" },
13+
{ text: "text" },
14+
{ text: "text" },
15+
{ text: "text" },
16+
],
17+
},
18+
3,
19+
source
20+
).then(console.warn);
21+
});

0 commit comments

Comments
 (0)