Evil Companion

Minecraft mod that introduces a dynamic, evolving entity that starts as your mischievous friend but can become your ultimate rival. Unlike traditional boss mods, Evil Companion focuses on personality, progression, and multi-player dynamics

File Details

Evil Companion 1.1.1

  • R
  • Nov 4, 2025
  • 211.29 KB
  • 387
  • 1.20.1
  • Forge

File Name

evil_companion-1.1.1.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:evil-companion-1368437:7185114")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Evil Companion v1.1.1 - Admin Control, Customization & Balance Update

Release Date: November 4, 2025
Minecraft Version: 1.20.1
Forge Version: 47.4.10


🎉 What's New

⚖️ Balance Improvements

  • FIXED: Resistance effect capped at Resistance II (40% damage reduction) when blocking
    • Prevents boss from becoming invincible with armor + resistance stacking
    • Boss remains challenging but fair at high levels
  • ADJUSTED: Health per level decreased from 10.0 → 6
    • Better scaling as boss gains better equipment
  • ADJUSTED: Base damage reduced from 4.0 → 2
    • Prevents one-shot kills in early game
  • ADJUSTED: Damage per level reduced from 1.0 → 0.8
    • More gradual damage scaling
  • VERIFIED: All enchantments respect vanilla limits
    • Sharpness capped at V (max 5)
    • Protection capped at IV (max 4)
    • No impossible enchantment levels

🎛️ MANUAL Spawn Mode

  • NEW: Fourth spawn mode for complete administrative control
    • SHARED - One boss for entire server (default)
    • PER_PLAYER - One boss per player
    • RATIO - One boss per X players
    • MANUAL - No automatic spawning, admins control everything
  • USE CASE: Perfect for event servers, custom scenarios, or controlled boss encounters
  • CONFIGURATION: Set bossSpawnMode = "MANUAL" in config
  • ADMIN SPAWN: Use /ec spawn-boss <player> to manually assign bosses

🎨 Boss Customization Commands

  • NEW: /ec set-name <player> <name> - Change any boss's name dynamically

    • Example: /ec set-name Steve "The Destroyer"
    • Changes persist through restarts and dimension travel
    • Boss bar and custom name updated immediately
  • NEW: /ec set-texture <player> <normal|hostile> <path> - Per-boss texture override

    • Example: /ec set-texture Alex normal minecraft:textures/entity/zombie/zombie.png
    • Supports any ResourceLocation format
    • Override textures for individual bosses
    • Independent control of normal (unhostile) and hostile appearances
    • Changes immediately visible to all players
  • NEW: /ec set-texture all <normal|hostile> <path> - Global texture override

    • Example: /ec set-texture all hostile mypack:boss_angry.png
    • Apply texture to ALL active bosses at once
    • Useful for server-wide events or themes
    • Overrides individual boss textures
  • NEW: /ec reassign-boss <fromPlayer> <toPlayer> - Transfer boss ownership

    • Example: /ec reassign-boss Steve Alex
    • Transfer a boss from one player to another
    • Boss retains level, name, anger state, and inventory
    • Previous boss of toPlayer is removed

🖼️ Per-Boss Texture System

  • NEW: Bosses can have individual custom textures separate from global config
  • HIERARCHY: Per-boss texture → Config texture → Default texture → Player skin
  • PERSISTENCE: Custom textures save with the boss and persist across restarts and logins
  • RENDERER: Client rendering checks for custom textures first
  • USE CASES:
    • Different appearance for different players' bosses
    • Special event bosses with unique skins
    • Thematic customization per player

📝 Boss Name Customization

  • CONFIGURABLE: Boss names fully customizable via config
    • bossNames - List of 48 default fantasy names
    • Add your own names separated by commas
    • Empty list falls back to defaults
  • PER-BOSS OVERRIDE: Admin commands can override specific boss names
  • PERSISTENCE: Names persist through restarts, level-ups, and dimension travel
  • FALLBACK SYSTEM: Graceful degradation if config is invalid

🎯 Command Reference

Player Commands

  • /ec guide - Get the field guide book (can also use /evilcompanion guide)

Admin Commands (OP level 2+)

Boss Management:

  • /ec remove-boss <player> - Remove a player's boss completely
  • /ec set-level <player> <level> - Set boss level (1-1000)
  • /ec disable-boss <player> - Disable boss spawning for player
  • /ec enable-boss <player> - Enable boss spawning
  • /ec spawn-boss <player> - Spawn/assign boss for player
  • /ec reassign-boss <fromPlayer> <toPlayer> - Transfer boss ownership

