You are viewing a potentially older version of this package. View all versions.
end_4-Thorn_Core-0.5.0 icon

Thorn Core

The powerful config system behind Thorn, for any mod.

Date uploaded 8 hours ago
Version 0.5.0
Download link end_4-Thorn_Core-0.5.0.zip
Downloads 1707
Dependency string end_4-Thorn_Core-0.5.0

This mod requires the following mods to function

averyocean65-FixPluginTypesSerialization-1.0.0 icon
averyocean65-FixPluginTypesSerialization

Fixes custom Serializable structs and such stored in mod plugin assemblies not getting deserialized by the native Unity engine code.

Preferred version: 1.0.0
BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
end_4-NukeLib-0.12.0 icon
end_4-NukeLib

eNd_4's UltraKill Library

Preferred version: 0.12.0
end_4-Notiffy-0.1.4 icon
end_4-Notiffy

Notification system for Ultrakill. This is a library and does nothing on its own.

Preferred version: 0.1.4
end_4-Fireman-0.1.1 icon
end_4-Fireman

File manager & picker for ULTRAKILL

Preferred version: 0.1.1

README

Thorn Core

GitHub || Wiki

Powerful config system

  • Supports all the usual basic data types (string, bool, numbers, enums), plus:
    • Colors with rainbow pulse
    • Enemy types
    • Keybinds with modifiers (e.g. Ctrl+A instead of just A)
    • Any custom data you can serialize to JSON, and allows custom UI
  • Compact UI, great for tuning settings live (no Esc and multiple clicks)
  • Hot reload on disk change

Comparison with PluginConfig and Configgy: see Thorn Wiki

Screenshots

Usage

public class HatsModConfig : Module 
{
    public static Setting<bool> FunkyMode = null!;
    public static Setting<EnhancedColor> HatColor = null!;
    public static Setting<FilePath> HatTexture = null!;

    public HatsModConfig() : base("myHatsMod.config", "Hats Mod", "Adds custom hat to enemies", ModuleCategory.Render) 
    {
        FunkyMode = CreateSetting("funkyMode", "Funky Mode", "Funny effects", false);
        HatColor = CreateSetting("color", "Hat Color", "The color for the custom hat", new EnhancedColor(0.66f, 1f, 0.97f, 0.5f));
        HatTexture = CreateSetting("texture", "Hat Texture", "The texture for the custom hat", HatsMod.DefaultHatTexturePath);
    }
}

[BepInDependency("com.github.end-4.thornClient")]
public class HatsMod : BaseUnityPlugin 
{
    public const string DefaultHatTexturePath = "/path/to/texture.png";

    private void Update() 
    {
        Logger.LogInfo($"Funky Mode: {HatsModConfig.FunkyMode.Value}");
        Logger.LogInfo($"Hat Color: {HatsModConfig.HatColor.Value.GetCurrentColor()}");
        Logger.LogInfo($"Hat Texture: {HatsModConfig.HatTexture.Value.ToString()}");
    }
}

For more details, see Thorn Wiki

Copyleft

Thorn's code is released under the LGPL-3.0 license, which means you are free to use its config system in your mod, whether or not it's open source; modifications to Thorn's code itself however are required to be open-sourced.

Assets are released under the CC BY-SA 4.0 license. This means you are free to reuse them as long as you give attribution and maintain the same license for derivative works.

Mods that use Thorn

Technical description

Thorn as a whole is an utility mod, with its own config system featuring a compact UI to house its 50+ modules. This package contains the base system without those modules.

CHANGELOG

0.5.0

