diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..4927b0a --- /dev/null +++ b/doc/index.html @@ -0,0 +1,1071 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module cmi

+

The Common Mob Interface

+

+

Info:

+
    +
  • Author: raymoo
  • +
+ + +

Types

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IdObject Identifiers.
PunchCallback (mob, hitter, time_from_last_punch, tool_capabilities, dir, damage, attacker)Punch callbacks.
DeathCauseReasons a mob could die.
DeathCallback (mob, cause)Death callbacks.
ActivationCallback (mob, dtime)Activation callbacks.
StepCallback (mob, dtime)Step callbacks.
ComponentDefComponent definitions.
+

Callback Registration

+ + + + + + + + + + + + + + + + + +
register_on_punchmob (func)Register a callback to be run when a mob is punched.
register_on_diemob (func)Register a callback to be run when a mob dies.
register_on_activatemob (func)Register a callback to be run when a mob is activated.
register_on_stepmob (func)Register a callback to be run on mob step.
+

Querying

+ + + + + + + + + +
is_mob (object)Checks if an object is a mob.
get_mob_description (object)Gets a player-readable mob name.
+

Health-related

+ + + + + + + + + +
attack (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker)Attack a mob.
damage_calculator (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker)Punch damage calculator.
+

Components

+ + + + + + + + + + + + + +
register_component (component_def)Register a mob component.
get_mob_component (ObjectRef, component_name)Get a component from a mob.
set_mob_component (ObjectRef, component_name, new_value)Set a component in a mob.
+

Unique Ids

+ + + + + +
get_uid (mob)Get the unique ID of a mob.
+

Implementation: event notification

+ + + + + + + + + + + + + + + + + +
notify_punch (mob, hitter, time_from_last_punch, tool_capabilities, dir, damage, attacker)Notify CMI that your mob has been punched.
notify_die (mob, cause)Notify CMI that your mob has died.
notify_activate (mob, dtime)Notify CMI that your mob has been activated.
notify_step (mob, dtime)Notify CMI that your mob is taking a step.
+

Implementation: components

+ + + + + + + + + +
activate_components (serialized_data)Activates component data.
serialize_components (component_data)Serialized component data.
+

Implementation: health

+ + + + + +
calculate_damage (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker)Calculate damage.
+ +
+
+ + +

Types

+ + + The various data structures used in the API. +
+
+ + Id +
+
+ Object Identifiers. + + +

Fields:

+
    +
  • type + string + Either "player" or "mob" +
  • +
  • identifier + string + For players, is a player name. For mobs, is a unique ID. +
  • +
+ + + + + +
+
+ + PunchCallback (mob, hitter, time_from_last_punch, tool_capabilities, dir, damage, attacker) +
+
+ Punch callbacks. + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • hitter + optional ObjectRef + +
  • +
  • time_from_last_punch + number + +
  • +
  • tool_capabilities + tab + +
  • +
  • dir + optional vector + +
  • +
  • damage + number + +
  • +
  • attacker + optional Id + Any indirect owner of the punch, for example a + player who fired an arrow. +
  • +
+ + + + + +
+
+ + DeathCause +
+
+ Reasons a mob could die. + The type field determines what kind of cause a DeathCause is. It can be one + of those specified here, or a custom one provided by a mod. For custom types, + the fields should be specified by the mod introducing it. + + +

Fields:

+
    +
  • type + string + The predefined types are "punch" and "environment". +
  • +
  • puncher + optional ObjectRef + If type == "punch", contains the puncher. The + puncher can be nil. +
  • +
  • attacker + optional Id + If type == "punch", contains the attacker if it exists + and is known. +
  • +
  • pos + optional vector + If type == "environment", is the position of the damaging + node. +
  • +
  • node + optional node + If type == "environment", describes the damaging node. +
  • +
+ + + + + +
+
+ + DeathCallback (mob, cause) +
+
+ Death callbacks. + + +

Parameters:

+
    +
  • mob + ObjectRef + the dying mob +
  • +
  • cause + DeathCause + cause of death +
  • +
+ + + + + +
+
+ + ActivationCallback (mob, dtime) +
+
+ Activation callbacks. + + +

Parameters:

+
    +
  • mob + ObjectRef + the mob being activated +
  • +
  • dtime + number + the time since the mob was unloaded +
  • +
+ + + + + +
+
+ + StepCallback (mob, dtime) +
+
+ Step callbacks. + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • dtime + number + +
  • +
+ + + + + +
+
+ + ComponentDef +
+
+ Component definitions. + + +

