public abstract class ModWriter extends java.lang.Object implements CoreStateAccessor
| Modifier and Type | Class and Description |
|---|---|
static class |
ModWriter.InnerClassData |
protected static class |
ModWriter.InnerClassDataBuilder |
| Modifier and Type | Field and Description |
|---|---|
protected CoreAPI |
core |
protected org.objectweb.asm.Type |
entryPoint |
protected java.lang.String |
entryPointDesc |
protected java.lang.String |
entryPointInternal |
protected java.util.Map<java.lang.String,java.lang.String[]> |
entryPointMethods |
protected java.util.Map<java.lang.String,org.objectweb.asm.Type> |
entryPointMethodTypes |
protected MultiVersionModInfo |
info |
protected org.objectweb.asm.Type |
modType |
protected java.lang.String |
modTypeDesc |
protected java.lang.String |
modTypeInternal |
BOOLEAN_VALUES, FABRIC, FORGE, FORGE_OR_NEOFORGE, GAME_VERSION, JAVA_17, JAVA_21, JAVA_8, JAVA_MODULES, JAVA_VERSION, JAVA_VERSION_ASM, LEGACY, MOD_LOADER, NAMED_ENV, NEOFORGE, SRG_ENV, V12, V16, V16_OR_EARLIER, V16_OR_LATER, V18, V18_OR_EARLIER, V18_OR_LATER, V19, V19_2_OR_EARLIER, V19_4_OR_LATER, V19_OR_EARLIER, V19_OR_LATER, V20, V20_4_OR_EARLIER, V20_6_OR_LATER, V20_OR_EARLIER, V20_OR_LATER, V21, V21_OR_LATER| Modifier | Constructor and Description |
|---|---|
protected |
ModWriter(CoreAPI core,
MultiVersionModInfo info) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addClassAnnotations(org.objectweb.asm.ClassVisitor visitor) |
protected void |
addEntryHooks(org.objectweb.asm.MethodVisitor method,
boolean isStatic,
java.lang.String methodName,
boolean codeVisited) |
protected void |
addFields(org.objectweb.asm.ClassVisitor visitor) |
protected java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> |
addInnerClass(org.objectweb.asm.ClassVisitor outerClass,
java.lang.String innerName,
java.util.function.Consumer<org.objectweb.asm.ClassVisitor> innerWriter) |
protected java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> |
addInnerClass(org.objectweb.asm.ClassVisitor outerClass,
java.lang.String innerName,
java.util.function.Consumer<org.objectweb.asm.ClassVisitor> innerWriter,
boolean client,
boolean server) |
void |
basicContructorHandle(org.objectweb.asm.MethodVisitor constructor) |
java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> |
buildModClass() |
protected void |
classInit(org.objectweb.asm.MethodVisitor clinit) |
protected void |
constructor(org.objectweb.asm.MethodVisitor constructor) |
protected void |
entryPointGetter(org.objectweb.asm.MethodVisitor visitor) |
protected void |
entryPointGetter(org.objectweb.asm.MethodVisitor method,
boolean isStatic) |
protected abstract java.util.List<java.lang.String[]> |
entryPointMappings() |
protected void |
finishWritingClass(org.objectweb.asm.ClassWriter writer,
org.objectweb.asm.Type type,
java.util.function.BiConsumer<java.lang.String,byte[]> byteCodeAcceptor) |
protected org.objectweb.asm.Type |
generatedModType(java.lang.String pkgName,
java.lang.String modName,
boolean client,
boolean server) |
protected org.objectweb.asm.MethodVisitor |
getConstructor(org.objectweb.asm.ClassVisitor visitor) |
protected abstract org.objectweb.asm.Type |
getEventMethod(java.lang.String className) |
protected ModWriter.InnerClassDataBuilder |
innerClassDataBuilder(org.objectweb.asm.ClassVisitor outer,
java.lang.String name,
java.util.function.BiConsumer<ModWriter.InnerClassData,org.objectweb.asm.ClassVisitor> classInitHandle,
java.lang.String... entryPoints) |
protected ModWriter.InnerClassData[] |
innerClasses(org.objectweb.asm.ClassVisitor outerClass) |
protected boolean |
isClient() |
protected boolean |
isServer() |
protected java.util.Map.Entry<java.util.Map<java.lang.String,java.lang.String[]>,java.util.Map<java.lang.String,org.objectweb.asm.Type>> |
mappedEntryPointMethods()
lol
|
protected java.lang.String[] |
modInterfaces(boolean client,
boolean server) |
protected void |
writeAnnotationArray(org.objectweb.asm.AnnotationVisitor annotation,
java.lang.String name,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> arrayWriter) |
protected void |
writeClassAnnotation(org.objectweb.asm.ClassVisitor visitor,
org.objectweb.asm.Type type,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> annotationWriter) |
protected void |
writeClassInit(org.objectweb.asm.ClassVisitor visitor) |
protected void |
writeConstructor(org.objectweb.asm.ClassVisitor visitor) |
protected void |
writeConstructor(org.objectweb.asm.ClassVisitor visitor,
java.util.function.Consumer<org.objectweb.asm.MethodVisitor> extraDataHandler) |
protected void |
writeInnerClass(java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> writerPair,
java.util.function.BiConsumer<java.lang.String,byte[]> byteCodeAcceptor) |
protected void |
writeInnerClass(java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> writerPair,
java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> classBytes) |
protected void |
writeInnerConstructor(org.objectweb.asm.ClassVisitor visitor) |
protected void |
writeMethod(org.objectweb.asm.ClassVisitor visitor,
java.util.function.Function<org.objectweb.asm.ClassVisitor,org.objectweb.asm.MethodVisitor> methodGetter,
java.util.function.Consumer<org.objectweb.asm.MethodVisitor> methodWriter) |
protected void |
writeMethodAnnotation(org.objectweb.asm.MethodVisitor method,
org.objectweb.asm.Type type,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> annotationWriter) |
protected void |
writeMod(org.objectweb.asm.ClassWriter writer,
java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> classBytes) |
protected final CoreAPI core
protected final java.util.Map<java.lang.String,org.objectweb.asm.Type> entryPointMethodTypes
protected final java.util.Map<java.lang.String,java.lang.String[]> entryPointMethods
protected final MultiVersionModInfo info
protected final java.lang.String entryPointDesc
protected final java.lang.String entryPointInternal
protected final java.lang.String modTypeDesc
protected final java.lang.String modTypeInternal
protected final org.objectweb.asm.Type entryPoint
protected final org.objectweb.asm.Type modType
protected ModWriter(CoreAPI core, MultiVersionModInfo info)
protected void addClassAnnotations(org.objectweb.asm.ClassVisitor visitor)
protected void addEntryHooks(org.objectweb.asm.MethodVisitor method,
boolean isStatic,
java.lang.String methodName,
boolean codeVisited)
protected void addFields(org.objectweb.asm.ClassVisitor visitor)
protected java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> addInnerClass(org.objectweb.asm.ClassVisitor outerClass,
java.lang.String innerName,
java.util.function.Consumer<org.objectweb.asm.ClassVisitor> innerWriter)
protected java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> addInnerClass(org.objectweb.asm.ClassVisitor outerClass,
java.lang.String innerName,
java.util.function.Consumer<org.objectweb.asm.ClassVisitor> innerWriter,
boolean client,
boolean server)
public void basicContructorHandle(org.objectweb.asm.MethodVisitor constructor)
public final java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> buildModClass()
protected void classInit(org.objectweb.asm.MethodVisitor clinit)
protected void constructor(org.objectweb.asm.MethodVisitor constructor)
protected void entryPointGetter(org.objectweb.asm.MethodVisitor visitor)
protected void entryPointGetter(org.objectweb.asm.MethodVisitor method,
boolean isStatic)
protected abstract java.util.List<java.lang.String[]> entryPointMappings()
protected void finishWritingClass(org.objectweb.asm.ClassWriter writer,
org.objectweb.asm.Type type,
java.util.function.BiConsumer<java.lang.String,byte[]> byteCodeAcceptor)
protected org.objectweb.asm.MethodVisitor getConstructor(org.objectweb.asm.ClassVisitor visitor)
protected org.objectweb.asm.Type generatedModType(java.lang.String pkgName,
java.lang.String modName,
boolean client,
boolean server)
protected abstract org.objectweb.asm.Type getEventMethod(java.lang.String className)
protected final ModWriter.InnerClassDataBuilder innerClassDataBuilder(org.objectweb.asm.ClassVisitor outer, java.lang.String name, java.util.function.BiConsumer<ModWriter.InnerClassData,org.objectweb.asm.ClassVisitor> classInitHandle, java.lang.String... entryPoints)
protected ModWriter.InnerClassData[] innerClasses(org.objectweb.asm.ClassVisitor outerClass)
protected boolean isClient()
protected boolean isServer()
protected java.util.Map.Entry<java.util.Map<java.lang.String,java.lang.String[]>,java.util.Map<java.lang.String,org.objectweb.asm.Type>> mappedEntryPointMethods()
protected java.lang.String[] modInterfaces(boolean client,
boolean server)
protected final void writeAnnotationArray(org.objectweb.asm.AnnotationVisitor annotation,
java.lang.String name,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> arrayWriter)
protected final void writeClassAnnotation(org.objectweb.asm.ClassVisitor visitor,
org.objectweb.asm.Type type,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> annotationWriter)
protected final void writeClassInit(org.objectweb.asm.ClassVisitor visitor)
protected void writeConstructor(org.objectweb.asm.ClassVisitor visitor)
protected final void writeConstructor(org.objectweb.asm.ClassVisitor visitor,
java.util.function.Consumer<org.objectweb.asm.MethodVisitor> extraDataHandler)
protected void writeInnerClass(java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> writerPair,
java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> classBytes)
protected void writeInnerClass(java.util.Map.Entry<org.objectweb.asm.ClassWriter,org.objectweb.asm.Type> writerPair,
java.util.function.BiConsumer<java.lang.String,byte[]> byteCodeAcceptor)
protected void writeInnerConstructor(org.objectweb.asm.ClassVisitor visitor)
protected final void writeMethod(org.objectweb.asm.ClassVisitor visitor,
java.util.function.Function<org.objectweb.asm.ClassVisitor,org.objectweb.asm.MethodVisitor> methodGetter,
java.util.function.Consumer<org.objectweb.asm.MethodVisitor> methodWriter)
protected final void writeMethodAnnotation(org.objectweb.asm.MethodVisitor method,
org.objectweb.asm.Type type,
java.util.function.Consumer<org.objectweb.asm.AnnotationVisitor> annotationWriter)
protected void writeMod(org.objectweb.asm.ClassWriter writer,
java.util.List<java.util.Map.Entry<java.lang.String,byte[]>> classBytes)