Mods / CarryOnLib

Tags:
Library
Author:
NerdScurvy
Side:
Both
Created:
Aug 19th 2025 at 7:40 AM
Last modified:
Jul 4th at 7:42 AM
Downloads:
37183
For testers (for Vintage Story 1.22.0 - 1.22.3):
CarryOnLib-1.22.0_v1.0.0-pre.7.zip  1-click install

CarryOnLib allows mods to use CarryOn functionality.

 

Coffee and Gears

Please support my caffeine consumption

 

This mod is intended to be used with CarryOn v2, however mods can use CarryOnLib to include optional CarryOn functionality.

 

Mods using CarryOnLib:

RackEmUp

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.0.0-pre.7 carryonlib
1.22.0 - 1.22.3
5030 Jul 4th at 7:42 AM CarryOnLib-1.22.0_v1.0.0-pre.7.zip 1-click install
  • Bump version to match CarryOn
  • Allow nullable BlockEntityData in transfer interface

 

I'm assessing whether to merge CarryOnLib back into the main CarryOn mod.

1.0.0-pre.5 carryonlib
1.22.0 - 1.22.3
3189 Jun 30th at 11:22 AM CarryOnLib-1.22.0_v1.0.0-pre.5.zip 1-click install

CarryOnLib v1.0.0-pre.5

API Changes

  • Transform/Attachment system refactored: ICarriedTransformGroupResolver → IRootTransformGroupResolver + IAttachmentTransformGroupResolver; CarriedGroupResolution → AttachmentResolveResult; removed RegisteredTransformGroupResolver
  • ICarryManager updated: RegisterTransformGroupResolver → RegisterRootTransformGroupResolver + RegisterAttachmentTransformGroupResolver; HasPermissionToCarry → HasPermissionAt(Entity, BlockPos, bool showErrorMessage)
  • CheckPermissionToCarryDelegate renamed to CheckPermissionAtDelegate; event renamed accordingly
  • DropBlockAsItem → DropBlockAsEntityOrItem — clearer naming for dual entity/item drop behavior

Config Model Changes

  • CarrySlotSpeedConfig / WalkSpeedOverridesConfig → SlotModifierConfig / ModifierOverridesConfig (shared between walk speed and hunger rate)
  • WalkSpeedOverrides reorganized: moved from CarryOptions.WalkSpeedOverrides to CarryWalkSpeedConfig.ModifierOverrides; ByBlockCode/ByBlockClass changed from Dictionary<string, CarrySlotSpeedConfig> to List<SlotModifierConfig> with a Key property
  • AllowSprintWhileCarrying + IgnoreCarrySpeedPenalty removed from CarryOptionsConfig → replaced by CarryWalkSpeedConfig.HandsEnabled, BackEnabled, HandsAllowSprint, BackAllowSprint
  • BackpackSelectionMode changed from string-backed enum wrapper to direct BackpackSelectionMode enum with [JsonConverter(typeof(StringEnumConverter))]
  • All config sections now have [DisplayName], [Description], [Category], [DefaultValue] annotations for AutoConfigLib UI
  • New config version (v4) with UpgradeVersion() migration from v3

New Config Sections

  • CarryWalkSpeedConfig - per-slot enable/disable, sprint control, per-block overrides
  • CarryHungerRateConfig - per-slot enable, minimum saturation threshold, per-block overrides
  • DropCarriedOnDamageConfig - per-slot enable, damage thresholds, drop range
  • CarriedBlockEntityConfig - DropMode (Items/EntityOnFailedPlacement/EntityAlways), random drop rotation, particles, despawn timer (30 in-game days default), pickup access control (Anyone/OwnerOnly/OwnerFirst with grace period), visual scale

New Features

  • DropMode enum - configures whether carried blocks drop as items or block entities
  • PickupAccess enum - controls who can pick up dropped block entities with optional owner grace period
  • ClientSidePermissionCheck config - enables optimistic client-side permission checks (may be inaccurate on claims mods)
  • LegacyTrackDroppedBlocks config - restores legacy tracked-dropped-block pickup behavior (default: false)
  • PickUpNoPermission carry failure code - distinct error when pickup is denied by permissions
  • NotOwner failure code - distinct error when entity pickup is blocked by ownership
  • InvalidateBackpackCache() method on CarryOnConfig
  • IConfigProvider interface - exposes CarryOnConfig for DI
  • CarriedBlockEntityConfig serialization keys added to CarryCode.AttributeKey

Utility Refactoring

  • Extensions class removed; functionality split into:
    • BehaviorRegistrationExtensions (Register<T>, HasBehavior<T>, GetBehaviorOrDefault)
    • AttributeTreeExtensions (TryGet, Set, Remove, LookupValue, EvaluateDotNotationLogic)
    • InventoryConverter (ConvertBlockInventoryToBackpack, ConvertBackpackToBlockInventory)
    • JTokenExtensions (TryGetBool, TryGetFloat, TryGetStringArray)
  • TransformGroupResolverHelper → AssetResolutionHelper; GetContainerSlots moved to BlockUtils
  • JsonHelper.GetTransform + JsonHelper.HasAnyTransformValue → ModelTransformParser
  • TreeSerializer updated to support Enum serialization (toString/parse)
  • BlockUtils changed from class to static class
1.0.0-pre.4 carryonlib
1.22.0 - 1.22.3
13863 Jun 10th at 7:06 AM CarryOnLib-1.22.0_v1.0.0-pre.4.zip 1-click install

Required for CarryOn v2.0.0-pre.4

  • API Refactor:
    • Overhauled ICarryManager with streamlined signatures, optional parameters, improved return types, and better XML docs.
  • Added support for attached sign capture.
1.0.0-pre.3 carryonlib
1.22.0 - 1.22.3
6213 Jun 4th at 2:29 PM CarryOnLib-1.22.0_v1.0.0-pre.3.zip 1-click install

Required for CarryOn v2.0.0-pre.3

  • Added walk speed modifier overrides — configure carry movement speed per block or block type for both hands and back slots.
  • Major config serialization refactor for improved maintainability and reliability.
  • Improved API null-safety and expanded error/failure codes for better feedback.
  • Event system and stability improvements.
1.0.0-pre.2 carryonlib
1.22.0 - 1.22.3
3608 Jun 1st at 1:29 AM CarryOnLib-1.22.0_v1.0.0-pre.2.zip 1-click install

Required for CarryOn v2.0.0-pre.2

  • Expanded transform-resolver API support in ICarryManager.cs.
  • API change: RegisterTransformGroupResolver now requires a modId.
  • API change: carried transform resolvers no longer expose Priority.
  • Added cabinet carryable/config support.
1.0.0-pre.1 carryonlib
1.22.0 - 1.22.2
5273 Aug 28th 2025 at 1:16 PM CarryOnLib-1.22.0_v1.0.0-pre.1.zip 1-click install

Pre-release version for testing


0 Comments (oldest first | newest first) (threaded | flat)