Fields:

+
    +
  • name + string + a unique name for the component, prefixed with the mod name +
  • +
  • initialize + func + a function taking no arguments and returning a new instance + of the data +
  • +
  • serialize + func + a function taking your component's data as an input and + returning it serialized as a string +
  • +
  • deserialize + func + a function taking the serialized form of your data and + turning it back into the original data +
  • +
+ + + + + +
+
+

Callback Registration

+ + + Functions for registering mob callbacks. +
+
+ + register_on_punchmob (func) +
+
+ Register a callback to be run when a mob is punched. + + +

Parameters:

+ + + + + + +
+
+ + register_on_diemob (func) +
+
+ Register a callback to be run when a mob dies. + + +

Parameters:

+ + + + + + +
+
+ + register_on_activatemob (func) +
+
+ Register a callback to be run when a mob is activated. + + +

Parameters:

+ + + + + + +
+
+ + register_on_stepmob (func) +
+
+ Register a callback to be run on mob step. + + +

Parameters:

+ + + + + + +
+
+

Querying

+ + + Functions for getting information about mobs. +
+
+ + is_mob (object) +
+
+ Checks if an object is a mob. + + +

Parameters:

+
    +
  • object + ObjectRef or luaentity + +
  • +
+ +

Returns:

+
    + + bool + true if the object is a mob, otherwise returns a falsey value +
+ + + + +
+
+ + get_mob_description (object) +
+
+ Gets a player-readable mob name. + + +

Parameters:

+
    +
  • object + ObjectRef or luaentity + +
  • +
+ +

Returns:

+
    + + string + +
+ + + + +
+
+

Health-related

+ + + Functions related to hurting or healing mobs. +
+
+ + attack (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker) +
+
+ Attack a mob. + Functions like the punch method of ObjectRef, but takes an additional optional + argument for an indirect attacker. Also works on non-mob entities that define + an appropriate _cmi_attack method. + + +

Parameters:

+
    +
  • mob + ObjectRef or luaentity + +
  • +
  • puncher + ObjectRef + +
  • +
  • time_from_last_punch + number + +
  • +
  • tool_capabilities + tab + +
  • +
  • direction + vector + +
  • +
  • attacker + optional Id + An indirect owner of the punch. For example, the player + who fired an arrow that punches the mob. +
  • +
+ + + + + +
+
+ + damage_calculator (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker) +
+
+ Punch damage calculator. + By default, this just calculates damage in the vanilla way. Switch it out for + something else to change the default damage mechanism for mobs. + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • puncher + optional ObjectRef + +
  • +
  • time_from_last_punch + number + +
  • +
  • tool_capabilities + table + +
  • +
  • direction + optional vector + +
  • +
  • attacker + optional Id + +
  • +
+ +

Returns:

+
    + + number + The calculated damage +
+ + + + +
+
+

Components

+ + + Components are data stored in a mob, that every mob is guaranteed to contain. + You can use them in conjunction with callbacks to extend mobs with new + functionality, without explicit support from mob mods. +
+
+ + register_component (component_def) +
+
+ Register a mob component. + + +

Parameters:

+ + + + + + +
+
+ + get_mob_component (ObjectRef, component_name) +
+
+ Get a component from a mob. + + +

Parameters:

+
    +
  • ObjectRef + mob + |luaentity mob +
  • +
  • component_name + string + +
  • +
+ +

Returns:

+
    + + The requested component, or nil if it doesn't exist +
+ + + + +
+
+ + set_mob_component (ObjectRef, component_name, new_value) +
+
+ Set a component in a mob. + + +

Parameters:

+
    +
  • ObjectRef + mob + |luaentity mob +
  • +
  • component_name + string + +
  • +
  • new_value + +
  • +
+ + + + + +
+
+

Unique Ids

+ + + Every mob gets a unique ID when they are created. This feature is implemented + as a component, so you can use it as an example. +
+
+ + get_uid (mob) +
+
+ Get the unique ID of a mob. + + +

Parameters:

+
    +
  • mob + ObjectRef or luaentity + +
  • +
+ +

Returns:

+
    + + string + +
+ + + + +
+
+

Implementation: event notification

+ + + Functions used to notify CMI when things happen to your mob. Only necessary + when you are implementing the interface. +
+
+ + notify_punch (mob, hitter, time_from_last_punch, tool_capabilities, dir, damage, attacker) +
+
+ Notify CMI that your mob has been punched. + Call this before doing any punch handling that is not "read-only". + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • hitter + optional ObjectRef + +
  • +
  • time_from_last_punch + number + +
  • +
  • tool_capabilities + tab + +
  • +
  • dir + optional vector + +
  • +
  • damage + number + +
  • +
  • attacker + optional Id + + unknown. +
  • +
