@lzimul/minecraft-mcp 1.0.3 → 1.0.5

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 (115) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +126 -67
  3. package/SECURITY.md +38 -21
  4. package/build/config/server-info.js +5 -4
  5. package/build/config/storage.js +2 -1
  6. package/build/config/world-limits.js +6 -1
  7. package/build/data/entities.js +1581 -0
  8. package/build/enums/entity-kind.enum.js +5 -0
  9. package/build/enums/inventory-section.enum.js +5 -0
  10. package/build/enums/move-direction.enum.js +9 -0
  11. package/build/index.js +4 -3
  12. package/build/interfaces/entity-inventory.interface.js +1 -0
  13. package/build/interfaces/entity-type.interface.js +1 -0
  14. package/build/interfaces/entity.interface.js +1 -0
  15. package/build/resources/dimension-resources.js +24 -7
  16. package/build/resources/entity-resources.js +17 -0
  17. package/build/resources/index.js +2 -0
  18. package/build/schemas/coordinate-schema.js +5 -0
  19. package/build/schemas/dimension-schema.js +1 -0
  20. package/build/schemas/entity-schema.js +95 -0
  21. package/build/tools/block-tools.js +14 -23
  22. package/build/tools/entity-tools.js +638 -0
  23. package/build/tools/index.js +4 -0
  24. package/build/tools/result.js +3 -5
  25. package/build/tools/world-tools.js +526 -0
  26. package/build/utils/logger.js +53 -0
  27. package/build/world/block-spec.js +8 -6
  28. package/build/world/block-states.js +23 -4
  29. package/build/world/entity-inventory.js +101 -0
  30. package/build/world/item-spec.js +25 -0
  31. package/build/world/simulated-dimension.js +314 -14
  32. package/build/world/stores/file-world-store.js +84 -29
  33. package/build/world/stores/memory-world-store.js +18 -5
  34. package/build/world/stores/serialized-block.js +9 -14
  35. package/build/world/stores/serialized-entity.js +75 -0
  36. package/build/world/stores/serialized-snapshot.js +35 -0
  37. package/build/world/world.js +33 -1
  38. package/lib/app/server.d.ts.map +1 -1
  39. package/lib/config/dimensions.d.ts.map +1 -1
  40. package/lib/config/server-info.d.ts.map +1 -1
  41. package/lib/config/storage.d.ts.map +1 -1
  42. package/lib/config/world-limits.d.ts +5 -0
  43. package/lib/config/world-limits.d.ts.map +1 -1
  44. package/lib/data/entities.d.ts +5 -0
  45. package/lib/data/entities.d.ts.map +1 -0
  46. package/lib/enums/bounding-box.enum.d.ts.map +1 -1
  47. package/lib/enums/dimension-type.enum.d.ts.map +1 -1
  48. package/lib/enums/entity-kind.enum.d.ts +5 -0
  49. package/lib/enums/entity-kind.enum.d.ts.map +1 -0
  50. package/lib/enums/icon-theme.enum.d.ts.map +1 -1
  51. package/lib/enums/inventory-section.enum.d.ts +5 -0
  52. package/lib/enums/inventory-section.enum.d.ts.map +1 -0
  53. package/lib/enums/move-direction.enum.d.ts +9 -0
  54. package/lib/enums/move-direction.enum.d.ts.map +1 -0
  55. package/lib/interfaces/block.interface.d.ts.map +1 -1
  56. package/lib/interfaces/data-entry.interface.d.ts.map +1 -1
  57. package/lib/interfaces/dimension.interface.d.ts.map +1 -1
  58. package/lib/interfaces/entity-inventory.interface.d.ts +9 -0
  59. package/lib/interfaces/entity-inventory.interface.d.ts.map +1 -0
  60. package/lib/interfaces/entity-type.interface.d.ts +8 -0
  61. package/lib/interfaces/entity-type.interface.d.ts.map +1 -0
  62. package/lib/interfaces/entity.interface.d.ts +17 -0
  63. package/lib/interfaces/entity.interface.d.ts.map +1 -0
  64. package/lib/interfaces/item.interface.d.ts.map +1 -1
  65. package/lib/interfaces/placed-block.interface.d.ts.map +1 -1
  66. package/lib/interfaces/world-store.interface.d.ts +8 -2
  67. package/lib/interfaces/world-store.interface.d.ts.map +1 -1
  68. package/lib/resources/block-resources.d.ts.map +1 -1
  69. package/lib/resources/data-resources.d.ts.map +1 -1
  70. package/lib/resources/dimension-resources.d.ts.map +1 -1
  71. package/lib/resources/entity-resources.d.ts +3 -0
  72. package/lib/resources/entity-resources.d.ts.map +1 -0
  73. package/lib/resources/index.d.ts.map +1 -1
  74. package/lib/resources/item-resources.d.ts.map +1 -1
  75. package/lib/schemas/block-schema.d.ts.map +1 -1
  76. package/lib/schemas/coordinate-schema.d.ts +5 -0
  77. package/lib/schemas/coordinate-schema.d.ts.map +1 -1
  78. package/lib/schemas/dimension-schema.d.ts +1 -0
  79. package/lib/schemas/dimension-schema.d.ts.map +1 -1
  80. package/lib/schemas/entity-schema.d.ts +134 -0
  81. package/lib/schemas/entity-schema.d.ts.map +1 -0
  82. package/lib/schemas/item-schema.d.ts.map +1 -1
  83. package/lib/tools/block-tools.d.ts.map +1 -1
  84. package/lib/tools/entity-tools.d.ts +4 -0
  85. package/lib/tools/entity-tools.d.ts.map +1 -0
  86. package/lib/tools/index.d.ts.map +1 -1
  87. package/lib/tools/item-tools.d.ts.map +1 -1
  88. package/lib/tools/result.d.ts +2 -6
  89. package/lib/tools/result.d.ts.map +1 -1
  90. package/lib/tools/world-tools.d.ts +4 -0
  91. package/lib/tools/world-tools.d.ts.map +1 -0
  92. package/lib/utils/logger.d.ts +3 -0
  93. package/lib/utils/logger.d.ts.map +1 -0
  94. package/lib/world/block-spec.d.ts.map +1 -1
  95. package/lib/world/block-states.d.ts +2 -0
  96. package/lib/world/block-states.d.ts.map +1 -1
  97. package/lib/world/entity-inventory.d.ts +16 -0
  98. package/lib/world/entity-inventory.d.ts.map +1 -0
  99. package/lib/world/item-spec.d.ts +10 -0
  100. package/lib/world/item-spec.d.ts.map +1 -0
  101. package/lib/world/simulated-dimension.d.ts +54 -0
  102. package/lib/world/simulated-dimension.d.ts.map +1 -1
  103. package/lib/world/stores/file-world-store.d.ts +4 -4
  104. package/lib/world/stores/file-world-store.d.ts.map +1 -1
  105. package/lib/world/stores/index.d.ts.map +1 -1
  106. package/lib/world/stores/memory-world-store.d.ts +4 -4
  107. package/lib/world/stores/memory-world-store.d.ts.map +1 -1
  108. package/lib/world/stores/serialized-block.d.ts.map +1 -1
  109. package/lib/world/stores/serialized-entity.d.ts +24 -0
  110. package/lib/world/stores/serialized-entity.d.ts.map +1 -0
  111. package/lib/world/stores/serialized-snapshot.d.ts +6 -0
  112. package/lib/world/stores/serialized-snapshot.d.ts.map +1 -0
  113. package/lib/world/world.d.ts +3 -0
  114. package/lib/world/world.d.ts.map +1 -1
  115. package/package.json +16 -12
