Skip to content

StorageStructure

Ella-AWS edited this page May 17, 2026 · 8 revisions

Storage の構造について

api:

Write In Progress...

asset:context

神器・モブ・オブジェクトの各トリガー処理中に参照される一時コンテキスト。トリガーが終わると自動でリセットされる。

神器側で実用する場合の使い方詳細は 神器の作り方 - asset:contextに入っている情報 を参照。

compound Context {
   /// 神器処理時: 装備中の神器ID マップ (SlotIdMap)
   /// ObjectAsset / EffectAsset 処理時: 現在処理中の Asset の ID (int)
   id: SlotIdMap | int,
   /// 装備中アイテム情報 (神器処理時のみ)
   Items?: SlotItems,
   /// インベントリ全部 (読み取り専用、神器処理時のみ)
   Inventory?: [Item],

   // 以下、該当トリガー発火中のみ存在
   Attack?: AttackEvent,
   Damage?: DamageEvent,
   Heal?: HealEvent,
   ReceiveHeal?: ReceiveHealEvent,
   Killed?: KilledEvent,
   Shot?: ShotEvent,

   // ObjectAsset / EffectAsset 処理時のみ
   this?: compound,      // Field の中身 (this ポインタ相当)
   originID?: int,       // 召喚時の元 ID (継承中も最初の ID を保持)
   method?: string       // メソッド呼び出し中のメソッド名
}

compound SlotIdMap {
   auto?: int,
   mainhand?: int,
   offhand?: int,
   head?: int,
   chest?: int,
   legs?: int,
   feet?: int,
   /// equip/dis_equip トリガー時のみ。変化前後両方のIDを保持
   all?: SlotIdMap
}

compound SlotItems {
   AutoSlot?: string,  // "mainhand"|"offhand"|"head"|"chest"|"legs"|"feet"|null
   mainhand?: Item,
   offhand?: Item,
   head?: Item,
   chest?: Item,
   legs?: Item,
   feet?: Item
}

compound AttackEvent {
   /// 攻撃対象の MobUUID 配列
   To: [int],
   /// 各対象に与えるダメージ
   Amounts: [double],
   /// Amounts の最大値 (foreach で自動計算)
   Amount: double,
   /// "vanilla_melee" | "vanilla_projectile" | "vanilla_explosion"
   Type: string,
   /// バニラ起因の攻撃か (api:damage/ 経由なら false)
   IsVanilla: boolean,
   /// 継続ダメージ判定 (詳細は別途リンク参照)
   IsDoT: boolean
}

compound DamageEvent {
   /// 攻撃元の MobUUID (Mob から受けたダメージの時のみ)
   From?: int,
   /// "vanilla_melee" | "vanilla_drowning" | "vanilla_projectile" | "vanilla_explosion"
   /// | "vanilla_fire" | "vanilla_freezing" | "vanilla_lightning" | "vanilla_other"
   Type: string,
   /// 受けたダメージ量
   Amount: double,
   /// 盾でブロックしたか
   Blocked: boolean,
   /// バニラ起因か (api:damage/ 経由なら false)
   IsVanilla: boolean,
   IsDoT: boolean
}

compound HealEvent {
   /// 回復対象の UserID 配列
   To: [int],
   /// 各対象への回復量
   Amounts: [double],
   /// Amounts の最大値 (foreach で自動計算)
   Amount: double,
   /// 継続回復判定
   IsHoT: boolean
}

compound ReceiveHealEvent {
   /// 回復元プレイヤーの UserID (プレイヤーからの回復のみ)
   From?: int,
   Amount: double,
   IsHoT: boolean
}

IsDoT / IsHoT の詳細は 神器の作り方 - IsDoT / IsHoT のルール を参照。

asset:mob

Write In Progress...

asset:artifact

Write In Progress...

asset:island

Write In Progress...

asset:spawner

Write In Progress...

asset:trader

Write In Progress...

lib:

Write In Progress...

oh_my_dat:

Write In Progress...

player_manager:god

Write In Progress...

player_manager:lost_item

Write In Progress...

world_manager:gimmick

compound GimmickStorage {
   /// テレポーターのシステム
   TeleporterGroups: [GroupData]
}

compound GroupData {
   /// 識別ID
   ID: string,
   /// 所属するテレポーターのリスト
   Teleporters: [TeleporterData]
}

compound TeleporterData {
   /// 座標
   Pos: [double] @ 3,
   /// メタデータ
   Data: TeleporterMetaData
}

compound TeleporterMetaData {
   /// そのテレポーターが起動しているか 未指定の場合、起動しているものとして扱われる
   Activate?: boolean,
   /// テレポーターを星として見た時の色 default: "White"
   Color?: StarColor
}

enum(string) StarColor {
   White = "White",
   Yellow = "Yellow"
}

EntityStorage の構造について

Player