+ +

Returns:

+
    + + Returns true if punch handling should be aborted. +
+ + + + +
+
+ + notify_die (mob, cause) +
+
+ Notify CMI that your mob has died. + Call this right before calling remove. + + +

Parameters:

+
    +
  • mob + ObjectRef + the dying mob +
  • +
  • cause + DeathCause + cause of death +
  • +
+ + + + + +
+
+ + notify_activate (mob, dtime) +
+
+ Notify CMI that your mob has been activated. + Call this after all other mob initialization. + + +

Parameters:

+
    +
  • mob + ObjectRef + the mob being activated +
  • +
  • dtime + number + the time since the mob was unloaded +
  • +
+ + + + + +
+
+ + notify_step (mob, dtime) +
+
+ Notify CMI that your mob is taking a step. + Call this on every step. It is suggested to call it before or after all other + processing, to avoid logic errors caused by callbacks handling the same state + as your entity's normal step logic. + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • dtime + number + +
  • +
+ + + + + +
+
+

Implementation: components

+ + + Functions related to implementing entity components. Only necessary when you + are implementing the interface. +
+
+ + activate_components (serialized_data) +
+
+ Activates component data. + On mob activation, call this and put the result in the _cmi_components field of + its luaentity. + + +

Parameters:

+
    +
  • serialized_data + optional string + the serialized form of the string, if + available. If the mob has never had component data, do not pass this argument. +
  • +
+ +

Returns:

+
    + + component data +
+ + + + +
+
+ + serialize_components (component_data) +
+
+ Serialized component data. + When serializing your mob data, call this and put the result somewhere safe, + where it can be retrieved on activation to be passed to + #{activate_components}. + + +

Parameters:

+
    +
  • component_data + +
  • +
+ +

Returns:

+
    + + string + +
+ + + + +
+
+

Implementation: health

+ + + Functions related to health that are needed for implementation of the + interface. Only necessary if you are implementing the interface. +
+
+ + calculate_damage (mob, puncher, time_from_last_punch, tool_capabilities, direction, attacker) +
+
+ Calculate damage. + Use this function when you want to calculate the "default" damage. If you + are a modder who wants to switch out the damage mechanism, do not replace + this function. Replace #{damage_calculator} instead. + + +

Parameters:

+
    +
  • mob + ObjectRef + +
  • +
  • puncher + optional ObjectRef + +
  • +
  • time_from_last_punch + number + +
  • +
  • tool_capabilities + table + +
  • +
  • direction + optional vector + +
  • +
  • attacker + optional Id + +
  • +
+ +

Returns:

+
    + + number + +
