Reflection Checker
Reflection checker packet will attempt to use java.lang.reflect to perform a lookup or invocation on a method or field in the client, using information provided in this packet. These invocations/lookups may fail completely, which is fully supported, as various exceptions get caught and special return codes are provided in such cases. An important thing to note, however, is that the server is responsible for not requesting too much, as the client's reply packet has a var-byte size, meaning the entire reply for a reflection check must fit into 255 bytes or fewer. There is no protection against this. Additionally worth noting that the InvokeMethod variant, while very powerful, is not utilized in OldSchool, and is rather dangerous to invoke due to the aforementioned size limitation.
Types
Get field modifiers aims to try to look up a given field's modifiers, if possible.
Get field value is a reflection check which will aim to call the java.lang.reflect.Field.getInt function on the respective field. The value is submitted back in the reply, if a value was obtained.
Get method modifiers will aim to try and look up a method's modifiers.
Invoke method check aims to try to invoke a function in a class with the provided parameters. The parameterValues are turned into an object using java.io.ObjectInputStream.readObject function.
Set field value aims to try to assign the provided int value to a field in the class.