Tags
Creators
Details
1.0.3
Compatibility
Changes
v1.0.3
Added
Unicode Font Handler System
-
New
UnicodeFontHandler- Custom font rendering system for improved Unicode support- Uses Java AWT to load TrueType fonts with full Unicode character support
- Generates bitmap texture atlases for efficient GPU rendering
- Automatic glyph caching for performance
- Graceful fallback to Minecraft's default font for unsupported characters
- Auto-detects system fonts with good Unicode coverage (Segoe UI Symbol, Arial Unicode MS, DejaVu Sans, etc.)
- Pre-caches common Unicode ranges: Basic Latin, Latin-1 Supplement, General Punctuation, Symbols, Dingbats
-
New
UnicodeFontUtils- Utility class for formatted text with Unicode- Symbol text helpers:
checkText(),crossText(),energyText(),diamondText(), etc. - Status indicators with color-coded symbols
- Progress bar generation using Unicode block characters (█░)
- Cooldown formatting with automatic time conversion
- Decorative elements: separators, boxed titles, bullet points
- Symbol text helpers:
-
Unicode Symbol Constants - Easy access to commonly used symbols:
- ✓ ✗ ⚡ ♦ ♥ ★ ● → ← ↑ ↓ ∞ ☠ ☀ ☽
HUD Configuration System
-
New HUD Config Screen - Press H to open a dedicated screen for customizing HUD elements
- Toggle individual HUD elements on/off with visual ON/OFF indicators
- Adjust HUD opacity (0-100%) with visual slider
- "Enable All" / "Disable All" quick preset buttons
- Changes save automatically
-
New Keybind -
Hkey opens the HUD Configuration screen (configurable in Controls) -
Granular HUD Toggles - Control visibility of each HUD element individually:
- Origin Info Panel (name and level display)
- Resource Bar (blood, heat, hydration, etc.)
- XP Progress Bar
- Ability Indicators (cooldown boxes)
- Passive Indicators (e.g., double jump ready)
- Cooldown Overlays (animated cooldown fill)
- Keybind Hints ([R], [V] labels)
- Unicode Symbols (✓/✗ vs ASCII)
-
Config Screen in Mod List - Access mod settings from the NeoForge mod list "Config" button
Vampire & Vampling - New Passives
-
Vampiric Double Jump - Sprint and double-tap jump while airborne to perform a damaging leap!
- Deals damage to nearby enemies (6 HP for Vampire, 3 HP for Vampling)
- Knocks back enemies hit
- Provides forward momentum boost
- Visual crimson spore particles and smoke effects
- Audio feedback with bat takeoff and phantom flap sounds
- Cooldown: 1.5s (Vampire) / 2s (Vampling)
-
Blood Drain Gaze - Crouch and stare at a creature with blood for 5 seconds to drain it!
- Works on any creature with blood: large animals, villagers, pillagers, players
- Excludes undead (zombies, skeletons), constructs (iron golems), and tiny creatures (bats, chickens)
- Progress bar UI while focusing
- Crimson particle stream from target to player
- Deals continuous damage while healing the vampire
- Slows and weakens the target
- Bonus effects when fully draining a creature (Regeneration II, Strength I)
- Range: 8 blocks (Vampire) / 5 blocks (Vampling)
Werewolf & Wolfling - Dietary Preferences
-
Rotten Flesh Immunity - Can eat rotten flesh without the hunger debuff
- Also provides minor healing (2 HP for Werewolf, 1 HP for Wolfling)
- "The rotten flesh satisfies your feral hunger!"
-
Raw Meat Preference - Eating raw meat provides bonus effects
- Regeneration (II for Werewolf, I for Wolfling)
- Saturation bonus
- "The raw meat invigorates you!"
Vampire & Vampling - Dietary Preferences
-
Raw Meat Bonus - Eating raw meat provides regeneration
- "The blood in the meat sustains you!"
- Full Vampires also get Strength I boost
-
Cooked Meat Weakness - Cooked meat provides little nourishment
- Applies Weakness I effect
- "The cooked meat provides little nourishment..."
Changed
-
Code Quality: ChatFormatting - Replaced all
§section symbol color codes with properChatFormattingenum- Affected files:
OriginCommand,OriginEventHandler,SelectOriginPacket,FoodEventHandler,HudConfigScreen,RadialMenuScreen - Uses
.withStyle()and.append()for multi-colored Component messages - More maintainable, type-safe, and IDE-friendly
- Affected files:
-
Unicode Symbol Rendering -
OriginHudOverlaynow usesUnicodeFontHandler.getSymbol()for proper fallback- Automatically falls back to ASCII if Unicode symbol can't be rendered
-
Config Split - Configuration now separated into two files:
veil_origins-common.toml- Gameplay settings (cooldowns, damage, abilities, sizes)veil_origins-client.toml- Client-side HUD/display settings
-
Translation Keys - Added translation keys for all config options for localization support
Fixed
HUD Config Screen
- Fixed background rendering above buttons - Corrected render order so widgets display on top of background
- Fixed Unicode minus symbol not rendering - Changed
−10(U+2212) to ASCII-10
Config Loading Crash
- Fixed crash on startup: "Cannot get config value before config is loaded"
- Root cause:
onLoadhandler tried to access both COMMON and CLIENT config values when only one was loaded - Now checks which config spec is being loaded and only accesses values from that config
- Root cause:
Multiplayer Origin Synchronization
- Fixed non-host players unable to use origin abilities (R and V keybinds) in multiplayer
- Root cause: Origin data was not being synced from server to client for non-host players
SyncOriginDataPacket.handle()now properly updates the client-side origin cache- Added
VeilOriginsAPI.setPlayerOriginClient()for client-side cache updates without triggering server-side passives - Sync packets are now sent:
- When a player logs in
- When a player respawns
- When a player selects or changes their origin
- When origin is set/reset via commands
- Added periodic resource bar sync (every 1 second) to keep HUD accurate
- Non-host players can now see their origin HUD elements and use all abilities
Technical
- Added
UnicodeFontHandler- Custom Unicode font rendering with AWT, texture atlas, and glyph caching - Added
UnicodeFontUtils- Utility methods for formatted text with Unicode symbols - Added
HudConfigScreen- New GUI screen for HUD configuration - Added
OptionsScreenHandler- Utility for opening HUD config from various contexts - Added
HUD_CONFIGkeybind (H key) with handler inKeyInputHandler - Registered
IConfigScreenFactoryfor NeoForge mod list config button - Split
ModConfigEventhandler to load COMMON and CLIENT configs separately - Added
VampiricDoubleJumpPassive- Server-validated double jump with client-side input detection - Added
BloodDrainGazePassive- Crosshair-based drain mechanic with entity type filtering - Added
FoodEventHandler- Handles dietary effects for wolf and vampire origins - Added
DoubleJumpPacket- Network packet for double jump synchronization - Entity blood detection uses type ID blacklist for reliable cross-version compatibility
- Initialized
UnicodeFontHandlerinVeilOrigins.onClientSetup()for early availability
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:GZpP2Z67:qbZYFT5j"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:GZpP2Z67:qbZYFT5j"
}

