@starktma/minecraft-utils 1.3.25 → 1.4.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.
- package/dist/database/database.d.ts +6 -4
- package/dist/database/database.d.ts.map +1 -1
- package/dist/database/database.js +24 -11
- package/dist/database/database.js.map +1 -1
- package/dist/game-state-machine/database.d.ts +1 -1
- package/dist/game-state-machine/database.d.ts.map +1 -1
- package/dist/game-state-machine/database.js +1 -1
- package/dist/game-state-machine/database.js.map +1 -1
- package/dist/math/index.d.ts +63 -59
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.js +150 -76
- package/dist/math/index.js.map +1 -1
- package/dist/minecraft/effectsAPI.d.ts +44 -57
- package/dist/minecraft/effectsAPI.d.ts.map +1 -1
- package/dist/minecraft/effectsAPI.js +354 -351
- package/dist/minecraft/effectsAPI.js.map +1 -1
- package/dist/minecraft/index.d.ts +7 -7
- package/dist/minecraft/index.d.ts.map +1 -1
- package/dist/minecraft/index.js +45 -31
- package/dist/minecraft/index.js.map +1 -1
- package/dist/minecraft/projectileAPI.d.ts +21 -59
- package/dist/minecraft/projectileAPI.d.ts.map +1 -1
- package/dist/minecraft/projectileAPI.js +139 -137
- package/dist/minecraft/projectileAPI.js.map +1 -1
- package/dist/minecraft/structuresAPI.d.ts +10 -0
- package/dist/minecraft/structuresAPI.d.ts.map +1 -0
- package/dist/minecraft/structuresAPI.js +61 -0
- package/dist/minecraft/structuresAPI.js.map +1 -0
- package/package.json +5 -1
- package/dist/minecraft/potionAPI.d.ts +0 -74
- package/dist/minecraft/potionAPI.d.ts.map +0 -1
- package/dist/minecraft/potionAPI.js +0 -228
- package/dist/minecraft/potionAPI.js.map +0 -1
|
@@ -1,146 +1,148 @@
|
|
|
1
|
-
import { GameMode, EntityEquippableComponent, EquipmentSlot, } from "@minecraft/server";
|
|
2
|
-
import {
|
|
1
|
+
import { GameMode, EntityEquippableComponent, EquipmentSlot, EntityProjectileComponent, system, } from "@minecraft/server";
|
|
2
|
+
import { Trigonometry, Vector } from "../math";
|
|
3
3
|
import { getNamespace } from "../constants";
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
x: -Math.sin(yaw) * Math.cos(adjustedPitch),
|
|
14
|
-
y: -Math.sin(adjustedPitch),
|
|
15
|
-
z: Math.cos(yaw) * Math.cos(adjustedPitch),
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Calculate spawn position for projectile with rotation-based offset
|
|
20
|
-
*/
|
|
21
|
-
export function calculateProjectileSpawnPosition(playerLocation, rotation, offset = [0, 0, 0]) {
|
|
22
|
-
const yaw = toRadians(rotation.y);
|
|
23
|
-
const pitch = toRadians(rotation.x);
|
|
24
|
-
const pitchAdjustment = -Math.sin(pitch) * 0.5;
|
|
25
|
-
const rawOffset = {
|
|
26
|
-
x: offset[0],
|
|
27
|
-
y: offset[1] + 1.7 + pitchAdjustment,
|
|
28
|
-
z: offset[2],
|
|
29
|
-
};
|
|
30
|
-
const rotatedOffset = {
|
|
31
|
-
x: rawOffset.x * Math.cos(yaw) - rawOffset.z * Math.sin(yaw),
|
|
32
|
-
y: rawOffset.y,
|
|
33
|
-
z: rawOffset.x * Math.sin(yaw) + rawOffset.z * Math.cos(yaw),
|
|
34
|
-
};
|
|
35
|
-
return VectorOperations.add(playerLocation, rotatedOffset);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Apply velocity scaling to a direction vector
|
|
39
|
-
*/
|
|
40
|
-
export function scaleVelocity(direction, power) {
|
|
41
|
-
return {
|
|
42
|
-
x: direction.x * power * 2,
|
|
43
|
-
y: direction.y * power,
|
|
44
|
-
z: direction.z * power * 2,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Spawn a projectile entity with velocity
|
|
49
|
-
*/
|
|
50
|
-
export function spawnProjectile(dimension, projectileId, spawnLocation, velocity, spawnEvent = "minecraft:entity_spawned") {
|
|
51
|
-
if (!dimension.isChunkLoaded(spawnLocation))
|
|
52
|
-
return undefined;
|
|
53
|
-
const entity = dimension.spawnEntity(projectileId, spawnLocation, { spawnEvent });
|
|
54
|
-
if (entity?.isValid) {
|
|
55
|
-
entity.applyImpulse(velocity);
|
|
56
|
-
return entity;
|
|
4
|
+
// ============================= ProjectileManager =============================
|
|
5
|
+
class ProjectileManager {
|
|
6
|
+
static instance;
|
|
7
|
+
static shotProjectiles = new Map();
|
|
8
|
+
static getInstance() {
|
|
9
|
+
if (!ProjectileManager.instance) {
|
|
10
|
+
ProjectileManager.instance = new ProjectileManager();
|
|
11
|
+
}
|
|
12
|
+
return ProjectileManager.instance;
|
|
57
13
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return;
|
|
69
|
-
if (itemStack.amount > 1) {
|
|
70
|
-
itemStack.amount--;
|
|
71
|
-
equippable.setEquipment(EquipmentSlot.Mainhand, itemStack);
|
|
14
|
+
constructor() { }
|
|
15
|
+
calculateLaunchDirection(rotation, angleOffset = 0) {
|
|
16
|
+
const yaw = Trigonometry.radians(rotation.y);
|
|
17
|
+
const pitch = Trigonometry.radians(rotation.x);
|
|
18
|
+
const adjustedPitch = pitch + Trigonometry.radians(angleOffset);
|
|
19
|
+
return {
|
|
20
|
+
x: -Math.sin(yaw) * Math.cos(adjustedPitch),
|
|
21
|
+
y: -Math.sin(adjustedPitch),
|
|
22
|
+
z: Math.cos(yaw) * Math.cos(adjustedPitch),
|
|
23
|
+
};
|
|
72
24
|
}
|
|
73
|
-
|
|
74
|
-
|
|
25
|
+
calculateSpawnPosition(playerLocation, rotation, offset = { x: 0, y: 0, z: 0 }) {
|
|
26
|
+
const yaw = Trigonometry.radians(rotation.y);
|
|
27
|
+
const pitch = Trigonometry.radians(rotation.x);
|
|
28
|
+
const pitchAdjustment = -Math.sin(pitch) * 0.5;
|
|
29
|
+
const rawOffset = {
|
|
30
|
+
x: offset.x,
|
|
31
|
+
y: offset.y + 1.7 + pitchAdjustment,
|
|
32
|
+
z: offset.z,
|
|
33
|
+
};
|
|
34
|
+
const rotatedOffset = {
|
|
35
|
+
x: rawOffset.x * Math.cos(yaw) - rawOffset.z * Math.sin(yaw),
|
|
36
|
+
y: rawOffset.y,
|
|
37
|
+
z: rawOffset.x * Math.sin(yaw) + rawOffset.z * Math.cos(yaw),
|
|
38
|
+
};
|
|
39
|
+
return Vector.add(playerLocation, rotatedOffset);
|
|
75
40
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const spawnLocation = calculateProjectileSpawnPosition(player.location, player.getRotation(), options.offset || [0, 0, 0]);
|
|
83
|
-
const direction = calculateLaunchDirection(player.getRotation(), options.angle_offset || 0);
|
|
84
|
-
const velocity = scaleVelocity(direction, (options.power || 1) * 0.2);
|
|
85
|
-
return spawnProjectile(player.dimension, options.identifier, spawnLocation, velocity, options.spawn_event);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Launch a projectile from any entity with manual direction
|
|
89
|
-
*/
|
|
90
|
-
export function launchProjectileFromEntity(entity, projectileId, direction, power = 1, offset = [0, 0, 0], spawnEvent) {
|
|
91
|
-
const spawnLocation = VectorOperations.add(entity.location, {
|
|
92
|
-
x: offset[0],
|
|
93
|
-
y: offset[1],
|
|
94
|
-
z: offset[2],
|
|
95
|
-
});
|
|
96
|
-
const velocity = scaleVelocity(direction, power * 0.2);
|
|
97
|
-
return spawnProjectile(entity.dimension, projectileId, spawnLocation, velocity, spawnEvent);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Launch a projectile from a specific location with direction
|
|
101
|
-
*/
|
|
102
|
-
export function launchProjectileFromLocation(dimension, location, projectileId, direction, power = 1, spawnEvent) {
|
|
103
|
-
const velocity = scaleVelocity(direction, power * 0.2);
|
|
104
|
-
return spawnProjectile(dimension, projectileId, location, velocity, spawnEvent);
|
|
105
|
-
}
|
|
106
|
-
// ========================== Custom Component Handlers ====================
|
|
107
|
-
// Simple map for item callbacks
|
|
108
|
-
const itemCallbacks = new Map();
|
|
109
|
-
/**
|
|
110
|
-
* Register a callback for a specific item identifier
|
|
111
|
-
*/
|
|
112
|
-
export function registerProjectileItemCallback(itemId, callback) {
|
|
113
|
-
itemCallbacks.set(itemId, callback);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Handle custom projectile component use event
|
|
117
|
-
*/
|
|
118
|
-
export function handleCustomProjectileUse(event, params) {
|
|
119
|
-
const player = event.source;
|
|
120
|
-
const itemStack = event.itemStack;
|
|
121
|
-
const projectileParams = params.params;
|
|
122
|
-
// Launch projectile using default behavior
|
|
123
|
-
const projectile = launchProjectileFromPlayer(player, projectileParams);
|
|
124
|
-
// Handle item consumption
|
|
125
|
-
if (projectile && itemStack) {
|
|
126
|
-
consumeItemStack(player, itemStack);
|
|
41
|
+
scaleVelocity(direction, power) {
|
|
42
|
+
return {
|
|
43
|
+
x: direction.x * power * 2,
|
|
44
|
+
y: direction.y * power,
|
|
45
|
+
z: direction.z * power * 2,
|
|
46
|
+
};
|
|
127
47
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
48
|
+
consumeItem(player, itemStack) {
|
|
49
|
+
if (player.getGameMode() === GameMode.Creative)
|
|
50
|
+
return;
|
|
51
|
+
const equippable = player.getComponent(EntityEquippableComponent.componentId);
|
|
52
|
+
if (!equippable)
|
|
53
|
+
return;
|
|
54
|
+
if (itemStack.amount > 1) {
|
|
55
|
+
itemStack.amount--;
|
|
56
|
+
equippable.setEquipment(EquipmentSlot.Mainhand, itemStack);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
equippable.setEquipment(EquipmentSlot.Mainhand, undefined);
|
|
133
60
|
}
|
|
134
61
|
}
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
62
|
+
// ============================= Public API ================================
|
|
63
|
+
launchProjectile(player, projectileId, options = {}) {
|
|
64
|
+
const spawnLocation = this.calculateSpawnPosition(player.location, player.getRotation(), options.offset || { x: 0, y: 0, z: 0 });
|
|
65
|
+
if (!player.dimension.isChunkLoaded(spawnLocation))
|
|
66
|
+
return undefined;
|
|
67
|
+
const direction = this.calculateLaunchDirection(player.getRotation(), options.angleOffset || 0);
|
|
68
|
+
const velocity = this.scaleVelocity(direction, (options.power || 1) * 0.2);
|
|
69
|
+
const projectile = player.dimension.spawnEntity(projectileId, spawnLocation, {
|
|
70
|
+
spawnEvent: options.spawnEvent || "minecraft:entity_spawned",
|
|
71
|
+
});
|
|
72
|
+
if (projectile?.isValid) {
|
|
73
|
+
projectile.applyImpulse(velocity);
|
|
74
|
+
return projectile;
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
launchProjectileFromEntity(entity, projectileId, direction, power = 1, offset = { x: 0, y: 0, z: 0 }, spawnEvent) {
|
|
79
|
+
const spawnLocation = Vector.add(entity.location, offset);
|
|
80
|
+
if (!entity.dimension.isChunkLoaded(spawnLocation))
|
|
81
|
+
return undefined;
|
|
82
|
+
const velocity = this.scaleVelocity(direction, power * 0.2);
|
|
83
|
+
const projectile = entity.dimension.spawnEntity(projectileId, spawnLocation, {
|
|
84
|
+
spawnEvent: spawnEvent || "minecraft:entity_spawned",
|
|
85
|
+
});
|
|
86
|
+
if (projectile?.isValid) {
|
|
87
|
+
const projectileComponent = projectile.getComponent(EntityProjectileComponent.componentId);
|
|
88
|
+
projectileComponent?.shoot(velocity);
|
|
89
|
+
return projectile;
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
launchProjectileFromLocation(dimension, location, projectileId, direction, power = 1, spawnEvent) {
|
|
94
|
+
if (!dimension.isChunkLoaded(location))
|
|
95
|
+
return undefined;
|
|
96
|
+
const velocity = this.scaleVelocity(direction, power * 0.2);
|
|
97
|
+
const projectile = dimension.spawnEntity(projectileId, location, {
|
|
98
|
+
spawnEvent: spawnEvent || "minecraft:entity_spawned",
|
|
99
|
+
});
|
|
100
|
+
if (projectile?.isValid) {
|
|
101
|
+
const projectileComponent = projectile.getComponent(EntityProjectileComponent.componentId);
|
|
102
|
+
ProjectileManager.shotProjectiles.set(projectile.id, {
|
|
103
|
+
entity: projectile,
|
|
104
|
+
component: projectileComponent,
|
|
105
|
+
velocity,
|
|
106
|
+
});
|
|
107
|
+
projectile.applyImpulse(velocity);
|
|
108
|
+
return projectile;
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
// ============================= System ====================================
|
|
113
|
+
start(startup) {
|
|
114
|
+
startup.itemComponentRegistry.registerCustomComponent(`${getNamespace()}:custom_projectile`, {
|
|
115
|
+
onUse: (event, params) => {
|
|
116
|
+
const player = event.source;
|
|
117
|
+
const itemStack = event.itemStack;
|
|
118
|
+
const projectileParams = params.params;
|
|
119
|
+
const offset = projectileParams.offset
|
|
120
|
+
? { x: projectileParams.offset[0], y: projectileParams.offset[1], z: projectileParams.offset[2] }
|
|
121
|
+
: { x: 0, y: 0, z: 0 };
|
|
122
|
+
const projectile = this.launchProjectile(player, projectileParams.identifier, {
|
|
123
|
+
spawnEvent: projectileParams.spawn_event,
|
|
124
|
+
offset,
|
|
125
|
+
power: projectileParams.power,
|
|
126
|
+
angleOffset: projectileParams.angle_offset,
|
|
127
|
+
});
|
|
128
|
+
if (projectile && itemStack) {
|
|
129
|
+
this.consumeItem(player, itemStack);
|
|
130
|
+
}
|
|
131
|
+
return projectile;
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
system.runInterval(() => {
|
|
135
|
+
for (const [, { entity, component, velocity }] of ProjectileManager.shotProjectiles) {
|
|
136
|
+
if (!entity.isValid) {
|
|
137
|
+
ProjectileManager.shotProjectiles.delete(entity.id);
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
entity.applyImpulse(Vector.scalarDivide(velocity, 2));
|
|
141
|
+
velocity.y -= 0.01;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
145
|
}
|
|
146
|
+
const projectileManager = ProjectileManager.getInstance();
|
|
147
|
+
export { ProjectileManager, projectileManager };
|
|
146
148
|
//# sourceMappingURL=projectileAPI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectileAPI.js","sourceRoot":"","sources":["../../src/minecraft/projectileAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,QAAQ,EACR,yBAAyB,EACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"projectileAPI.js","sourceRoot":"","sources":["../../src/minecraft/projectileAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Vector3, StructureRotation } from "@minecraft/server";
|
|
2
|
+
declare class StructuresManager {
|
|
3
|
+
static getRotationEnum(angle: number, offset?: number): StructureRotation;
|
|
4
|
+
static rotateStructure(structureSize: Vector3, rotationDegrees: number, targetPosition: Vector3): {
|
|
5
|
+
location: Vector3;
|
|
6
|
+
rotation: StructureRotation;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export { StructuresManager };
|
|
10
|
+
//# sourceMappingURL=structuresAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuresAPI.d.ts","sourceRoot":"","sources":["../../src/minecraft/structuresAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI/D,cAAM,iBAAiB;IACtB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAUzE,MAAM,CAAC,eAAe,CACrB,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,OAAO,GACrB;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE;CAiDrD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { StructureRotation } from "@minecraft/server";
|
|
2
|
+
import { snapYawToGrid } from ".";
|
|
3
|
+
import { Trigonometry } from "../math";
|
|
4
|
+
class StructuresManager {
|
|
5
|
+
static getRotationEnum(angle, offset) {
|
|
6
|
+
const diff = snapYawToGrid(Trigonometry.unsignedAngle(angle - (offset ?? 0)));
|
|
7
|
+
console.log(diff);
|
|
8
|
+
if (Math.abs(diff - 90) < Number.EPSILON)
|
|
9
|
+
return StructureRotation.Rotate90;
|
|
10
|
+
if (Math.abs(diff - 180) < Number.EPSILON)
|
|
11
|
+
return StructureRotation.Rotate180;
|
|
12
|
+
if (Math.abs(diff - 270) < Number.EPSILON)
|
|
13
|
+
return StructureRotation.Rotate270;
|
|
14
|
+
return StructureRotation.None;
|
|
15
|
+
}
|
|
16
|
+
static rotateStructure(structureSize, rotationDegrees, targetPosition) {
|
|
17
|
+
const rotation = this.getRotationEnum(rotationDegrees);
|
|
18
|
+
const normalizedRot = ((Math.round(rotationDegrees) % 360) + 360) % 360;
|
|
19
|
+
let rotatedCenterOffset = { x: 0, y: 0, z: 0 };
|
|
20
|
+
const cx = Math.floor(structureSize.x / 2);
|
|
21
|
+
const cz = Math.floor(structureSize.z / 2);
|
|
22
|
+
switch (normalizedRot) {
|
|
23
|
+
case 0:
|
|
24
|
+
rotatedCenterOffset = {
|
|
25
|
+
x: cx,
|
|
26
|
+
y: 0,
|
|
27
|
+
z: cz,
|
|
28
|
+
};
|
|
29
|
+
break;
|
|
30
|
+
case 90:
|
|
31
|
+
rotatedCenterOffset = {
|
|
32
|
+
x: cz,
|
|
33
|
+
y: 0,
|
|
34
|
+
z: structureSize.x - 1 - cx,
|
|
35
|
+
};
|
|
36
|
+
break;
|
|
37
|
+
case 180:
|
|
38
|
+
rotatedCenterOffset = {
|
|
39
|
+
x: structureSize.x - 1 - cx,
|
|
40
|
+
y: 0,
|
|
41
|
+
z: structureSize.z - 1 - cz,
|
|
42
|
+
};
|
|
43
|
+
break;
|
|
44
|
+
case 270:
|
|
45
|
+
rotatedCenterOffset = {
|
|
46
|
+
x: structureSize.z - 1 - cz,
|
|
47
|
+
y: 0,
|
|
48
|
+
z: cx,
|
|
49
|
+
};
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
const location = {
|
|
53
|
+
x: targetPosition.x - rotatedCenterOffset.x,
|
|
54
|
+
y: targetPosition.y - rotatedCenterOffset.y,
|
|
55
|
+
z: targetPosition.z - rotatedCenterOffset.z,
|
|
56
|
+
};
|
|
57
|
+
return { location, rotation };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export { StructuresManager };
|
|
61
|
+
//# sourceMappingURL=structuresAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuresAPI.js","sourceRoot":"","sources":["../../src/minecraft/structuresAPI.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starktma/minecraft-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"type": "module",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/StarkTMA/ScriptAPI.git"
|
|
14
|
+
},
|
|
11
15
|
"scripts": {
|
|
12
16
|
"build": "npx tsc -b --pretty --verbose",
|
|
13
17
|
"prepare": "npm run build"
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Entity, RGBA, StartupEvent, Vector3, Dimension } from "@minecraft/server";
|
|
2
|
-
export interface PotionConfig {
|
|
3
|
-
effectKey: string;
|
|
4
|
-
namespace: string;
|
|
5
|
-
handler: PotionEffectHandler;
|
|
6
|
-
splashRange?: number;
|
|
7
|
-
lingeringMaxRadius?: number;
|
|
8
|
-
lingeringLifetime?: number;
|
|
9
|
-
lingeringDurationMultiplier?: number;
|
|
10
|
-
}
|
|
11
|
-
export type PotionEffectHandler = (entity: Entity, amplifier: number, duration: number, color: RGBA) => void;
|
|
12
|
-
/**
|
|
13
|
-
* Parse effect key from projectile entity type ID
|
|
14
|
-
*/
|
|
15
|
-
export declare function parseProjectileTypeId(typeId: string): {
|
|
16
|
-
namespace: string;
|
|
17
|
-
effectKey: string;
|
|
18
|
-
} | null;
|
|
19
|
-
/**
|
|
20
|
-
* Extract RGBA color from entity properties
|
|
21
|
-
*/
|
|
22
|
-
export declare function getColorFromEntity(entity: Entity, namespace: string): RGBA;
|
|
23
|
-
/**
|
|
24
|
-
* Spawn splash particle effect
|
|
25
|
-
*/
|
|
26
|
-
export declare function spawnSplashParticle(dimension: Dimension, location: Vector3, color: RGBA, range: number): void;
|
|
27
|
-
/**
|
|
28
|
-
* Spawn lingering cloud particle effect
|
|
29
|
-
*/
|
|
30
|
-
export declare function spawnLingeringParticle(dimension: Dimension, location: Vector3, color: RGBA, radius: number, maxRadius: number, lifetime: number): void;
|
|
31
|
-
declare class PotionManager {
|
|
32
|
-
private configs;
|
|
33
|
-
private activeAOEClouds;
|
|
34
|
-
private cloudIdCounter;
|
|
35
|
-
private isRunning;
|
|
36
|
-
/**
|
|
37
|
-
* Register a potion effect with its configuration and handler
|
|
38
|
-
*/
|
|
39
|
-
registerPotion(config: PotionConfig): {
|
|
40
|
-
handler: PotionEffectHandler;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Start the potion system - must be called in beforeEvents.worldInitialize
|
|
44
|
-
*/
|
|
45
|
-
start(startup: StartupEvent): void;
|
|
46
|
-
/**
|
|
47
|
-
* Get a registered potion configuration (public method)
|
|
48
|
-
*/
|
|
49
|
-
getConfig(effectKey: string, namespace: string): PotionConfig | undefined;
|
|
50
|
-
private registerCustomComponents;
|
|
51
|
-
private registerProjectileEvents;
|
|
52
|
-
private startCloudUpdater;
|
|
53
|
-
private handleConsume;
|
|
54
|
-
/**
|
|
55
|
-
* Handle projectile hit (splash or lingering)
|
|
56
|
-
*/
|
|
57
|
-
private handleProjectileHit;
|
|
58
|
-
/**
|
|
59
|
-
* Handle splash potion effect
|
|
60
|
-
*/
|
|
61
|
-
private handleSplashPotion;
|
|
62
|
-
/**
|
|
63
|
-
* Handle lingering potion effect (creates area cloud)
|
|
64
|
-
*/
|
|
65
|
-
private handleLingeringPotion;
|
|
66
|
-
/**
|
|
67
|
-
* Update lingering area effect cloud
|
|
68
|
-
*/
|
|
69
|
-
private updateAreaEffectCloud;
|
|
70
|
-
private applyCloudEffects;
|
|
71
|
-
}
|
|
72
|
-
declare const potionManager: PotionManager;
|
|
73
|
-
export { PotionManager, potionManager };
|
|
74
|
-
//# sourceMappingURL=potionAPI.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"potionAPI.d.ts","sourceRoot":"","sources":["../../src/minecraft/potionAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,MAAM,EAGN,IAAI,EACJ,YAAY,EAEZ,OAAO,EAEP,SAAS,EACT,MAAM,mBAAmB,CAAC;AAyB3B,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;AAI7G;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASrG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM7G;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd,IAAI,CAON;AAID,cAAM,aAAa;IAClB,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY;;;IAgBnC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IASlC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzE,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,iBAAiB;CAuBzB;AAED,QAAA,MAAM,aAAa,eAAsB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC"}
|