@@ -0,0 +1,134 @@
1
+ import * as z from 'zod/v4';
2
+ import { EEntityKind } from '../enums/entity-kind.enum.js';
3
+ import { EInventorySection } from '../enums/inventory-section.enum.js';
4
+ import type { IEntity } from '../interfaces/entity.interface.js';
5
+ import type { IItemStack } from '../interfaces/entity-inventory.interface.js';
6
+ export declare const itemStackSchema: z.ZodObject<{
7
+ item: z.ZodString;
8
+ count: z.ZodNumber;
9
+ }, z.core.$strip>;
10
+ export type ItemStackInfo = z.infer<typeof itemStackSchema>;
11
+ export declare const entityInventorySchema: z.ZodObject<{
12
+ hotbar: z.ZodArray<z.ZodNullable<z.ZodObject<{
13
+ item: z.ZodString;
14
+ count: z.ZodNumber;
15
+ }, z.core.$strip>>>;
16
+ inventory: z.ZodArray<z.ZodNullable<z.ZodObject<{
17
+ item: z.ZodString;
18
+ count: z.ZodNumber;
19
+ }, z.core.$strip>>>;
20
+ }, z.core.$strip>;
21
+ export type EntityInventoryInfo = z.infer<typeof entityInventorySchema>;
22
+ export declare const entitySummarySchema: z.ZodObject<{
23
+ id: z.ZodString;
24
+ kind: z.ZodEnum<typeof EEntityKind>;
25
+ type: z.ZodString;
26
+ typeDisplayName: z.ZodString;
27
+ category: z.ZodString;
28
+ name: z.ZodString;
29
+ x: z.ZodNumber;
30
+ y: z.ZodNumber;
31
+ z: z.ZodNumber;
32
+ dimension: z.ZodString;
33
+ }, z.core.$strip>;
34
+ export type EntitySummary = z.infer<typeof entitySummarySchema>;
35
+ export declare const entityInfoSchema: z.ZodObject<{
36
+ id: z.ZodString;
37
+ kind: z.ZodEnum<typeof EEntityKind>;
38
+ type: z.ZodString;
39
+ typeDisplayName: z.ZodString;
40
+ category: z.ZodString;
41
+ name: z.ZodString;
42
+ x: z.ZodNumber;
43
+ y: z.ZodNumber;
44
+ z: z.ZodNumber;
45
+ dimension: z.ZodString;
46
+ createdAt: z.ZodString;
47
+ usedSlots: z.ZodNumber;
48
+ totalSlots: z.ZodNumber;
49
+ inventory: z.ZodObject<{
50
+ hotbar: z.ZodArray<z.ZodNullable<z.ZodObject<{
51
+ item: z.ZodString;
52
+ count: z.ZodNumber;
53
+ }, z.core.$strip>>>;
54
+ inventory: z.ZodArray<z.ZodNullable<z.ZodObject<{
55
+ item: z.ZodString;
56
+ count: z.ZodNumber;
57
+ }, z.core.$strip>>>;
58
+ }, z.core.$strip>;
59
+ }, z.core.$strip>;
60
+ export type EntityInfo = z.infer<typeof entityInfoSchema>;
61
+ export declare const inventoryViewSchema: z.ZodObject<{
62
+ entity: z.ZodObject<{
63
+ id: z.ZodString;
64
+ kind: z.ZodEnum<typeof EEntityKind>;
65
+ type: z.ZodString;
66
+ typeDisplayName: z.ZodString;
67
+ category: z.ZodString;
68
+ name: z.ZodString;
69
+ x: z.ZodNumber;
70
+ y: z.ZodNumber;
71
+ z: z.ZodNumber;
72
+ dimension: z.ZodString;
73
+ }, z.core.$strip>;
74
+ hotbar: z.ZodArray<z.ZodNullable<z.ZodObject<{
75
+ item: z.ZodString;
76
+ count: z.ZodNumber;
77
+ }, z.core.$strip>>>;
78
+ inventory: z.ZodArray<z.ZodNullable<z.ZodObject<{
79
+ item: z.ZodString;
80
+ count: z.ZodNumber;
81
+ }, z.core.$strip>>>;
82
+ hotbarUsed: z.ZodNumber;
83
+ inventoryUsed: z.ZodNumber;
84
+ usedSlots: z.ZodNumber;
85
+ totalSlots: z.ZodNumber;
86
+ }, z.core.$strip>;
87
+ export type InventoryView = z.infer<typeof inventoryViewSchema>;
88
+ export declare const inventoryChangeSchema: z.ZodObject<{
89
+ entity: z.ZodObject<{
90
+ id: z.ZodString;
91
+ kind: z.ZodEnum<typeof EEntityKind>;
92
+ type: z.ZodString;
93
+ typeDisplayName: z.ZodString;
94
+ category: z.ZodString;
95
+ name: z.ZodString;
96
+ x: z.ZodNumber;
97
+ y: z.ZodNumber;
98
+ z: z.ZodNumber;
99
+ dimension: z.ZodString;
100
+ }, z.core.$strip>;
101
+ hotbar: z.ZodArray<z.ZodNullable<z.ZodObject<{
102
+ item: z.ZodString;
103
+ count: z.ZodNumber;
104
+ }, z.core.$strip>>>;
105
+ inventory: z.ZodArray<z.ZodNullable<z.ZodObject<{
106
+ item: z.ZodString;
107
+ count: z.ZodNumber;
108
+ }, z.core.$strip>>>;
109
+ hotbarUsed: z.ZodNumber;
110
+ inventoryUsed: z.ZodNumber;
111
+ usedSlots: z.ZodNumber;
112
+ totalSlots: z.ZodNumber;
113
+ section: z.ZodEnum<typeof EInventorySection>;
114
+ slot: z.ZodNumber;
115
+ previous: z.ZodNullable<z.ZodObject<{
116
+ item: z.ZodString;
117
+ count: z.ZodNumber;
118
+ }, z.core.$strip>>;
119
+ item: z.ZodNullable<z.ZodObject<{
120
+ item: z.ZodString;
121
+ count: z.ZodNumber;
122
+ }, z.core.$strip>>;
123
+ }, z.core.$strip>;
124
+ export type InventoryChange = z.infer<typeof inventoryChangeSchema>;
125
+ export declare function toItemStackInfo(stack: IItemStack): ItemStackInfo;
126
+ export declare function toEntityInventoryInfo(entity: IEntity): EntityInventoryInfo;
127
+ export declare function toEntitySummary(entity: IEntity): EntitySummary;
128
+ export declare function toEntityInfo(entity: IEntity): EntityInfo;
129
+ export declare function toInventoryView(entity: IEntity): InventoryView;
130
+ export declare const INVENTORY_LIMITS: {
131
+ readonly hotbar: 9;
132
+ readonly inventory: 27;
133
+ };
134
+ //# sourceMappingURL=entity-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/entity-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AASvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAG9E,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAG5D,eAAO,MAAM,qBAAqB;;;;;;;;;iBAGhC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGxE,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAW9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAEhE;AAQD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,CAK1E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAa9D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAQxD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAa9D;AAED,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"item-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/item-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;iBAQzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAiBhD"}
1
+ {"version":3,"file":"item-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/item-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAG7D,eAAO,MAAM,cAAc;;;;;;;;iBAQzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAiBhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"block-tools.d.ts","sourceRoot":"","sources":["../../src/tools/block-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAgB9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAe/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAuKxE"}
1
+ {"version":3,"file":"block-tools.d.ts","sourceRoot":"","sources":["../../src/tools/block-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAY9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAiJxE"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { World } from '../world/world.js';
3
+ export declare function registerEntityTools(server: McpServer, world: World): void;
4
+ //# sourceMappingURL=entity-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-tools.d.ts","sourceRoot":"","sources":["../../src/tools/entity-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAgC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AA8H/C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAqsBzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAO9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAKnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"item-tools.d.ts","sourceRoot":"","sources":["../../src/tools/item-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDzD"}
1
+ {"version":3,"file":"item-tools.d.ts","sourceRoot":"","sources":["../../src/tools/item-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDzD"}
@@ -1,9 +1,4 @@
1
- export declare function toolText(text: string): {
2
- content: [{
3
- type: 'text';
4
- text: string;
5
- }];
6
- };
1
+ import type { IDimension } from '../interfaces/dimension.interface.js';
7
2
  export declare function toolError(message: string): {
8
3
  isError: true;
9
4
  content: [{
@@ -11,4 +6,5 @@ export declare function toolError(message: string): {
11
6
  text: string;
12
7
  }];
13
8
  };
9
+ export declare function coordinateRangeError(dimension: IDimension, x: number, y: number, z: number): ReturnType<typeof toolError>;
14
10
  //# sourceMappingURL=result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IACtC,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,CAIA;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;IAC1C,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,CAKA"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGvE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;IAC1C,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,CAKA;AAGD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,UAAU,EACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,UAAU,CAAC,OAAO,SAAS,CAAC,CAI9B"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { World } from '../world/world.js';
3
+ export declare function registerWorldTools(server: McpServer, world: World): void;
4
+ //# sourceMappingURL=world-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-tools.d.ts","sourceRoot":"","sources":["../../src/tools/world-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAoB9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAyC/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAyjBxE"}
@@ -0,0 +1,3 @@
1
+ import log4js from 'log4js';
2
+ export declare const logger: log4js.Logger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAqE5B,eAAO,MAAM,MAAM,eAAoC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"block-spec.d.ts","sourceRoot":"","sources":["../../src/world/block-spec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAUnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwE7D"}
1
+ {"version":3,"file":"block-spec.d.ts","sourceRoot":"","sources":["../../src/world/block-spec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAG3E,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAanD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CA0E7D"}
@@ -2,6 +2,8 @@ import type { BlockStates } from '../interfaces/block-states.interface.js';
2
2
  export declare const EMPTY_BLOCK_STATES: BlockStates;
3
3
  export declare function isSafeStateName(name: string): boolean;
4
4
  export declare function isSafeStateValue(value: string): boolean;
5
+ export declare function compareStateNames(a: string, b: string): number;
6
+ export declare function isEmptyStates(states: BlockStates | null | undefined): boolean;
5
7
  export declare function normalizeStates(states: BlockStates | null | undefined): BlockStates;
6
8
  export declare function sameStates(a: BlockStates, b: BlockStates): boolean;
7
9
  export declare function formatStates(states: BlockStates): string;
@@ -1 +1 @@
1
- {"version":3,"file":"block-states.d.ts","sourceRoot":"","sources":["../../src/world/block-states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,eAAO,MAAM,kBAAkB,EAAE,WAA+B,CAAC;AAajE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvD;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACrC,WAAW,CAgBb;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAMlE;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAMxD"}
1
+ {"version":3,"file":"block-states.d.ts","sourceRoot":"","sources":["../../src/world/block-states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,eAAO,MAAM,kBAAkB,EAAE,WAA+B,CAAC;AAajE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQrD;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvD;AAGD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9D;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAU7E;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACrC,WAAW,CAkBb;AAGD,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAMlE;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQxD"}
@@ -0,0 +1,16 @@
1
+ import { EInventorySection } from '../enums/inventory-section.enum.js';
2
+ import type { IEntityInventory, IItemStack } from '../interfaces/entity-inventory.interface.js';
3
+ export declare const HOTBAR_SLOT_COUNT = 9;
4
+ export declare const INVENTORY_SLOT_COUNT = 27;
5
+ export declare const TOTAL_SLOT_COUNT: number;
6
+ export declare function slotCount(section: EInventorySection): number;
7
+ export declare function isSlotInRange(section: EInventorySection, slot: number): boolean;
8
+ export declare function createEmptyInventory(): IEntityInventory;
9
+ export declare function normalizeItemStack(value: unknown): IItemStack | null;
10
+ export declare function normalizeInventory(value: unknown): IEntityInventory;
11
+ export declare function getInventorySlot(inventory: IEntityInventory, section: EInventorySection, slot: number): IItemStack | null;
12
+ export declare function withInventorySlot(inventory: IEntityInventory, section: EInventorySection, slot: number, stack: IItemStack | null): IEntityInventory;
13
+ export declare function sameItemStack(a: IItemStack | null, b: IItemStack | null): boolean;
14
+ export declare function inventoryUsedSlots(inventory: IEntityInventory): number;
15
+ export declare function sectionUsedSlots(inventory: IEntityInventory, section: EInventorySection): number;
16
+ //# sourceMappingURL=entity-inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-inventory.d.ts","sourceRoot":"","sources":["../../src/world/entity-inventory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACX,MAAM,6CAA6C,CAAC;AAGrD,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,gBAAgB,QAA2C,CAAC;AAGzE,wBAAgB,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAI5D;AAGD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAET;AAGD,wBAAgB,oBAAoB,IAAI,gBAAgB,CAKvD;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAyBpE;AAcD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAUnE;AAGD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,GACX,UAAU,GAAG,IAAI,CAInB;AAGD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAAG,IAAI,GACvB,gBAAgB,CAUlB;AAGD,wBAAgB,aAAa,CAC3B,CAAC,EAAE,UAAU,GAAG,IAAI,EACpB,CAAC,EAAE,UAAU,GAAG,IAAI,GACnB,OAAO,CAKT;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAatE;AAGD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,iBAAiB,GACzB,MAAM,CAYR"}
@@ -0,0 +1,10 @@
1
+ import type { IItem } from '../interfaces/item.interface.js';
2
+ export type ItemSpecResult = {
3
+ readonly ok: true;
4
+ readonly item: IItem;
5
+ } | {
6
+ readonly ok: false;
7
+ readonly error: string;
8
+ };
9
+ export declare function parseItemSpec(input: string): ItemSpecResult;
10
+ //# sourceMappingURL=item-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-spec.d.ts","sourceRoot":"","sources":["../../src/world/item-spec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAG7D,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AASnD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAyB3D"}
@@ -1,27 +1,81 @@
1
+ import { EInventorySection } from '../enums/inventory-section.enum.js';
2
+ import { EMoveDirection } from '../enums/move-direction.enum.js';
1
3
  import type { IBlock } from '../interfaces/block.interface.js';
2
4
  import type { BlockStates } from '../interfaces/block-states.interface.js';
3
5
  import type { IDimension } from '../interfaces/dimension.interface.js';
6
+ import type { IEntity } from '../interfaces/entity.interface.js';
7
+ import type { IItemStack } from '../interfaces/entity-inventory.interface.js';
8
+ import type { IEntityType } from '../interfaces/entity-type.interface.js';
4
9
  import type { IPlacedBlock } from '../interfaces/placed-block.interface.js';
5
10
  import type { IWorldStore } from '../interfaces/world-store.interface.js';
11
+ export interface IEntityPosition {
12
+ readonly x: number;
13
+ readonly y: number;
14
+ readonly z: number;
15
+ }
16
+ export interface IEntityPositionResult {
17
+ readonly previous: IEntityPosition;
18
+ readonly entity: IEntity;
19
+ }
20
+ export interface IInventoryClearResult {
21
+ readonly clearedSlots: number;
22
+ readonly entity: IEntity;
23
+ }
24
+ export interface IInventorySwapResult {
25
+ readonly previousFrom: IItemStack | null;
26
+ readonly previousTo: IItemStack | null;
27
+ readonly entity: IEntity;
28
+ }
6
29
  export declare class SimulatedDimension {
7
30
  readonly info: IDimension;
8
31
  private readonly blocks;
32
+ private readonly entities;
33
+ private readonly playersByName;
9
34
  private readonly store;
10
35
  private readonly writeDelayMs;
11
36
  private timer;
12
37
  private queue;
13
38
  private savePromise;
14
39
  private dirty;
40
+ private sortedBlocksCache;
41
+ private sortedEntitiesCache;
15
42
  constructor(info: IDimension, store: IWorldStore, writeDelayMs?: number);
16
43
  get modifiedBlockCount(): number;
44
+ get entityCount(): number;
45
+ get playerCount(): number;
17
46
  get placedBlocks(): readonly IPlacedBlock[];
47
+ get sortedPlacedBlocks(): readonly IPlacedBlock[];
48
+ get placedEntities(): readonly IEntity[];
49
+ get sortedPlacedEntities(): readonly IEntity[];
18
50
  load(): Promise<void>;
19
51
  contains(x: number, y: number, z: number): boolean;
20
52
  canSetBlock(x: number, y: number, z: number): boolean;
53
+ canAddEntity(): boolean;
21
54
  getBlock(x: number, y: number, z: number): IBlock;
22
55
  getStates(x: number, y: number, z: number): BlockStates;
56
+ getBlockState(x: number, y: number, z: number): {
57
+ readonly block: IBlock;
58
+ readonly states: BlockStates;
59
+ };
60
+ getEntity(id: string): IEntity | undefined;
61
+ findPlayer(name: string): IEntity | undefined;
62
+ removeDuplicatePlayers(claimedNames: Set<string>): number;
63
+ createEntity(type: IEntityType, name: string, x: number, y: number, z: number): IEntity;
64
+ createPlayer(name: string, x: number, y: number, z: number): IEntity;
65
+ private addEntity;
66
+ setInventorySlot(id: string, section: EInventorySection, slot: number, stack: IItemStack | null): {
67
+ readonly previous: IItemStack | null;
68
+ readonly entity: IEntity;
69
+ };
70
+ deleteEntity(id: string): IEntity | undefined;
71
+ clearInventory(id: string): IInventoryClearResult;
72
+ swapInventorySlots(id: string, fromSection: EInventorySection, fromSlot: number, toSection: EInventorySection, toSlot: number): IInventorySwapResult;
73
+ moveEntity(id: string, direction: EMoveDirection): IEntityPositionResult;
74
+ setEntityPosition(id: string, x: number, y: number, z: number): IEntityPositionResult;
23
75
  setBlock(x: number, y: number, z: number, block: IBlock, states?: BlockStates): IBlock;
76
+ readRaw(): Promise<string>;
24
77
  flush(): Promise<void>;
78
+ private markDirty;
25
79
  private scheduleFlush;
26
80
  }
27
81
  //# sourceMappingURL=simulated-dimension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulated-dimension.d.ts","sourceRoot":"","sources":["../../src/world/simulated-dimension.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAQ1E,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK;IAMnE,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,YAAY,IAAI,SAAS,YAAY,EAAE,CAE1C;IAGK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAYlD,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAOrD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW;IAMvD,QAAQ,CACN,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,WAAgC,GACvC,MAAM;IA4CH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC5B,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"simulated-dimension.d.ts","sourceRoot":"","sources":["../../src/world/simulated-dimension.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAmBjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAEV,WAAW,EACZ,MAAM,wCAAwC,CAAC;AAKhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAgDD,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAEvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,KAAK,CAAoC;IAEjD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,iBAAiB,CAAwC;IAEjE,OAAO,CAAC,mBAAmB,CAAmC;gBAElD,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK;IAOnE,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAGD,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,IAAI,YAAY,IAAI,SAAS,YAAY,EAAE,CAE1C;IAGD,IAAI,kBAAkB,IAAI,SAAS,YAAY,EAAE,CAOhD;IAGD,IAAI,cAAc,IAAI,SAAS,OAAO,EAAE,CAEvC;IAGD,IAAI,oBAAoB,IAAI,SAAS,OAAO,EAAE,CAK7C;IAGK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE3B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAYlD,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAOrD,YAAY,IAAI,OAAO;IAKvB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW;IAOvD,aAAa,CACX,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;KAAE;IAQ3D,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAQ7C,sBAAsB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;IAsBzD,YAAY,CACV,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO;IAUV,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAiBpE,OAAO,CAAC,SAAS;IAuCjB,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAAG,IAAI,GACvB;QAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IAkCrE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAgB7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB;IA2BjD,kBAAkB,CAChB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GACb,oBAAoB;IA+CvB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,qBAAqB;IAoBxE,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,qBAAqB;IAsCxB,QAAQ,CACN,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,WAAgC,GACvC,MAAM;IAqCH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAS1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC5B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,aAAa;CAatB"}
@@ -1,14 +1,14 @@
1
1
  import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
- import type { IPlacedBlock } from '../../interfaces/placed-block.interface.js';
3
- import type { IWorldStore } from '../../interfaces/world-store.interface.js';
2
+ import type { IWorldSnapshot, IWorldStore } from '../../interfaces/world-store.interface.js';
4
3
  export declare class FileWorldStore implements IWorldStore {
5
4
  private readonly directory;
6
5
  private directoryReady;
7
6
  constructor(directory: string);
8
7
  private ensureDirectory;
9
8
  private fileFor;
10
- load(type: EDimensionType): Promise<readonly IPlacedBlock[]>;
11
- save(type: EDimensionType, blocks: readonly IPlacedBlock[]): Promise<void>;
9
+ load(type: EDimensionType): Promise<IWorldSnapshot>;
10
+ readRaw(type: EDimensionType): Promise<string>;
11
+ save(type: EDimensionType, snapshot: IWorldSnapshot): Promise<void>;
12
12
  private quarantine;
13
13
  }
14
14
  //# sourceMappingURL=file-world-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/file-world-store.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAmB7E,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;gBAEnB,SAAS,EAAE,MAAM;YAIf,eAAe;IAO7B,OAAO,CAAC,OAAO;IAIT,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAuD5D,IAAI,CACR,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;YAsCF,UAAU;CAWzB"}
1
+ {"version":3,"file":"file-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/file-world-store.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAsBnD,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;gBAEnB,SAAS,EAAE,MAAM;YAKf,eAAe;IAQ7B,OAAO,CAAC,OAAO;IAKT,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IA+FnD,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB9C,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAoC3D,UAAU;CAWzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/world/stores/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAE7E,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/world/stores/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAG7E,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C"}
@@ -1,9 +1,9 @@
1
1
  import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
- import type { IPlacedBlock } from '../../interfaces/placed-block.interface.js';
3
- import type { IWorldStore } from '../../interfaces/world-store.interface.js';
2
+ import type { IWorldSnapshot, IWorldStore } from '../../interfaces/world-store.interface.js';
4
3
  export declare class MemoryWorldStore implements IWorldStore {
5
4
  private readonly worlds;
6
- load(type: EDimensionType): Promise<readonly IPlacedBlock[]>;
7
- save(type: EDimensionType, blocks: readonly IPlacedBlock[]): Promise<void>;
5
+ load(type: EDimensionType): Promise<IWorldSnapshot>;
6
+ save(type: EDimensionType, snapshot: IWorldSnapshot): Promise<void>;
7
+ readRaw(type: EDimensionType): Promise<string>;
8
8
  }
9
9
  //# sourceMappingURL=memory-world-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/memory-world-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAM7E,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAEvE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAK5D,IAAI,CACR,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;CAQjB"}
1
+ {"version":3,"file":"memory-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/memory-world-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAGnD,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAG9D,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAQnD,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnE,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAIrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialized-block.d.ts","sourceRoot":"","sources":["../../../src/world/stores/serialized-block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAG9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAiBnE;AAkBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAyBlE"}
1
+ {"version":3,"file":"serialized-block.d.ts","sourceRoot":"","sources":["../../../src/world/stores/serialized-block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAG9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAcnE;AAmBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAyBlE"}
@@ -0,0 +1,24 @@
1
+ import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
+ import type { IEntity } from '../../interfaces/entity.interface.js';
3
+ export interface ISerializedItemStack {
4
+ readonly item: string;
5
+ readonly count: number;
6
+ }
7
+ export interface ISerializedInventory {
8
+ readonly hotbar?: readonly (ISerializedItemStack | null)[];
9
+ readonly inventory?: readonly (ISerializedItemStack | null)[];
10
+ }
11
+ export interface ISerializedEntity {
12
+ readonly id: string;
13
+ readonly kind: string;
14
+ readonly type: string;
15
+ readonly name: string;
16
+ readonly x: number;
17
+ readonly y: number;
18
+ readonly z: number;
19
+ readonly createdAt: string;
20
+ readonly inventory?: ISerializedInventory;
21
+ }
22
+ export declare function toSerializedEntity(entity: IEntity): ISerializedEntity;
23
+ export declare function fromSerializedEntity(entry: unknown, dimension: EDimensionType): IEntity | null;
24
+ //# sourceMappingURL=serialized-entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-entity.d.ts","sourceRoot":"","sources":["../../../src/world/stores/serialized-entity.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAMpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC;CAC/D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAuBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAiBrE;AAUD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,cAAc,GACxB,OAAO,GAAG,IAAI,CA6ChB"}
@@ -0,0 +1,6 @@
1
+ import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
+ import type { IWorldSnapshot } from '../../interfaces/world-store.interface.js';
3
+ export declare const SNAPSHOT_FORMAT = "lzimul:minecraft/dimension";
4
+ export declare const MAX_SNAPSHOT_BYTES: number;
5
+ export declare function serializeSnapshot(type: EDimensionType, snapshot: IWorldSnapshot, updatedAt?: string): string;
6
+ //# sourceMappingURL=serialized-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-snapshot.d.ts","sourceRoot":"","sources":["../../../src/world/stores/serialized-snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAGhF,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAG5D,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AAuCpD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,cAAc,EACxB,SAAS,SAA2B,GACnC,MAAM,CAaR"}
@@ -1,6 +1,7 @@
1
1
  import { SimulatedDimension } from './simulated-dimension.js';
2
2
  import type { EDimensionType } from '../enums/dimension-type.enum.js';
3
3
  import type { IDimension } from '../interfaces/dimension.interface.js';
4
+ import type { IEntity } from '../interfaces/entity.interface.js';
4
5
  import type { IWorldStore } from '../interfaces/world-store.interface.js';
5
6
  export declare class World {
6
7
  private readonly dimensions;
@@ -8,6 +9,8 @@ export declare class World {
8
9
  static load(store: IWorldStore, writeDelayMs?: number): Promise<World>;
9
10
  static listDimensions(): readonly IDimension[];
10
11
  getDimension(type: EDimensionType): SimulatedDimension;
12
+ findEntity(id: string): IEntity | undefined;
13
+ findPlayer(name: string): IEntity | undefined;
11
14
  flush(): Promise<void>;
12
15
  }
13
16
  //# sourceMappingURL=world.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAS1E,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkD;IAE7E,OAAO;WAMM,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAsBxE,MAAM,CAAC,cAAc,IAAI,SAAS,UAAU,EAAE;IAI9C,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB;IAUhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAS1E,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkD;IAE7E,OAAO;WAMM,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAwCxE,MAAM,CAAC,cAAc,IAAI,SAAS,UAAU,EAAE;IAK9C,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB;IAWtD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAW3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAevC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lzimul/minecraft-mcp",
3
3
  "description": "Minecraft Model Context Protocol (MCP) Server",
4
- "version": "1.0.3",
4
+ "version": "1.0.5",
5
5
  "author": {
6
6
  "name": "lZiMUl",
7
7
  "email": "lZiMUl@lzimul.com",
@@ -37,14 +37,16 @@
37
37
  },
38
38
  "scripts": {
39
39
  "start": "node .",
40
- "lint": "npx eslint --fix",
41
- "build": "npm run lint && npx tsc -p ./tsconfig.json && npm run typedoc",
40
+ "lint": "npx eslint .",
41
+ "lint:fix": "npx eslint . --fix",
42
+ "build": "npm run lint:fix && npx tsc -p ./tsconfig.json && npm run typedoc",
42
43
  "typedoc": "npx typedoc --options ./typedoc.json",
43
44
  "dev": "npm run build && npm run start",
44
45
  "generate-data": "node ./scripts/generate-data.mjs",
45
46
  "clean": "node ./scripts/clean.mjs",
46
- "test": "node ./scripts/smoke-test.mjs && node ./scripts/protocol-test.mjs && node ./scripts/persistence-test.mjs && node ./scripts/error-test.mjs && node ./scripts/stress-test.mjs",
47
- "test:stress": "node ./scripts/stress-test.mjs"
47
+ "test": "node ./scripts/smoke-test.mjs && node ./scripts/persistence-test.mjs && node ./scripts/error-test.mjs && node ./scripts/stress-test.mjs",
48
+ "test:stress": "node ./scripts/stress-test.mjs",
49
+ "prepublishOnly": "npm run build && npm test"
48
50
  },
49
51
  "files": [
50
52
  "./build/",
@@ -61,13 +63,15 @@
61
63
  "minecraft-mcp"
62
64
  ],
63
65
  "engines": {
64
- "node": ">=20"
66
+ "node": ">=22"
65
67
  },
66
68
  "overrides": {
67
69
  "katex": "^0.19.1"
68
70
  },
69
71
  "dependencies": {
70
72
  "@modelcontextprotocol/server": "^2.4.0",
73
+ "chalk": "^6.0.1",
74
+ "log4js": "^6.9.1",
71
75
  "zod": "^4.6.7"
72
76
  },
73
77
  "devDependencies": {
@@ -77,8 +81,8 @@
77
81
  "@eslint/json": "^2.1.1",
78
82
  "@eslint/markdown": "^8.0.3",
79
83
  "@types/node": "^26.6.5",
80
- "@typescript-eslint/eslint-plugin": "^8.72.0",
81
- "@typescript-eslint/parser": "^8.72.0",
84
+ "@typescript-eslint/eslint-plugin": "^8.72.1",
85
+ "@typescript-eslint/parser": "^8.72.1",
82
86
  "eslint": "^10.13.0",
83
87
  "eslint-config-prettier": "^10.1.8",
84
88
  "eslint-plugin-prettier": "^5.5.7",
@@ -88,14 +92,14 @@
88
92
  "tslib": "^2.8.1",
89
93
  "typedoc": "^0.28.20",
90
94
  "typescript": "^6.0.3",
91
- "typescript-eslint": "^8.72.0"
95
+ "typescript-eslint": "^8.72.1"
92
96
  },
93
97
  "repository": {
94
98
  "type": "git",
95
- "url": "git+https://github.com/lZiMUl/minecraft-mcp.git"
99
+ "url": "git+https://github.com/lZiMUl/Minecraft-MCP.git"
96
100
  },
97
101
  "bugs": {
98
- "url": "https://github.com/lZiMUl/minecraft-mcp/issues",
102
+ "url": "https://github.com/lZiMUl/Minecraft-MCP/issues",
99
103
  "email": "lZiMUl@lzimul.com"
100
104
  },
101
105
  "publishConfig": {
@@ -106,4 +110,4 @@
106
110
  },
107
111
  "sideEffects": false,
108
112
  "private": false
109
- }
113
+ }