Thorn has been split into two packages. This release note is the same for both, but for later versions changes will be listed in their own packages.

  • Packaging: Splitted Thorn's built-in modules and config system into separate packages: Thorn and Thorn Core. The former contains the modules and the latter contains the config system.
    • Regular users: No action is required if you use a mod manager. Otherwise get the Thorn Core package.
    • Mod developers utilizing the config system: it's recommended to declare Thorn Core instead of Thorn as the dependency. This gives your users a clean version of Thorn without the modules, in case they don't want them. No code change is required.
    • Also made the package structure more manual install-friendly, although we recommend against this.
  • Added FolderPath and FilePath config data types
  • New modules:
    • Custom Style Ranks (with a very fancy image picker)
    • HUD: Weapon cooldowns: revolver coins, revolver blue charge, revolver red charge, jackhammer core, shotty/hammer saw, blue nails, blue saws, blue magnets, overheat nails, overheat saws, jumpstart cable, freezeframe juice, firestarter oil, srs cannonball
  • Made bounded value HUD modules more readable by default
  • Made the ClickGUI windows not go back to their previous position after dragging
  • Enemy tracers: fixed threshold being off by 1, added enemy type blacklist
  • Fixed custom style ranks (from Ultraskins or whatever) being oversized
  • Made HUD widget snapping on the sides slightly more consistent
  • Fixed duplicate cheatiness notifications
  • Edges (Enemies): Added indication for sanded and made deathcatched enemies follow puppet's color
  • Made gun HUD widget empty by default instead of having a black saw hammer
  • Made stamina and railcannon charge HUD modules display both live charging and readily usable values

0.4.0

  • Added EnhancedColor data type. Most customizable colors can now have rainbow pulse
  • New modules: Visible Portals, Extra Binds, Gravity Tweak
  • New HUD widgets: Custom Label
  • Added foreground (text/icon) color customization to stat HUD elements
  • Fixed Railcannon charge meter jumping from 80% to full
  • Viewmodel Tweaks: Edges skin: made it work with spawner arms and fixed applied to Piercer's charge effect/panel
  • Weapon Variant Binds: added spawner arms
  • ClickGUI: Raised the layer so the tabs are clickable when Polarite is installed and spawns a blocking notification panel; made Back navigation (Esc/Mouse4) on ClickGUI pop panels before going to previous layer

0.3.0

  • Added snapping for HUD widgets
  • Added support for custom setting UI elements
  • New HUD modules: Alerts, Freshness, Style Multiplier, Style Feed, Style Rank, Style Points (of current rank)
  • Added an option for Run In Background to only affect menus (useful for large Angry downloads)
  • Fixed Freezeframe rocket ride hints flipped when doing 8-2 challenge

0.2.0

  • Added config profiles
  • New modules: Boss Bars
  • New HUD modules: Rocket Fuel, Clock
  • Fixed Weapon Variant Binds not working during hitstops
  • Bounded value indicators:
    • Added vertical line and crosshair circle style
    • Made horizontal progress bar HUD elements have customizable length and can have icon/numbers hidden. You can now have clean horizontal crosshair indicators!
  • Tweaked some icons for consistency & readability

0.1.4

  • New modules: Force Enrage, Resize Enemies, Edges (World)
  • Made viewmodel tweaks edges work with arms
  • Added 12h/24h option for ClickGUI top bar clock
  • Fixed hasToggling constructor param for Modules not working
  • Fixed tooltip positioning that made buttons unclickable in certain cases
  • Fixed very inconsistent icon colorizing
  • Fixed dropdown texts being empty

0.1.3

  • Added FixPluginTypesSerialization dependency (basically makes dependent mods like Billion Nemesis load properly without Angry already installed)
  • Fixed weird bounded value hud module style selection
  • Use a new menu for big enums (tmp dropdown sucks)
  • Prevent setting group buttons from spawning many children window
  • Made HUD elements scalable
  • UI: Only colorize monochrome icons, underline active modules

0.1.2

  • ClickGUI: prevented cheat binds and esc pause from triggering
  • Fixed battery icon error spam for desktop users without a battery
  • Added UI hint for enum substitutions
  • Fixed a bug where you could move the drag area of a disabled HUD module's config window

0.1.1 omitted because it was used for a description edit on Thunderstore

0.1.0

  • Initial release