figura-ts
Version:
Lua Types for the Minecraft Mod Figura
103 lines (102 loc) • 3.17 kB
TypeScript
/// <reference path="components.d.ts" />
/// <reference path="format.d.ts" />
declare namespace Minecraft
{
export type Selector = "@p" | "@r" | "@a" | "@e" | "@s" | "@n"
export interface IRawJsonTextBase<Type extends string>
{
type?: Type
extra?: IRawJsonTextList
color?: ColorName | HexColor
font?: string
bold?: boolean
italic?: boolean
underlined?: boolean
strikethrough?: boolean
obfuscated?: boolean
insertion?: string
clickEvent?: IRawJsonTextBase.ClickEvent
hoverEvent?: IRawJsonTextBase.HoverEvent
}
export namespace IRawJsonTextBase
{
export interface ClickEvent
{
action: "open_url" | "open_file" | "run_command" | "suggest_command" | "change_page" | "copy_to_clipboard"
value: string
}
export interface HoverEvent<Action extends HoverEvent.Action = HoverEvent.Action>
{
action: Action
contents: HoverEvent.ContentMap[Action]
}
export namespace HoverEvent
{
export interface TextItemContent
{
id: string
count?: number
components?: ComponentMap
}
export interface EntityContent
{
name?: ITextJsonText
type: string
id: string
}
export type ContentMap = {
"show_text": TextItemContent
"show_item": TextItemContent
"show_entity": EntityContent
}
export type Action = keyof ContentMap
}
}
export interface ITextJsonText extends IRawJsonTextBase<"text">
{
text: string
}
export interface ITranslatedJsonText extends IRawJsonTextBase<"translatable">
{
translate: string
fallback?: string
with?: IRawJsonTextList
}
export interface IScoreJsonText extends IRawJsonTextBase<"score">
{
score: IScoreJsonText.Score
}
export namespace IScoreJsonText
{
export interface Score
{
name: string | Selector | "*"
objective: string
}
}
export interface ISelectorJsonText extends IRawJsonTextBase<"selector">
{
selector: Selector
seperator?: ITextJsonText
}
export interface IKeybindJsonText extends IRawJsonTextBase<"keybind">
{
keybind: string
}
export interface INBTJsonText extends IRawJsonTextBase<"nbt">
{
source?: INBTJsonText.Source
nbt: string
interpret?: boolean
seperator?: ITextJsonText
block?: string
entity?: string
storage?: string
}
export namespace INBTJsonText
{
export type Source = "block" | "entity" | "storage"
}
export type IRawJsonText = ITextJsonText | ITranslatedJsonText | IScoreJsonText | ISelectorJsonText | INBTJsonText
export type IRawJsonTextList = Array<IRawJsonText>
}