private CodeMemberMethod CreateInitMethod() { CodeMemberMethod method = CreateEmptyEventHandler("init", "FMLInitializationEvent"); method.Statements.Add(NewMethodInvokeType(SourceCodeLocator.Recipes(Modname, Organization).ClassName, "init")); return(method); }
protected override CodeCompileUnit CreateTargetCodeUnit() { CodeTypeDeclaration managerClass = NewClassWithMembers(SourceCodeLocator.Manager(Modname, Organization).ClassName); string hook = SourceCodeLocator.Hook(Modname, Organization).ClassName; managerClass.CustomAttributes.Add(NewAnnotation("Mod", NewAnnotationArg("modid", NewFieldReferenceType(hook, "MODID")), NewAnnotationArg("name", NewFieldReferenceType(hook, "NAME")), NewAnnotationArg("version", NewFieldReferenceType(hook, "VERSION")), NewAnnotationArg("acceptedMinecraftVersions", NewFieldReferenceType(hook, "ACCEPTEDVERSIONS")) )); CodeMemberField instanceField = NewField(SourceCodeLocator.Manager(Modname, Organization).ClassName, "instance", MemberAttributes.Private | JavaAttributes.StaticOnly); instanceField.CustomAttributes.Add(NewInstanceAnnotation()); managerClass.Members.Add(instanceField); CodeMemberField proxyField = NewField(SourceCodeLocator.CommonProxyInterface(Modname, Organization).ClassName, "proxy", MemberAttributes.Private | JavaAttributes.StaticOnly); proxyField.CustomAttributes.Add(NewAnnotation("SidedProxy", NewAnnotationArg("clientSide", NewFieldReferenceType(hook, "CLIENTPROXYCLASS")), NewAnnotationArg("serverSide", NewFieldReferenceType(hook, "SERVERPROXYCLASS")) )); managerClass.Members.Add(proxyField); managerClass.Members.Add(NewField("Logger", "logger", MemberAttributes.Private | JavaAttributes.StaticOnly)); managerClass.Members.Add(CretePreInitMethod()); managerClass.Members.Add(CreateInitMethod()); managerClass.Members.Add(CreateEmptyEventHandler("postInit", "FMLPostInitializationEvent")); managerClass.Members.Add(CreateEmptyEventHandler("serverStart", "FMLServerStartingEvent")); CodeMemberMethod getProxyMethod = NewMethod("getProxy", SourceCodeLocator.CommonProxyInterface(Modname, Organization).ClassName, MemberAttributes.Public | JavaAttributes.StaticOnly); getProxyMethod.Statements.Add(NewReturnVar("proxy")); managerClass.Members.Add(getProxyMethod); return(NewCodeUnit(SourceCodeLocator.Manager(Modname, Organization).PackageName, managerClass, "net.minecraftforge.fml.common.Mod", "net.minecraftforge.fml.common.SidedProxy", "net.minecraftforge.fml.common.Mod.EventHandler", "net.minecraftforge.fml.common.Mod.Instance", "net.minecraftforge.fml.common.event.FMLInitializationEvent", "net.minecraftforge.fml.common.event.FMLPostInitializationEvent", "net.minecraftforge.fml.common.event.FMLPreInitializationEvent", "net.minecraftforge.fml.common.event.FMLServerStartingEvent", $"{SourceRootPackageName}.{SourceCodeLocator.Recipes(Modname, Organization).ImportRelativeName}", $"{SourceRootPackageName}.{SourceCodeLocator.CommonProxyInterface(Modname, Organization).ImportRelativeName}", "org.apache.logging.log4j.Logger")); }
protected void RegenerateRecipes() { McMod mod = SessionContext.SelectedMod; CodeGenerationService.RegenerateInitScript(SourceCodeLocator.Recipes(mod.ModInfo.Name, mod.Organization).ClassName, mod, Explorer.Folders.Files[0].Files); }