


Forged by Struggle • United by Brotherhood • Enduring Through Time
Founded in 1999, Forteca is an international gaming community built on loyalty, cooperation, creativity and shared adventures.
We are not a seasonal clan. We are a long-lived fellowship.
| 🎧 Forteca Intro | ▶ Play |
| 🥁 The Tenth World | ▶ Play |
| 🎺 Black's War Song | ▶ Play |
| 📯 Forteca Was Forged | ▶ Play |
🌍 Website • 🛠 Support Us 💬 Discord • 🎮 Steam Group 📺 YouTube • 👑 Valheimians
⚔ Territories & Clan Warfare 🎯 Bounty System 🛡 Clan Vaults 📜 Clan Reputation System
🏰 Forteca-Fehu Cluster Server 🌍 Multi-Realm Experience👥 Shared Character Progression
ᚠᛟᚱᛏᛖᚲᚨ – ᚱᛖᛚᛗᛊ ᛟᚠ ᚠᛖᚺᚢ
Forged in the fires of friendship and bound by the rune of Fehu,
Forteca stands as a timeless fellowship of builders, warriors and dreamers.
Founded by Black Viking in 1999, the community has endured through generations of games, worlds and friendships.
Honor. Loyalty. Brotherhood.
Forteca is a non-profit gaming community sustained entirely by its members. We are audited monthly.
All support is used to maintain servers, infrastructure, projects and community events.
We are audited monthly.

*Keeping Forteca alive"
|
BlackViking |
Dragteca |
JuliusBlessed |
Yggdra |
Freja |
BlackThunder |
|
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
=========================================================================================
FehuNews is a server-side only Valheim BepInEx 5 event, notification, and announcement framework for the Forteca ecosystem.
Clients do not need the mod installed. In-game notifications use Valheim's
vanilla ShowMessage routed RPC, so vanilla clients can display center-screen
messages without FehuNews.
BepInEx/plugins/FehuNews/FehuNews.dll
Do not install FehuNews on clients unless they are also hosting a game.
Event Source
-> FehuEventManager
-> InGameNotificationSink
-> DiscordWebhookSink
-> LoggingSink
-> Anti-Spam
All internal features and external integrations publish FehuEvent objects into
one centralized pipeline. The event manager performs duplicate suppression,
main-thread marshaling, listener notification, in-game delivery, Discord delivery,
and logging.
Server:
Players:
Announcements:
World:
Bosses:
Future Forteca API events:
Generated at:
BepInEx/config/forteca.fehunews.cfg
Announcement settings:
EnableAnnouncementsAnnouncementIntervalMinutesAnnouncementMessagesDiscord settings:
EnableWebhookWebhookUrlEmbedModeWebhookTimeoutSecondsWebhookRetryCountDiscord event toggles:
SendJoinEventsSendLeaveEventsSendDeathEventsSendBossEventsSendDayEventsSendAnnouncementEventsSendRemoteAnnouncementEventsSendServerEventsIn-game message toggles:
EnableJoinMessagesEnableLeaveMessagesEnableDeathMessagesEnableBossMessagesEnableDayMessagesEnableServerMessagesRemote announcement settings:
EnableRemoteAnnouncementsRemoteBindAddressRemotePortRemoteAuthTokenRemoteRateLimitSecondsRemoteMaxMessageLengthAnti-spam settings:
DefaultEventCooldownSecondsPlayerEventCooldownSecondsDeathEventCooldownSecondsBossEventCooldownSecondsSaveEventCooldownSecondsAnnouncementCooldownSecondsEventQueueLimitWorld settings:
DayMilestonesFehuNews sends Discord webhooks asynchronously. Delivery is non-blocking, serialized, retry protected, timeout protected, and failure safe. If Discord is offline, Valheim continues running.
Payload modes:
Voice of OdinRemote announcements let trusted automation send announcements without joining the server.
Enable:
[Remote Announcements]
EnableRemoteAnnouncements = true
RemoteBindAddress = 127.0.0.1
RemotePort = 8095
RemoteAuthToken = change-this-long-random-token
RemoteRateLimitSeconds = 5
RemoteMaxMessageLength = 240
Request:
curl -X POST "http://127.0.0.1:8095/announcement" \
-H "Authorization: Bearer change-this-long-random-token" \
-H "Content-Type: application/json" \
-d "{\"message\":\"The market opens in ten minutes.\"}"
The endpoint also accepts plain text bodies. Remote announcements use the same event pipeline, so they display in game, send to Discord, log, and pass duplicate cooldowns.
Production note: keep RemoteBindAddress on 127.0.0.1 and expose it only
through a VPN, firewall rule, or trusted reverse proxy. Binding public interfaces
may require an HTTP URL ACL on Windows.
Admin-only commands:
fehunews help
fehunews send <message>
fehunews reload
fehunews status
fehunews testwebhook
reload reloads config, resets the scheduled announcement timer, and restarts
the remote announcement listener.
External Forteca mods can reference FehuNews.dll and publish events without
knowing the internal sinks or delivery details.
using FehuNews.Core;
FehuEventManager.Publish(new FehuEvent(
FehuEventType.TerritoryCaptured,
"Territory Captured",
"Clan Ravenshield captured Black Forest Outpost.",
dedupeKey: "territory-captured:black-forest-outpost",
context: new FehuEventContext(
source: "FortecaTerritories",
actorName: "Ravenshield",
targetName: "Black Forest Outpost")));
Listeners can subscribe:
public sealed class MyListener : IFehuEventListener
{
public void OnFehuEvent(FehuEvent fehuEvent)
{
// Observe FehuNews events.
}
}
FehuEventManager.RegisterListener(new MyListener());
Valheim APIs verified during build:
ZNet.StartZNet.WorldSetupZNet.OnDestroyZNet.UpdatePlayerListZNet.SaveWorldCharacter.StartCharacter.OnDeathZRoutedRpc.InvokeRoutedRPCMessageHud.MessageType.CenterEnvMan.GetDayPlayer death and boss events depend on the dedicated server executing the
relevant Character lifecycle. They are kept because they compile against and
hook valid Valheim APIs, but they should be watched carefully during public
testing across dedicated-server and hosted-world scenarios.
Boss summoned currently means a boss Character started on the server. It does
not prove an altar summon specifically; another mod spawning a boss can also
trigger it.
Update Directory.Build.props if Valheim is installed elsewhere, then run:
dotnet build -c Release
Output:
bin/Release/net472/FehuNews.dll