Customization:

  • /ec set-name <player> <name> - Change boss name
  • /ec set-texture <player> <normal|hostile> <path> - Set player boss texture
  • /ec set-texture all <normal|hostile> <path> - Set all bosses texture

Configuration:

  • /ec reload - Reload configuration in-game

Note: All commands can use /evilcompanion or /ec prefix


🔄 Upgrade Notes

Configuration Changes

  • NEW CONFIG VALUE: bossNames - List of boss names (default: 48 fantasy names)
  • NEW CONFIG VALUE: normalTexturePath - Global unhostile texture path
  • NEW CONFIG VALUE: hostileTexturePath - Global hostile texture path
  • NEW SPAWN MODE: MANUAL - Added to valid spawn mode list
  • BACKWARDS COMPATIBLE: All new config values have defaults

🐛 Bug Fixes

Stability & Null Safety

  • FIXED: Various null checks and input validation to prevent crashes
  • FIXED: Graceful handling of invalid texture paths and formats
  • FIXED: Proper handling when resources or config entries are missing

Command Improvements

  • NEW: /ec command alias - All commands work with /ec as shorthand
  • IMPROVED: More consistent and readable command names (hyphenated)
  • FIXED: Clear error messages when a player doesn't have a boss
  • IMPROVED: Clear feedback for all command operations

Persistence & Sync

  • FIXED: Boss names now reliably persist through death, restarts, and transfers
  • FIXED: Custom textures persist across logouts/logins and apply immediately when changed
  • FIXED: Visual updates to bosses (names, textures) are visible to clients without requiring reconnects
  • BACKWARDS COMPATIBLE: Saves from v1.1.0 are handled gracefully

🎮 Use Cases & Examples

Event Server Setup

  1. Set config: bossSpawnMode = "MANUAL"
  2. Create custom textures for event bosses
  3. Use /ec spawn-boss <player> when event starts
  4. Use /ec set-texture all hostile myevent:boss_evil.png
  5. Customize names: /ec set-name <player> "Event Boss"

Roleplay Server

  1. Different boss names per character
  2. Per-player texture customization
  3. Transfer bosses when players change characters
  4. Manual spawning for story progression

Boss Names Customization

You can customize the pool of names that your boss companion can be assigned. This is configured in the evil_companion-common.toml file.

Default Names

By default, the mod includes 48 unique boss names:

  • Zyren, Kaelix, Vorn, Drayen, Raithe, Kynar, Thorne, Azel
  • Lunor, Varin, Noxen, Zephyr, Cynric, Rynel, Auron, Vexen
  • Solan, Daryn, Myric, Xyra, Kaen, Velar, Orin, Taren
  • Zarek, Lyric, Maven, Cynra, Thalor, Erynd, Riven, Serik
  • Vael, Naren, Corin, Dravik, Soren, Tyren, Zyric, Kavor
  • Rynor, Talon, Malric, Varyn, Cyren, Dreyl, Kaelor, Orren

Customizing Boss Names

  1. Open config/evil_companion-common.toml
  2. Find the [Boss Appearance] section
  3. Edit the bossNames list:
["Boss Appearance"]
    bossNames = ["MyBoss", "EvilSteve", "DarkKnight", "Shadow", "Doom"]

