mirror of
https://github.com/eaglerforge/EaglerForgeInjector
synced 2025-07-23 06:01:38 -09:00
3.5 KiB
3.5 KiB
ModAPI.reflect
ModAPI.reflect supplies a user friendly wrapper for accessing and interacting with java classes from javascript.
Properties:
classes: ReflectClass[]
ModAPI.reflect.classes
is an array of ReflectClasses, representing (almost) every java class.
Methods:
ModAPI.reflect.getClassById(classId: String) : ReflectClass
- This method is used to find a class by its id.
- For example, to get the
Minecraft
class, you can useModAPI.reflect.getClassById("net.minecraft.client.Minecraft")
ModAPI.reflect.getClassByName(className: String) : ReflectClass
- This method is used to find a class by its id.
- For example, to get the
Minecraft
class, you can useModAPI.reflect.getClassById("Minecraft")
- This runs slower than
getClassById
because it has to filter through all classes. Make sure to cache the result rather than calling it over and over again.
ReflectClass Definition
Each ReflectClass
has the following properties:
binaryName: String?
- The binary name of the class in question. Eg:
Lnet.minecraft.client.entity.EntityPlayerSP;
- Will be
null
ifhasMeta
is equal tofalse
- The binary name of the class in question. Eg:
class: Class?
- The actual class. Cannot be used easily with
new
keyword, this is mostly useful for extending usingprototype
. - Will be
null
ifhasMeta
is equal tofalse
- The actual class. Cannot be used easily with
compiledName: String
- The TeaVM compiled name of the class. It is equal to the first letters of the package, an underscore, and the class name. Eg:
nmce_EntityPlayerSP
- The TeaVM compiled name of the class. It is equal to the first letters of the package, an underscore, and the class name. Eg:
constructors: Function[]
- The constructors for the class.
hasMeta: Boolean
- Wether or not the class has metadata saved by TeaVM.
id: String?
- The class id of the class. Eg:
net.minecraft.client.entity.EntityPlayerSP
- Will be
null
ifhasMeta
is equal tofalse
- The class id of the class. Eg:
name: String
- The name of the class. Eg:
EntityPlayerSP
- The name of the class. Eg:
methods: Map<String, ReflectMethod>
staticMethods: Map<String, ReflectMethod>
staticVariableNames: String[]
- List of all the static variable names for the class.
staticVariables: Map<String, *>
- key-value dictionary of all the static variables in a class.
superclass: Class?
- The raw teavm class of the superclass.
superclassName: String?
- The class id of the class's superclass. Eg:
net.minecraft.client.entity.AbstractClientPlayer
- Will be
null
ifhasMeta
is equal tofalse
- The class id of the class's superclass. Eg:
Each ReflectClass
has the following methods:
instanceOf(object: Object)
- Checks if the
object
is an instance of the class.
- Checks if the
ReflectMethod Definition
Each ReflectMethod
has the following properties:
methodName: String
- The compiled method name of the method. Eg:
nmce_EntityPlayerSP_closeScreen
.
- The compiled method name of the method. Eg:
methodNameShort: String
- The short name of the method. Eg:
closeScreen
.
- The short name of the method. Eg:
Each ReflectClass
has the following methods:
method(...)
- This is the java method.
- If it is an instance method (accessed from a ReflectClasses'
methods
property), the first argument should be an instance of the class. Eg:ModAPI.reflect.getClassByName("EntityPlayerSP").methods.closeScreen.method(ModAPI.player.getRef())
- If it is a static method (accessed from a ReflectClasses'
staticMethods
property), call the method as usual. Eg:ModAPI.reflect.getClassById("net.minecraft.init.Items").staticMethods.getRegisteredItem.method(ModAPI.util.str("apple"))
Keep in mind that you need to wrap strings using ModAPI.util.str("MyString")
, convert booleans into respective numbers (true
->1
, false
->0
), and get references of ModAPI proxies (ModAPI.player
->ModAPI.player.getRef()
);