sapdon 3.0.3 → 3.1.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.
@@ -0,0 +1,162 @@
1
+ /**
2
+ * 表示 Minecraft 插件中的渲染控制器组。
3
+ * 该类用于管理一组渲染控制器,并提供添加、设置和转换为 JSON 的方法。
4
+ */
5
+ export class AddonRenderControllerGroup {
6
+ /**
7
+ * 创建一个新的 AddonRenderControllerGroup 实例。
8
+ * @param {string} format_version - 渲染控制器的格式版本。
9
+ * @param {Map} [render_controllers] - 渲染控制器的 Map(可选)。默认为空 Map。
10
+ */
11
+ constructor(format_version, render_controllers) {
12
+ /**
13
+ * 渲染控制器的格式版本。
14
+ * @type {string}
15
+ */
16
+ this.format_version = format_version;
17
+ /**
18
+ * 渲染控制器的 Map,键为标识符,值为渲染控制器。
19
+ * @type {Map<string, AddonRenderController>}
20
+ */
21
+ this.render_controllers = render_controllers || new Map();
22
+ }
23
+ /**
24
+ * 设置或更新组中的渲染控制器。
25
+ * @param {string} identifier - 渲染控制器的唯一标识符。
26
+ * @param {AddonRenderController} render_controller - 要添加或更新的渲染控制器。
27
+ */
28
+ setRenderController(identifier, render_controller) {
29
+ this.render_controllers.set(identifier, render_controller);
30
+ return this; // 支持链式调用
31
+ }
32
+ /**
33
+ * 使用渲染控制器的标识符将其添加到组中。
34
+ * @param {AddonRenderController} render_controller - 要添加的渲染控制器。
35
+ */
36
+ addRenderController(render_controller) {
37
+ this.render_controllers.set(render_controller.name, render_controller.toJson());
38
+ return this; // 支持链式调用
39
+ }
40
+ /**
41
+ * 将渲染控制器组转换为 JSON 对象。
42
+ * @returns {Object} - 渲染控制器组的 JSON 表示。
43
+ */
44
+ toJson() {
45
+ return {
46
+ format_version: this.format_version,
47
+ render_controllers: Object.fromEntries(this.render_controllers)
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * 表示 Minecraft 插件中的渲染控制器。
53
+ * 该类定义了用于渲染实体的几何体、材质、纹理和数组。
54
+ */
55
+ export class AddonRenderController {
56
+ /**
57
+ * 创建一个新的 AddonRenderController 实例。
58
+ * @param {string} name - 渲染控制器的名称。
59
+ */
60
+ constructor(name) {
61
+ /**
62
+ * 渲染控制器的名称。
63
+ * @type {string}
64
+ */
65
+ this.name = `render_controller.${name}`;
66
+ /**
67
+ * 数组集合(例如纹理、几何体)。
68
+ * @type {Object}
69
+ */
70
+ this.arrays = {};
71
+ /**
72
+ * 用于渲染的默认几何体。
73
+ * @type {string}
74
+ */
75
+ this.geometry = "Geometry.default";
76
+ /**
77
+ * 用于渲染的材质列表。
78
+ * @type {Array<string>}
79
+ */
80
+ this.material = [];
81
+ /**
82
+ * 用于渲染的纹理列表。
83
+ * @type {Array<string>}
84
+ */
85
+ this.texture = [];
86
+ }
87
+ /**
88
+ * 设置渲染控制器的默认几何体。
89
+ * @param {string} geometry - 要设置的几何体。
90
+ */
91
+ setGeometry(geometry) {
92
+ this.geometry = geometry;
93
+ return this; // 支持链式调用
94
+ }
95
+ /**
96
+ * 向材质列表中添加一个材质。
97
+ * @param {string} material - 要添加的材质。
98
+ */
99
+ addMaterial(material) {
100
+ this.material.push(material);
101
+ return this; // 支持链式调用
102
+ }
103
+ /**
104
+ * 向纹理列表中添加一个纹理。
105
+ * @param {string} texture - 要添加的纹理。
106
+ */
107
+ addTexture(texture) {
108
+ this.texture.push(texture);
109
+ return this; // 支持链式调用
110
+ }
111
+ /**
112
+ * 注册一个数组。
113
+ * @param {string} name - 数组的名称。
114
+ * @param {Array} array - 要注册的数组。
115
+ */
116
+ registerArray(name, array) {
117
+ this.arrays[`Array.${name}`] = { [name]: array };
118
+ return this; // 支持链式调用
119
+ }
120
+ /**
121
+ * 注册几何体数组。
122
+ * @param {Array} array - 要注册的几何体数组。
123
+ */
124
+ registerGeometriesArray(array) {
125
+ this.registerArray("geometries", array);
126
+ return this; // 支持链式调用
127
+ }
128
+ /**
129
+ * 注册纹理数组。
130
+ * @param {Array} array - 要注册的纹理数组。
131
+ */
132
+ registerTexturesArray(array) {
133
+ this.registerArray("textures", array);
134
+ return this; // 支持链式调用
135
+ }
136
+ /**
137
+ * 将渲染控制器转换为 JSON 对象。
138
+ * @returns {Object} - 渲染控制器的 JSON 表示。
139
+ */
140
+ toJson() {
141
+ return {
142
+ arrays: this.arrays,
143
+ geometry: this.geometry,
144
+ material: this.material,
145
+ texture: this.texture
146
+ };
147
+ }
148
+ }
149
+ /*
150
+ // 示例用法
151
+ const renderControllerGroup = new AddonRenderControllerGroup("1.10.0");
152
+
153
+ const renderController = new AddonRenderController("custom_entity");
154
+ renderController.setGeometry("Geometry.custom");
155
+ renderController.addMaterial("Material.default");
156
+ renderController.addTexture("Texture.default");
157
+ renderController.registerTexturesArray(["Texture.variant_1", "Texture.variant_2"]);
158
+
159
+ renderControllerGroup.addRenderController(renderController);
160
+
161
+ console.log(JSON.stringify(renderControllerGroup.toJson(), null, 4));
162
+ */
@@ -0,0 +1,8 @@
1
+ import { BasicBundle } from "./basicBundle.js";
2
+ //移动捆绑包
3
+ export const BasicMovementBundle = new BasicBundle();
4
+ BasicMovementBundle.addComponents([
5
+ //speed
6
+ EntityComponent.setMovement(0.2),
7
+ EntityComponent.setMovementBasic()
8
+ ]);
@@ -36,10 +36,3 @@ export class BasicBundle {
36
36
  return this.#components;
37
37
  }
38
38
  }
39
- //移动捆绑包
40
- export const BasicMovementBundle = new BasicBundle();
41
- MovementBundle.addComponents([
42
- //speed
43
- EntityComponent.setMovement(0.2),
44
- EntityComponent.setMovementBasic()
45
- ]);
@@ -1,4 +1,11 @@
1
1
  export class EntityComponent {
2
+ static setDamageSensor(deals_damage) {
3
+ return new Map().set("minecraft:damage_sensor", {
4
+ "triggers": {
5
+ "deals_damage": deals_damage
6
+ }
7
+ });
8
+ }
2
9
  static setMovement(speed) {
3
10
  return new Map().set("minecraft:movement", {
4
11
  "value": speed
@@ -0,0 +1,14 @@
1
+ import { EntityComponent } from "./componets/entityComponet.js";
2
+ import { Entity } from "./entity.js";
3
+ export class DummyEntity extends Entity {
4
+ constructor(identifier, texture, options = {}, behData, resData) {
5
+ super(identifier, texture, options, behData, resData);
6
+ //行为设置
7
+ this.behavior.addComponent(EntityComponent.combineComponents(EntityComponent.setPhysics(false, false), EntityComponent.setPushable(false, false), EntityComponent.setCollisionBox(0.001, 0.001), EntityComponent.setDamageSensor(false)));
8
+ //资源设置
9
+ this.resource.addMaterial("default", "entity_alphatest"); //添加默认材质
10
+ this.resource.addTexture("default", "textures/entity/none"); //添加默认纹理
11
+ this.resource.setGeometry("geometry.cube"); //设置默认几何体
12
+ this.resource.addRenderController("controller.render.cow"); //添加渲染控制器
13
+ }
14
+ }
@@ -1,18 +1,11 @@
1
1
  import { BasicEntity } from "./basicEntity.js";
2
2
  import { ClientEntity } from "./clientEntity.js";
3
3
  export class Entity {
4
- /**
5
- *
6
- * @param {*} identifier
7
- * @param {*} texture
8
- * @param {*} behData
9
- * @param {*} resData
10
- * @param {*} options
11
- */
12
- constructor(identifier, texture, behData, resData, options = {}) {
4
+ constructor(identifier, texture, options = {}, behData, resData) {
13
5
  // 创建行为实体和客户端实体
14
6
  this.identifier = identifier;
15
- this.entity = new BasicEntity(identifier, options, behData);
16
- this.client_entity = new ClientEntity(identifier, resData).addTexture("default", texture);
7
+ this.behavior = new BasicEntity(identifier, options, behData);
8
+ this.resource = new ClientEntity(identifier, resData);
9
+ this.resource.addTexture("default", texture);
17
10
  }
18
11
  }
@@ -17,8 +17,8 @@ export class NativeEntity {
17
17
  options["runtime_identifier"] = proto_id;
18
18
  // 创建行为实体和客户端实体
19
19
  this.identifier = identifier;
20
- this.entity = new BasicEntity(identifier, options, behData);
21
- this.client_entity = new ClientEntity(identifier, resData);
20
+ this.behavior = new BasicEntity(identifier, options, behData);
21
+ this.resource = new ClientEntity(identifier, resData);
22
22
  }
23
23
  catch (error) {
24
24
  console.error(`Failed to create NativeEntity ${identifier}:`, error);
@@ -28,10 +28,10 @@ export const EntityAPI = {
28
28
  throw new Error("必须提供 identifier、proto_id 和 texture。");
29
29
  }
30
30
  const nativeEntity = new NativeEntity(identifier, proto_id, options);
31
- registerEntity(nativeEntity.entity, nativeEntity.client_entity);
31
+ registerEntity(nativeEntity.behavior, nativeEntity.resource);
32
32
  return {
33
- behavior: nativeEntity.entity,
34
- resource: nativeEntity.client_entity,
33
+ behavior: nativeEntity.behavior,
34
+ resource: nativeEntity.resource,
35
35
  };
36
36
  },
37
37
  /**
@@ -48,10 +48,10 @@ export const EntityAPI = {
48
48
  throw new Error("必须提供 identifier 和 texture。");
49
49
  }
50
50
  const entity = new Entity(identifier, texture, behData, resData, options);
51
- registerEntity(entity.entity, entity.client_entity);
51
+ registerEntity(entity.behavior, entity.resource);
52
52
  return {
53
- behavior: entity.entity,
54
- resource: entity.client_entity,
53
+ behavior: entity.behavior,
54
+ resource: entity.resource,
55
55
  };
56
56
  },
57
57
  /**
@@ -66,10 +66,10 @@ export const EntityAPI = {
66
66
  throw new Error("必须提供 identifier 和 texture。");
67
67
  }
68
68
  const entity = new Projectile(identifier, texture, options);
69
- registerEntity(entity.entity, entity.client_entity);
69
+ registerEntity(entity.behavior, entity.resource);
70
70
  return {
71
- behavior: entity.entity,
72
- resource: entity.client_entity,
71
+ behavior: entity.behavior,
72
+ resource: entity.resource,
73
73
  };
74
74
  },
75
75
  };
@@ -7,6 +7,187 @@ declare enum ItemCategory {
7
7
  None = "none"
8
8
  }
9
9
 
10
+ declare function getMetadata(target: any): any;
11
+ declare function getOrCreateMetadata(target: any): any;
12
+
13
+ interface ISerializer<T> {
14
+ (instance: any): T;
15
+ }
16
+ declare namespace Serializer {
17
+ const json: ISerializer<string>;
18
+ const jsonDev: ISerializer<string>;
19
+ }
20
+ declare function Serializable(serializer?: ISerializer<any>): (_: any, ctx: DecoratorContext) => void;
21
+ declare function serialize<R, T extends object>(inst: T): R;
22
+
23
+ type ConstructorOf<T, Arg extends unknown[] = []> = new (...args: Arg) => T;
24
+
25
+ declare class ArrayEx extends Array {
26
+ constructor(init?: number[]);
27
+ set(arr: Iterable<number>): void;
28
+ }
29
+
30
+ interface Vector3 {
31
+ x: number;
32
+ y: number;
33
+ z: number;
34
+ }
35
+ declare class Vec3 extends ArrayEx implements Vector3 {
36
+ x: number;
37
+ y: number;
38
+ z: number;
39
+ constructor(init: number[]);
40
+ static fromXYZ(x: number, y: number, z: number): Vec3;
41
+ static fromVec3(vec3: Vector3): Vec3;
42
+ static m(vec3: Vector3): number;
43
+ m(): number;
44
+ static isZero(vec: Vector3): boolean;
45
+ isZero(): boolean;
46
+ static normalize(vec: Vector3): false | undefined;
47
+ n(): false | undefined;
48
+ static add(vec1: Vector3, vec2: Vector3): Vec3;
49
+ add(vec: Vector3): Vec3;
50
+ static sub(vec1: Vector3, vec2: Vector3): Vec3;
51
+ sub(vec: Vector3): Vec3;
52
+ static mul(vec: Vector3, scalar: number): Vec3;
53
+ mul(scalar: number): Vec3;
54
+ static div(vec: Vector3, scalar: number): Vec3;
55
+ div(scalar: number): Vec3;
56
+ static dot(vec1: Vector3, vec2: Vector3): number;
57
+ dot(vec: Vector3): number;
58
+ static cross(vec1: Vector3, vec2: Vector3): Vec3;
59
+ cross(vec: Vector3): Vec3;
60
+ valueOf(): ArrayEx;
61
+ toString(): string;
62
+ }
63
+
64
+ interface Vector4 extends Vector3 {
65
+ w: number;
66
+ }
67
+ declare class Vec4 extends ArrayEx implements Vector4 {
68
+ x: number;
69
+ y: number;
70
+ z: number;
71
+ w: number;
72
+ constructor(init: number[]);
73
+ static fromXYZW(x: number, y: number, z: number, w: number): Vec4;
74
+ static fromVec3(vec3: Vector4): Vec4;
75
+ static fromVec4(vec4: Vector4): Vec4;
76
+ static m(vec: Vector4): number;
77
+ m(): number;
78
+ static isZero(vec: Vector4): boolean;
79
+ isZero(): boolean;
80
+ static normalize(vec: Vector4): false | undefined;
81
+ n(): false | undefined;
82
+ static add(vec1: Vector4, vec2: Vector4): Vec4;
83
+ add(vec: Vector4): Vec4;
84
+ static sub(vec1: Vector4, vec2: Vector4): Vec4;
85
+ sub(vec: Vector4): Vec4;
86
+ static mul(vec: Vector4, scalar: number): Vec4;
87
+ mul(scalar: number): Vec4;
88
+ static div(vec: Vector4, scalar: number): Vec4;
89
+ div(scalar: number): Vec4;
90
+ static dot(vec1: Vector4, vec2: Vector4): number;
91
+ dot(vec: Vector4): number;
92
+ static multiply(vec: Vector4, mat: Matrix): number[] | Vec4;
93
+ multiply(mat: Matrix): number[] | Vec4;
94
+ valueOf(): ArrayEx;
95
+ toString(): string;
96
+ }
97
+
98
+ declare class Matrix extends ArrayEx {
99
+ constructor();
100
+ get m11(): any;
101
+ get m12(): any;
102
+ get m13(): any;
103
+ get m14(): any;
104
+ get m21(): any;
105
+ get m22(): any;
106
+ get m23(): any;
107
+ get m24(): any;
108
+ get m31(): any;
109
+ get m32(): any;
110
+ get m33(): any;
111
+ get m34(): any;
112
+ get m41(): any;
113
+ get m42(): any;
114
+ get m43(): any;
115
+ get m44(): any;
116
+ set m11(v: any);
117
+ set m12(v: any);
118
+ set m13(v: any);
119
+ set m14(v: any);
120
+ set m21(v: any);
121
+ set m22(v: any);
122
+ set m23(v: any);
123
+ set m24(v: any);
124
+ set m31(v: any);
125
+ set m32(v: any);
126
+ set m33(v: any);
127
+ set m34(v: any);
128
+ set m41(v: any);
129
+ set m42(v: any);
130
+ set m43(v: any);
131
+ set m44(v: any);
132
+ get a(): any;
133
+ get b(): any;
134
+ get c(): any;
135
+ get d(): any;
136
+ get e(): any;
137
+ get f(): any;
138
+ set a(v: any);
139
+ set b(v: any);
140
+ set c(v: any);
141
+ set d(v: any);
142
+ set e(v: any);
143
+ set f(v: any);
144
+ static init(init: Iterable<number>, mapfn: (v: number, k: number) => number, thisArg?: any): Matrix;
145
+ clone(): Matrix;
146
+ setIdentity(): this;
147
+ static identity(): Matrix;
148
+ static add(m1: Matrix, m2: Matrix): Matrix;
149
+ add(m: Matrix): Matrix;
150
+ static sub(m1: Matrix, m2: Matrix): Matrix;
151
+ sub(m: Matrix): Matrix;
152
+ setTranslation(x: number, y: number, z: number): this;
153
+ setRotation(angle: number, axis: Vec3): this;
154
+ setScale(x: number, y: number, z: number): this;
155
+ setRotationX(angle: number): this;
156
+ setRotationY(angle: number): this;
157
+ setRotationZ(angle: number): this;
158
+ setRotationXYZ(yaw: number, pitch: number, roll: number): this;
159
+ static translate(mat: Matrix, vec: Vector3): Matrix;
160
+ translate(vec: Vector3): Matrix;
161
+ static transpose(mat: Matrix): any[];
162
+ transpose(): any[];
163
+ static multiply(mat1: Matrix, t: Matrix | Vector4): number[] | Vec4;
164
+ multiply(t: Matrix | Vector4): number[] | Vec4;
165
+ valueOf(): ArrayEx;
166
+ toString(): string;
167
+ static perspective(fov: number, aspect: number, near: number, far: number): number[];
168
+ static orthographic(right: number, top: number, near: number, far: number): number[];
169
+ static lookAt(eye: Vector3, target: Vector3, up: Vector3): number[];
170
+ }
171
+
172
+ /**
173
+ * Client
174
+ */
175
+ declare class GRegistry {
176
+ /**
177
+ * 生成注册器
178
+ * @param {string} name 文件名字
179
+ * @param {string} root 根目录,如 "behavior"、"resource" 等
180
+ * @param {string} path 数据的路径,如 "blocks/"、"items/"、"recipes/" 等
181
+ * @param {string} data 实例 必须包含 toJson 方法
182
+ */
183
+ static register(name: string, root: string, path: string, data: string): void;
184
+ static submit(): void;
185
+ }
186
+ declare namespace registry {
187
+ function sumbit(): void;
188
+ function log(...info: any[]): void;
189
+ }
190
+
10
191
  declare class Item {
11
192
  /**
12
193
  * 物品类
@@ -502,7 +683,7 @@ declare class BasicEntity {
502
683
  is_spawnable: boolean;
503
684
  is_summonable: boolean;
504
685
  runtime_identifier: string | undefined;
505
- properties: Map<string, any>;
686
+ properties: any;
506
687
  components: Map<string, any>;
507
688
  component_groups: Map<string, any>;
508
689
  events: Map<string, any>;
@@ -597,6 +778,14 @@ declare class AddonClientEntityDescription {
597
778
  constructor(identifier: string, min_engine_version: string);
598
779
  identifier: string;
599
780
  min_engine_version: string;
781
+ /**
782
+ * 注册粒子效果
783
+ * @param {string} name 组件名称
784
+ * @param {Object} component 组件数据
785
+ * @returns {AddonClientEntityDescription} 返回当前实例以支持链式调用
786
+ */
787
+ addParticleEffect(name: string, particle: any): AddonClientEntityDescription;
788
+ particle_effects: {} | undefined;
600
789
  /**
601
790
  * 添加材质
602
791
  * @param {string} name 材质名称
@@ -706,6 +895,10 @@ declare namespace EntityAPI {
706
895
  behavior: BasicEntity;
707
896
  resource: ClientEntity;
708
897
  };
898
+ function createDummyEntity(identifier: string, texture: string, options: Object | undefined, behData: Object, resData: Object): {
899
+ behavior: BasicEntity;
900
+ resource: ClientEntity;
901
+ };
709
902
  }
710
903
 
711
904
  declare class AddonRecipe {
@@ -1913,13 +2106,13 @@ declare class DataBindingObject {
1913
2106
 
1914
2107
  declare const ServerFormSystem: UISystem;
1915
2108
  declare class ServerUISystem {
1916
- static "__#4256@#binding_map": Map<any, any>;
1917
- static "__#4256@#binding_title_list": any[];
2109
+ static "__#6307@#binding_map": Map<any, any>;
2110
+ static "__#6307@#binding_title_list": any[];
1918
2111
  static addBindingTitle(title_name: any): void;
1919
2112
  static getBindingTitleList(): any[];
1920
2113
  static getBindingContentList(): any[];
1921
2114
  static bindingTitlewithContent(title_name: any, content: any): void;
1922
- static "__#4256@#updateServerFormSystem"(): void;
2115
+ static "__#6307@#updateServerFormSystem"(): void;
1923
2116
  }
1924
2117
 
1925
2118
  declare class ItemTextureManager {
@@ -1941,26 +2134,12 @@ declare namespace FlipbookTextures {
1941
2134
  function registerFlipbookTexture(atlas_tile: any, texture: any, ticks_per_frame: any, options?: {}): void;
1942
2135
  }
1943
2136
 
1944
- declare class GRegistry {
1945
- static dataList: any[];
1946
- /**
1947
- * 生成注册器
1948
- * @param {string} name 文件名字
1949
- * @param {string} root 根目录,如 "behavior"、"resource" 等
1950
- * @param {string} path 数据的路径,如 "blocks/"、"items/"、"recipes/" 等
1951
- * @param {string} data 实例 必须包含 toJson 方法
1952
- */
1953
- static register(name: string, root: string, path: string, data: string): void;
1954
- static getDataList(): any[];
1955
- }
1956
-
1957
2137
  declare class UISystemRegistry {
1958
- static "__#4255@#ui_system_map": Map<any, any>;
1959
- static "__#4255@#ui_def_list": any[];
2138
+ static "__#6305@#ui_system_map": {};
2139
+ static "__#6305@#ui_def_list": any[];
1960
2140
  static registerUISystem(ui_system: any): void;
1961
- static getUISystemList(): any[];
1962
2141
  static addOuterUIdefs(ui_defs: any): void;
1963
- static getUIdefList(): any[];
2142
+ static submit(): void;
1964
2143
  }
1965
2144
 
1966
2145
  declare class CollectionPanel extends UIElement {
@@ -2059,4 +2238,4 @@ declare class StackPanel extends Panel {
2059
2238
  setOrientation(orientation: any): this;
2060
2239
  }
2061
2240
 
2062
- export { BlockAPI, BlockComponent, DataBindingObject, EntityAPI, FeatureAPI, FlipbookTextures, GRegistry, Grid, Image, ItemAPI, ItemCategory, ItemComponent, ItemTextureManager, Label, Panel, RecipeAPI, ServerFormSystem, ServerUISystem, StackPanel, UIElement, UISystem, UISystemRegistry, terrainTextureManager };
2241
+ export { BlockAPI, BlockComponent, type ConstructorOf, DataBindingObject, EntityAPI, FeatureAPI, FlipbookTextures, GRegistry, Grid, type ISerializer, Image, ItemAPI, ItemCategory, ItemComponent, ItemTextureManager, Label, Matrix, Panel, RecipeAPI, Serializable, Serializer, ServerFormSystem, ServerUISystem, StackPanel, UIElement, UISystem, UISystemRegistry, Vec3, Vec4, type Vector3, type Vector4, getMetadata, getOrCreateMetadata, registry, serialize, terrainTextureManager };