{"id":61423,"date":"2026-06-03T16:45:21","date_gmt":"2026-06-03T13:45:21","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/"},"modified":"2026-06-03T16:45:21","modified_gmt":"2026-06-03T13:45:21","slug":"eclipse-core-client","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/","title":{"rendered":"Eclipse Core Client"},"content":{"rendered":"<p># Eclipse Core Client<\/p>\n<p>A client-side companion mod for Cobblemon that enables advanced multi-player battle formats, including cooperative raid battles.<\/p>\n<p>## Features<\/p>\n<p>&#8211; **Multi-Player Raid Support** &#8211; Enables 1-4 player cooperative battles against a single powerful opponent<br \/>\n&#8211; **Targeting System Override** &#8211; Allows proper target selection in non-standard battle formats<br \/>\n&#8211; **Battle Side Organization** &#8211; Correctly displays allies and enemies in the battle UI<br \/>\n&#8211; **Doubles\/Triples Gimmick Fix** &#8211; Prevents using the same battle gimmick (Mega Evolution, Terastallization, Z-Moves, Dynamax) multiple times in a single turn<\/p>\n<p>## Requirements<\/p>\n<p>&#8211; Minecraft 1.21.1<br \/>\n&#8211; Fabric Loader 0.16.5+<br \/>\n&#8211; Fabric API<br \/>\n&#8211; Fabric Language Kotlin<br \/>\n&#8211; Cobblemon 1.7.1+<\/p>\n<p>## Installation<\/p>\n<p>1. Download and place in your client&#8217;s `mods` folder<br \/>\n2. This mod is **client-side only** &#8211; it communicates with compatible server mods via custom packets<\/p>\n<p>## For Mod Developers<\/p>\n<p>Interested in creating your own raid or multi-battle mod for Cobblemon? Here&#8217;s what you need to know:<\/p>\n<p>### The Core Challenge<\/p>\n<p>Cobblemon&#8217;s battle system is designed for 1v1 and 2v2 formats. To create raids (4v1, 3v1, etc.), you need to solve several problems:<\/p>\n<p>1. **Battle Creation** &#8211; How do you start a battle with 4 players on one side?<br \/>\n2. **Targeting** &#8211; How do players target the single boss when adjacency rules say they can&#8217;t?<br \/>\n3. **Side Display** &#8211; How do you show allies correctly when the client expects standard formats?<br \/>\n4. **Showdown Compatibility** &#8211; How do you make Showdown accept non-standard team configurations?<\/p>\n<p>### Server-Side: Starting Multi-Player Battles<\/p>\n<p>Look at Cobblemon&#8217;s `BattleBuilder` and `BattleRegistry`. Key classes:<br \/>\n&#8211; `BattleBuilder` &#8211; Creates battles with actors and format<br \/>\n&#8211; `BattleActor` &#8211; Represents a participant (player or NPC)<br \/>\n&#8211; `BattleFormat` &#8211; Defines the battle rules (singles, doubles, etc.)<br \/>\n&#8211; `PokemonBattle` &#8211; The active battle instance<\/p>\n<p>For raids, you&#8217;ll need multiple `BattleActor` instances on one side. Study how Cobblemon handles doubles &#8211; it&#8217;s the foundation for multi-player.<\/p>\n<p>### The Showdown Layer<\/p>\n<p>Cobblemon uses Pokemon Showdown for battle logic. Battles are created via:<br \/>\n&#8220;`<br \/>\nBattleRegistry.startBattle(format, side1Actors, side2Actors)<br \/>\n&#8220;`<\/p>\n<p>Showdown receives team data as &#8220;pack strings&#8221; &#8211; compact representations of Pokemon. The format is documented in Showdown&#8217;s source. Key insight: Showdown&#8217;s `fPokemon` format includes species, level, moves, ability, etc.<\/p>\n<p>For raid bosses, consider:<br \/>\n&#8211; How would you give a Pokemon more effective HP?<br \/>\n&#8211; How would you let one Pokemon take hits from multiple attackers?<br \/>\n&#8211; What happens when Showdown calculates damage against a &#8220;scaled&#8221; target?<\/p>\n<p>### Client-Side: The Targeting Problem<\/p>\n<p>In standard doubles, Pokemon can only target adjacent slots. In a 4v1 raid, ALL players need to target the single boss.<\/p>\n<p>The client uses `ActiveClientBattlePokemon.getAdjacent()` to determine valid targets. This method checks positions and returns valid targets based on battle format.<\/p>\n<p>Eclipse Core Client solves this by:<br \/>\n&#8211; Intercepting target requests<br \/>\n&#8211; Overriding adjacency calculations for raid formats<br \/>\n&#8211; Communicating raid configuration via custom packets<\/p>\n<p>### Packet Communication<\/p>\n<p>Fabric networking allows custom packets between server and client:<br \/>\n&#8220;`kotlin<br \/>\n\/\/ Server-side: Register and send<br \/>\nPayloadTypeRegistry.playS2C().register(&#8230;)<br \/>\nServerPlayNetworking.send(player, payload)<\/p>\n<p>\/\/ Client-side: Register receiver<br \/>\nClientPlayNetworking.registerGlobalReceiver(&#8230;)<br \/>\n&#8220;`<\/p>\n<p>Your packet should tell the client:<br \/>\n&#8211; Is this a raid battle?<br \/>\n&#8211; How many players are participating?<br \/>\n&#8211; Which side is the boss on?<\/p>\n<p>The client needs this info BEFORE the battle UI renders to correctly organize sides.<\/p>\n<p>### Showdown Modifications (Advanced)<\/p>\n<p>Cobblemon extracts Showdown to `.\/showdown\/`. The JavaScript files in `sim\/` control battle mechanics:<br \/>\n&#8211; `battle.js` &#8211; Main battle loop and turn handling<br \/>\n&#8211; `pokemon.js` &#8211; Pokemon state, HP, PP management<br \/>\n&#8211; `side.js` &#8211; Side management and slot handling<br \/>\n&#8211; `battle-actions.js` &#8211; Move execution and damage<\/p>\n<p>For raid mechanics, you might need to modify how:<br \/>\n&#8211; Damage is calculated against the boss<br \/>\n&#8211; PP is tracked (infinite PP for bosses?)<br \/>\n&#8211; Multi-target moves resolve<br \/>\n&#8211; The boss takes actions against multiple targets<\/p>\n<p>Mixin into `GraalShowdownUnbundler.attemptUnbundle()` to patch files after extraction.<\/p>\n<p>### Mixin Targets Reference<\/p>\n<p>**Client-side** (for targeting\/display fixes):<br \/>\n&#8211; `ActiveClientBattlePokemon` &#8211; Target selection and adjacency<br \/>\n&#8211; `BattleMoveSelection` &#8211; Move selection UI<br \/>\n&#8211; `ClientBattle` &#8211; Side organization<\/p>\n<p>**Server-side** (for battle creation):<br \/>\n&#8211; `BattleBuilder` &#8211; Battle initialization<br \/>\n&#8211; `BattleActor` &#8211; Actor behavior<br \/>\n&#8211; `NPCBattleActor` &#8211; NPC-specific logic<\/p>\n<p>### Getting Started<\/p>\n<p>1. Create a basic server mod that starts a doubles battle<br \/>\n2. Add a third player to one side &#8211; observe what breaks<br \/>\n3. Study the errors to understand the constraints<br \/>\n4. Implement fixes one layer at a time (Showdown \u2192 Server \u2192 Client)<\/p>\n<p>The journey from &#8220;doubles work&#8221; to &#8220;4v1 raids work&#8221; will teach you everything about Cobblemon&#8217;s battle system.<\/p>\n<p>&#8212;<\/p>\n<p>## Eclipse Packet Protocol<\/p>\n<p>Want your server mod to work with Eclipse Core Client? Implement these packets:<\/p>\n<p>### Packet 1: Client Handshake (Client \u2192 Server)<\/p>\n<p>**Channel:** `eclipse_raids:client_handshake`<\/p>\n<p>When a player with Eclipse Core Client joins your server, they send this packet.<\/p>\n<p>| Field | Type | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| protocolVersion | Int | Client protocol version (currently `2`) |<\/p>\n<p>**Kotlin Codec:**<br \/>\n&#8220;`kotlin<br \/>\nbuf.writeInt(protocolVersion)<br \/>\n\/\/ Read: buf.readInt()<br \/>\n&#8220;`<\/p>\n<p>Use this to track which players have the client mod installed. Block raid participation for players without it.<\/p>\n<p>### Packet 2: Handshake Acknowledgment (Server \u2192 Client)<\/p>\n<p>**Channel:** `eclipse_raids:handshake_ack`<\/p>\n<p>Send this back to confirm the client is recognized.<\/p>\n<p>| Field | Type | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| raidsEnabled | Boolean | Whether raids are enabled on this server |<br \/>\n| message | String | Status message (shown in client logs) |<\/p>\n<p>**Kotlin Codec:**<br \/>\n&#8220;`kotlin<br \/>\nbuf.writeBoolean(raidsEnabled)<br \/>\nbuf.writeString(message)<br \/>\n&#8220;`<\/p>\n<p>### Packet 3: Raid Side Configuration (Server \u2192 Client)<\/p>\n<p>**Channel:** `eclipse_raids:raid_side_config`<\/p>\n<p>**This is the critical packet.** Send this after starting a raid battle to tell the client which actors are allies vs enemies.<\/p>\n<p>| Field | Type | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| battleId | UUID | The battle&#8217;s UUID from `PokemonBattle.battleId` |<br \/>\n| allyShowdownIds | List<String> | Showdown IDs for player side (e.g., `[&#8220;p1&#8221;, &#8220;p3&#8221;, &#8220;p5&#8221;, &#8220;p7&#8221;]`) |<br \/>\n| enemyShowdownIds | List<String> | Showdown IDs for boss side (e.g., `[&#8220;p2&#8221;]`) |<\/p>\n<p>**Kotlin Codec:**<br \/>\n&#8220;`kotlin<br \/>\n\/\/ Write<br \/>\nbuf.writeUuid(battleId)<br \/>\nbuf.writeInt(allyShowdownIds.size)<br \/>\nallyShowdownIds.forEach { buf.writeString(it) }<br \/>\nbuf.writeInt(enemyShowdownIds.size)<br \/>\nenemyShowdownIds.forEach { buf.writeString(it) }<\/p>\n<p>\/\/ Read<br \/>\nval battleId = buf.readUuid()<br \/>\nval allyCount = buf.readInt()<br \/>\nval allyIds = (0 until allyCount).map { buf.readString() }<br \/>\nval enemyCount = buf.readInt()<br \/>\nval enemyIds = (0 until enemyCount).map { buf.readString() }<br \/>\n&#8220;`<\/p>\n<p>### Showdown ID Convention<\/p>\n<p>Showdown assigns IDs based on battle position:<br \/>\n&#8211; **p1, p3, p5, p7** &#8211; Odd numbers for one side (use for players)<br \/>\n&#8211; **p2, p4, p6, p8** &#8211; Even numbers for opposite side (use for boss)<\/p>\n<p>In a 4v1 raid:<br \/>\n&#8211; Player 1 \u2192 p1<br \/>\n&#8211; Player 2 \u2192 p3<br \/>\n&#8211; Player 3 \u2192 p5<br \/>\n&#8211; Player 4 \u2192 p7<br \/>\n&#8211; Boss \u2192 p2<\/p>\n<p>### When to Send RaidSideConfig<\/p>\n<p>**Timing is critical.** Send the packet:<\/p>\n<p>1. **After** `BattleRegistry.startBattle()` returns<br \/>\n2. **Before** the player opens the battle UI (they have ~1-2 seconds)<\/p>\n<p>Recommended: Send immediately, then send again after 3 seconds (60 ticks) as a safety net in case the client wasn&#8217;t ready.<\/p>\n<p>&#8220;`kotlin<br \/>\n\/\/ Immediately after battle starts<br \/>\nfor (player in players) {<br \/>\n    ServerPlayNetworking.send(player, RaidSideConfigPayload(battle.battleId, allyIds, enemyIds))<br \/>\n}<\/p>\n<p>\/\/ Safety net &#8211; resend after 3 seconds<br \/>\nScheduler.schedule(60) {<br \/>\n    for (player in players) {<br \/>\n        ServerPlayNetworking.send(player, RaidSideConfigPayload(battle.battleId, allyIds, enemyIds))<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### What the Client Does<\/p>\n<p>When Eclipse Core Client receives `RaidSideConfigPayload`:<\/p>\n<p>1. Finds the active `ClientBattle` matching `battleId`<br \/>\n2. Collects all `ClientBattleActor` from both sides<br \/>\n3. Reorganizes them: allies \u2192 `side1`, enemies \u2192 `side2`<br \/>\n4. Sets `isInRaidBattle = true` (enables targeting override)<\/p>\n<p>This fixes:<br \/>\n&#8211; Pokemon appearing on wrong visual side<br \/>\n&#8211; Players unable to target the boss (adjacency override kicks in)<\/p>\n<p>### Payload Classes (Fabric 1.21.1)<\/p>\n<p>&#8220;`kotlin<br \/>\n\/\/ Register in your mod initializer<br \/>\nPayloadTypeRegistry.playC2S().register(ClientHandshakePayload.ID, ClientHandshakePayload.CODEC)<br \/>\nPayloadTypeRegistry.playS2C().register(HandshakeAckPayload.ID, HandshakeAckPayload.CODEC)<br \/>\nPayloadTypeRegistry.playS2C().register(RaidSideConfigPayload.ID, RaidSideConfigPayload.CODEC)<\/p>\n<p>\/\/ Handle incoming handshakes<br \/>\nServerPlayNetworking.registerGlobalReceiver(ClientHandshakePayload.ID) { payload, context -><br \/>\n    val player = context.player()<br \/>\n    \/\/ Track that this player has the client mod<br \/>\n    \/\/ Send acknowledgment back<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### Without This Client Mod<\/p>\n<p>If a player doesn&#8217;t have Eclipse Core Client:<br \/>\n&#8211; Normal 1v1 and 2v2 battles work fine<br \/>\n&#8211; Raid battles will have broken targeting (players can&#8217;t select the boss)<br \/>\n&#8211; Pokemon may appear on wrong sides visually<\/p>\n<p>Block raid participation for players without the client mod by checking your handshake tracking.<\/p>\n<p>## Compatibility<\/p>\n<p>This mod is designed to work with server-side raid mods that implement the Eclipse packet protocol. Without a compatible server mod, it functions as a passive gimmick fix for doubles\/triples battles.<\/p>\n<p>## Support<\/p>\n<p>This mod is provided as-is for use with compatible Eclipse server mods.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project&#8217;s core functionality is to enable double battle gimmicks in cobblemon clients, it servers other purposes as well to enable 4v1 raids on servers that create their own mods. Additional functionality will eventually be added.<\/p>\n","protected":false},"featured_media":43322,"template":"","meta":{"_minecraft_slug":"eclipse-core-client","_minecraft_project_id":"NUbIlDfd","_minecraft_author":"spg","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":2344,"_minecraft_follows":4,"_minecraft_client_side":"required","_minecraft_server_side":"unsupported","_minecraft_storage_type":"zip","_minecraft_archive_name":"eclipse-core-client.zip","_minecraft_size_bytes":20018624,"_minecraft_version_count":7,"_minecraft_updated_at":"2026-05-15T21:08:15.926847Z","_minecraft_date_created":"2026-01-07T02:19:46.928575Z","_minecraft_date_modified":"2026-04-05T05:16:47.690447Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/eclipse-core-client","_minecraft_icon_attachment_id":43322,"_minecraft_imported_at":"2026-06-03T13:45:22+00:00","_minecraft_import_hash":"aca53dbd22a412024a32366513ba38cd","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[97,89,873],"mod_loader":[99],"minecraft_version":[37],"class_list":["post-61423","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-fabric","mod_category-game-mechanics","mod_category-library","mod_loader-fabric","minecraft_version-1-21-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Eclipse Core Client - 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\/eclipse-core-client\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eclipse Core Client - Minecraft\" \/>\n<meta property=\"og:description\" content=\"This project&#039;s core functionality is to enable double battle gimmicks in cobblemon clients, it servers other purposes as well to enable 4v1 raids on servers that create their own mods. Additional functionality will eventually be added.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/\" \/>\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=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/\",\"name\":\"Eclipse Core Client - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png\",\"datePublished\":\"2026-06-03T13:45:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png\",\"width\":176,\"height\":176},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/eclipse-core-client\\\/#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\":\"Eclipse Core Client\"}]},{\"@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":"Eclipse Core Client - 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\/eclipse-core-client\/","og_locale":"en_US","og_type":"article","og_title":"Eclipse Core Client - Minecraft","og_description":"This project's core functionality is to enable double battle gimmicks in cobblemon clients, it servers other purposes as well to enable 4v1 raids on servers that create their own mods. Additional functionality will eventually be added.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/","name":"Eclipse Core Client - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png","datePublished":"2026-06-03T13:45:21+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/cobblemoneclipse-icon-d97df94a4cee1b4409e88ccd1511c8b4381784f2.png","width":176,"height":176},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/eclipse-core-client\/#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":"Eclipse Core Client"}]},{"@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\/61423","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\/43322"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=61423"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=61423"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=61423"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=61423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}