コード例 #1
0
        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"));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }