Mods / Heraldry : Banners

Tags: #Furniture
Authors: DanaCraluminum, SaltyWater
Side: Both
Created: Sep 19th at 1:28 PM
Last modified: Sep 23rd at 11:36 AM
Downloads: 11787
Follow Unfollow 204

Latest release (for Vintage Story 1.21.0 and 1.21.1, potentially outdated):
HeraldryBanners-v1.0.0.zip  1-click install


imageimage

Pet the capybara to support Dana!

And pet the floppa to buy Salty a coffee!

 

 

Heraldry: Banners

The guild's profile picture

Requires Heraldry and Attribute Rendering Library

The banners add-on for Heraldry.

image

image

image

15 unique shapes for you to choose:

image image

and 70+ patterns

image

Each banner can hold up to 8 layers on it's design and each layer is one step on top of the previous layer. You can use water to remove a layer.

image

Banners also get affected by wind

image image

image

Poles

To hang a banner, you need a pole

Poles come in all shapes and wood variants. Including flag orientation

image

image

image

 

You can rightclick a pole with a banner to attach or remove it.

image

image

 

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.0.0 heraldrybanners 11787 Sep 23rd at 11:36 AM Empty HeraldryBanners-v1.0.0.zip 1-click install

12 Comments (oldest first | newest first)

💬 Tacet, 3 days ago (modified 3 days ago)

 

Hello! I'm sad to report that I crashed to desktop while crafting my first banner, then again when trying to reproduce the issue. My sceond crash occurred much faster. Steps to reproduce:

Steps to reproduce
  1. Get "Heraldry Workbench (Birch)" from creative mode inventory and place it
  2. Get the following items from creative mode inventory, put on hotbar: "Plain banner" and wooden buckets of red, yellow, black, and white dye
  3. Interact with workbench -- crash #2 occurred here
  4. Apply shape "Gonfalon"
  5. Apply layers
    1. Red Per Bend Inverted (diagonal_up_left_red)
    2. Yellow Per Bend (diagonal_right_yellow)
    3. White Saltire (cross_white)
    4. White Cross (straight_cross_white)
    5. Black Hansa Large Fish (hansalargefish_black) -- crash #1 occurred here

After the second crash, I was able to re-enter the world and retrieve the banner by breaking the workbench. Item info in case it helps:

Screenshot
Crash Report #1

