Beispiel #1
0
        private CodeMemberMethod CreateInitMethod()
        {
            CodeMemberMethod method = CreateEmptyEventHandler("init", "FMLInitializationEvent");

            method.Statements.Add(NewMethodInvokeType(SourceCodeLocator.Recipes(Modname, Organization).ClassName, "init"));
            return(method);
        }
Beispiel #2
0
        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"));
        }
Beispiel #3
0
        protected void RegenerateRecipes()
        {
            McMod mod = SessionContext.SelectedMod;

            CodeGenerationService.RegenerateInitScript(SourceCodeLocator.Recipes(mod.ModInfo.Name, mod.Organization).ClassName, mod, Explorer.Folders.Files[0].Files);
        }