{"id":116359,"date":"2026-06-06T23:22:13","date_gmt":"2026-06-06T20:22:13","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/"},"modified":"2026-06-06T23:22:13","modified_gmt":"2026-06-06T20:22:13","slug":"opc-directors-cut","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/","title":{"rendered":"Offline Player Cache: Directors Cut"},"content":{"rendered":"<p>![Offline Player Cache Banner](https:\/\/cdn.modrinth.com\/data\/cached_images\/38a9b779772577bb5924af170e38f9cb1e313855.png)<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" href=\"https:\/\/github.com\/PlayerEXDirectorsCut\/offline-player-cache\/blob\/1.20.1\/main\/LICENSE\" src=\"https:\/\/img.shields.io\/badge\/MIT-MIT?style=for-the-badge&#038;label=LICENCE&#038;labelColor=1A1A1A&#038;color=FFFFFF&#038;link=https%3A%2F%2Fgithub.com%2FPlayerEXDirectorsCut%2Foffline-player-cache%2Fblob%2F1.20.1%2Fmain%2FLICENSE\"><br \/>\n    <img decoding=\"async\" href=\"https:\/\/github.com\/PlayerEXDirectorsCut\/offline-player-cache\/stargazers\" src=\"https:\/\/img.shields.io\/github\/stars\/PlayerEXDirectorsCut\/offline-player-cache?style=for-the-badge&#038;logo=github&#038;labelColor=1A1A1A&#038;color=FFFFFF&#038;link=https%3A%2F%2Fgithub.com%2FPlayerEXDirectorsCut%2Foffline-player-cache%2Fstargazers\"><br \/>\n    <img decoding=\"async\" href=\"https:\/\/github.com\/PlayerEXDirectorsCut\/offline-player-cache\/forks\" src=\"https:\/\/img.shields.io\/github\/forks\/PlayerEXDirectorsCut\/offline-player-cache?style=for-the-badge&#038;logo=github&#038;labelColor=1A1A1A&#038;color=FFFFFF&#038;link=https%3A%2F%2Fgithub.com%2FPlayerEXDirectorsCut%2Foffline-player-cache%2Fforks\"><br \/>\n    <img decoding=\"async\" href=\"https:\/\/github.com\/PlayerEXDirectorsCut\/offline-player-cache\/issues\" src=\"https:\/\/img.shields.io\/github\/issues\/BareMinimumStudios\/offline-player-cache?style=for-the-badge&#038;logo=github&#038;label=ISSUES&#038;link=https%3A%2F%2Fgithub.com%2FBareMinimumStudios%2Foffline-player-cache%2Fissues&#038;labelColor=1A1A1A\">\n<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" alt=\"fabric\" height=\"56\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/supported\/fabric_vector.svg\"><br \/>\n    <img decoding=\"async\" alt=\"quilt\" height=\"56\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/supported\/quilt_vector.svg\"><br \/>\n    <img decoding=\"async\" alt=\"forge\" height=\"56\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/supported\/forge_vector.svg\">\n<\/p>\n<p style=\"text-align: center\">\n<p>        <img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/documentation\/generic_vector.svg\"><\/p>\n<p>        <img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/available\/github_vector.svg\"><\/p>\n<p>    <img decoding=\"async\" alt=\"java\" height=\"56\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/built-with\/java_vector.svg\"><br \/>\n    <img decoding=\"async\" alt=\"gradle\" height=\"56\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/built-with\/gradle_vector.svg\"><\/p>\n<p>        <img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/social\/discord-plural_vector.svg\"><\/p>\n<p>&#8212;<\/p>\n<p>### Preamble \ud83d\udcdd<\/p>\n<p>**Offline Player Cache: Directors Cut** has been completely redone from the ground up, and its framework predates `1.*` and below.<br \/>\nThis was developed in mind to have **persistent leaderboards** for servers for their offline players.<\/p>\n<p>### Content \ud83d\udce6<br \/>\nModders may register `Record`&#8217;s linked with an id and a `Codec` to serialize\/deserialize it.<\/p>\n<p>Upon a player&#8217;s disconnection from the server, their cached data is stored into the servers `level` data, which then can be accessed through code or through the commands the mod provides.<\/p>\n<p>Upon a player&#8217;s reconnection to the server, their cached data is deleted.<\/p>\n<p>### Commands<\/p>\n<p>#### `\/opc get <uuid>|<name> <key>`<br \/>\nProvides details about the current player value. If they are online, it will provide their **current** value, but if they are offline, it will provide their **cached** value.<\/p>\n<p>#### `\/opc remove <uuid>|<name> <key>`<br \/>\nIf the player with the associated username or UUID is offline, it will remove that players **cached** value based on the selected key.<br \/>\nIf the player is **online**, nothing will occur with this command.<\/p>\n<p>#### `\/opc list <uuid>|<name>`<br \/>\nLists all the keys and values this player has stored if they are offline, or if they are online, their current ones.<\/p>\n<p>## Developers Guide<\/p>\n<p>### Setup<br \/>\nOffline Player Cache has a **Modrinth** and **Curseforge** page.<\/p>\n<p>In order to develop with the API, please add the following:<\/p>\n<p>**`gradle.properties`**<\/p>\n<p>&#8220;`properties<br \/>\nopc_version=&#8230;<br \/>\n&#8220;`<\/p>\n<p>**`build.gradle`**<\/p>\n<p>&#8220;`groovy<br \/>\nrepositories {<br \/>\n    maven {<br \/>\n        name = &#8220;Modrinth&#8221;<br \/>\n        url = &#8220;https:\/\/api.modrinth.com\/maven&#8221;<br \/>\n        content {<br \/>\n            includeGroup &#8220;maven.modrinth&#8221;<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>dependencies {<br \/>\n    modImplementation &#8220;maven.modrinth:opc-directors-cut:${project.opc_version}&#8221;<br \/>\n    \/\/ include this if you do not want to force your users to install the mod.<br \/>\n    include &#8220;maven.modrinth:opc-directors-cut:${project.opc_version}&#8221;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<details>\n<summary>Alternatively, if you are using Kotlin DSL:<\/summary>\n<p>**`build.gradle.kts`**<\/p>\n<p>&#8220;`kotlin<br \/>\nrepositories {<br \/>\n    maven {<br \/>\n        name = &#8220;Modrinth&#8221;<br \/>\n        url = uri(&#8220;https:\/\/api.modrinth.com\/maven&#8221;)<br \/>\n        content {<br \/>\n            includeGroup(&#8220;maven.modrinth&#8221;)<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>dependencies {<br \/>\n    modImplementation(&#8220;maven.modrinth:opc-directors-cut:${properties[&#8220;opc_version&#8221;]}&#8221;)<br \/>\n    \/\/ include this if you do not want to force your users to install the mod.<br \/>\n    include(&#8220;maven.modrinth:opc-directors-cut:${properties[&#8220;opc_version&#8221;]}&#8221;)<br \/>\n}<br \/>\n&#8220;`<\/p>\n<\/details>\n<p>## Migration to `2.*`<\/p>\n<p>&#8211; There are no longer any concepts of keys. Instead, you are to register an id, a `Record`, and a `Codec`.<\/p>\n<p>### Creating a Record<\/p>\n<p>&#8220;`java<br \/>\nimport com.mojang.serialization.Codec;<br \/>\nimport com.mojang.serialization.codecs.RecordCodecBuilder;<\/p>\n<p>public record Contract(String label, boolean signed) {<br \/>\n    public static Codec<Contract> CODEC = RecordCodecBuilder.create((instance) -><br \/>\n        instance.group(<br \/>\n            Codec.STRING.fieldOf(&#8220;label&#8221;).forGetter(Contract::label),<br \/>\n            Codec.BOOL.fieldOf(&#8220;signed&#8221;).forGetter(Contract::signed)<br \/>\n        ).apply(instance, Contract::new)<br \/>\n    );<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### Registering<\/p>\n<p>&#8220;`java<br \/>\nimport maven_group.modid.concept.Contract; \/\/ \u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \ud83d\ude42<\/p>\n<p>\/\/ somewhere during static\/mod initialization<br \/>\nprivate void init() {<br \/>\n    OfflinePlayerCacheAPI.register(CONTRACT_RECORD_ID, Contract.class, Contract.CODEC, (Player player) -> {<br \/>\n        \/\/ within this block, you decide how to translate a player&#8217;s data to the Record you chose.<br \/>\n        return new Contract(player.getName() + &#8220;:contracted&#8221;, true);<br \/>\n    });<br \/>\n}<\/p>\n<p>&#8220;`<\/p>\n<p>### Obtaining<\/p>\n<p>&#8220;`java<br \/>\nvar cache = OfflinePlayerCacheAPI.getCache(server);<br \/>\ncache.getEntry(Contract.class, &#8220;bibi_reden&#8221;).ifPresent(contract -> {<br \/>\n    \/\/ we now know that there is a valid Contract entry for this player.<br \/>\n    \/\/ You can also use a UUID to fetch an entry as well.<br \/>\n});<br \/>\n&#8220;`<\/p>\n<p>### A Special Thanks to our Sponsor<\/p>\n<p>&#8212;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/V38aMzY.png\" alt=\"Sponsor Banner\"\/><\/p>\n<p><b>Use code &quot;BAREMINIMUM&quot; to get 15% off your first month!<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An API Mod to allow caching player data on the server while the player is offline.<\/p>\n<p>This means that mods can use this API to access offline player&#8217;s data.<\/p>\n","protected":false},"featured_media":116360,"template":"","meta":{"_minecraft_slug":"opc-directors-cut","_minecraft_project_id":"oLPaySSb","_minecraft_author":"bibireden","_minecraft_license":"MIT","_minecraft_downloads":6799,"_minecraft_follows":13,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"opc-directors-cut.zip","_minecraft_size_bytes":2394333,"_minecraft_version_count":44,"_minecraft_updated_at":"2026-05-17T01:18:14.797981Z","_minecraft_date_created":"2024-01-01T04:11:13.967545Z","_minecraft_date_modified":"2024-08-05T05:39:15.269306Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/opc-directors-cut","_minecraft_icon_attachment_id":116360,"_minecraft_imported_at":"2026-06-06T20:22:14+00:00","_minecraft_import_hash":"67c7bd761547ad23c60a845536c6a131","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[97,104,873,158,98,91,92],"mod_loader":[99,106,160,100],"minecraft_version":[36,60,93,94,101,102,62],"class_list":["post-116359","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-fabric","mod_category-forge","mod_category-library","mod_category-neoforge","mod_category-quilt","mod_category-storage","mod_category-utility","mod_loader-fabric","mod_loader-forge","mod_loader-neoforge","mod_loader-quilt","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Offline Player Cache: Directors Cut - 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\/opc-directors-cut\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Offline Player Cache: Directors Cut - Minecraft\" \/>\n<meta property=\"og:description\" content=\"An API Mod to allow caching player data on the server while the player is offline. This means that mods can use this API to access offline player&#039;s data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/img.shields.io\/badge\/MIT-MIT?style=for-the-badge&label=LICENCE&labelColor=1A1A1A&color=FFFFFF&link=https%3A%2F%2Fgithub.com%2FPlayerEXDirectorsCut%2Foffline-player-cache%2Fblob%2F1.20.1%2Fmain%2FLICENSE\" \/>\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\\\/opc-directors-cut\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/\",\"name\":\"Offline Player Cache: Directors Cut - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp\",\"datePublished\":\"2026-06-06T20:22:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/opc-directors-cut\\\/#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\":\"Offline Player Cache: Directors Cut\"}]},{\"@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":"Offline Player Cache: Directors Cut - 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\/opc-directors-cut\/","og_locale":"en_US","og_type":"article","og_title":"Offline Player Cache: Directors Cut - Minecraft","og_description":"An API Mod to allow caching player data on the server while the player is offline. This means that mods can use this API to access offline player's data.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/img.shields.io\/badge\/MIT-MIT?style=for-the-badge&label=LICENCE&labelColor=1A1A1A&color=FFFFFF&link=https%3A%2F%2Fgithub.com%2FPlayerEXDirectorsCut%2Foffline-player-cache%2Fblob%2F1.20.1%2Fmain%2FLICENSE","type":"","width":"","height":""}],"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\/opc-directors-cut\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/","name":"Offline Player Cache: Directors Cut - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp","datePublished":"2026-06-06T20:22:13+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/opc-directors-cut-icon-ad494eb0a89a985620d04a433ae9093c977632d1_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/opc-directors-cut\/#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":"Offline Player Cache: Directors Cut"}]},{"@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\/116359","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\/116360"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=116359"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=116359"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=116359"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=116359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}