{"id":86576,"date":"2026-06-05T01:43:17","date_gmt":"2026-06-04T22:43:17","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/"},"modified":"2026-06-05T01:43:17","modified_gmt":"2026-06-04T22:43:17","slug":"iska-lib","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/","title":{"rendered":"Iskandert&#8217;s Library"},"content":{"rendered":"<p># Iskandert-Library \u2014 Features Overview<\/p>\n<p>This library contains reusable building blocks used across projects in the Iskandert ecosystem.<br \/>\nIt focuses on **practical gameplay systems** (structures, stages, markers, shops\/teams) and **developer utilities**<br \/>\n(parsing helpers, transfer bridging, debug tools).<\/p>\n<p>## Usage and licensing<\/p>\n<p>The project is released under the **MIT License**. You are free to use it in your projects (including modifying,<br \/>\nredistributing, and using it commercially), as long as the license notice is preserved.<\/p>\n<p>## What\u2019s included<\/p>\n<p>### Structure system (JSON-driven)<\/p>\n<p>Utilities for defining and placing structures using external JSON definitions:<\/p>\n<p>&#8211; **Structure definitions**: patterns, block keys, replacement rules, and options like force\/overwrite.<br \/>\n&#8211; **Config scanning &#038; loading**: discovery of structure JSON files and runtime registration.<br \/>\n&#8211; **Placement engine**: places structures in-world with validation, property application, and optional behaviors<br \/>\n  (e.g. \u201cplace as player\u201d, refresh ticks).<br \/>\n&#8211; **Undo history**: lightweight per-player placement history with undo support.<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.structure.StructureDefinition`<br \/>\n&#8211; `net.unfamily.iskalib.structure.StructureLoader`<br \/>\n&#8211; `net.unfamily.iskalib.structure.StructurePlacer`<br \/>\n&#8211; `net.unfamily.iskalib.structure.StructurePlacementHistory`<\/p>\n<p>### Stage system (player \/ world \/ team)<\/p>\n<p>A generic \u201cstage\u201d registry designed to gate content and track progression across different scopes:<\/p>\n<p>&#8211; **Player stages**: persistent per-player stage flags.<br \/>\n&#8211; **World stages**: global flags stored in world saved data.<br \/>\n&#8211; **Team stages**: stage flags shared by a team, stored in world saved data.<br \/>\n&#8211; **Hooks and listeners**: integration points for reacting to stage changes.<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.stage.StageRegistry`<br \/>\n&#8211; `net.unfamily.iskalib.stage.StageHooks`<br \/>\n&#8211; `net.unfamily.iskalib.stage.StageActionHooks`<\/p>\n<p>### Team support (shared balances \/ membership)<\/p>\n<p>Team management for grouping players and sharing balances:<\/p>\n<p>&#8211; Create\/delete teams<br \/>\n&#8211; Manage membership and roles<br \/>\n&#8211; Track and query per-team currency balances<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.team.ShopTeamManager`<\/p>\n<p>### Shop currency integration hooks<\/p>\n<p>The library stores balances by currency id but does not hardcode a currency catalog.<br \/>\nConsumers can provide metadata and suggestions:<\/p>\n<p>&#8211; **Currency id listing** for command autocompletion and UIs<br \/>\n&#8211; **Currency display metadata** (translation key, symbol) when available<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.shop.ShopCurrencyHooks`<\/p>\n<p>### World marker utilities (client-side)<\/p>\n<p>Developer-focused marker rendering and helpers, useful for debugging areas, selections, scans, and automation:<\/p>\n<p>&#8211; **Marker rendering** for blocks<br \/>\n&#8211; **Billboards** for positions<br \/>\n&#8211; **Runtime sessions** (non-persistent) for cleaning\/reset behavior<br \/>\n&#8211; **Debug command** entrypoint for creating\/clearing markers<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.client.marker.MarkRenderer`<br \/>\n&#8211; `net.unfamily.iskalib.client.marker.VanillaWorldMarkerClientHooks`<br \/>\n&#8211; `net.unfamily.iskalib.marker.MarkerSession`<br \/>\n&#8211; `net.unfamily.iskalib.command.MarkerCommand`<\/p>\n<p>### Progressive explosion system (server-side)<\/p>\n<p>A modular, lag-friendlier explosion implementation that can run progressively over time:<\/p>\n<p>&#8211; Elliptical\/horizontal+vertical radius explosions<br \/>\n&#8211; Tick-based processing (or instant execution when interval is zero)<br \/>\n&#8211; Optional entity damage and \u201cbreak unbreakable\u201d mode<br \/>\n&#8211; Central registry of active explosions with stop\/introspection helpers<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.explosion.ExplosionSystem`<\/p>\n<p>### Item string parsing and conversion utilities<\/p>\n<p>Helpers for converting \u201citem argument\u201d strings into `ItemStack` (and back), matching the shape accepted by `\/give`:<\/p>\n<p>&#8211; Parse `minecraft:item_id` as well as bracketed component syntax like `minecraft:item[component=value,&#8230;]`<br \/>\n&#8211; Validate user-provided item strings for configs\/commands<br \/>\n&#8211; Format an `ItemStack` into an item-argument string (id + component patch)<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.item.ItemConverter`<\/p>\n<p>### Transfer bridging (automation compatibility)<\/p>\n<p>Bridges legacy item handlers to NeoForge\u2019s item transfer capability:<\/p>\n<p>&#8211; Wraps `IItemHandler` as a transactional `ResourceHandler<ItemResource>`<br \/>\n&#8211; Uses snapshot journals for rollback when possible (`IItemHandlerModifiable`)<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.transfer.LegacyItemHandlerResourceHandler`<\/p>\n<p>### Debug helpers and commands<\/p>\n<p>Small, focused utilities intended for development and troubleshooting:<\/p>\n<p>&#8211; Hand\/item dump helpers<br \/>\n&#8211; Debug commands for marker\/stage workflows<\/p>\n<p>Key packages\/classes:<br \/>\n&#8211; `net.unfamily.iskalib.debug.HandItemDump`<br \/>\n&#8211; `net.unfamily.iskalib.command.IskaLibDebugCommand`<br \/>\n&#8211; `net.unfamily.iskalib.command.StageCommand`<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A library of functions used primarily by Iskandert&#8217;s Team mods<\/p>\n","protected":false},"featured_media":86577,"template":"","meta":{"_minecraft_slug":"iska-lib","_minecraft_project_id":"y16HgCOF","_minecraft_author":"Unfamily","_minecraft_license":"MIT","_minecraft_downloads":67,"_minecraft_follows":0,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"iska-lib.zip","_minecraft_size_bytes":716980,"_minecraft_version_count":5,"_minecraft_updated_at":"2026-05-16T17:18:41.772300Z","_minecraft_date_created":"2026-04-27T01:05:52.184128Z","_minecraft_date_modified":"2026-05-13T14:41:15.101593Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/iska-lib","_minecraft_icon_attachment_id":86577,"_minecraft_imported_at":"2026-06-04T22:43:18+00:00","_minecraft_import_hash":"f529b15f990a1ee2f82d1007dac90357","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[873,158,92],"mod_loader":[160],"minecraft_version":[163],"class_list":["post-86576","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-library","mod_category-neoforge","mod_category-utility","mod_loader-neoforge","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Iskandert&#039;s Library - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Iskandert&#039;s Library - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A library of functions used primarily by Iskandert&#039;s Team mods\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/\",\"name\":\"Iskandert's Library - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png\",\"datePublished\":\"2026-06-04T22:43:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/iska-lib\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Iskandert&#8217;s Library\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Iskandert's Library - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/","og_locale":"en_US","og_type":"article","og_title":"Iskandert's Library - Minecraft","og_description":"A library of functions used primarily by Iskandert's Team mods","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/","name":"Iskandert's Library - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png","datePublished":"2026-06-04T22:43:17+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/iska-lib-icon-96a97e11642d54eb45456a0805f35ffa558cd7f2.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/iska-lib\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Iskandert&#8217;s Library"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/86576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/86577"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=86576"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=86576"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=86576"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=86576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}