root
├ Name : String
├ LostItems : Item[]
├ Modifiers : Compound
│ ├ Heal : double
│ ├ MPRegen : double
│ ├ Attack : Compound
│ │ ├ Base : double
│ │ ├ Physical : double
│ │ ├ Magic : double
│ │ ├ None : double
│ │ ├ Fire : double
│ │ ├ Water : double
│ │ └ Thunder : double
│ │
│ ├ Defense : Compound
│ │ ├ Base : double
│ │ ├ Physical : double
│ │ ├ Magic : double
│ │ ├ None : double
│ │ ├ Fire : double
│ │ ├ Water : double
│ │ └ Thunder : double
│ │
│ └ Modifier : Compound
│    ├ Heal : Modifier[]
│    ├ MPRegen : Modifier[]
│    ├ Attack : Compound
│    │ ├ Base : Modifier[]
│    │ ├ Physical : Modifier[]
│    │ ├ Magic : Modifier[]
│    │ ├ None : Modifier[]
│    │ ├ Fire : Modifier[]
│    │ ├ Water : Modifier[]
│    │ └ Thunder : Modifier[]
│    │
│    └ Defense : Compound
│       ├ Base : Modifier[]
│       ├ Physical : Modifier[]
│       ├ Magic : Modifier[]
│       ├ None : Modifier[]
│       ├ Fire : Modifier[]
│       ├ Water : Modifier[]
│       └ Thunder : Modifier[]
│
├ ContextStash : Compound
│ ├ id : Compound
│ │ ├ auto : int
│ │ ├ mainhand : int
│ │ ├ offhand : int
│ │ ├ head : int
│ │ ├ chest : int
│ │ ├ legs : int
│ │ └ feet : int
│ │
│ ├ Items : Compound
│ │ ├ AutoSlot : string('auto' | 'mainhand' | 'offhand' | 'head' | 'chest' | 'legs' | 'feet')
│ │ ├ mainhand : Item
│ │ ├ offhand : Item
│ │ ├ head : Item
│ │ ├ chest : Item
│ │ ├ legs : Item
│ │ └ feet : Item
│ │
│ └ Inventory : Readonly Item[]
│
└ DataCache
   ├ abilities : CacheData<?>
   ├ AbsorptionAmount : CacheData<?>
   ├ ActiveEffects : CacheData<?>
   ├ Air : CacheData<?>
   ├ Attributes : CacheData<?>
   ├ Brain : CacheData<?>
   ├ CustomName : CacheData<?>
   ├ CustomNameVisible : CacheData<?>
   ├ DataVersion : CacheData<?>
   ├ DeathTime : CacheData<?>
   ├ Dimension : CacheData<?>
   ├ EnderItems : CacheData<?>
   ├ enteredNetherPosition : CacheData<?>
   ├ FallDistance : CacheData<?>
   ├ FallFlying : CacheData<?>
   ├ Fire : CacheData<?>
   ├ foodExhaustionLevel : CacheData<?>
   ├ foodLevel : CacheData<?>
   ├ foodSaturationLevel : CacheData<?>
   ├ foodTickTimer : CacheData<?>
   ├ Glowing : CacheData<?>
   ├ Health : CacheData<?>
   ├ HurtTime : CacheData<?>
   ├ id : CacheData<?>
   ├ Inventory : CacheData<?>
   ├ Invulnerable : CacheData<?>
   ├ Motion : CacheData<?>
   ├ NoAI : CacheData<?>
   ├ NoGravity : CacheData<?>
   ├ OnGround : CacheData<?>
   ├ Passengers : CacheData<?>
   ├ playerGameType : CacheData<?>
   ├ PortalCooldown : CacheData<?>
   ├ Pos : CacheData<?>
   ├ previousPlayerGameType : CacheData<?>
   ├ recipeBook : CacheData<?>
   ├ RootVehicle : CacheData<?>
   ├ Rotation : CacheData<?>
   ├ Score : CacheData<?>
   ├ seenCredits : CacheData<?>
   ├ SelectedItem : CacheData<?>
   ├ SelectedItemSlot : CacheData<?>
   ├ ShoulderEntityLeft : CacheData<?>
   ├ ShoulderEntityRight : CacheData<?>
   ├ Silent : CacheData<?>
   ├ SleepingX : CacheData<?>
   ├ SleepingY : CacheData<?>
   ├ SleepingZ : CacheData<?>
   ├ SleepTimer : CacheData<?>
   ├ SpawnForced : CacheData<?>
   ├ SpawnX : CacheData<?>
   ├ SpawnY : CacheData<?>
   ├ SpawnZ : CacheData<?>
   ├ Tags : CacheData<?>
   ├ Team : CacheData<?>
   ├ UUID : CacheData<?>
   ├ XpLevel : CacheData<?>
   ├ XpP : CacheData<?>
   ├ XpSeed : CacheData<?>
   └ XpTotal : CacheData<?>

Modifier

root : Modifier
├ UUID : int[]@4
├ Amount : double
└ Operation : string('add' | 'multiply_base' | 'multiply')

CacheData

root : CacheData<T>
├ Time : int
└ Data : T

AssetMob

root
└ MobData : Compound
   └ Modifiers : Compound
      ├ Attack : Compound
      │ ├ Base : double
      │ ├ Physical : double
      │ ├ Magic : double
      │ ├ None : double
      │ ├ Fire : double
      │ ├ Water : double
      │ └ Thunder : double
      │
      ├ Defense : Compound
      │ ├ Base : double
      │ ├ Physical : double
      │ ├ Magic : double
      │ ├ None : double
      │ ├ Fire : double
      │ ├ Water : double
      │ └ Thunder : double
      │
      └ Modifier : Compound
         ├ Attack : Compound
         │ ├ Base : Modifier[]
         │ ├ Physical : Modifier[]
         │ ├ Magic : Modifier[]
         │ ├ None : Modifier[]
         │ ├ Fire : Modifier[]
         │ ├ Water : Modifier[]
         │ └ Thunder : Modifier[]
         │
         └ Defense : Compound
            ├ Base : Modifier[]
            ├ Physical : Modifier[]
            ├ Magic : Modifier[]
            ├ None : Modifier[]
            ├ Fire : Modifier[]
            ├ Water : Modifier[]
            └ Thunder : Modifier[]

Spawner

Write In Progress...

Island

Write In Progress...

Trader

Write In Progress...

Teleporter

root
└ TeleporterData : Compound
   └ GroupID? : Boolean

note:

  • ここでは通称として EntityStorage と呼んでいるが、正式名称は OhMyDat である。

Clone this wiki locally