Rules:

  • Names must be in quotes and separated by commas
  • You can add as many names as you want
  • Names should not be empty strings
  • If you provide an empty list, the mod will use default names
  • Names persist across level-ups (once assigned, they don't change)

Examples

Horror Theme:

bossNames = ["Dread", "Blight", "Wraith", "Shade", "Grimm", "Phantom", "Reaper", "Void"]

Funny Names:

bossNames = ["Mr. Grumpy", "Steve's Evil Twin", "The Annoyance", "Captain Chaos", "Lord Mischief"]

Your Own Names:

bossNames = ["Bob", "Alice", "Charlie", "Diana", "Edward"]

Texture Customization

You can change the appearance of your boss companion by specifying custom texture paths.

Default Textures

The mod includes two default texture modes:

  • Normal/Unhostile (Levels 1-2): Uses either evil_companion:textures/entity/player_boss_normal.png or default player skin
  • Hostile (Level 3+): Uses either evil_companion:textures/entity/player_boss_evil.png or default player skin

Customizing Textures

  1. Open config/evil_companion-common.toml
  2. Find the [Boss Appearance] section
  3. Edit the texture paths using ResourceLocation format: namespace:path/to/texture.png
["Boss Appearance"]
    normalTexturePath = "mypack:textures/entity/friendly_boss.png"
    hostileTexturePath = "mypack:textures/entity/angry_boss.png"

Texture Path Format (ResourceLocation):

  • Format: namespace:path/to/your/texture.png
  • The namespace is typically your resource pack name (or minecraft for vanilla)
  • The path can be ANY location within assets/<namespace>/ folder
  • Set to "default" to use mod's built-in textures or player skins
  • Both textures must exist for custom textures to work
  • If textures are not found, the mod falls back to default player skins

You have complete flexibility! The texture doesn't have to be in textures/entity/ - it can be anywhere:

  • mypack:textures/entity/boss.png
  • mypack:textures/bosses/friendly.png
  • mypack:custom/anywhere/texture.png
  • mypack:boss_normal.png ✅ (directly in assets root)

Creating Custom Textures - Step by Step

Method 1: Using a Resource Pack (Recommended for Players)

  1. Create Resource Pack Structure:

    MyBossTextures/
    ├── pack.mcmeta
    └── assets/
        └── mypack/          ← Your namespace (choose any name)
            └── textures/
                └── entity/  ← Can be any folder structure you want!
                    ├── friendly_boss.png
                    └── angry_boss.png
    
  2. Create pack.mcmeta:

    {
      "pack": {
        "pack_format": 15,
        "description": "Custom Evil Companion Textures"
      }
    }
    
  3. Create Your Textures:

    • Use 64x64 pixels (standard Minecraft player skin size)
    • PNG format
    • Can use any image editor (Paint.NET, GIMP, Photoshop, etc.)
  4. Configure the Mod:

    normalTexturePath = "mypack:textures/entity/friendly_boss.png"
    hostileTexturePath = "mypack:textures/entity/angry_boss.png"
    
  5. Install Resource Pack:

    • Place MyBossTextures folder in .minecraft/resourcepacks/
    • Enable it in Minecraft's Resource Packs menu

Method 2: Overriding Mod Textures (Advanced)

You can replace the mod's default textures without changing the config:

  1. Create Resource Pack:

    MyBossTextures/
    ├── pack.mcmeta
    └── assets/
        └── evil_companion/  ← Use mod's namespace
            └── textures/
                └── entity/
                    ├── player_boss_normal.png
                    └── player_boss_evil.png
    
  2. Leave Config as Default:

    normalTexturePath = "default"
    hostileTexturePath = "default"
    
  3. The mod will automatically use your textures!

Method 3: Using Vanilla Textures

Want to use Minecraft's built-in mob textures?

# Use zombie texture for hostile boss
hostileTexturePath = "minecraft:textures/entity/zombie/zombie.png"

# Use villager texture for friendly boss
normalTexturePath = "minecraft:textures/entity/villager/villager.png"

# Use creeper texture (why not?)
hostileTexturePath = "minecraft:textures/entity/creeper/creeper.png"

Method 4: Using Another Mod's Textures

# Use textures from another installed mod
normalTexturePath = "othermod:textures/entity/cool_mob.png"
hostileTexturePath = "othermod:textures/entity/scary_mob.png"

Complete Examples

Example 1: Pirate Theme

Resource Pack Structure:
PirateTheme/
├── pack.mcmeta
└── assets/
    └── pirate/
        └── textures/
            └── bosses/
                ├── captain.png
                └── captain_angry.png

Config:
normalTexturePath = "pirate:textures/bosses/captain.png"
hostileTexturePath = "pirate:textures/bosses/captain_angry.png"
bossNames = ["Captain Blackbeard", "Redbeard", "Bluebeard", "Sea Devil"]

Example 2: Using Vanilla Minecraft Textures

# Steve for friendly, zombie for hostile
normalTexturePath = "minecraft:textures/entity/steve.png"
hostileTexturePath = "minecraft:textures/entity/zombie/zombie.png"

Example 3: Custom Folder Structure

MyTextures/
└── assets/
    └── customboss/
        ├── normal.png
        └── evil.png

Config:
normalTexturePath = "customboss:normal.png"
hostileTexturePath = "customboss:evil.png"

Example 4: Horror Theme from Resource Pack

HorrorPack/
└── assets/
    └── horror/
        └── entities/
            └── evil_companion/
                ├── ghost.png
                └── demon.png

Config:
normalTexturePath = "horror:entities/evil_companion/ghost.png"
hostileTexturePath = "horror:entities/evil_companion/demon.png"
bossNames = ["Specter", "Wraith", "Phantom", "Shadow"]

Hot-Reloading

Both boss names and textures support hot-reloading:

  1. Edit the config file while the game is running
  2. Use /reload command (requires op permissions)
  3. New bosses will use the updated configuration
  4. Note: Existing boss names will NOT change (names are persistent once assigned)
  5. Note: Texture changes may require restarting the game for proper caching

Troubleshooting

Boss Has Default Name Instead of Custom

  • Check that your config has valid names in the list
  • Verify names are in quotes and separated by commas
  • Ensure the config file was saved after editing

Custom Textures Not Showing

  • Verify texture path format: namespace:path/to/texture.png (note the colon!)
    • ✅ Correct: mypack:textures/entity/boss.png
    • ❌ Wrong: mypack/textures/entity/boss.png (slash instead of colon)
    • ❌ Wrong: mypack.textures.entity.boss.png (dots instead of slashes)
  • Check both paths are set: Both normalTexturePath and hostileTexturePath must be valid
  • Verify resource pack structure:
    YourPack/
    ├── pack.mcmeta (required!)
    └── assets/
        └── namespace/    ← This folder name is your namespace
            └── path/to/texture.png
    
  • Enable your resource pack: Go to Options → Resource Packs in Minecraft
  • Check texture exists at exact path: Case-sensitive! Boss.pngboss.png
  • Restart the game to clear texture cache
  • Check game logs for ResourceLocation errors
  • Test with vanilla texture first:
    normalTexturePath = "minecraft:textures/entity/steve.png"
    
    If this works, your path format is wrong

Texture Path is Valid But Still Shows Default Skin

  • Make sure your resource pack is enabled and loaded
  • Check that both textures exist (if one is missing, both fall back to default)
  • Verify PNG file is valid (not corrupted)
  • Ensure texture is 64x64 pixels (player skin format)
  • Try using a simpler path: yourpack:test.png in assets/yourpack/test.png

Config Changes Not Taking Effect

  • Make sure you saved the config file
  • Use /reload command if server/game is running
  • Restart the game for texture changes
  • Check that the config file doesn't have syntax errors

Advanced: Creating a Full Customization Pack

You can create a complete customization by combining names, textures, and resource packs:

  1. Create Resource Pack Structure:

    MyBossCustomization/
    ├── pack.mcmeta
    └── assets/
        └── evil_companion/
            └── textures/
                └── entity/
                    ├── player_boss_normal.png
                    └── player_boss_evil.png
    
  2. Edit Config:

    ["Boss Appearance"]
        bossNames = ["YourCustomNames"]
        normalTexturePath = "evil_companion:textures/entity/player_boss_normal.png"
        hostileTexturePath = "evil_companion:textures/entity/player_boss_evil.png"
    
  3. Enable Resource Pack:

    • Place resource pack in .minecraft/resourcepacks/
    • Enable it in game settings

Now your boss will have custom names and appearance!


Quick Reference

ResourceLocation Format Cheat Sheet

The texture path format is called "ResourceLocation" in Minecraft:

Format: namespace:path/to/file.png

Part Description Example
namespace Your resource pack/mod ID mypack, evil_companion, minecraft
: Required separator Always use colon, never slash or dot
path/to/file.png Path inside assets/<namespace>/ textures/entity/boss.png

Full Path in Filesystem: .minecraft/resourcepacks/YourPack/assets/<namespace>/<path/to/file.png>

How to Find Namespace:

  • It's the folder name inside assets/
  • For this mod: evil_companion
  • For Minecraft: minecraft
  • For your pack: Whatever you name the folder

Common Mistakes

Wrong: mypack/textures/entity/boss.png (using slash)
Correct: mypack:textures/entity/boss.png

Wrong: assets/mypack/textures/entity/boss.png (including assets)
Correct: mypack:textures/entity/boss.png

Wrong: Texture at resourcepacks/MyPack/mypack/textures/boss.png
Correct: Texture at resourcepacks/MyPack/assets/mypack/textures/boss.png

Testing Your Setup

  1. Start Simple: Use a vanilla texture first

    normalTexturePath = "minecraft:textures/entity/steve.png"
    
  2. Test Your Pack: Put a texture in the simplest location

    YourPack/
    ├── pack.mcmeta
    └── assets/
        └── test/
            └── boss.png
    

    Config: normalTexturePath = "test:boss.png"

  3. Gradually Add Complexity: Once working, organize into folders

    test:boss.png → test:textures/boss.png → test:textures/entity/boss.png
    

Need Help?


🙏 Acknowledgments

Thanks to the community for requesting more administrative control and customization options!


📝 Notes

  • Config Hot-Reload: Changes to bossNames and texture paths apply to NEW boss spawns
  • Per-Boss Override: Custom textures set via commands persist through restarts
  • Resource Packs: Custom textures can be from resource packs, other mods, or vanilla
  • MANUAL Mode: Perfect for servers that want complete control over boss spawning