feat: start on content tab env focused design

This commit is contained in:
Calum H. (IMB11)
2026-08-24 12:28:17 +01:00
parent fb39dabe43
commit 0fbd431169
15 changed files with 1003 additions and 248 deletions
@@ -105,6 +105,57 @@ export class ArchonContentV1Module extends AbstractModule {
})
}
/** POST /v1/:server_id/worlds/:world_id/addons/set-enabled-server */
public async setAddonEnabledServer(
serverId: string,
worldId: string,
request: Archon.Content.v1.SetAddonEnabledRequest,
): Promise<void> {
await this.client.request<void>(
`/servers/${serverId}/worlds/${worldId}/addons/set-enabled-server`,
{
api: 'archon',
version: 1,
method: 'POST',
body: request,
},
)
}
/** POST /v1/:server_id/worlds/:world_id/addons/set-enabled-player */
public async setAddonEnabledPlayer(
serverId: string,
worldId: string,
request: Archon.Content.v1.SetAddonEnabledRequest,
): Promise<void> {
await this.client.request<void>(
`/servers/${serverId}/worlds/${worldId}/addons/set-enabled-player`,
{
api: 'archon',
version: 1,
method: 'POST',
body: request,
},
)
}
/** POST /v1/:server_id/worlds/:world_id/addons/set-locked-side-toggle */
public async setAddonSideToggleLocked(
serverId: string,
worldId: string,
request: Archon.Content.v1.SetAddonSideToggleLockedRequest,
): Promise<void> {
await this.client.request<void>(
`/servers/${serverId}/worlds/${worldId}/addons/set-locked-side-toggle`,
{
api: 'archon',
version: 1,
method: 'POST',
body: request,
},
)
}
/** POST /v1/:server_id/worlds/:world_id/addons/delete-many */
public async deleteAddons(
serverId: string,
@@ -301,6 +301,25 @@ export namespace Archon {
environment?: Labrinth.Projects.v3.Environment | null
}
export type AddonManifestEnvironment =
| 'client_and_server'
| 'client_only'
| 'dedicated_server_only'
export type AddonManifestWarnings = {
multiple_mod_entries: number | null
malformed: boolean
}
export type AddonManifest = {
platform: Modloader
name: string | null
version: string | null
environment: AddonManifestEnvironment | null
icon_embedded: boolean
warnings: AddonManifestWarnings
}
export type AddonStatus =
| 'pending'
| 'installed'
@@ -316,6 +335,10 @@ export namespace Archon {
filesize: number
btime?: string
disabled: boolean
disabled_server: boolean
disabled_player: boolean
side_toggle_unlocked: boolean
manifest: AddonManifest | null
kind: AddonKind
from_modpack: boolean
status: AddonStatus
@@ -354,6 +377,14 @@ export namespace Archon {
filename: string
}
export type SetAddonEnabledRequest = RemoveAddonRequest & {
enabled: boolean
}
export type SetAddonSideToggleLockedRequest = RemoveAddonRequest & {
locked: boolean
}
export type UpdateAddonRequest = {
filename: string
version_id?: string | null
@@ -1063,6 +1094,7 @@ export namespace Archon {
project_id: string | null
pack_client_retained: boolean
pack_client_depends: boolean
manifest?: Archon.Content.v1.AddonManifest | null
status: Archon.Content.v1.AddonStatus
filesize: number | null
name: string | null
@@ -7,6 +7,24 @@ export class KyrosContentV1Module extends AbstractModule {
return 'kyros_content_v1'
}
/** GET /v1/worlds/:world_id/content/embedded-icon */
public async getEmbeddedAddonIcon(
worldId: string,
parentDirectory: 'mods' | 'plugins',
filename: string,
): Promise<Blob> {
return this.client.request<Blob>(`/worlds/${worldId}/content/embedded-icon`, {
api: '',
version: 'v1',
method: 'GET',
params: {
parent_directory: parentDirectory,
filename,
},
useNodeAuth: true,
})
}
/**
* Upload addon files to a world via multipart form data
*