{"id":129627,"date":"2026-06-07T18:12:01","date_gmt":"2026-06-07T15:12:01","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/"},"modified":"2026-06-07T18:12:01","modified_gmt":"2026-06-07T15:12:01","slug":"readstar","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/","title":{"rendered":"ReadStar"},"content":{"rendered":"<p># ReadStar \u2014 NeoForge 26.1 \u5929\u6587\u6a21\u7ec4<\/p>\n<p>\u57fa\u4e8e\u771f\u5b9e\u5929\u4f53\u529b\u5b66\u4e0e\u661f\u8868\u6570\u636e\u7684 Minecraft \u5929\u8c61\u6a21\u7ec4\u3002\u652f\u6301\u884c\u661f\u8f68\u9053\u7cfb\u7edf\u3001\u6052\u661f\u76ee\u5f55\u3001\u4e09\u7ea7\u5149\u6655\u6e32\u67d3\u3001\u670d\u52a1\u7aef\u540c\u6b65\u7684\u884c\u661f\u7cfb\u7edf\u914d\u7f6e\u3002<\/p>\n<p>**\u4f5c\u8005**: FrozenStream<\/p>\n<p>&#8212;<\/p>\n<p>## \u5feb\u901f\u5f00\u59cb<\/p>\n<p>&#8220;`bash<br \/>\n# \u6784\u5efa<br \/>\n.\/gradlew build<\/p>\n<p># \u8fd0\u884c\u5ba2\u6237\u7aef<br \/>\n.\/gradlew runClient<\/p>\n<p># \u6570\u636e\u751f\u6210\uff08\u56fe\u96c6\u914d\u7f6e\uff09<br \/>\n.\/gradlew runData<br \/>\n&#8220;`<\/p>\n<p>\u6a21\u7ec4\u52a0\u8f7d\u540e\uff0c\u901a\u8fc7**\u6570\u636e\u5305** `data\/readstar\/celestial\/system.json` \u5b9a\u4e49\u5929\u4f53\u7cfb\u7edf\uff0c\u901a\u8fc7**\u8d44\u6e90\u5305** `assets\/readstar\/custom\/stars\/stars.json` \u5b9a\u4e49\u6052\u661f\u76ee\u5f55\u3002<\/p>\n<p>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u540e\u9700\u91cd\u65b0\u6784\u5efa\uff0c\u6216 F3+T \u91cd\u8f7d\u8d44\u6e90\u5305\uff08\u4ec5\u8d44\u6e90\u5305\u5185\u5bb9\u6709\u6548\uff0c\u6570\u636e\u5305\u9700\u91cd\u542f\u6216 `\/reload`\uff09\u3002<\/p>\n<p>&#8212;<\/p>\n<p>## \u6570\u636e\u5305 \u2014 \u5929\u4f53\u7cfb\u7edf\u914d\u7f6e<\/p>\n<p>**\u8def\u5f84**: `data\/readstar\/celestial\/system.json`<\/p>\n<p>\u6570\u636e\u5305\u5b9a\u4e49\u4e86\u5929\u4f53\u5c42\u6b21\u7ed3\u6784\u4e0e\u8f68\u9053\u53c2\u6570\u3002\u53ef\u653e\u5728 `saves\/<\u4e16\u754c>\/datapacks\/<\u4f60\u7684\u6570\u636e\u5305>\/data\/readstar\/celestial\/system.json` \u4e0b\u66ff\u6362\u9ed8\u8ba4\u914d\u7f6e\uff0c\u6216\u653e\u5728\u670d\u52a1\u7aef\u7684 `world\/datapacks\/` \u4e0b\u3002<\/p>\n<p>### \u7ed3\u6784<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;System&#8221;: {<br \/>\n    &#8220;<\u5929\u4f53\u540d\u79f0>&#8220;: {<br \/>\n      &#8220;mass&#8221;: <double>,           \/\/ \u8d28\u91cf\uff08kg\uff09\uff0c0 \u5219\u56fa\u5b9a\u4e8e\u539f\u70b9<br \/>\n      &#8220;radius&#8221;: <double>,         \/\/ \u534a\u5f84\uff08m\uff09\uff0c\u5f71\u54cd\u6e32\u67d3\u89c6\u5927\u5c0f<br \/>\n      &#8220;luminance&#8221;: <int>,         \/\/ \u81ea\u53d1\u5149\u4eae\u5ea6\uff080~15\uff09\uff0c>0 \u88ab\u8bc6\u522b\u4e3a\u6052\u661f<br \/>\n      &#8220;axis&#8221;: [<x>, <y>, <z>],    \/\/ \u81ea\u8f6c\u8f74\u65b9\u5411\u5411\u91cf\uff0c\u5168\u96f6\u5219\u9ed8\u8ba4 (0,0,-1)<br \/>\n      &#8220;orbit&#8221;: {<br \/>\n        &#8220;semiMajorAxis&#8221;: <double>,           \/\/ \u534a\u957f\u8f74\uff08m\uff09\uff0c0 \u8868\u793a\u4e0d\u516c\u8f6c<br \/>\n        &#8220;eccentricity&#8221;: <double>,            \/\/ \u504f\u5fc3\u7387\uff080=\u6b63\u5706\uff09<br \/>\n        &#8220;inclination&#8221;: <double>,             \/\/ \u8f68\u9053\u503e\u89d2\uff08\u5f27\u5ea6\uff09<br \/>\n        &#8220;argumentOfPeriapsis&#8221;: <double>,     \/\/ \u8fd1\u5fc3\u70b9\u5e45\u89d2\uff08\u5f27\u5ea6\uff09<br \/>\n        &#8220;longitudeOfAscendingNode&#8221;: <double>, \/\/ \u5347\u4ea4\u70b9\u7ecf\u5ea6\uff08\u5f27\u5ea6\uff09<br \/>\n        &#8220;initialMeanAnomaly&#8221;: <double>       \/\/ \u521d\u59cb\u5e73\u8fd1\u70b9\u89d2\uff08\u5f27\u5ea6\uff09<br \/>\n      },<br \/>\n      &#8220;children&#8221;: {<br \/>\n        &#8220;<\u5b50\u5929\u4f53\u540d\u79f0>&#8220;: { &#8230; }   \/\/ \u9012\u5f52\u540c\u7ed3\u6784\uff0c\u5d4c\u5957\u6df1\u5ea6\u4e0d\u9650<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### \u53c2\u6570\u8bf4\u660e<\/p>\n<p>| \u5b57\u6bb5 | \u8bf4\u660e |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;|<br \/>\n| `mass` | \u8f68\u9053\u529b\u5b66\u8ba1\u7b97\u6838\u5fc3\u53c2\u6570\u3002\u8bbe\u4e3a 0 \u7684\u5929\u4f53\u56fa\u5b9a\u5728\u539f\u70b9\uff08\u7236\u8282\u70b9\u4f4d\u7f6e\uff09 |<br \/>\n| `radius` | \u6e32\u67d3\u65f6\u7684\u5929\u4f53\u5927\u5c0f\u901a\u8fc7 `max(1.024, radius \/ distance \u00d7 2000)` \u8ba1\u7b97\uff0c\u8ddd\u79bb\u8d8a\u8fdc\u8d8a\u5c0f |<br \/>\n| `luminance` | \u81ea\u52a8\u5f71\u54cd\u6e32\u67d3\uff1a`> 0` \u7684\u5929\u4f53\u88ab\u8bc6\u522b\u4e3a\u6052\u661f\uff0c\u540c\u7cfb\u7edf\u5185\u5176\u4ed6\u5929\u4f53\u81ea\u52a8\u67e5\u627e\u6700\u8fd1\u7684\u53d1\u5149\u7956\u5148\u4f5c\u4e3a `hostStar` |<br \/>\n| `inclination`, `longitudeOfAscendingNode` | \u5171\u540c\u51b3\u5b9a\u8f68\u9053\u5e73\u9762\u65b9\u5411\u3002`inclination=0` \u65f6\u8f68\u9053\u5728\u53c2\u8003\u5e73\u9762\u5185 |<br \/>\n| `eccentricity` | \u504f\u5fc3\u7387 = 0 \u4e3a\u7eaf\u5706\u8f68\u9053\uff0c> 0 \u4e3a\u692d\u5706 |<br \/>\n| `initialMeanAnomaly` | \u51b3\u5b9a t=0 \u65f6\u523b\u5929\u4f53\u5728\u8f68\u9053\u4e0a\u7684\u8d77\u59cb\u4f4d\u7f6e |<\/p>\n<p>\u540d\u79f0\u5927\u5c0f\u5199\u4e0d\u654f\u611f\uff08\u5185\u90e8\u7edf\u4e00\u8f6c\u4e3a\u5c0f\u5199\uff09\u3002`children` \u4e3a\u7a7a\u5bf9\u8c61 `{}` \u65f6\u8868\u793a\u65e0\u5b50\u5929\u4f53\u3002<\/p>\n<p>### \u5b8c\u6574\u793a\u4f8b<\/p>\n<p>\u4e0b\u4f8b\u5b9a\u4e49\u4e86\u4e00\u4e2a\u4e09\u5c42\u5929\u4f53\u7cfb\u7edf\uff1a\u592a\u9633\uff08\u4e2d\u5fc3\u6052\u661f\uff09\u2192 \u5730\u7403 + \u706b\u661f \u2192 \u6708\u7403\uff08\u5730\u7403\u7684\u536b\u661f\uff09\u3002\u6570\u503c\u91c7\u81ea\u771f\u5b9e\u592a\u9633\u7cfb\u6570\u636e\u3002<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;System&#8221;: {<br \/>\n    &#8220;Sun&#8221;: {<br \/>\n      &#8220;mass&#8221;: 1.989e30,<br \/>\n      &#8220;radius&#8221;: 6.957e8,<br \/>\n      &#8220;luminance&#8221;: 15,<br \/>\n      &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n      &#8220;orbit&#8221;: {<br \/>\n        &#8220;semiMajorAxis&#8221;: 0.0,<br \/>\n        &#8220;eccentricity&#8221;: 0.0,<br \/>\n        &#8220;inclination&#8221;: 0.0,<br \/>\n        &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n        &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n        &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n      },<br \/>\n      &#8220;children&#8221;: {<br \/>\n        &#8220;Earth&#8221;: {<br \/>\n          &#8220;mass&#8221;: 5.972e24,<br \/>\n          &#8220;radius&#8221;: 6.371e6,<br \/>\n          &#8220;luminance&#8221;: 0,<br \/>\n          &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n          &#8220;orbit&#8221;: {<br \/>\n            &#8220;semiMajorAxis&#8221;: 1.496e11,<br \/>\n            &#8220;eccentricity&#8221;: 0.0167,<br \/>\n            &#8220;inclination&#8221;: 0.0,<br \/>\n            &#8220;argumentOfPeriapsis&#8221;: 1.796,<br \/>\n            &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n            &#8220;initialMeanAnomaly&#8221;: 6.240<br \/>\n          },<br \/>\n          &#8220;children&#8221;: {<br \/>\n            &#8220;Moon&#8221;: {<br \/>\n              &#8220;mass&#8221;: 7.342e22,<br \/>\n              &#8220;radius&#8221;: 1.737e6,<br \/>\n              &#8220;luminance&#8221;: 0,<br \/>\n              &#8220;axis&#8221;: [0.0, 0.0, 0.5],<br \/>\n              &#8220;orbit&#8221;: {<br \/>\n                &#8220;semiMajorAxis&#8221;: 3.844e8,<br \/>\n                &#8220;eccentricity&#8221;: 0.0549,<br \/>\n                &#8220;inclination&#8221;: 0.0899,<br \/>\n                &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n                &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n                &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n              },<br \/>\n              &#8220;children&#8221;: {}<br \/>\n            }<br \/>\n          }<br \/>\n        },<br \/>\n        &#8220;Mars&#8221;: {<br \/>\n          &#8220;mass&#8221;: 6.417e23,<br \/>\n          &#8220;radius&#8221;: 3.390e6,<br \/>\n          &#8220;luminance&#8221;: 0,<br \/>\n          &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n          &#8220;orbit&#8221;: {<br \/>\n            &#8220;semiMajorAxis&#8221;: 2.279e11,<br \/>\n            &#8220;eccentricity&#8221;: 0.0934,<br \/>\n            &#8220;inclination&#8221;: 0.0323,<br \/>\n            &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n            &#8220;longitudeOfAscendingNode&#8221;: 0.865,<br \/>\n            &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n          },<br \/>\n          &#8220;children&#8221;: {}<br \/>\n        }<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### \u7ee7\u627f\u89c4\u5219<\/p>\n<p>&#8211; `hostStar` \u81ea\u52a8\u5411\u4e0a\u9012\u5f52\u67e5\u627e\u6700\u8fd1\u7684\u81ea\u53d1\u5149\u5929\u4f53<br \/>\n&#8211; \u65e0\u81ea\u53d1\u5149\u7956\u5148\u7684\u5929\u4f53\u4e0d\u4f1a\u6e32\u67d3\u5bf9\u5e94\u7684\u65e5\u7167\u6548\u679c<br \/>\n&#8211; \u4f4d\u7f6e\u8ba1\u7b97\uff1a`position = parent.position + orbit(parent.mass, t)`<br \/>\n&#8211; \u6839\u8282\u70b9 `Root` \u56fa\u5b9a\u4e8e `(0,0,0)`<\/p>\n<p>### \u65e5\/\u6708\u76f8\u8ba1\u7b97<\/p>\n<p>&#8220;`<br \/>\ngameTime        \u2192 updatePositions(t)    \u2192 \u8f68\u9053\u516c\u8f6c<br \/>\ndaylightTime    \u2192 updateCurrentVec(t)   \u2192 \u81ea\u8f6c\u5929\u9876\u66f4\u65b0<br \/>\n&#8220;`<\/p>\n<p>&#8211; `gameTime`: \u81ea\u4e16\u754c\u521b\u5efa\u4ee5\u6765\u7684\u603b tick \u6570\u3002\u5f71\u54cd\u5929\u4f53\u8f68\u9053\u4f4d\u7f6e<br \/>\n&#8211; `daylightTime`: \u7ef4\u5ea6\u7684\u65e5\u5149\u5468\u671f\u65f6\u95f4\uff080~24000\uff09\u3002\u5f71\u54cd\u884c\u661f\u81ea\u8f6c\u5e26\u6765\u7684\u5929\u9876\u65b9\u5411\u53d8\u5316<\/p>\n<p>\u6708\u76f8\u7531\u89c2\u6d4b\u8005-\u536b\u661f-\u6052\u661f\u7684\u51e0\u4f55\u5173\u7cfb\u81ea\u52a8\u8ba1\u7b97\uff0c\u5b8c\u6574\u6620\u5c04 8 \u79cd\u6708\u76f8\uff08\u4e8f\u76c8\u7531\u8f68\u9053\u6cd5\u7ebf\u65b9\u5411\u533a\u5206\uff09\u3002<\/p>\n<p>&#8212;<\/p>\n<p>## \u8d44\u6e90\u5305 \u2014 \u6052\u661f\u76ee\u5f55<\/p>\n<p>**\u8def\u5f84**: `assets\/readstar\/custom\/stars\/stars.json`<\/p>\n<p>\u8d44\u6e90\u5305\u5b9a\u4e49\u4e86\u6e32\u67d3\u5230\u5929\u7a7a\u4e2d\u7684\u6052\u661f\u5217\u8868\u3002\u53ef\u901a\u8fc7\u8d44\u6e90\u5305\u5b8c\u5168\u66ff\u6362\u3002<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;Stars&#8221;: [<br \/>\n    {<br \/>\n      &#8220;name&#8221;: &#8220;Sirius&#8221;,<br \/>\n      &#8220;position&#8221;: [-0.188181, -0.169608, 0.967338],<br \/>\n      &#8220;type&#8221;: 1,<br \/>\n      &#8220;Vmag&#8221;: -1.46,<br \/>\n      &#8220;color&#8221;: 4291815679<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>| \u5b57\u6bb5 | \u8bf4\u660e |<br \/>\n|&#8212;&#8212;|&#8212;&#8212;|<br \/>\n| `name` | \u6807\u8bc6\u7b26\uff0c\u65e0\u8fd0\u884c\u65f6\u4f5c\u7528 |<br \/>\n| `position` | \u5355\u4f4d\u7403\u9762\u4e0a\u7684\u65b9\u5411\u5411\u91cf `[x,y,z]`\uff0c\u6e32\u67d3\u65f6\u5f52\u4e00\u5316\u5e76\u7f29\u653e\u5230 100 \u5355\u4f4d |<br \/>\n| `type` | 0~11 \u7684\u5149\u8c31\u5206\u7c7b\uff0c\u56fe\u96c6\u4e2d\u7cbe\u7075\u7684\u989c\u8272\u7531\u6b64\u7d22\u5f15 |<br \/>\n| `Vmag` | \u89c6\u661f\u7b49\u3002`< 0.5` \u9ad8\u7ea7\u5149\u6655\uff0c`< 1.5` \u4e2d\u7ea7\u5149\u6655\uff0c`< 2.0` \u4f4e\u7ea7\u5149\u6655\uff0c`\u2265 2.0` \u4ec5\u6838\u5fc3 |\n| `color` | ARGB \u989c\u8272\u503c\uff0c\u4f5c\u4e3a\u56fe\u96c6\u7cbe\u7075\u751f\u6210\u7684 key |\n\n\u6052\u661f\u4eae\u5ea6\u6620\u5c04\u5230\u9876\u70b9 Alpha \u901a\u9053\uff1a`clamp((14 - Vmag) \/ 15, 0.4, 1.0) \u00d7 255`\u3002\n\n## \u8d44\u6e90\u5305 \u2014 \u7cbe\u7075\u4e0e\u56fe\u96c6\n\n### \u661f\u661f\u56fe\u96c6\n\n\u56fe\u96c6\u6e90\u901a\u8fc7 `RegisterSpriteSourcesEvent` \u6ce8\u518c\uff0c\u7c7b\u578b `readstar:star`\uff0c\u5728 `assets\/readstar\/atlases\/star.json` \u58f0\u660e\uff1a\n\n```json\n{\n  \"sources\": [ { \"type\": \"readstar:star\" } ]\n}\n```\n\n\u8fd0\u884c\u65f6\u4ece `stars.json` \u8bfb\u53d6\u6240\u6709 `color` \u503c\uff0c\u8bfb\u53d6\u4ee5\u4e0b\u5e95\u6a21\u7eb9\u7406\u9010\u50cf\u7d20\u67d3\u8272\u751f\u6210\u7cbe\u7075\uff1a\n\n| \u5e95\u6a21\u6587\u4ef6 | \u8def\u5f84 | \u4f5c\u7528 |\n|----------|------|------|\n| `star_base.png` | `textures\/environment\/star\/` | \u6838\u5fc3\u8d34\u56fe\u5e95\u6a21\uff0832\u00d732\uff0cRGBA\uff09 |\n| `star_glow_low.png` | \u540c\u4e0a | \u4f4e\u7ea7\u5149\u6655\u5e95\u6a21 |\n| `star_glow_med.png` | \u540c\u4e0a | \u4e2d\u7ea7\u5149\u6655\u5e95\u6a21 |\n| `star_glow_high.png` | \u540c\u4e0a | \u9ad8\u7ea7\u5149\u6655\u5e95\u6a21 |\n\n\u6bcf\u79cd\u989c\u8272\u751f\u6210 4 \u4e2a\u5b50\u56fe\uff1a`color_{color}`\u3001`glow_low_{color}`\u3001`glow_med_{color}`\u3001`glow_high_{color}`\u3002\n\n\u5e95\u6a21\u5236\u4f5c\u8981\u6c42\uff1a\n- RGBA 32-bit PNG\uff08\u4e0d\u53ef\u7528 8-bit \u7070\u5ea6\uff0c\u5426\u5219 `NativeImage.read()` \u89e3\u6790\u5931\u8d25\uff09\n- 32\u00d732 \u50cf\u7d20\n- \u8fb9\u7f18\u7eaf\u9ed1 `rgb(0,0,0)` \u4ee5\u878d\u5165\u80cc\u666f\n- \u5149\u6655\u5e95\u6a21\u7684\u6838\u5fc3\u4eae\u5ea6\u901a\u8fc7\u91c7\u6837\u4e2d\u5fc3 8\u00d78 \u533a\u57df \u00d7 0.35 \u7cfb\u6570\u538b\u5236\uff0c\u786e\u4fdd\u8fdc\u6697\u4e8e\u6838\u5fc3\n\n### \u5929\u4f53\u56fe\u96c6\n\n\u7531\u6570\u636e\u751f\u6210\u5668\uff08`runData`\uff09\u751f\u6210\uff0c\u4f4d\u4e8e `src\/generated\/resources\/assets\/readstar\/atlases\/celestial.json`\u3002\u6dfb\u52a0\u65b0\u5929\u4f53\u7eb9\u7406\u9700\u4fee\u6539 `CelestialSpriteSourceProvider` \u540e\u91cd\u65b0\u751f\u6210\u3002\n\n---\n\n## \u7f51\u7edc\u540c\u6b65\n\n\u5929\u4f53\u7cfb\u7edf\u6570\u636e\u7531\u670d\u52a1\u7aef\u901a\u8fc7 `data\/readstar\/celestial\/*.json` \u52a0\u8f7d\uff0c\u901a\u8fc7\u81ea\u5b9a\u4e49\u7f51\u7edc\u5305 `readstar:planet_system` \u5e7f\u64ad\u5230\u6240\u6709\u5ba2\u6237\u7aef\u3002\u5ba2\u6237\u7aef `CelestialBodyManager.initializeFromJson()` \u5728\u6536\u5230\u6570\u636e\u5305\u540e\u89e3\u6790\u5e76\u6784\u5efa\u5929\u4f53\u6811\u3002\n\n---\n\n## \u6784\u5efa\n\n```bash\n.\/gradlew build          # \u6784\u5efa mod JAR\n.\/gradlew runData        # \u6570\u636e\u751f\u6210\uff08\u56fe\u96c6\u914d\u7f6e\uff09\n.\/gradlew runClient      # \u8fd0\u884c\u5ba2\u6237\u7aef\n.\/gradlew runServer      # \u8fd0\u884c\u670d\u52a1\u7aef\n```\n\n\u6784\u5efa\u4ea7\u7269\uff1a`build\/libs\/readstar-*.jar`\n\n### \u6545\u969c\u6392\u67e5\n\n| \u73b0\u8c61 | \u68c0\u67e5\u70b9 |\n|------|--------|\n| \u661f\u661f\u663e\u793a\u7d2b\u9ed1\u8d34\u56fe | `star_base.png` \u662f\u5426\u4e3a 32-bit RGBA |\n| \u6570\u636e\u5305\u672a\u751f\u6548 | `\/reload` \u6216\u91cd\u542f\u670d\u52a1\u7aef |\n| \u8d44\u6e90\u5305\u672a\u66f4\u65b0 | F3+T \u91cd\u8f7d\u8d44\u6e90\u5305\uff0c\u6216\u91cd\u65b0\u6784\u5efa |\n\n---\n\n\u00a9 2026 FrozenStream DeepSeek-V4-Flash. \u57fa\u4e8e NeoForge \u6784\u5efa\uff0c\u9075\u5faa MIT \u8bb8\u53ef\u8bc1\u3002\n\n\n\n# ReadStar \u2014 NeoForge 26.1 Astronomy Mod\n\nA Minecraft sky mod driven by real celestial mechanics and star catalog data, featuring planetary orbital systems, star catalogs, three-tier glow rendering, and server-synchronized planetary system configuration.\n\n**Author**: FrozenStream\n\n---\n\n## Quick Start\n\n```bash\n# Build\n.\/gradlew build\n\n# Run client\n.\/gradlew runClient\n\n# Data generation (atlas config)\n.\/gradlew runData\n```\n\nThe celestial system is defined via **data pack** at `data\/readstar\/celestial\/system.json`, and the star catalog is defined via **resource pack** at `assets\/readstar\/custom\/stars\/stars.json`.\n\nAfter modifying config files, rebuild or use F3+T to reload resource packs (resource pack only; data packs require restart or `\/reload`).\n\n---\n\n## Data Pack \u2014 Celestial System Configuration\n\n**Path**: `data\/readstar\/celestial\/system.json`\n\nPlace your custom data pack at `saves\/<world>\/datapacks\/<your-pack>\/data\/readstar\/celestial\/system.json`, or on the server at `world\/datapacks\/`.<\/p>\n<p>### Structure<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;System&#8221;: {<br \/>\n    &#8220;<body name>&#8220;: {<br \/>\n      &#8220;mass&#8221;: <double>,           \/\/ Mass (kg); 0 = fixed at origin<br \/>\n      &#8220;radius&#8221;: <double>,         \/\/ Radius (m); affects rendered size<br \/>\n      &#8220;luminance&#8221;: <int>,         \/\/ Self-luminosity (0~15); >0 marks as star<br \/>\n      &#8220;axis&#8221;: [<x>, <y>, <z>],    \/\/ Rotation axis; zero vector defaults to (0,0,-1)<br \/>\n      &#8220;orbit&#8221;: {<br \/>\n        &#8220;semiMajorAxis&#8221;: <double>,           \/\/ Semi-major axis (m); 0 = no orbit<br \/>\n        &#8220;eccentricity&#8221;: <double>,            \/\/ Eccentricity (0 = circular)<br \/>\n        &#8220;inclination&#8221;: <double>,             \/\/ Orbital inclination (radians)<br \/>\n        &#8220;argumentOfPeriapsis&#8221;: <double>,     \/\/ Argument of periapsis (radians)<br \/>\n        &#8220;longitudeOfAscendingNode&#8221;: <double>, \/\/ Longitude of ascending node (radians)<br \/>\n        &#8220;initialMeanAnomaly&#8221;: <double>       \/\/ Initial mean anomaly (radians)<br \/>\n      },<br \/>\n      &#8220;children&#8221;: {<br \/>\n        &#8220;<child name>&#8220;: { &#8230; }   \/\/ Recursive; unlimited nesting depth<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### Complete Example<\/p>\n<p>A three-layer system: Sun (central star) \u2192 Earth + Mars \u2192 Moon (Earth&#8217;s satellite), using real solar system data.<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;System&#8221;: {<br \/>\n    &#8220;Sun&#8221;: {<br \/>\n      &#8220;mass&#8221;: 1.989e30,<br \/>\n      &#8220;radius&#8221;: 6.957e8,<br \/>\n      &#8220;luminance&#8221;: 15,<br \/>\n      &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n      &#8220;orbit&#8221;: {<br \/>\n        &#8220;semiMajorAxis&#8221;: 0.0,<br \/>\n        &#8220;eccentricity&#8221;: 0.0,<br \/>\n        &#8220;inclination&#8221;: 0.0,<br \/>\n        &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n        &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n        &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n      },<br \/>\n      &#8220;children&#8221;: {<br \/>\n        &#8220;Earth&#8221;: {<br \/>\n          &#8220;mass&#8221;: 5.972e24,<br \/>\n          &#8220;radius&#8221;: 6.371e6,<br \/>\n          &#8220;luminance&#8221;: 0,<br \/>\n          &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n          &#8220;orbit&#8221;: {<br \/>\n            &#8220;semiMajorAxis&#8221;: 1.496e11,<br \/>\n            &#8220;eccentricity&#8221;: 0.0167,<br \/>\n            &#8220;inclination&#8221;: 0.0,<br \/>\n            &#8220;argumentOfPeriapsis&#8221;: 1.796,<br \/>\n            &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n            &#8220;initialMeanAnomaly&#8221;: 6.240<br \/>\n          },<br \/>\n          &#8220;children&#8221;: {<br \/>\n            &#8220;Moon&#8221;: {<br \/>\n              &#8220;mass&#8221;: 7.342e22,<br \/>\n              &#8220;radius&#8221;: 1.737e6,<br \/>\n              &#8220;luminance&#8221;: 0,<br \/>\n              &#8220;axis&#8221;: [0.0, 0.0, 0.5],<br \/>\n              &#8220;orbit&#8221;: {<br \/>\n                &#8220;semiMajorAxis&#8221;: 3.844e8,<br \/>\n                &#8220;eccentricity&#8221;: 0.0549,<br \/>\n                &#8220;inclination&#8221;: 0.0899,<br \/>\n                &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n                &#8220;longitudeOfAscendingNode&#8221;: 0.0,<br \/>\n                &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n              },<br \/>\n              &#8220;children&#8221;: {}<br \/>\n            }<br \/>\n          }<br \/>\n        },<br \/>\n        &#8220;Mars&#8221;: {<br \/>\n          &#8220;mass&#8221;: 6.417e23,<br \/>\n          &#8220;radius&#8221;: 3.390e6,<br \/>\n          &#8220;luminance&#8221;: 0,<br \/>\n          &#8220;axis&#8221;: [0.0, 0.0, 0.0],<br \/>\n          &#8220;orbit&#8221;: {<br \/>\n            &#8220;semiMajorAxis&#8221;: 2.279e11,<br \/>\n            &#8220;eccentricity&#8221;: 0.0934,<br \/>\n            &#8220;inclination&#8221;: 0.0323,<br \/>\n            &#8220;argumentOfPeriapsis&#8221;: 0.0,<br \/>\n            &#8220;longitudeOfAscendingNode&#8221;: 0.865,<br \/>\n            &#8220;initialMeanAnomaly&#8221;: 0.0<br \/>\n          },<br \/>\n          &#8220;children&#8221;: {}<br \/>\n        }<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>### Field Reference<\/p>\n<p>| Field | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `mass` | Core orbital mechanics parameter. A body with mass 0 is fixed at its parent&#8217;s position |<br \/>\n| `radius` | Rendered size: `max(1.024, radius \/ distance \u00d7 2000)`. Diminishes with distance |<br \/>\n| `luminance` | Bodies with `luminance > 0` are recognized as stars; child bodies auto-assign the nearest luminous ancestor as `hostStar` |<br \/>\n| `inclination`, `longitudeOfAscendingNode` | Together define the orbital plane. `inclination=0` means the orbit lies in the reference plane |<br \/>\n| `eccentricity` | 0 = circular orbit, > 0 = elliptical |<br \/>\n| `initialMeanAnomaly` | Determines the body&#8217;s starting position on its orbit at t=0 |<\/p>\n<p>Names are case-insensitive (internally converted to lowercase). Use `{}` for empty children.<\/p>\n<p>### Inheritance<\/p>\n<p>&#8211; `hostStar` is resolved by recursively searching upward for the nearest body with `luminance > 0`<br \/>\n&#8211; Bodies without a luminous ancestor skip rendered sun-light effects<br \/>\n&#8211; Position: `position = parent.position + orbit(parent.mass, t)`<br \/>\n&#8211; Root node `Root` is fixed at `(0, 0, 0)`<\/p>\n<p>### Daytime and Moon Phase<\/p>\n<p>&#8220;`<br \/>\ngameTime       \u2192 updatePositions(t)   \u2192 orbital revolution<br \/>\ndaylightTime   \u2192 updateCurrentVec(t)  \u2192 rotation\/zenith update<br \/>\n&#8220;`<\/p>\n<p>&#8211; `gameTime`: total ticks since world creation. Controls orbital positions<br \/>\n&#8211; `daylightTime`: dimension daylight cycle time (0~24000). Controls planet rotation and zenith direction<\/p>\n<p>Moon phases are automatically computed from observer-satellite-star geometry, mapping a full orbit to all 8 phase types. Waxing vs. waning is determined by the sign of the observer-centric cross product against the orbital normal.<\/p>\n<p>&#8212;<\/p>\n<p>## Resource Pack \u2014 Star Catalog<\/p>\n<p>**Path**: `assets\/readstar\/custom\/stars\/stars.json`<\/p>\n<p>&#8220;`json<br \/>\n{<br \/>\n  &#8220;Stars&#8221;: [<br \/>\n    {<br \/>\n      &#8220;name&#8221;: &#8220;Sirius&#8221;,<br \/>\n      &#8220;position&#8221;: [-0.188181, -0.169608, 0.967338],<br \/>\n      &#8220;Vmag&#8221;: -1.46,<br \/>\n      &#8220;color&#8221;: 4291815679<br \/>\n    }<br \/>\n  ]<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>| Field | Description |<br \/>\n|&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;-|<br \/>\n| `name` | Identifier; no runtime effect |<br \/>\n| `position` | Direction vector `[x,y,z]` on the unit sphere; normalized and scaled to 100 during rendering |<br \/>\n| `Vmag` | Apparent magnitude. `< 0.5`: high glow; `< 1.5`: medium glow; `< 2.0`: low glow; `\u2265 2.0`: core only |\n| `color` | ARGB color value; used as the key for atlas sprite generation |\n\nStar brightness is mapped to vertex alpha: `clamp((14 - Vmag) \/ 15, 0.4, 1.0) \u00d7 255`.\n\n---\n\n## Resource Pack \u2014 Sprites &#038; Atlas\n\n### Star Atlas\n\nThe atlas source is registered via `RegisterSpriteSourcesEvent` with type `readstar:star`, declared in `assets\/readstar\/atlases\/star.json`:\n\n```json\n{\n  \"sources\": [ { \"type\": \"readstar:star\" } ]\n}\n```\n\nAt runtime, all `color` values from `stars.json` are read. The following base textures are used as stencils and tinted per-pixel:\n\n| Stencil | Path | Purpose |\n|---------|------|---------|\n| `star_base.png` | `textures\/environment\/star\/` | Core texture (32\u00d732, RGBA) |\n| `star_glow_low.png` | same | Low glow stencil |\n| `star_glow_med.png` | same | Medium glow stencil |\n| `star_glow_high.png` | same | High glow stencil |\n\nEach color produces 4 sprites: `color_{color}`, `glow_low_{color}`, `glow_med_{color}`, `glow_high_{color}`.\n\nStencil requirements:\n- RGBA 32-bit PNG (8-bit grayscale will fail `NativeImage.read()`)\n- 32\u00d732 pixels\n- Pure black edges (`rgb(0,0,0)`) to blend into the background\n- Glow brightness is suppressed by a factor of 0.35 based on the center 8\u00d78 region sample\n\n### Celestial Atlas\n\nGenerated by `runData`, output at `src\/generated\/resources\/assets\/readstar\/atlases\/celestial.json`. Add new celestial body textures by modifying `CelestialSpriteSourceProvider` and re-running data generation.\n\n---\n\n## Network Sync\n\nThe celestial system data is loaded from `data\/readstar\/celestial\/*.json` on the server side and broadcast to all clients via the custom packet `readstar:planet_system`. `CelestialBodyManager.initializeFromJson()` parses and builds the body tree on the client upon receipt.\n\n---\n\n## Build\n\n```bash\n.\/gradlew build          # Build mod JAR\n.\/gradlew runData        # Data generation (atlas config)\n.\/gradlew runClient      # Run client\n.\/gradlew runServer      # Run server\n```\n\nOutput: `build\/libs\/readstar-*.jar`\n\n### Troubleshooting\n\n| Symptom | Check |\n|---------|-------|\n| Purple\/black star textures | Is `star_base.png` 32-bit RGBA? |\n| Sun\/moon not visible | Is `Observer` properly assigned in `ExtractLevelRenderStateEvent`? |\n| Celestial bodies in wrong direction | Check `currentRotationVector` calculation and `frameQuat` basis vectors |\n| Data pack not applied | Run `\/reload` or restart the server |\n| Resource pack not updating | Press F3+T or rebuild |\n\n---\n\n\u00a9 2026 FrozenStream. Licensed under MIT.\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A mod adds configurable and more realistic stars.<\/p>\n","protected":false},"featured_media":129628,"template":"","meta":{"_minecraft_slug":"readstar","_minecraft_project_id":"Q5O7wOwB","_minecraft_author":"FrozenStream","_minecraft_license":"MIT","_minecraft_downloads":686,"_minecraft_follows":6,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"readstar.zip","_minecraft_size_bytes":2074731,"_minecraft_version_count":14,"_minecraft_updated_at":"2026-05-16T17:51:10.082154Z","_minecraft_date_created":"2025-08-19T06:21:17.438906Z","_minecraft_date_modified":"2026-05-13T03:56:06.043564Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/readstar","_minecraft_icon_attachment_id":129628,"_minecraft_imported_at":"2026-06-07T15:12:01+00:00","_minecraft_import_hash":"d78ebe9c7ce2669fddc2c099ce730ee9","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[156,89,873,158],"mod_loader":[160],"minecraft_version":[37,167],"class_list":["post-129627","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-decoration","mod_category-game-mechanics","mod_category-library","mod_category-neoforge","mod_loader-neoforge","minecraft_version-1-21-1","minecraft_version-26-1-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ReadStar - 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\/readstar\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ReadStar - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A mod adds configurable and more realistic stars.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/\",\"name\":\"ReadStar - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png\",\"datePublished\":\"2026-06-07T15:12:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png\",\"width\":12,\"height\":12},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/readstar\\\/#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\":\"ReadStar\"}]},{\"@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":"ReadStar - 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\/readstar\/","og_locale":"en_US","og_type":"article","og_title":"ReadStar - Minecraft","og_description":"A mod adds configurable and more realistic stars.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/","name":"ReadStar - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png","datePublished":"2026-06-07T15:12:01+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/readstar\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/readstar-icon-01f6d5f24f90a03e9ab7165c035fbb43f032b7e3.png","width":12,"height":12},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/readstar\/#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":"ReadStar"}]},{"@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\/129627","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\/129628"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=129627"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=129627"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=129627"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=129627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}