Running on 64 bit Windows 10.0.19045.0 with 65401 MB RAM
Game Version: v1.21.5 (Stable)
11/30/2025 2:29:20 PM: Critical error occurred in the following mod: heraldry@1.0.0
Loaded Mods: bettercrates@1.9.0, Bluesky@1.1.0, buzzwords@1.8.0, buzzybees@1.1.7, canoemode@1.0.4, canoemodcircuitspatch@2.0.0, carpet@1.0.2, catchledge@0.6.0, cavecontent@1.0.1, Ceramos@0.5.1, ceramoscontentfix@1.0.0, diversediets@1.0.3, dryablegroundstorage@1.0.1, dye_recipes_fix@1.1.0, feverstonewilds@2.0.0-rc.11, fibersfromtwine@1.0.1, fixedpaths@1.0.2, freelook@1.0.4, spawngiantwaterlilies@1.0.0, glowtorns@1.0.1, hangingoillamps@1.0.5, HoneyPress@1.1.2, JacksFirewood@1.1.0, millwright@1.3.1, morecrystals@1.3.0, morenails@1.2.0, plantstograss@1.0.1, plasterwashes@1.1.0, plumpkins@1.1.3, primitivesurvival@4.0.1, prospecttogether@2.1.2, raredenseores@0.2.9, resmeltableslightfix@0.1.2, ricketytranslocation@1.0.0, scrollrackable@1.4.0, shelfobsessed@1.9.1, sfaws@1.0.1, snowcaps@0.0.0, sortablestorage@2.4.4, sticksfromfirewoodmallow@2.0.0, storagecontroller@1.2.1, temporalsymphony@2.2.2, temporal_gears_stack@1.0.0, thatchexpanded@1.2.1, game@1.21.5, vsimgui@1.1.16, aculinaryartillery@2.0.0-dev.10, aemonsessentials@0.0.3, aged@2.0.2, ancienttools@1.6.0, animalcages@4.0.1, apelanterns@1.3.5, attributerenderinglibrary@2.4.0, autolootreforged@1.0.5, bedspawnv2@1.6.4, betterfirepit@1.2.0, betterjonasdevicesfixed@2.1.4, betterruins@0.5.4, bettertraders@0.1.0, blacksmithname@1.2.3, blocksoverlay@4.6.1, boattags@1.0.1, bodyheatbar@1.0.1, butteflydisplay@1.1.0, carryon@1.12.1, climbmountain@0.2.1, clothierheirloomsmod@1.0.2, commonlib@2.8.0, composter@1.2.1, configlib@1.10.11, cooperativecombatrework@1.0.0, craftablewattleanddaub@1.1.21, Crateful@1.2.8, danatweaks@3.6.0, dirt2clay@1.0.0, enhancedhandbook@1.7.1, entitycolortint@2.1.3, extrainfo@1.10.1, farmlanddropswithnutrients@1.2.2, farseer@1.3.2, fendragonbcs@0.2.0, fixhandbookclutter@1.0.5, footprints@1.1.1, fromgoldencombs@1.9.4, genelib@2.1.4, grassiergrass@1.0.0, greenbegone@1.0.0, GuibibiQOLS@1.0.2, handbookdeclutterer@0.6.0, humanskintones@0.0.4, hydrateordiedrate@2.3.1, iceisice@1.0.0, improvedhandbookrecipes@1.1.3, insanitylib@1.1.0, jaunt@2.1.1, justthepepper@2.0.0, medievalexpansionpatch@1.3.4, boatspeedtweakz@1.0.5, naturalfertilizer@1.3.0, noticeboard@1.2.2, optimetime@1.3.5, pelaguswinds@1.2.2, petai@4.0.3, pixelwaypoints@1.0.0, playerlist@2.3.4, claywheel@1.1.7, purposefulstorage@1.5.1, realsmoke@1.1.10, relictools@1.1.1, rivers@4.7.3, saltandsands@1.1.6, scaffolding@1.2.5, showcraftable@1.2.6, simplecloth@1.0.3, smithingplus@1.8.3, somethinginthewater@1.2.7, spawnhighlightcustom@1.1.0, sprucedup@1.0.3, stonebakeoven@1.2.0, stonerailings@1.4.0, strspawnchances@0.1.6, temporalityplus@0.0.8, temporalstormtimer@1.1.1, terraprety@7.0.9, th3dungeon@0.4.4, thecritterpack@1.3.4, trailmodupdated@1.3.3, unconscious@2.0.1, volumetricshadingrenewed@1.2.0, creative@1.21.5, survival@1.21.5, waypointtogethercontiued@4.1.0, xvshaders@0.1.1, zippysreseedingreeds@2.1.0, alternativegliderimplementationreforged@1.0.1, autoconfiglib@2.0.9, bbb@1.0.1, brainfreeze@1.3.5, cavebeacons@1.0.9, detailedanimals@0.7.0, ecrevived@0.0.8, expandedfoods@2.0.0-dev.5, em@3.4.0, extraoverlays@1.6.0, sleekdoorglass@1.0.0, heraldry@1.0.0, draconis@1.1.4, saerinmod@0.4.4, shearlib@1.2.0, snowshoes@2.1.3, soilamendments@1.0.0, storageoptions@2.0.0, heraldrybanners@1.0.0, notenoughsandfix@3.0.1, tailorsdelight@2.1.2, wool@1.8.1, dressmakers@1.7.4
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.Generic.List`1.get_Item(Int32 index)
at Heraldry.HeraldryWorkbenchWorkspace.GenerateOutputStackWithShape(IInventory inv, Int32 index) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\HeraldryWorkbenchWorkspace.cs:line 111
at Heraldry.HeraldryWorkbenchWorkspace.GenerateOutputStack(IInventory inv, EnumHeraldryCraftingType craftingType, Int32 index, Boolean consumeLiquid) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\HeraldryWorkbenchWorkspace.cs:line 43
at Heraldry.GuiDialogHeraldryWorkbench.SetupDialog() in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\GuiDialogHeraldryWorkbench.cs:line 132
at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 786
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95

Event Log entries for Vintagestory.exe, the latest 1
==================================
{ TimeGenerated = 11/28/2025 5:47:18 PM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.5.0, time stamp: 0x67fe0000
Faulting module name: coreclr.dll, version: 8.0.224.6711, time stamp: 0x65a895d5
Exception code: 0xc0000005
Fault offset: 0x00000000001d1f48
Faulting process id: 0x10e00
Faulting application start time: 0x01dc60cb4aa21894
Faulting application path: E:\Vintagestory\Vintagestory.exe
Faulting module path: C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.2\coreclr.dll
Report Id: 6795d57c-e2fe-42a9-a7d8-43b9b1868193
Faulting package full name:
Faulting package-relative application ID: }

Crash Report #2

Running on 64 bit Windows 10.0.19045.0 with 65401 MB RAM
Game Version: v1.21.5 (Stable)
11/30/2025 2:34:53 PM: Critical error occurred in the following mod: heraldry@1.0.0
Loaded Mods: bettercrates@1.9.0, Bluesky@1.1.0, buzzwords@1.8.0, buzzybees@1.1.7, canoemode@1.0.4, canoemodcircuitspatch@2.0.0, carpet@1.0.2, catchledge@0.6.0, cavecontent@1.0.1, Ceramos@0.5.1, ceramoscontentfix@1.0.0, diversediets@1.0.3, dryablegroundstorage@1.0.1, dye_recipes_fix@1.1.0, feverstonewilds@2.0.0-rc.11, fibersfromtwine@1.0.1, fixedpaths@1.0.2, freelook@1.0.4, spawngiantwaterlilies@1.0.0, glowtorns@1.0.1, hangingoillamps@1.0.5, HoneyPress@1.1.2, JacksFirewood@1.1.0, millwright@1.3.1, morecrystals@1.3.0, morenails@1.2.0, plantstograss@1.0.1, plasterwashes@1.1.0, plumpkins@1.1.3, primitivesurvival@4.0.1, prospecttogether@2.1.2, raredenseores@0.2.9, resmeltableslightfix@0.1.2, ricketytranslocation@1.0.0, scrollrackable@1.4.0, shelfobsessed@1.9.1, sfaws@1.0.1, snowcaps@0.0.0, sortablestorage@2.4.4, sticksfromfirewoodmallow@2.0.0, storagecontroller@1.2.1, temporalsymphony@2.2.2, temporal_gears_stack@1.0.0, thatchexpanded@1.2.1, game@1.21.5, vsimgui@1.1.16, aculinaryartillery@2.0.0-dev.10, aemonsessentials@0.0.3, aged@2.0.2, ancienttools@1.6.0, animalcages@4.0.1, apelanterns@1.3.5, attributerenderinglibrary@2.4.0, autolootreforged@1.0.5, bedspawnv2@1.6.4, betterfirepit@1.2.0, betterjonasdevicesfixed@2.1.4, betterruins@0.5.4, bettertraders@0.1.0, blacksmithname@1.2.3, blocksoverlay@4.6.1, boattags@1.0.1, bodyheatbar@1.0.1, butteflydisplay@1.1.0, carryon@1.12.1, climbmountain@0.2.1, clothierheirloomsmod@1.0.2, commonlib@2.8.0, composter@1.2.1, configlib@1.10.11, cooperativecombatrework@1.0.0, craftablewattleanddaub@1.1.21, Crateful@1.2.8, danatweaks@3.6.0, dirt2clay@1.0.0, enhancedhandbook@1.7.1, entitycolortint@2.1.3, extrainfo@1.10.1, farmlanddropswithnutrients@1.2.2, farseer@1.3.2, fendragonbcs@0.2.0, fixhandbookclutter@1.0.5, footprints@1.1.1, fromgoldencombs@1.9.4, genelib@2.1.4, grassiergrass@1.0.0, greenbegone@1.0.0, GuibibiQOLS@1.0.2, handbookdeclutterer@0.6.0, humanskintones@0.0.4, hydrateordiedrate@2.3.1, iceisice@1.0.0, improvedhandbookrecipes@1.1.3, insanitylib@1.1.0, jaunt@2.1.1, justthepepper@2.0.0, medievalexpansionpatch@1.3.4, boatspeedtweakz@1.0.5, naturalfertilizer@1.3.0, noticeboard@1.2.2, optimetime@1.3.5, pelaguswinds@1.2.2, petai@4.0.3, pixelwaypoints@1.0.0, playerlist@2.3.4, claywheel@1.1.7, purposefulstorage@1.5.1, realsmoke@1.1.10, relictools@1.1.1, rivers@4.7.3, saltandsands@1.1.6, scaffolding@1.2.5, showcraftable@1.2.6, simplecloth@1.0.3, smithingplus@1.8.3, somethinginthewater@1.2.7, spawnhighlightcustom@1.1.0, sprucedup@1.0.3, stonebakeoven@1.2.0, stonerailings@1.4.0, strspawnchances@0.1.6, temporalityplus@0.0.8, temporalstormtimer@1.1.1, terraprety@7.0.9, th3dungeon@0.4.4, thecritterpack@1.3.4, trailmodupdated@1.3.3, unconscious@2.0.1, volumetricshadingrenewed@1.2.0, creative@1.21.5, survival@1.21.5, waypointtogethercontiued@4.1.0, xvshaders@0.1.1, zippysreseedingreeds@2.1.0, alternativegliderimplementationreforged@1.0.1, autoconfiglib@2.0.9, bbb@1.0.1, brainfreeze@1.3.5, cavebeacons@1.0.9, detailedanimals@0.7.0, ecrevived@0.0.8, expandedfoods@2.0.0-dev.5, em@3.4.0, extraoverlays@1.6.0, sleekdoorglass@1.0.0, heraldry@1.0.0, draconis@1.1.4, saerinmod@0.4.4, shearlib@1.2.0, snowshoes@2.1.3, soilamendments@1.0.0, storageoptions@2.0.0, heraldrybanners@1.0.0, notenoughsandfix@3.0.1, tailorsdelight@2.1.2, wool@1.8.1, dressmakers@1.7.4
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.Generic.List`1.get_Item(Int32 index)
at Heraldry.HeraldryWorkbenchWorkspace.GenerateOutputStackWithShape(IInventory inv, Int32 index) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\HeraldryWorkbenchWorkspace.cs:line 111
at Heraldry.HeraldryWorkbenchWorkspace.GenerateOutputStack(IInventory inv, EnumHeraldryCraftingType craftingType, Int32 index, Boolean consumeLiquid) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\HeraldryWorkbenchWorkspace.cs:line 43
at Heraldry.GuiDialogHeraldryWorkbench.SetupDialog() in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\GuiDialogHeraldryWorkbench.cs:line 132
at Heraldry.GuiDialogHeraldryWorkbench..ctor(String dialogTitle, InventoryBase inventory, BlockPos blockEntityPos, ICoreClientAPI capi, EnumHeraldryCraftingType selectedCraftingType, Int32 selectedPatternIndex) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\GUI\GuiDialogHeraldryWorkbench.cs:line 32
at Heraldry.BlockEntityHeraldryWorkbench.b__32_0() in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\BlockEntity\BlockEntityHeraldryWorkbench.cs:line 63
at Vintagestory.GameContent.BlockEntityOpenableContainer.toggleInventoryDialogClient(IPlayer byPlayer, CreateDialogDelegate onCreateDialog) in VSSurvivalMod\BlockEntity\BEOpenableContainer.cs:line 127
at Heraldry.BlockEntityHeraldryWorkbench.OnPlayerRightClick(IPlayer byPlayer, BlockSelection blockSel) in C:\Users\dana_\Source\Repos\Heraldry\Heraldry\BlockEntity\BlockEntityHeraldryWorkbench.cs:line 62
at Vintagestory.GameContent.BlockBehaviorContainer.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, EnumHandling& handling) in VSSurvivalMod\BlockBehavior\BehaviorContainer.cs:line 36
at Vintagestory.API.Common.Block.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel) in VintagestoryApi\Common\Collectible\Block\Block.cs:line 1390
at Vintagestory.GameContent.BlockMultiblock.<>c__DisplayClass17_0.b__2(Block block) in VSEssentials\Block\BlockMultiblock.cs:line 243
at Vintagestory.GameContent.BlockMultiblock.Handle[T,K](IBlockAccessor ba, Int32 x, Int32 y, Int32 z, BlockCallDelegateInterface`2 onImplementsInterface, BlockCallDelegateBlock`1 onIsMultiblock, BlockCallDelegateBlock`1 onOtherwise) in VSEssentials\Block\BlockMultiblock.cs:line 91
at Vintagestory.GameContent.BlockMultiblock.OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel) in VSEssentials\Block\BlockMultiblock.cs:line 238
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.TryBeginUseBlock(Block selectedBlock, BlockSelection blockSelection) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 886
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 544
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 87
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 1031
at Vintagestory.Client.GuiScreenRunningGame.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 250
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 760
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 338
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 133
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95

Event Log entries for Vintagestory.exe, the latest 1
==================================
{ TimeGenerated = 11/28/2025 5:47:18 PM, Site = , Source = Application Error, Message = Faulting application name: Vintagestory.exe, version: 1.21.5.0, time stamp: 0x67fe0000
Faulting module name: coreclr.dll, version: 8.0.224.6711, time stamp: 0x65a895d5
Exception code: 0xc0000005
Fault offset: 0x00000000001d1f48
Faulting process id: 0x10e00
Faulting application start time: 0x01dc60cb4aa21894
Faulting application path: E:\Vintagestory\Vintagestory.exe
Faulting module path: C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.2\coreclr.dll
Report Id: 6795d57c-e2fe-42a9-a7d8-43b9b1868193
Faulting package full name:
Faulting package-relative application ID: }

💬 EthelVril, Oct 1st at 11:05 AM

Same issue as Raven0V

💬 DanaCraluminum , Sep 27th at 7:34 PM

artemax44 You can set other shapes only in workbench

💬 artemax44, Sep 25th at 2:33 PM

DanaCraluminum

I mean, only the simple rectangular banner can be crafted. The other simple banners with other shapes can't be crafted, or the guide doesn't include how to craft them!
💬 artemax44, Sep 25th at 2:27 PM

DanaCraluminum

OK. Thanks. I saw it! You only craft the simple rectangular banner. That's why I didn't find it that easy! Hehehe. Thanks, problem solved!
💬 DanaCraluminum , Sep 25th at 2:22 PM

artemax44 Craft plain banner first

💬 artemax44, Sep 25th at 2:19 PM

DanaCraluminum SaltyWater

It's a good mod, but I have a question. How do you craft simple banners? I have the table and the buckets with the dyes, but I need to add the simple banner, and I don't know how to craft it.
💬 Raven0V, Sep 24th at 7:29 PM

Putting dye bucket in the dye slot and then changing to "shapes" will make the game crash, and opening the bench after rejoining will make the game crash 

💬 Alcyonaria, Sep 24th at 2:02 AM

thank u dana and salty for making another mandatory mod

💬 ElusiveEnigma, Sep 23rd at 5:13 PM

Hey, y'all. Any plans to have a config option or in-game interactable so the banners don't wave in the wind while indoors?

 

Loving this already. Good work!

💬 DanaCraluminum , Sep 23rd at 5:08 PM (modified Sep 23rd at 5:08 PM)

rugrat0ne Yes, it is going to replace my old Banners mod, but they aren't interchangeable. You can run both mods together and they will still work

💬 rugrat0ne, Sep 23rd at 5:05 PM

As a heraldry geek, I am loving all of these! Is this going to replace the other Banners mod? Will stuff made with that still work if I swap them?

 (edit comment delete)
Основной веб-сайт | Почтовый сервер | FTP сервер | Административная панель | API интерфейс | Content Delivery Network | Статические файлы | Ресурсы сайта | Изображения | Файловое хранилище | Блог | Интернет-магазин | Техническая поддержка | Справочная система | Документация | Форум | Новости | Загрузки | Демонстрация | Тестовая среда | Приложение | Медиа контент | Разработка | Промежуточная среда | Бета версия | Безопасная зона | Вход в систему | Панель управления | Портал | Система управления контентом