protected override CodeCompileUnit CreateTargetCodeUnit() { CodeTypeDeclaration clas = NewClassWithMembers(SourceCodeLocator.RegistryHandler(Modname, Organization).ClassName, GetRegisterMethod(SourceCodeLocator.Items(Modname, Organization).ClassName, SourceCodeLocator.Items(Modname, Organization).InitFieldName, "Item"), GetRegisterMethod(SourceCodeLocator.Blocks(Modname, Organization).ClassName, SourceCodeLocator.Blocks(Modname, Organization).InitFieldName, "Block"), GetRegisterMethod(SourceCodeLocator.SoundEvents(Modname, Organization).ClassName, SourceCodeLocator.SoundEvents(Modname, Organization).InitFieldName, "SoundEvent")); clas.CustomAttributes.Add(NewEventBusSubscriberAnnotation()); CodeMemberMethod modelRegister = NewMethod("onModelRegister", typeof(void).FullName, MemberAttributes.Public | JavaAttributes.StaticOnly, new Parameter("ModelRegistryEvent", "event")); modelRegister.CustomAttributes.Add(NewSubscribeEventAnnotation()); modelRegister.Statements.Add(CreateRegisterModelForeach(SourceCodeLocator.Items(Modname, Organization).ClassName, "Item")); modelRegister.Statements.Add(CreateRegisterModelForeach(SourceCodeLocator.Blocks(Modname, Organization).ClassName, "Block")); clas.Members.Add(modelRegister); return(NewCodeUnit(SourceCodeLocator.RegistryHandler(Modname, Organization).PackageName, clas, $"{SourceRootPackageName}.{SourceCodeLocator.Blocks(Modname, Organization).ImportRelativeName}", $"{SourceRootPackageName}.{SourceCodeLocator.Items(Modname, Organization).ImportRelativeName}", $"{SourceRootPackageName}.{SourceCodeLocator.SoundEvents(Modname, Organization).ImportRelativeName}", $"{SourceRootPackageName}.{SourceCodeLocator.ModelInterface(Modname, Organization).ImportRelativeName}", "net.minecraft.block.Block", "net.minecraft.item.Item", "net.minecraft.util.SoundEvent", "net.minecraftforge.client.event.ModelRegistryEvent", "net.minecraftforge.event.RegistryEvent", "net.minecraftforge.fml.common.Mod.EventBusSubscriber", "net.minecraftforge.fml.common.eventhandler.SubscribeEvent")); }
protected override CodeCompileUnit CreateTargetCodeUnit() { CodeTypeDeclaration clas = NewClassWithMembers(ScriptLocator.ClassName); clas.Members.Add(GetCreativeTab()); CodeNamespace package = NewPackage(SourceCodeLocator.CreativeTab(Modname, Organization).PackageName, clas, $"{SourceRootPackageName}.{SourceCodeLocator.Items(Modname, Organization).ImportRelativeName}", "net.minecraft.creativetab.CreativeTabs", "net.minecraft.item.ItemStack", "net.minecraftforge.fml.relauncher.Side", "net.minecraftforge.fml.relauncher.SideOnly"); return(NewCodeUnit(package)); }
private CodeMemberField GetCreativeTab() { CodeMemberField field = new CodeMemberField("CreativeTabs", "MODCEATIVETAB") { Attributes = MemberAttributes.Public | MemberAttributes.Static | MemberAttributes.Final, }; field.InitExpression = new CodeSnippetExpression( $"new CreativeTabs(\"{Modname}\") {{" + @" @SideOnly(Side.CLIENT) @Override public ItemStack getTabIconItem() {" + $"{System.Environment.NewLine} return new ItemStack({SourceCodeLocator.Items(Modname, Organization).ClassName}.MODLOGO, 1);"+ @" } @SideOnly(Side.CLIENT) @Override public boolean hasSearchBar() { return true; } }" ); return(field); }