sapdon 3.0.3 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/README.md +11 -3
  2. package/doc/api.md +2 -2
  3. package/doc/oc/index.md +0 -0
  4. package/doc/sapdon-ts.md +7 -5
  5. package/package.json +18 -19
  6. package/{dist/cli/dev-server/server.d.ts → prod/cli/index.d.ts} +9 -3
  7. package/prod/cli/index.js +1 -0
  8. package/prod/cli/start.js +1428 -0
  9. package/{dist → prod}/core/index.d.ts +2325 -1643
  10. package/prod/core/index.js +59017 -0
  11. package/{dist → prod}/oc/index.d.ts +3 -3
  12. package/prod/oc/index.js +1 -0
  13. package/prod/utils/index.d.ts +41 -0
  14. package/prod/utils/index.js +1 -0
  15. package/dist/cli/build.d.ts +0 -7
  16. package/dist/cli/build.js +0 -234
  17. package/dist/cli/dev-server/client.d.ts +0 -2
  18. package/dist/cli/dev-server/client.js +0 -21
  19. package/dist/cli/dev-server/config.d.ts +0 -3
  20. package/dist/cli/dev-server/config.js +0 -3
  21. package/dist/cli/dev-server/handles.d.ts +0 -4
  22. package/dist/cli/dev-server/handles.js +0 -5
  23. package/dist/cli/dev-server/hmr.d.ts +0 -1
  24. package/dist/cli/dev-server/hmr.js +0 -13
  25. package/dist/cli/dev-server/index.d.ts +0 -4
  26. package/dist/cli/dev-server/index.js +0 -17
  27. package/dist/cli/dev-server/server.js +0 -59
  28. package/dist/cli/dev-server/syncFiles.d.ts +0 -3
  29. package/dist/cli/dev-server/syncFiles.js +0 -37
  30. package/dist/cli/index.d.ts +0 -23
  31. package/dist/cli/index.js +0 -1
  32. package/dist/cli/init.d.ts +0 -9
  33. package/dist/cli/init.js +0 -80
  34. package/dist/cli/load.d.ts +0 -3
  35. package/dist/cli/load.js +0 -94
  36. package/dist/cli/start.d.ts +0 -2
  37. package/dist/cli/start.js +0 -2
  38. package/dist/cli/tools/textureSet.d.ts +0 -13
  39. package/dist/cli/tools/textureSet.js +0 -103
  40. package/dist/cli/utils.d.ts +0 -13
  41. package/dist/cli/utils.js +0 -89
  42. package/dist/core/addon/biome.d.ts +0 -22
  43. package/dist/core/addon/biome.js +0 -27
  44. package/dist/core/addon/block/block.d.ts +0 -41
  45. package/dist/core/addon/block/block.js +0 -46
  46. package/dist/core/addon/controllers/animationController.d.ts +0 -43
  47. package/dist/core/addon/controllers/animationController.js +0 -73
  48. package/dist/core/addon/entity/clientEntity.d.ts +0 -107
  49. package/dist/core/addon/entity/clientEntity.js +0 -149
  50. package/dist/core/addon/entity/entity.d.ts +0 -42
  51. package/dist/core/addon/entity/entity.js +0 -50
  52. package/dist/core/addon/feature/oreFeature.d.ts +0 -19
  53. package/dist/core/addon/feature/oreFeature.js +0 -24
  54. package/dist/core/addon/featureRule.d.ts +0 -20
  55. package/dist/core/addon/featureRule.js +0 -25
  56. package/dist/core/addon/item/attachable.d.ts +0 -94
  57. package/dist/core/addon/item/attachable.js +0 -134
  58. package/dist/core/addon/item/item.d.ts +0 -19
  59. package/dist/core/addon/item/item.js +0 -26
  60. package/dist/core/addon/manifest.d.ts +0 -49
  61. package/dist/core/addon/manifest.js +0 -65
  62. package/dist/core/addon/menuCategory.d.ts +0 -6
  63. package/dist/core/addon/menuCategory.js +0 -7
  64. package/dist/core/addon/recipe/baseRecipe.d.ts +0 -12
  65. package/dist/core/addon/recipe/baseRecipe.js +0 -23
  66. package/dist/core/addon/recipe/data.d.ts +0 -66
  67. package/dist/core/addon/recipe/data.js +0 -74
  68. package/dist/core/addon/recipe/furnace.d.ts +0 -17
  69. package/dist/core/addon/recipe/furnace.js +0 -43
  70. package/dist/core/addon/recipe/shaped.d.ts +0 -26
  71. package/dist/core/addon/recipe/shaped.js +0 -53
  72. package/dist/core/addon/recipe/shapeless.d.ts +0 -18
  73. package/dist/core/addon/recipe/shapeless.js +0 -36
  74. package/dist/core/biome/biome.d.ts +0 -14
  75. package/dist/core/biome/biome.js +0 -23
  76. package/dist/core/biome/biomeComponent.d.ts +0 -46
  77. package/dist/core/biome/biomeComponent.js +0 -77
  78. package/dist/core/block/basicBlock.d.ts +0 -48
  79. package/dist/core/block/basicBlock.js +0 -105
  80. package/dist/core/block/block.d.ts +0 -32
  81. package/dist/core/block/block.js +0 -92
  82. package/dist/core/block/blockComponent.d.ts +0 -187
  83. package/dist/core/block/blockComponent.js +0 -500
  84. package/dist/core/block/cropBlock.d.ts +0 -4
  85. package/dist/core/block/cropBlock.js +0 -27
  86. package/dist/core/block/geometryBlock.d.ts +0 -12
  87. package/dist/core/block/geometryBlock.js +0 -16
  88. package/dist/core/block/oreBlock.d.ts +0 -9
  89. package/dist/core/block/oreBlock.js +0 -25
  90. package/dist/core/block/rotatableBlock.d.ts +0 -27
  91. package/dist/core/block/rotatableBlock.js +0 -107
  92. package/dist/core/block/tileBlock.d.ts +0 -17
  93. package/dist/core/block/tileBlock.js +0 -125
  94. package/dist/core/entity/basicEntity.d.ts +0 -111
  95. package/dist/core/entity/basicEntity.js +0 -170
  96. package/dist/core/entity/behavior/followMob.d.ts +0 -12
  97. package/dist/core/entity/behavior/followMob.js +0 -35
  98. package/dist/core/entity/behavior/followParent.d.ts +0 -7
  99. package/dist/core/entity/behavior/followParent.js +0 -15
  100. package/dist/core/entity/behavior/randomStroll.d.ts +0 -31
  101. package/dist/core/entity/behavior/randomStroll.js +0 -63
  102. package/dist/core/entity/behavior/tempt.d.ts +0 -73
  103. package/dist/core/entity/behavior/tempt.js +0 -134
  104. package/dist/core/entity/bundles/basicBundle.d.ts +0 -13
  105. package/dist/core/entity/bundles/basicBundle.js +0 -45
  106. package/dist/core/entity/clientEntity.d.ts +0 -20
  107. package/dist/core/entity/clientEntity.js +0 -37
  108. package/dist/core/entity/componets/entityComponet.d.ts +0 -202
  109. package/dist/core/entity/componets/entityComponet.js +0 -347
  110. package/dist/core/entity/data/nativeEntityData.d.ts +0 -9
  111. package/dist/core/entity/data/nativeEntityData.js +0 -38
  112. package/dist/core/entity/entity.d.ts +0 -15
  113. package/dist/core/entity/entity.js +0 -18
  114. package/dist/core/entity/nativeEntity.d.ts +0 -8
  115. package/dist/core/entity/nativeEntity.js +0 -28
  116. package/dist/core/entity/navigation/walk.d.ts +0 -23
  117. package/dist/core/entity/navigation/walk.js +0 -56
  118. package/dist/core/entity/projectile.d.ts +0 -3
  119. package/dist/core/entity/projectile.js +0 -7
  120. package/dist/core/factory/biomeFactory.d.ts +0 -4
  121. package/dist/core/factory/biomeFactory.js +0 -13
  122. package/dist/core/factory/blockFactory.d.ts +0 -34
  123. package/dist/core/factory/blockFactory.js +0 -143
  124. package/dist/core/factory/entityFactory.d.ts +0 -17
  125. package/dist/core/factory/entityFactory.js +0 -75
  126. package/dist/core/factory/featureFactory.d.ts +0 -6
  127. package/dist/core/factory/featureFactory.js +0 -23
  128. package/dist/core/factory/itemExtra.d.ts +0 -8
  129. package/dist/core/factory/itemExtra.js +0 -9
  130. package/dist/core/factory/itemFactory.d.ts +0 -27
  131. package/dist/core/factory/itemFactory.js +0 -112
  132. package/dist/core/factory/recipeFactory.d.ts +0 -18
  133. package/dist/core/factory/recipeFactory.js +0 -39
  134. package/dist/core/factory/uiFactory.d.ts +0 -12
  135. package/dist/core/factory/uiFactory.js +0 -32
  136. package/dist/core/feature/oreFeature.d.ts +0 -10
  137. package/dist/core/feature/oreFeature.js +0 -11
  138. package/dist/core/feature-rule/condition/biomeFilter.d.ts +0 -26
  139. package/dist/core/feature-rule/condition/biomeFilter.js +0 -36
  140. package/dist/core/feature-rule/condition/featureConditions.d.ts +0 -27
  141. package/dist/core/feature-rule/condition/featureConditions.js +0 -37
  142. package/dist/core/feature-rule/distribution/coordinateDistribution.d.ts +0 -17
  143. package/dist/core/feature-rule/distribution/coordinateDistribution.js +0 -23
  144. package/dist/core/feature-rule/distribution/featureDistribution.d.ts +0 -31
  145. package/dist/core/feature-rule/distribution/featureDistribution.js +0 -41
  146. package/dist/core/feature-rule/featureRule.d.ts +0 -17
  147. package/dist/core/feature-rule/featureRule.js +0 -26
  148. package/dist/core/index.js +0 -1
  149. package/dist/core/item/armor.d.ts +0 -21
  150. package/dist/core/item/armor.js +0 -90
  151. package/dist/core/item/attachable.d.ts +0 -6
  152. package/dist/core/item/attachable.js +0 -26
  153. package/dist/core/item/food.d.ts +0 -24
  154. package/dist/core/item/food.js +0 -38
  155. package/dist/core/item/item.d.ts +0 -36
  156. package/dist/core/item/item.js +0 -69
  157. package/dist/core/item/itemComponents.d.ts +0 -113
  158. package/dist/core/item/itemComponents.js +0 -225
  159. package/dist/core/registry.d.ts +0 -12
  160. package/dist/core/registry.js +0 -16
  161. package/dist/core/texture.d.ts +0 -18
  162. package/dist/core/texture.js +0 -38
  163. package/dist/core/ui/buttonMapping.d.ts +0 -97
  164. package/dist/core/ui/buttonMapping.js +0 -132
  165. package/dist/core/ui/dataBindingObject.d.ts +0 -97
  166. package/dist/core/ui/dataBindingObject.js +0 -134
  167. package/dist/core/ui/elements/button.d.ts +0 -21
  168. package/dist/core/ui/elements/button.js +0 -101
  169. package/dist/core/ui/elements/collectionPanel.d.ts +0 -12
  170. package/dist/core/ui/elements/collectionPanel.js +0 -53
  171. package/dist/core/ui/elements/grid.d.ts +0 -8
  172. package/dist/core/ui/elements/grid.js +0 -33
  173. package/dist/core/ui/elements/image.d.ts +0 -13
  174. package/dist/core/ui/elements/image.js +0 -55
  175. package/dist/core/ui/elements/label.d.ts +0 -14
  176. package/dist/core/ui/elements/label.js +0 -61
  177. package/dist/core/ui/elements/panel.d.ts +0 -11
  178. package/dist/core/ui/elements/panel.js +0 -49
  179. package/dist/core/ui/elements/scrollingPanel.d.ts +0 -14
  180. package/dist/core/ui/elements/scrollingPanel.js +0 -59
  181. package/dist/core/ui/elements/stackPanel.d.ts +0 -14
  182. package/dist/core/ui/elements/stackPanel.js +0 -37
  183. package/dist/core/ui/elements/uiElement.d.ts +0 -53
  184. package/dist/core/ui/elements/uiElement.js +0 -129
  185. package/dist/core/ui/properties/control.d.ts +0 -214
  186. package/dist/core/ui/properties/control.js +0 -286
  187. package/dist/core/ui/properties/dataBinding.d.ts +0 -6
  188. package/dist/core/ui/properties/dataBinding.js +0 -16
  189. package/dist/core/ui/properties/factory.d.ts +0 -37
  190. package/dist/core/ui/properties/factory.js +0 -62
  191. package/dist/core/ui/properties/gridProp.d.ts +0 -65
  192. package/dist/core/ui/properties/gridProp.js +0 -90
  193. package/dist/core/ui/properties/input.d.ts +0 -97
  194. package/dist/core/ui/properties/input.js +0 -134
  195. package/dist/core/ui/properties/layout.d.ts +0 -105
  196. package/dist/core/ui/properties/layout.js +0 -145
  197. package/dist/core/ui/properties/scrollView.d.ts +0 -105
  198. package/dist/core/ui/properties/scrollView.js +0 -145
  199. package/dist/core/ui/properties/sound.d.ts +0 -47
  200. package/dist/core/ui/properties/sound.js +0 -66
  201. package/dist/core/ui/properties/sprite.d.ts +0 -161
  202. package/dist/core/ui/properties/sprite.js +0 -222
  203. package/dist/core/ui/properties/text.d.ts +0 -135
  204. package/dist/core/ui/properties/text.js +0 -187
  205. package/dist/core/ui/registry/uiSystemRegistry.d.ts +0 -8
  206. package/dist/core/ui/registry/uiSystemRegistry.js +0 -26
  207. package/dist/core/ui/systems/chest.d.ts +0 -5
  208. package/dist/core/ui/systems/chest.js +0 -21
  209. package/dist/core/ui/systems/containerUISystem.d.ts +0 -67
  210. package/dist/core/ui/systems/containerUISystem.js +0 -214
  211. package/dist/core/ui/systems/guidebook.d.ts +0 -9
  212. package/dist/core/ui/systems/guidebook.js +0 -206
  213. package/dist/core/ui/systems/serverForm.d.ts +0 -13
  214. package/dist/core/ui/systems/serverForm.js +0 -116
  215. package/dist/core/ui/systems/system.d.ts +0 -16
  216. package/dist/core/ui/systems/system.js +0 -37
  217. package/dist/oc/index.js +0 -1
  218. package/doc/cli.md +0 -24
  219. /package/doc/hello_sapdon/{sapdon/344/275/277/347/224/250/346/225/231/347/250/213.md" → hello_sapdon.md} +0 -0
@@ -1,61 +0,0 @@
1
- import { Control } from "../properties/control.js";
2
- import { DataBinding } from "../properties/dataBinding.js";
3
- import { Factory } from "../properties/factory.js";
4
- import { Layout } from "../properties/layout.js";
5
- import { Text } from "../properties/text.js";
6
- import { UIElement } from "./uiElement.js";
7
- export class Label extends UIElement {
8
- constructor(id, template) {
9
- super(id, "label", template);
10
- this.text = new Text();
11
- this.control = new Control();
12
- this.layout = new Layout();
13
- this.dataBinding = new DataBinding();
14
- this.factory = new Factory();
15
- }
16
- setLayout(layout) {
17
- if (!(layout instanceof Layout))
18
- new Error("参数需要Layout类");
19
- this.layout = layout;
20
- return this;
21
- }
22
- setText(text) {
23
- this.text = text;
24
- return this;
25
- }
26
- serialize() {
27
- //合并属性
28
- // 复制Text的属性
29
- for (const key in this.text) {
30
- if (this.text.hasOwnProperty(key)) {
31
- this.properties.set(key, this.text[key]);
32
- }
33
- }
34
- // 复制Layout的属性
35
- for (const key in this.layout) {
36
- if (this.layout.hasOwnProperty(key)) {
37
- this.properties.set(key, this.layout[key]);
38
- }
39
- }
40
- // 复制DataBinding的属性
41
- for (const key in this.dataBinding) {
42
- if (this.dataBinding.hasOwnProperty(key)) {
43
- this.properties.set(key, this.dataBinding[key]);
44
- }
45
- }
46
- // 复制Factory的属性
47
- for (const key in this.factory) {
48
- if (this.factory.hasOwnProperty(key)) {
49
- this.properties.set(key, this.factory[key]);
50
- }
51
- }
52
- // 复制Control的属性
53
- for (const key in this.control) {
54
- if (this.control.hasOwnProperty(key)) {
55
- this.properties.set(key, this.control[key]);
56
- }
57
- }
58
- // 调用父类的serialize方法
59
- return super.serialize();
60
- }
61
- }
@@ -1,11 +0,0 @@
1
- export class Panel extends UIElement {
2
- constructor(id: any, template: any);
3
- layout: Layout;
4
- dataBinding: DataBinding;
5
- factory: Factory;
6
- setLayout(layout: any): this;
7
- }
8
- import { UIElement } from "./uiElement.js";
9
- import { Layout } from "../properties/layout.js";
10
- import { DataBinding } from "../properties/dataBinding.js";
11
- import { Factory } from "../properties/factory.js";
@@ -1,49 +0,0 @@
1
- import { Control } from "../properties/control.js";
2
- import { DataBinding } from "../properties/dataBinding.js";
3
- import { Factory } from "../properties/factory.js";
4
- import { Layout } from "../properties/layout.js";
5
- import { UIElement } from "./uiElement.js";
6
- export class Panel extends UIElement {
7
- constructor(id, template) {
8
- super(id, "panel", template);
9
- this.control = new Control();
10
- this.layout = new Layout();
11
- this.dataBinding = new DataBinding();
12
- this.factory = new Factory();
13
- }
14
- setLayout(layout) {
15
- if (!(layout instanceof Layout))
16
- new Error("参数需要Layout类");
17
- this.layout = layout;
18
- return this;
19
- }
20
- serialize() {
21
- //序列化
22
- // 复制Layout的属性
23
- for (const key in this.layout) {
24
- if (this.layout.hasOwnProperty(key)) {
25
- this.properties.set(key, this.layout[key]);
26
- }
27
- }
28
- // 复制DataBinding的属性
29
- for (const key in this.dataBinding) {
30
- if (this.dataBinding.hasOwnProperty(key)) {
31
- this.properties.set(key, this.dataBinding[key]);
32
- }
33
- }
34
- // 复制Factory的属性
35
- for (const key in this.factory) {
36
- if (this.factory.hasOwnProperty(key)) {
37
- this.properties.set(key, this.factory[key]);
38
- }
39
- }
40
- // 复制Control的属性
41
- for (const key in this.control) {
42
- if (this.control.hasOwnProperty(key)) {
43
- this.properties.set(key, this.control[key]);
44
- }
45
- }
46
- // 调用父类的serialize方法
47
- return super.serialize();
48
- }
49
- }
@@ -1,14 +0,0 @@
1
- export class ScrollingPanel extends UIElement {
2
- constructor(id: any, template: any);
3
- input: Input;
4
- scrollView: ScrollView;
5
- layout: Layout;
6
- dataBinding: DataBinding;
7
- factory: Factory;
8
- }
9
- import { UIElement } from "./uiElement.js";
10
- import { Input } from "../properties/input.js";
11
- import { ScrollView } from "../properties/scrollView.js";
12
- import { Layout } from "../properties/layout.js";
13
- import { DataBinding } from "../properties/dataBinding.js";
14
- import { Factory } from "../properties/factory.js";
@@ -1,59 +0,0 @@
1
- import { Control } from "../properties/control.js";
2
- import { DataBinding } from "../properties/dataBinding.js";
3
- import { Factory } from "../properties/factory.js";
4
- import { Input } from "../properties/input.js";
5
- import { Layout } from "../properties/layout.js";
6
- import { ScrollView } from "../properties/scrollView.js";
7
- import { UIElement } from "./uiElement.js";
8
- export class ScrollingPanel extends UIElement {
9
- constructor(id, template) {
10
- super(id, "scroll_view", template);
11
- this.input = new Input();
12
- this.scrollView = new ScrollView();
13
- this.control = new Control();
14
- this.layout = new Layout();
15
- this.dataBinding = new DataBinding();
16
- this.factory = new Factory();
17
- }
18
- serialize() {
19
- //合并属性
20
- // 复制Input的属性
21
- for (const key in this.input) {
22
- if (this.input.hasOwnProperty(key)) {
23
- this.properties.set(key, this.input[key]);
24
- }
25
- }
26
- // 复制scrollView的属性
27
- for (const key in this.scrollView) {
28
- if (this.scrollView.hasOwnProperty(key)) {
29
- this.properties.set(key, this.scrollView[key]);
30
- }
31
- }
32
- // 复制Layout的属性
33
- for (const key in this.layout) {
34
- if (this.layout.hasOwnProperty(key)) {
35
- this.properties.set(key, this.layout[key]);
36
- }
37
- }
38
- // 复制DataBinding的属性
39
- for (const key in this.dataBinding) {
40
- if (this.dataBinding.hasOwnProperty(key)) {
41
- this.properties.set(key, this.dataBinding[key]);
42
- }
43
- }
44
- // 复制Factory的属性
45
- for (const key in this.factory) {
46
- if (this.factory.hasOwnProperty(key)) {
47
- this.properties.set(key, this.factory[key]);
48
- }
49
- }
50
- // 复制Control的属性
51
- for (const key in this.control) {
52
- if (this.control.hasOwnProperty(key)) {
53
- this.properties.set(key, this.control[key]);
54
- }
55
- }
56
- // 调用父类的serialize方法
57
- return super.serialize();
58
- }
59
- }
@@ -1,14 +0,0 @@
1
- export class StackPanel extends Panel {
2
- type: string;
3
- orientation: string;
4
- stackNum: number;
5
- addStack(size: any, content: any, debug?: boolean): this;
6
- /**
7
- * Possible values:
8
- vertical
9
- horizontal
10
- * @param {*} orientation
11
- */
12
- setOrientation(orientation: any): this;
13
- }
14
- import { Panel } from "./panel.js";
@@ -1,37 +0,0 @@
1
- import { Layout } from "../properties/layout.js";
2
- import { Panel } from "./panel.js";
3
- export class StackPanel extends Panel {
4
- constructor(id, template) {
5
- super(id, template);
6
- this.type = "stack_panel";
7
- this.orientation = "vertical";
8
- this.stackNum = 0;
9
- //init
10
- this.setLayout(new Layout().setSize(["100%", "100%"]));
11
- }
12
- addStack(size, content, debug = false) {
13
- const stack = new Panel(`stack${this.stackNum}`)
14
- .setLayout(new Layout().setSize(size))
15
- .addControl(content);
16
- if (debug)
17
- stack.enableDebug();
18
- this.addControl(stack);
19
- this.stackNum++;
20
- return this;
21
- }
22
- /**
23
- * Possible values:
24
- vertical
25
- horizontal
26
- * @param {*} orientation
27
- */
28
- setOrientation(orientation) {
29
- this.orientation = orientation;
30
- return this;
31
- }
32
- serialize() {
33
- this.properties.set("type", "stack_panel");
34
- this.properties.set("orientation", this.orientation);
35
- return super.serialize();
36
- }
37
- }
@@ -1,53 +0,0 @@
1
- export class UIElement {
2
- constructor(name: any, type: any, template: any);
3
- type: any;
4
- id: any;
5
- name: any;
6
- control: Control;
7
- properties: Map<any, any>;
8
- variables: Map<any, any>;
9
- modifications: any[];
10
- enableDebug(): this;
11
- setControl(control: any): this;
12
- addControl(control: any): this;
13
- addControls(controls: any): this;
14
- addVariable(name: any, value: any): this;
15
- addProp(name: any, value: any): this;
16
- addModification(modification: any): this;
17
- serialize(): {
18
- [x: number]: any;
19
- };
20
- }
21
- /**
22
- * Modifications ​
23
- To modify JSON UI in a non-intrusive way, you can use the modifications property to modify previously existing JSON UI elements from other packs (usually vanilla JSON UI files). Doing this makes sure only necessary parts are modified unless otherwise intended, to improve compatibility with other packs that modify the JSON UI.
24
-
25
- Modification Description
26
- insert_back insert at end of array
27
- insert_front insert at start of array
28
- insert_after insert after target in array
29
- insert_before insert before target in array
30
- move_back move target to end of array
31
- move_front move target to start of array
32
- move_after move target after second target
33
- move_before move target before second target
34
- swap swap first target with second target
35
- replace replace first target with second target
36
- remove remove target
37
- */
38
- export class Modifications {
39
- static OPERATION: Readonly<{
40
- INSERT_BACK: "insert_back";
41
- INSERT_FRONT: "insert_front";
42
- INSERT_AFTER: "insert_after";
43
- INSERT_BEFORE: "insert_before";
44
- MOVE_BACK: "move_back";
45
- MOVE_FRONT: "move_front";
46
- MOVE_AFTER: "move_after";
47
- MOVE_BEFORE: "move_before";
48
- SWAP: "swap";
49
- REPLACE: "replace";
50
- REMOVE: "remove";
51
- }>;
52
- }
53
- import { Control } from "../properties/control.js";
@@ -1,129 +0,0 @@
1
- /**
2
- * Elements ​
3
- A JSON UI element is the basic form of data within JSON UI. Elements must have a unique name for each namespace so as to not have a conflict with other elements of the same name yet may have different functions.
4
-
5
- Here the element type is label so it will render a text of Hello World when called:
6
-
7
- vanilla/ui/example_file.json
8
-
9
- {
10
- "test_element": {
11
- "type": "label",
12
- "text": "Hello World"
13
- }
14
- }
15
- Types ​
16
- The following are some of the element types, which are possible values for the type property:
17
-
18
- label - for creating text objects
19
- image - for rendering images from a filepath provided
20
- button - for creating interactive and clickable elements
21
- panel - an empty container where you can store all other elements that may overlap to each other
22
- stack_panel - an empty container where you can store all other elements in a stack that doesn't overlap to each other
23
- grid - uses another element as a template, and then renders it repeatedly in multiple rows and columns
24
- factory - renders an element based off of another element, is capable of calling hardcoded values and variables
25
- custom - is paired with another property renderer which renders hardcoded JSON UI elements
26
- screen - elements that are called by the game directly, usually root panel elements
27
- */
28
- import { Control } from "../properties/control.js";
29
- // 基础元素类
30
- export class UIElement {
31
- constructor(name, type, template) {
32
- this.type = type;
33
- this.id = template ? `${name}@${template}` : name;
34
- this.name = name;
35
- this.control = new Control();
36
- this.properties = new Map().set("type", type);
37
- this.variables = new Map();
38
- this.modifications = [];
39
- }
40
- enableDebug() {
41
- this.control.addControl({
42
- "debug_board": {
43
- "type": "image",
44
- "texture": "textures/ui/focus_border_white",
45
- "nineslice_size": 1,
46
- "size": ["100%", "100%"]
47
- }
48
- });
49
- return this;
50
- }
51
- setControl(control) {
52
- this.control = control;
53
- return this;
54
- }
55
- addControl(control) {
56
- //console.log("control: ", control)
57
- if (control instanceof UIElement) {
58
- this.control.addControl(control.serialize());
59
- }
60
- else {
61
- this.control.addControl(control);
62
- }
63
- return this;
64
- }
65
- addControls(controls) {
66
- for (let i in controls) {
67
- this.addControl(controls[i]);
68
- }
69
- return this;
70
- }
71
- addVariable(name, value) {
72
- this.variables.set(`$${name}`, value);
73
- return this;
74
- }
75
- addProp(name, value) {
76
- this.properties.set(name, value);
77
- return this;
78
- }
79
- addModification(modification) {
80
- this.modifications.push({
81
- array_name: modification.array_name,
82
- operation: modification.operation,
83
- value: modification.value
84
- });
85
- this.addProp("modifications", this.modifications);
86
- return this;
87
- }
88
- serialize() {
89
- const json = Object.fromEntries(this.properties);
90
- Object.assign(json, Object.fromEntries(this.variables));
91
- return {
92
- [this.id]: json
93
- };
94
- }
95
- }
96
- //Modifications ​方法
97
- /**
98
- * Modifications ​
99
- To modify JSON UI in a non-intrusive way, you can use the modifications property to modify previously existing JSON UI elements from other packs (usually vanilla JSON UI files). Doing this makes sure only necessary parts are modified unless otherwise intended, to improve compatibility with other packs that modify the JSON UI.
100
-
101
- Modification Description
102
- insert_back insert at end of array
103
- insert_front insert at start of array
104
- insert_after insert after target in array
105
- insert_before insert before target in array
106
- move_back move target to end of array
107
- move_front move target to start of array
108
- move_after move target after second target
109
- move_before move target before second target
110
- swap swap first target with second target
111
- replace replace first target with second target
112
- remove remove target
113
- */
114
- // Modifications操作类型常量类
115
- export class Modifications {
116
- static OPERATION = Object.freeze({
117
- INSERT_BACK: "insert_back",
118
- INSERT_FRONT: "insert_front",
119
- INSERT_AFTER: "insert_after",
120
- INSERT_BEFORE: "insert_before",
121
- MOVE_BACK: "move_back",
122
- MOVE_FRONT: "move_front",
123
- MOVE_AFTER: "move_after",
124
- MOVE_BEFORE: "move_before",
125
- SWAP: "swap",
126
- REPLACE: "replace",
127
- REMOVE: "remove"
128
- });
129
- }
@@ -1,214 +0,0 @@
1
- /**
2
- * Control Class
3
- *
4
- * This class represents a UI control element with various properties and methods to manipulate its state.
5
- *
6
- * Properties:
7
- * - visible: boolean - If the UI element should be visible (default: true)
8
- * - enabled: boolean - If true and if the UI element or any of its children have the locked state then they will be in the locked (default: true)
9
- * - layer: int - Z-Index/Layer (like zindex in CSS) relative to parent element. Higher layers will render above (default: 0)
10
- * - alpha: float - Alpha/transparency of the element. It will only affect the UI element. Its children will be unaffected. (default: 1.0)
11
- * - propagate_alpha: boolean - If alpha should not only apply to the parent if possible but also all its children (default: false)
12
- * - clips_children: boolean - Cuts off visually and interactively everything beyond the boundaries of the UI element (default: false)
13
- * - allow_clipping: boolean - If clips_children works in the UI element. Otherwise, it won't have any effect (default: true)
14
- * - clip_offset: Vector [x, y] - Offset from the start of the clipping (default: [0, 0])
15
- * - clip_state_change_event: string - Event triggered when the clip state changes
16
- * - enable_scissor_test: boolean - Enables scissor test for clipping (default: false)
17
- * - property_bag: object - Property bag contains properties/variables that are more related with the data than the actual structure and look of the UI element
18
- * - selected: boolean - If the text box is selected by default
19
- * - use_child_anchors: boolean - Use the anchor_from and anchor_to of the child of the UI element (default: false)
20
- * - controls: array - For adding children to the element
21
- * - anims: string[] - Array of the animation names
22
- * - disable_anim_fast_forward: boolean - Disables fast-forwarding animations
23
- * - animation_reset_name: string - Name of the animation to reset to
24
- * - ignored: boolean - If the UI element should be ignored (default: false)
25
- * - variables: array or object - A bunch of conditions that change the variables values
26
- * - modifications: array - Allows to modify the UI files of resource packs below (vanilla being the most bottom one)
27
- * - grid_position: Vector [row, column] - Position that the control will take inside the grid. This also allows to modify specific grid items of a hardcoded grid
28
- * - collection_index: int - Index that the control takes in the collection
29
- */
30
- /**
31
- * Control 类
32
- *
33
- * 该类表示一个具有各种属性和方法的 UI 控件元素,用于操作其状态。
34
- *
35
- * 属性:
36
- * - visible: boolean - 控制 UI 元素是否可见(默认值:true)
37
- * - enabled: boolean - 如果为 true,且 UI 元素或其任何子元素处于锁定状态,则它们将被锁定(默认值:true)
38
- * - layer: int - 相对于父元素的 Z-Index/层级(类似于 CSS 中的 zindex)。较高的层级将渲染在上方(默认值:0)
39
- * - alpha: float - 元素的透明度。仅影响 UI 元素本身,其子元素不受影响。如果希望透明度同时应用于父元素和子元素,请使用 propagate_alpha(默认值:1.0)
40
- * - propagate_alpha: boolean - 透明度是否应同时应用于父元素及其所有子元素(默认值:false)
41
- * - clips_children: boolean - 是否在视觉上和交互上裁剪超出 UI 元素边界的内容(默认值:false)
42
- * - allow_clipping: boolean - 是否允许在 UI 元素中启用裁剪。否则,clips_children 将无效(默认值:true)
43
- * - clip_offset: Vector [x, y] - 裁剪起始点的偏移量(默认值:[0, 0])
44
- * - clip_state_change_event: string - 裁剪状态更改时触发的事件
45
- * - enable_scissor_test: boolean - 是否启用裁剪测试(默认值:false)
46
- * - property_bag: object - 属性包,包含与数据相关的属性/变量,而不是 UI 元素的实际结构和外观
47
- * - selected: boolean - 文本框是否默认被选中
48
- * - use_child_anchors: boolean - 是否使用 UI 元素子元素的 anchor_from 和 anchor_to(默认值:false)
49
- * - controls: array - 用于向元素添加子元素
50
- * - anims: string[] - 动画名称数组
51
- * - disable_anim_fast_forward: boolean - 是否禁用动画快进
52
- * - animation_reset_name: string - 重置动画的名称
53
- * - ignored: boolean - 是否忽略该 UI 元素(默认值:false)
54
- * - variables: array 或 object - 一组条件,用于更改变量的值
55
- * - modifications: array - 允许修改资源包中的 UI 文件(最底层为原版资源包)
56
- * - grid_position: Vector [row, column] - 控件在网格中的位置。此属性还允许修改硬编码网格中的特定网格项
57
- * - collection_index: int - 控件在集合中的索引
58
- */
59
- export class Control {
60
- /**
61
- * 设置控件的可见性。
62
- * @param {boolean} visible - 控件是否可见(默认值:true)
63
- * @returns {Control} 返回当前实例以支持链式调用
64
- */
65
- setVisible(visible?: boolean): Control;
66
- visible: boolean | undefined;
67
- /**
68
- * 设置控件的启用状态。
69
- * @param {boolean} enabled - 控件是否启用(默认值:true)
70
- * @returns {Control} 返回当前实例以支持链式调用
71
- */
72
- setEnabled(enabled?: boolean): Control;
73
- enabled: boolean | undefined;
74
- /**
75
- * 设置控件的层级(z-index)。
76
- * @param {number} layer - 要设置的层级(默认值:0)
77
- * @returns {Control} 返回当前实例以支持链式调用
78
- */
79
- setLayer(layer?: number): Control;
80
- layer: number | undefined;
81
- /**
82
- * 设置控件的透明度。
83
- * @param {number} alpha - 要设置的透明度值(默认值:1.0)
84
- * @returns {Control} 返回当前实例以支持链式调用
85
- */
86
- setAlpha(alpha?: number): Control;
87
- alpha: number | undefined;
88
- /**
89
- * 设置透明度是否应传播到子元素。
90
- * @param {boolean} propagate - 透明度是否应传播(默认值:false)
91
- * @returns {Control} 返回当前实例以支持链式调用
92
- */
93
- setPropagateAlpha(propagate?: boolean): Control;
94
- propagate_alpha: boolean | undefined;
95
- /**
96
- * 设置控件是否应裁剪其子元素。
97
- * @param {boolean} clips - 控件是否应裁剪其子元素(默认值:false)
98
- * @returns {Control} 返回当前实例以支持链式调用
99
- */
100
- setClipsChildren(clips?: boolean): Control;
101
- clips_children: boolean | undefined;
102
- /**
103
- * 设置控件是否允许裁剪。
104
- * @param {boolean} allow - 是否允许裁剪(默认值:true)
105
- * @returns {Control} 返回当前实例以支持链式调用
106
- */
107
- setAllowClipping(allow?: boolean): Control;
108
- allow_clipping: boolean | undefined;
109
- /**
110
- * 设置控件的裁剪偏移量。
111
- * @param {number[]} offset - 裁剪偏移量,格式为 [x, y](默认值:[0, 0])
112
- * @returns {Control} 返回当前实例以支持链式调用
113
- */
114
- setClipOffset(offset?: number[]): Control;
115
- clip_offset: number[] | undefined;
116
- /**
117
- * 设置裁剪状态更改事件。
118
- * @param {string} event - 裁剪状态更改时触发的事件名称
119
- * @returns {Control} 返回当前实例以支持链式调用
120
- */
121
- setClipStateChangeEvent(event: string): Control;
122
- clip_state_change_event: string | undefined;
123
- /**
124
- * 设置是否启用裁剪测试。
125
- * @param {boolean} enable - 是否启用裁剪测试(默认值:false)
126
- * @returns {Control} 返回当前实例以支持链式调用
127
- */
128
- setEnableScissorTest(enable?: boolean): Control;
129
- enable_scissor_test: boolean | undefined;
130
- /**
131
- * 设置控件的属性包。
132
- * @param {object} bag - 要设置的属性包
133
- * @returns {Control} 返回当前实例以支持链式调用
134
- */
135
- setPropertyBag(bag: object): Control;
136
- property_bag: object | undefined;
137
- /**
138
- * 设置控件是否被选中。
139
- * @param {boolean} selected - 控件是否被选中(默认值:false)
140
- * @returns {Control} 返回当前实例以支持链式调用
141
- */
142
- setSelected(selected?: boolean): Control;
143
- selected: boolean | undefined;
144
- /**
145
- * 设置控件是否使用子元素的锚点。
146
- * @param {boolean} use - 是否使用子元素的锚点(默认值:false)
147
- * @returns {Control} 返回当前实例以支持链式调用
148
- */
149
- setUseChildAnchors(use?: boolean): Control;
150
- use_child_anchors: boolean | undefined;
151
- /**
152
- * 向控件添加子控件。
153
- * @param {Control} control - 要添加的子控件
154
- * @returns {Control} 返回当前实例以支持链式调用
155
- */
156
- addControl(control: Control): Control;
157
- controls: any[] | undefined;
158
- /**
159
- * 设置控件的动画。
160
- * @param {string[]} anims - 动画名称数组
161
- * @returns {Control} 返回当前实例以支持链式调用
162
- */
163
- setAnimations(anims: string[]): Control;
164
- anims: string[] | undefined;
165
- /**
166
- * 设置是否禁用动画快进。
167
- * @param {boolean} disable - 是否禁用动画快进(默认值:false)
168
- * @returns {Control} 返回当前实例以支持链式调用
169
- */
170
- setDisableAnimFastForward(disable?: boolean): Control;
171
- disable_anim_fast_forward: boolean | undefined;
172
- /**
173
- * 设置动画重置名称。
174
- * @param {string} name - 要重置的动画名称
175
- * @returns {Control} 返回当前实例以支持链式调用
176
- */
177
- setAnimationResetName(name: string): Control;
178
- animation_reset_name: string | undefined;
179
- /**
180
- * 设置是否忽略该控件。
181
- * @param {boolean} ignored - 是否忽略该控件(默认值:false)
182
- * @returns {Control} 返回当前实例以支持链式调用
183
- */
184
- setIgnored(ignored?: boolean): Control;
185
- ignored: boolean | undefined;
186
- /**
187
- * 设置控件的变量。
188
- * @param {object} variables - 要设置的变量
189
- * @returns {Control} 返回当前实例以支持链式调用
190
- */
191
- setVariables(variables: object): Control;
192
- variables: object | undefined;
193
- /**
194
- * 设置控件的修改项。
195
- * @param {array} modifications - 要设置的修改项
196
- * @returns {Control} 返回当前实例以支持链式调用
197
- */
198
- setModifications(modifications: array): Control;
199
- modifications: any;
200
- /**
201
- * 设置控件在网格中的位置。
202
- * @param {number[]} position - 网格位置,格式为 [行, 列]
203
- * @returns {Control} 返回当前实例以支持链式调用
204
- */
205
- setGridPosition(position: number[]): Control;
206
- grid_position: number[] | undefined;
207
- /**
208
- * 设置控件在集合中的索引。
209
- * @param {number} index - 要设置的索引
210
- * @returns {Control} 返回当前实例以支持链式调用
211
- */
212
- setCollectionIndex(index: number): Control;
213
- collection_index: number | undefined;
214
- }