+ + + + +
+
+ + +
+
+
+generated by LDoc 1.4.3 +Last updated 2017-06-18 14:58:46 +
+
+ + diff --git a/doc/ldoc.css b/doc/ldoc.css new file mode 100644 index 0000000..7d74ca2 --- /dev/null +++ b/doc/ldoc.css @@ -0,0 +1,307 @@ +/* BEGIN RESET + +Copyright (c) 2010, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.com/yui/license.html +version: 2.8.2r1 +*/ +html { + color: #000; + background: #FFF; +} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { + margin: 0; + padding: 0; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +fieldset,img { + border: 0; +} +address,caption,cite,code,dfn,em,strong,th,var,optgroup { + font-style: inherit; + font-weight: inherit; +} +del,ins { + text-decoration: none; +} +li { + list-style: disc; + margin-left: 20px; +} +caption,th { + text-align: left; +} +h1,h2,h3,h4,h5,h6 { + font-size: 100%; + font-weight: bold; +} +q:before,q:after { + content: ''; +} +abbr,acronym { + border: 0; + font-variant: normal; +} +sup { + vertical-align: baseline; +} +sub { + vertical-align: baseline; +} +legend { + color: #000; +} +input,button,textarea,select,optgroup,option { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; +} +input,button,textarea,select {*font-size:100%; +} +/* END RESET */ + +body { + margin-left: 1em; + margin-right: 1em; + font-family: arial, helvetica, geneva, sans-serif; + background-color: #ffffff; margin: 0px; +} + +code, tt { font-family: monospace; font-size: 1.1em; } +span.parameter { font-family:monospace; } +span.parameter:after { content:":"; } +span.types:before { content:"("; } +span.types:after { content:")"; } +.type { font-weight: bold; font-style:italic } + +body, p, td, th { font-size: .95em; line-height: 1.2em;} + +p, ul { margin: 10px 0 0 0px;} + +strong { font-weight: bold;} + +em { font-style: italic;} + +h1 { + font-size: 1.5em; + margin: 0 0 20px 0; +} +h2, h3, h4 { margin: 15px 0 10px 0; } +h2 { font-size: 1.25em; } +h3 { font-size: 1.15em; } +h4 { font-size: 1.06em; } + +a:link { font-weight: bold; color: #004080; text-decoration: none; } +a:visited { font-weight: bold; color: #006699; text-decoration: none; } +a:link:hover { text-decoration: underline; } + +hr { + color:#cccccc; + background: #00007f; + height: 1px; +} + +blockquote { margin-left: 3em; } + +ul { list-style-type: disc; } + +p.name { + font-family: "Andale Mono", monospace; + padding-top: 1em; +} + +pre.example { + background-color: rgb(245, 245, 245); + border: 1px solid silver; + padding: 10px; + margin: 10px 0 10px 0; + font-family: "Andale Mono", monospace; + font-size: .85em; +} + +pre { + background-color: rgb(245, 245, 245); + border: 1px solid silver; + padding: 10px; + margin: 10px 0 10px 0; + overflow: auto; + font-family: "Andale Mono", monospace; +} + + +table.index { border: 1px #00007f; } +table.index td { text-align: left; vertical-align: top; } + +#container { + margin-left: 1em; + margin-right: 1em; + background-color: #f0f0f0; +} + +#product { + text-align: center; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; +} + +#product big { + font-size: 2em; +} + +#main { + background-color: #f0f0f0; + border-left: 2px solid #cccccc; +} + +#navigation { + float: left; + width: 14em; + vertical-align: top; + background-color: #f0f0f0; + overflow: visible; +} + +#navigation h2 { + background-color:#e7e7e7; + font-size:1.1em; + color:#000000; + text-align: left; + padding:0.2em; + border-top:1px solid #dddddd; + border-bottom:1px solid #dddddd; +} + +#navigation ul +{ + font-size:1em; + list-style-type: none; + margin: 1px 1px 10px 1px; +} + +#navigation li { + text-indent: -1em; + display: block; + margin: 3px 0px 0px 22px; +} + +#navigation li li a { + margin: 0px 3px 0px -1em; +} + +#content { + margin-left: 14em; + padding: 1em; + width: 700px; + border-left: 2px solid #cccccc; + border-right: 2px solid #cccccc; + background-color: #ffffff; +} + +#about { + clear: both; + padding: 5px; + border-top: 2px solid #cccccc; + background-color: #ffffff; +} + +@media print { + body { + font: 12pt "Times New Roman", "TimeNR", Times, serif; + } + a { font-weight: bold; color: #004080; text-decoration: underline; } + + #main { + background-color: #ffffff; + border-left: 0px; + } + + #container { + margin-left: 2%; + margin-right: 2%; + background-color: #ffffff; + } + + #content { + padding: 1em; + background-color: #ffffff; + } + + #navigation { + display: none; + } + pre.example { + font-family: "Andale Mono", monospace; + font-size: 10pt; + page-break-inside: avoid; + } +} + +table.module_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.module_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.module_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.module_list td.summary { width: 100%; } + + +table.function_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.function_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.function_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.function_list td.summary { width: 100%; } + +ul.nowrap { + overflow:auto; + white-space:nowrap; +} + +dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} +dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} +dl.table h3, dl.function h3 {font-size: .95em;} + +/* stop sublists from having initial vertical space */ +ul ul { margin-top: 0px; } +ol ul { margin-top: 0px; } +ol ol { margin-top: 0px; } +ul ol { margin-top: 0px; } + +/* make the target distinct; helps when we're navigating to a function */ +a:target + * { + background-color: #FF9; +} + +/* styles for prettification of source */ +pre .comment { color: #558817; } +pre .constant { color: #a8660d; } +pre .escape { color: #844631; } +pre .keyword { color: #aa5050; font-weight: bold; } +pre .library { color: #0e7c6b; } +pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; } +pre .string { color: #8080ff; } +pre .number { color: #f8660d; } +pre .operator { color: #2239a8; font-weight: bold; } +pre .preprocessor, pre .prepro { color: #a33243; } +pre .global { color: #800080; } +pre .prompt { color: #558817; } +pre .url { color: #272fc2; text-decoration: underline; }