This is a table of types used in Cobblemon as documented, and the classes they extend from.

Name Type Description
MoValue Class This is the parent class of all values. Does nothing on it's own, can be treated like Any in Kotlin.
DoubleValue Subclass of MoValue Doubles are also used as Integers and Booleans.
StringValue Subclass of MoValue Represents a String.
MoStruct Subclass of MoValue Used like a map, can get or set using a string key.
VariableStruct Subclass of MoStruct A struct that can get and set values.
ArrayStruct Subclass of VariableStruct A struct that uses integers as keys. NOTE: For the purpose of documentation, ArrayStruct is notated as ArrayStruct<Type> when only one type is expected. All ArrayStructs have no required types and can be mixed.
QueryStruct Subclass of MoStruct A struct that contains functions that can be executed using get. Does not support setting values.
ObjectValue Subclass of QueryStruct Cobblemon class used to implement many types. Can get the value of the type, get a double value using asDouble(), and get a string value using asString(). This is used for Players, Pokémon, Battles, and the rest of our implemented Minecraft and Cobblemon types. These may have special functions which are listed below.