@minecraft/server-editor 0.1.0-beta.1.21.0-preview.21 → 0.1.0-beta.1.21.0-preview.23

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 (2) hide show
  1. package/index.d.ts +284 -3
  2. package/package.json +2 -2
package/index.d.ts CHANGED
@@ -14,7 +14,7 @@
14
14
  * ```json
15
15
  * {
16
16
  * "module_name": "@minecraft/server-editor",
17
- * "version": "0.1.0-beta.1.21.0-preview.21"
17
+ * "version": "0.1.0-beta.1.21.0-preview.23"
18
18
  * }
19
19
  * ```
20
20
  *
@@ -165,6 +165,17 @@ export declare enum EditorStatusBarAlignment {
165
165
  Left = 1,
166
166
  }
167
167
 
168
+ export enum ExportResult {
169
+ ValidWorldExport = 0,
170
+ LevelFetchFailed = 1,
171
+ FileArchiverFetchFailed = 2,
172
+ ProjectConverterFetchFailed = 3,
173
+ PlayerNotFound = 4,
174
+ WorldExportFailed = 5,
175
+ WorldExportBusy = 6,
176
+ EditorSystemFailure = 7,
177
+ }
178
+
168
179
  /**
169
180
  * Enumeration representing identifiers for graphics settings
170
181
  * properties.
@@ -377,6 +388,22 @@ export enum PlaytestSessionResult {
377
388
  UnspecifiedError = 11,
378
389
  }
379
390
 
391
+ export enum ProjectExportType {
392
+ PlayableWorld = 0,
393
+ ProjectBackup = 1,
394
+ WorldTemplate = 2,
395
+ }
396
+
397
+ /**
398
+ * Define the visibility of the status bar item If the tool
399
+ * does not have an `ISimpleToolPropertyPane` component, then
400
+ * this option is ignored
401
+ */
402
+ export declare enum SimpleToolStatusBarVisibility {
403
+ AlwaysVisible = 0,
404
+ VisibleWhenActive = 1,
405
+ }
406
+
380
407
  export enum WidgetGroupSelectionMode {
381
408
  Multiple = 'Multiple',
382
409
  None = 'None',
@@ -1060,6 +1087,24 @@ export class CustomWidgetMoveEventData {
1060
1087
  readonly widget: CustomWidget;
1061
1088
  }
1062
1089
 
1090
+ export class ExportManager {
1091
+ private constructor();
1092
+ /**
1093
+ * @remarks
1094
+ * This function can't be called in read-only mode.
1095
+ *
1096
+ * @throws This function can throw errors.
1097
+ */
1098
+ beginExportProject(options: ProjectExportOptions): Promise<ExportResult>;
1099
+ /**
1100
+ * @remarks
1101
+ * This function can't be called in read-only mode.
1102
+ *
1103
+ * @throws This function can throw errors.
1104
+ */
1105
+ canExportProject(): boolean;
1106
+ }
1107
+
1063
1108
  /**
1064
1109
  * Editor Extensions are the basis for all player specific,
1065
1110
  * editor specific functionality within the game. Almost all
@@ -1145,6 +1190,7 @@ export class ExtensionContext {
1145
1190
  *
1146
1191
  */
1147
1192
  readonly cursor: Cursor;
1193
+ readonly exportManager: ExportManager;
1148
1194
  /**
1149
1195
  * @remarks
1150
1196
  * Contains information about the registered extension
@@ -1741,12 +1787,12 @@ export class SettingsUIElement {
1741
1787
  readonly max?: number;
1742
1788
  readonly min?: number;
1743
1789
  readonly name: string;
1744
- readonly onChange: (arg: variant) => boolean;
1790
+ readonly onChange: (arg: boolean | number | string | minecraftserver.Vector3) => boolean;
1745
1791
  readonly options?: string[];
1746
1792
  constructor(
1747
1793
  name: string,
1748
1794
  initialValue: boolean | number | string | minecraftserver.Vector3,
1749
- onChange: (arg: variant) => boolean,
1795
+ onChange: (arg: boolean | number | string | minecraftserver.Vector3) => boolean,
1750
1796
  min?: number,
1751
1797
  max?: number,
1752
1798
  options?: string[],
@@ -1758,6 +1804,19 @@ export class SimpleBlockPaletteItem extends IBlockPaletteItem {
1758
1804
  constructor(displayName?: string);
1759
1805
  }
1760
1806
 
1807
+ /**
1808
+ * A simple class wrapper to inherit in your tool which
1809
+ * contains the initialization and storage of the simple tool
1810
+ * component utility. See one of the `Simple` samples to see
1811
+ * how to use this class and the wrapper framework
1812
+ */
1813
+ export declare class SimpleToolWrapper implements IDisposable {
1814
+ get session(): IPlayerUISession;
1815
+ get simpleTool(): ISimpleTool;
1816
+ setupSimpleTool(session: IPlayerUISession, options: ISimpleToolOptions): void;
1817
+ teardown(): void;
1818
+ }
1819
+
1761
1820
  /**
1762
1821
  * Responsible for querying and modifying various properties of
1763
1822
  * the simulation.
@@ -2366,6 +2425,7 @@ export interface LogProperties {
2366
2425
  export interface PlaytestGameOptions {
2367
2426
  alwaysDay?: boolean;
2368
2427
  difficulty?: minecraftserver.Difficulty;
2428
+ dimensionId?: string;
2369
2429
  disableWeather?: boolean;
2370
2430
  gameMode?: minecraftserver.GameMode;
2371
2431
  showCoordinates?: boolean;
@@ -2374,6 +2434,16 @@ export interface PlaytestGameOptions {
2374
2434
  weather?: number;
2375
2435
  }
2376
2436
 
2437
+ export interface ProjectExportOptions {
2438
+ alwaysDay?: boolean;
2439
+ difficulty?: minecraftserver.Difficulty;
2440
+ disableWeather?: boolean;
2441
+ exportName?: string;
2442
+ exportType: ProjectExportType;
2443
+ gameMode?: minecraftserver.GameMode;
2444
+ initialTimOfDay?: number;
2445
+ }
2446
+
2377
2447
  export interface WidgetCreateOptions {
2378
2448
  initialVisibility?: boolean;
2379
2449
  isSelectable?: boolean;
@@ -2961,6 +3031,12 @@ export interface IPropertyPane {
2961
3031
  *
2962
3032
  */
2963
3033
  titleStringId: string;
3034
+ /**
3035
+ * @remarks
3036
+ * Check visibility of the pane
3037
+ *
3038
+ */
3039
+ visible: boolean;
2964
3040
  /**
2965
3041
  * @remarks
2966
3042
  * Width of the panel in rem.
@@ -3179,6 +3255,211 @@ export interface IRegisterExtensionOptionalParameters {
3179
3255
  toolGroupId?: string;
3180
3256
  }
3181
3257
 
3258
+ /**
3259
+ * The simple tool wrapper will create, bind and manage the
3260
+ * lifecycle of all the desired components. The wrapper is
3261
+ * designed to obfuscate and simplify the process of creating a
3262
+ * simple editor tool so that a creator can get on with the job
3263
+ * of just creating the tool functionality without getting
3264
+ * mired in the irrelevant details of component lifecycle and
3265
+ * visibility management. The wrapper will also attempt to
3266
+ * codify particular implementation patterns and requirements
3267
+ * that are common to all editor tools, and enforce them in a
3268
+ * consistent way. It should also go some way to insulating the
3269
+ * creator from underlying system and implementation changes as
3270
+ * the editor evolves.
3271
+ */
3272
+ export interface ISimpleTool {
3273
+ get menu(): IMenu | undefined;
3274
+ get name(): string;
3275
+ get pane(): ISimpleToolPaneComponent;
3276
+ get session(): IPlayerUISession;
3277
+ get statusBar(): ISimpleToolStatusBarComponent;
3278
+ get toolRail(): ISimpleToolRailComponent;
3279
+ /**
3280
+ * @remarks
3281
+ */
3282
+ findPane(idString: string): ISimpleToolPaneComponent | undefined;
3283
+ /**
3284
+ * @remarks
3285
+ */
3286
+ hidePane(idString?: string): void;
3287
+ /**
3288
+ * @remarks
3289
+ */
3290
+ logDebug(message: string): void;
3291
+ /**
3292
+ * @remarks
3293
+ */
3294
+ logError(message: string): void;
3295
+ /**
3296
+ * @remarks
3297
+ */
3298
+ logInfo(message: string): void;
3299
+ /**
3300
+ * @remarks
3301
+ */
3302
+ logWarn(message: string): void;
3303
+ /**
3304
+ * @remarks
3305
+ */
3306
+ showPane(idString?: string): void;
3307
+ /**
3308
+ * @remarks
3309
+ */
3310
+ showPaneExclusively(idString: string): void;
3311
+ /**
3312
+ * @remarks
3313
+ */
3314
+ teardown(): void;
3315
+ }
3316
+
3317
+ /**
3318
+ * Define a (key & modifier) pair for the simple tool
3319
+ * activation key binding
3320
+ */
3321
+ export interface ISimpleToolKeyPair {
3322
+ button: KeyboardKey;
3323
+ buttonModifier: InputModifier;
3324
+ }
3325
+
3326
+ /**
3327
+ * A set of options which define the basic properties of a
3328
+ * simple tool, and the optional components that are desired.
3329
+ */
3330
+ export interface ISimpleToolOptions {
3331
+ activationKeyBinding?: ISimpleToolKeyPair;
3332
+ name: string;
3333
+ onFinalize?: (tool: ISimpleTool) => void;
3334
+ onTeardown?: (tool: ISimpleTool) => void;
3335
+ propertyPaneOptions?: ISimpleToolPaneOptions;
3336
+ statusBarOptions?: ISimpleToolStatusBarOptions;
3337
+ toolRailOptions?: ISimpleToolRailOptions;
3338
+ }
3339
+
3340
+ /**
3341
+ * The Simple Tool pane component represents the main window
3342
+ * (or sub-window) for an editor tool. The pane components are
3343
+ * stored as a hierarchy (see the `ISimpleToolPaneOptions`
3344
+ * interface for more details) and are the main containers for
3345
+ * all of the UI controls used by the editor tool. Panes are
3346
+ * optional (a tool doesn't necessarily need to have a pane),
3347
+ * but if a pane is present, then it is one of two type - Modal
3348
+ * Pane (appears on the left side of the display; visibility is
3349
+ * tied to the `ISimpleToolRail` component) (Note that there
3350
+ * can be only one modal pane visible at a time) - Global Pane
3351
+ * (appears on the right side of the display; visibility is up
3352
+ * to the creator/user)
3353
+ */
3354
+ export interface ISimpleToolPaneComponent {
3355
+ get childPaneList(): string[];
3356
+ get id(): string;
3357
+ get isVisible(): boolean;
3358
+ get pane(): IPropertyPane;
3359
+ get session(): IPlayerUISession;
3360
+ get simpleTool(): ISimpleTool;
3361
+ /**
3362
+ * @remarks
3363
+ */
3364
+ findPane(idString: string): ISimpleToolPaneComponent | undefined;
3365
+ /**
3366
+ * @remarks
3367
+ */
3368
+ hidePane(): void;
3369
+ /**
3370
+ * @remarks
3371
+ */
3372
+ reconstructPane(): void;
3373
+ /**
3374
+ * @remarks
3375
+ */
3376
+ showPane(): void;
3377
+ }
3378
+
3379
+ /**
3380
+ * A set of options which define the basic properties of a
3381
+ * window pane (or sub-pane) for a simple tool. This pane can
3382
+ * be a top level pane, or a child pane of the top level pane,
3383
+ * and is the content container for all of the UI controls used
3384
+ * by the editor tool. Each pane is uniquely identified by the
3385
+ * `id` property, and has a number of optional function
3386
+ * closures which are called at various points in the pane's
3387
+ * lifecycle. Note that instead of having a single `onFinalize`
3388
+ * function, panes implement a pair of `onBeginFinalize` and
3389
+ * `onEndFinalize` functions. This is to allow for the pane to
3390
+ * be partially constructed BEFORE any child panes are
3391
+ * constructed. Once all child panes have been fully finalized,
3392
+ * then the `onEndFinalize` function is called to allow the
3393
+ * pane to finalize itself.
3394
+ */
3395
+ export interface ISimpleToolPaneOptions {
3396
+ childPaneInitiallyVisible?: string;
3397
+ childPanes?: ISimpleToolPaneOptions[];
3398
+ childPanesMutuallyExclusive?: boolean;
3399
+ id: string;
3400
+ onBeginFinalize?: (pane: ISimpleToolPaneComponent) => void;
3401
+ onEndFinalize?: (pane: ISimpleToolPaneComponent) => void;
3402
+ onHide?: (pane: ISimpleToolPaneComponent) => void;
3403
+ onShow?: (pane: ISimpleToolPaneComponent) => void;
3404
+ onTeardown?: (pane: ISimpleToolPaneComponent) => void;
3405
+ titleAltText: string;
3406
+ titleStringId?: string;
3407
+ }
3408
+
3409
+ export interface ISimpleToolRailComponent {
3410
+ get session(): IPlayerUISession;
3411
+ get simpleTool(): ISimpleTool;
3412
+ get toolRail(): IModalTool;
3413
+ }
3414
+
3415
+ /**
3416
+ * The tool rail component allows the tool to register an icon
3417
+ * and button (and dynamic tooltip) in the tool rail on the
3418
+ * left side of the display. Adding a tool rail component to a
3419
+ * tool will cause the tool to be considered a `modal tool`,
3420
+ * and only one single modal tool can be active at any one
3421
+ * time. Modal tools are generally tools which take focus and
3422
+ * control of the cursor (e.g. selection, clipboards, entity
3423
+ * selection, etc) Global tools (tools which do not have a tool
3424
+ * rail) are generally things like property pages, settings,
3425
+ * etc - things that do not require an active cursor or
3426
+ * gameplay interaction
3427
+ */
3428
+ export interface ISimpleToolRailOptions {
3429
+ displayAltText: string;
3430
+ displayStringId?: string;
3431
+ icon: string;
3432
+ onActivate?: (component: ISimpleToolRailComponent) => void;
3433
+ onDeactivate?: (component: ISimpleToolRailComponent) => void;
3434
+ onFinalize?: (component: ISimpleToolRailComponent) => void;
3435
+ onTeardown?: (component: ISimpleToolRailComponent) => void;
3436
+ tooltipAltText: string;
3437
+ tooltipStringId?: string;
3438
+ }
3439
+
3440
+ export interface ISimpleToolStatusBarComponent {
3441
+ get session(): IPlayerUISession;
3442
+ get simpleTool(): ISimpleTool;
3443
+ get statusBarItem(): IStatusBarItem;
3444
+ hide(): void;
3445
+ show(): void;
3446
+ }
3447
+
3448
+ /**
3449
+ * A set of options which define the basic properties of a
3450
+ * status bar item for a simple tool.
3451
+ */
3452
+ export interface ISimpleToolStatusBarOptions {
3453
+ alignment: EditorStatusBarAlignment;
3454
+ displayAltText: string;
3455
+ onFinalize?: (statusBar: ISimpleToolStatusBarComponent) => void;
3456
+ onHide?: (statusBar: ISimpleToolStatusBarComponent) => void;
3457
+ onShow?: (statusBar: ISimpleToolStatusBarComponent) => void;
3458
+ onTeardown?: (statusBar: ISimpleToolStatusBarComponent) => void;
3459
+ size: number;
3460
+ visibility?: SimpleToolStatusBarVisibility;
3461
+ }
3462
+
3182
3463
  export interface IStatusBarItem {
3183
3464
  /**
3184
3465
  * @remarks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minecraft/server-editor",
3
- "version": "0.1.0-beta.1.21.0-preview.21",
3
+ "version": "0.1.0-beta.1.21.0-preview.23",
4
4
  "description": "",
5
5
  "contributors": [
6
6
  {
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "dependencies": {
16
16
  "@minecraft/common": "^1.0.0",
17
- "@minecraft/server": "^1.12.0-beta.1.21.0-preview.21"
17
+ "@minecraft/server": "^1.12.0-beta.1.21.0-preview.23"
18
18
  },
19
19
  "license": "MIT"
20
20
  }