mirror of
https://github.com/LCE-Hub/LCE-Workshop.git
synced 2026-07-17 15:57:20 +00:00
Introduction of extended_description (#12)
Co-authored-by: /home/neo <158327205+neoapps-dev@users.noreply.github.com>
This commit is contained in:
parent
9830774368
commit
bf1cc774d3
121
MarkdownGuide.md
Normal file
121
MarkdownGuide.md
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# React Markdown — Features Reference
|
||||
|
||||
This document describes what markdown syntax is supported when writing the `extended_description` field. The field is rendered using [`react-markdown`](https://remarkjs.github.io/react-markdown/), which follows the [CommonMark](https://commonmark.org/) spec by default.
|
||||
|
||||
---
|
||||
|
||||
## Available Features
|
||||
|
||||
| Feature | Syntax | Example |
|
||||
|---|---|---|
|
||||
| **Headings** | `# H1` through `###### H6` | `## Section Title` |
|
||||
| **Bold** | `**text**` or `__text__` | `**important**` |
|
||||
| **Italic** | `*text*` or `_text_` | `*emphasis*` |
|
||||
| **Bold + Italic** | `***text***` | `***critical***` |
|
||||
| **Inline code** | `` `code` `` | `` `null` `` |
|
||||
| **Code blocks** | ` ```lang ``` ` | ` ```json ``` ` |
|
||||
| **Blockquotes** | `> text` | `> Note: ...` |
|
||||
| **Unordered lists** | `- item` or `* item` | `- Feature one` |
|
||||
| **Ordered lists** | `1. item` | `1. Step one` |
|
||||
| **Nested lists** | Indent with 2–4 spaces | ` - sub-item` |
|
||||
| **Horizontal rule** | `---` or `***` | `---` |
|
||||
| **Links** | `[label](url)` | `[docs](https://example.com)` |
|
||||
| **Paragraphs** | Blank line between text | — |
|
||||
| **Line breaks** | Two trailing spaces or `\n` | — |
|
||||
| **Escaped characters** | `\*`, `\_`, `\`` etc. | `\*not bold\*` |
|
||||
| **Strikethrough** | `~~text~~` *(via remark-gfm)* | `~~deprecated~~` |
|
||||
| **Tables** | GFM pipe syntax *(via remark-gfm)* | see below |
|
||||
| **Task lists** | `- [x] done` *(via remark-gfm)* | `- [ ] pending` |
|
||||
|
||||
### Table syntax example
|
||||
|
||||
```markdown
|
||||
| Column A | Column B |
|
||||
|----------|----------|
|
||||
| value | value |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Not Available (unsupported or unsafe)
|
||||
|
||||
| Feature | Reason |
|
||||
|---|---|
|
||||
| Raw `<html>` tags | Disabled by default — `react-markdown` strips HTML for security |
|
||||
| `<script>` / `<style>` tags | Stripped entirely, never rendered |
|
||||
| `javascript:` links | Sanitized — only `http`, `https`, `mailto` are allowed |
|
||||
| Footnotes | Not part of CommonMark; requires `remark-footnotes` plugin (not enabled) |
|
||||
| Definition lists | Not supported without additional plugins |
|
||||
| Math / LaTeX (`$...$`) | Requires `remark-math` plugin (not enabled) |
|
||||
| Custom directives (`::: note`) | Requires `remark-directive` plugin (not enabled) |
|
||||
| Front matter (`---` YAML header) | Not parsed — treated as a horizontal rule followed by text |
|
||||
|
||||
> **Note:** HTML is intentionally disabled. Even valid HTML like `<br>`, `<u>`, or `<span>` will not render — use markdown equivalents instead.
|
||||
|
||||
---
|
||||
|
||||
## Tips for Writing `extended_description`
|
||||
|
||||
- Use `##` and `###` for section headings — avoid `#` (H1) as the field is already within a larger page context.
|
||||
- Use fenced code blocks with a language hint for readable snippets: ` ```json `, ` ```bash `, etc.
|
||||
- Prefer `**bold**` for field names and `` `inline code` `` for values, types, or identifiers.
|
||||
- Keep tables simple — GFM tables don't support merged cells or complex formatting inside cells.
|
||||
- Leaving `extended_description` as `""` is allowed but not recommended; even a short paragraph and a img improves discoverability.
|
||||
|
||||
---
|
||||
|
||||
## Advertisements & Custom Media Types
|
||||
|
||||
The markdown image title attribute (the quoted string after the URL) is normally ignored visually, but `react-markdown` exposes it through its custom renderer API. This makes it a clean, unobtrusive way to tag media with a type — no plugins needed.
|
||||
|
||||
### How it works
|
||||
|
||||
A standard image looks like this:
|
||||
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
By adding a title, you signal intent:
|
||||
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
On the renderer side, a custom `img` component checks the `title` prop and switches UI accordingly.
|
||||
|
||||
### Supported media type tags
|
||||
|
||||
| Title value | Renders as |
|
||||
|---|---|
|
||||
| *(none)* | Standard image |
|
||||
| `"advertisement"` | Advertisement banner UI |
|
||||
| `"video"` | Video embed (using `src` as the video URL) |
|
||||
|
||||
> **Note for writers:** The title value is case-sensitive and must match exactly. `"Advertisement"` or `"ad"` will not be recognized — use `"advertisement"` as written.
|
||||
|
||||
---
|
||||
|
||||
## Final Step
|
||||
|
||||
Once your markdown is ready, convert it to a valid JSON string using [JSON Stringify](https://onlinetexttools.com/json-stringify-text), then paste the result as the value of your `extended_description` field.
|
||||
|
||||
---
|
||||
|
||||
## Quick Example
|
||||
|
||||
```markdown
|
||||
## Chest Sorter 3000
|
||||
|
||||
A **lightweight utility mod** that automatically sorts and organizes your chests by item type. No more digging through mountains of cobblestone to find your diamonds.
|
||||
|
||||
### What it does
|
||||
|
||||
- Automatically groups items by category — blocks, tools, food, materials
|
||||
- Sneak + right-click any chest for an **instant sort**
|
||||
- Works with *double chests*, barrels, and shulker boxes
|
||||
- Fully compatible with other storage mods
|
||||
```
|
||||
|
||||
> See the [full documentation](https://commonmark.org/) for advanced options.
|
||||
```
|
||||
|
|
@ -34,6 +34,7 @@ Your `meta.json` must follow this structure:
|
|||
| `name` | String | Display name of the item. |
|
||||
| `author` | String | Your Github username. |
|
||||
| `description`| String | A short summary of what the item does. |
|
||||
| `extended_description`| String | A complete description in **`markdown`** of your project, it can include all available markdown features. This field is required but may be left as `""` (empty), although it’s *not* recommended, for more information on how to structure your markdown look into [this](https://remarkjs.github.io/react-markdown/), for complete documentation look at this [MarkdownGuide](./MarkdownGuide.md) |
|
||||
| `category` | String or String[] | Must be `Skin`, `Texture`, `World`, `Mod`, `DLC`, or multiple ones in a list. |
|
||||
| `thumbnail` | String | File name for your 1:1 image (PNG/JPG/SVG/GIF) for the preview. |
|
||||
| `zips`| Object | Names of your `.zip` files to extract. |
|
||||
|
|
@ -45,7 +46,8 @@ Your `meta.json` must follow this structure:
|
|||
"id": "my-amazing-mod", // ID
|
||||
"name": "My Awesome Mod", // Name
|
||||
"author": "neoapps-dev", // Github username
|
||||
"description": "Adds back Ruby items", // Description
|
||||
"description": "Adds back Ruby items", // Short Description
|
||||
"extended_description": "# Markdown", // Detailed Description
|
||||
"category": ["Mod", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.png", // Thumbnail filename
|
||||
"zips": { // Object ("file-name.zip": "path/in/the/game/directory/to/extract/it/in)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Barebones", // Name
|
||||
"author": "mrduck",
|
||||
"description": "Bare Bones is a texture pack with the purpose of bringing your world and the default Minecraft textures to it's 'bare bones'. It is a simplistic and vibrant pack that is fun to use and makes your own Minecraft worlds look colourful!", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Skin", "Texture", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.png", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Blocks Skin Pack", // Name
|
||||
"author": "silvas",
|
||||
"description": "A bunch of blocks turned into skins lol", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Skin", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.png", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Shipment (COD4)",
|
||||
"author": "funnyfella42",
|
||||
"description": "Shipment from COD4",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"World"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Dust2",
|
||||
"author": "funnyfella42",
|
||||
"description": "Imagine you wanna play cs but your pc can only run LCE, well heres the hit cs map dust2, however it is missing the 71/71 russian servers you would find on cs source\n\nuh theres also chests for pvp ",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"World"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Faithful 64x", // Name
|
||||
"author": "jakobisnow", // Author
|
||||
"description": "Faithful recreates Minecraft's original textures in higher resolutions while staying true to their original look and feel. Ported to LCE.", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Texture", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.jpg", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Five Night's at Freddy's Skin Pack",
|
||||
"author": "irv77",
|
||||
"description": "Nobledez original skin pack of Five Nights at Freddy's skins (fnaf 1- fnaf ucn)",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Skin",
|
||||
"DLC"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "New HEDGECRAFT [Krabozaki]",
|
||||
"author": "LilasSonicBoi",
|
||||
"description": "you know, there's Hedge(city) here and they're pretending themselves in Minecraft. they're complete cubes, no doubt. you saw nothing, Lilac. oh, you're already online.",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Skin",
|
||||
"DLC"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Miku's Modules", // Name
|
||||
"author": "dydymiku_", // Author
|
||||
"description": "A 3D Hatsune Miku Skin Pack that's taking all the modules from the Project Diva/Project Sekai games, as well as the fan made Mikus!", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Skin", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.jpg", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "New-Legacy",
|
||||
"author": "cheapmanga",
|
||||
"description": "Minecraft LCE texturepack that brings the new textures of Minecraft java 1.21.11 to LCE",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"DLC",
|
||||
"Texture"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
import { readdirSync, readFileSync, writeFileSync, statSync } from "fs";
|
||||
import { join } from "path";
|
||||
|
||||
const OUTPUT_FILE = "./registry.json";
|
||||
const VALID_CATEGORIES = ["Skin", "Texture", "World", "Mod", "DLC"];
|
||||
const REQUIRED_FIELDS = ["id", "name", "author", "description", "category", "thumbnail", "zips", "version"];
|
||||
const REQUIRED_FIELDS = ["id", "name", "author", "description", "extended_description", "category", "thumbnail", "zips", "version"];
|
||||
const IGNORED_DIRS = [".git", ".github", "scripts"];
|
||||
|
||||
function validateMeta(meta, pkgDir) {
|
||||
const errors = [];
|
||||
for (const field of REQUIRED_FIELDS) {
|
||||
|
|
@ -94,4 +96,4 @@ const registry = {
|
|||
};
|
||||
|
||||
writeFileSync(OUTPUT_FILE, JSON.stringify(registry, null, 2));
|
||||
console.log(`registry.json generated with ${packages.length} package(s)`);
|
||||
console.log(`registry.json generated with ${packages.length} package(s)`);
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "SkyPack!",
|
||||
"author": "SKYHIVIN",
|
||||
"description": "An skinpack made by me!\nby SkyHeaven!\nan unemployed person. whom spent hours on this\nalso im SkyHeaven on the LCE discord too, if you have a skin or cape suggestoins, say it to me! i could add an custom skin and cape too!",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Skin",
|
||||
"DLC"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Sphax Purebdcraft NeoLegacy",
|
||||
"author": "ThePurpleDude",
|
||||
"description": "This is a version of Sphax Purebdcraft for the NeoLegacy version of the game I'll be updating this texture pack as the TU versions get updated",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Texture",
|
||||
"DLC"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Sphax Purebdcraft",
|
||||
"author": "ThePurpleDude",
|
||||
"description": "This is Sphax Purebdcraft for LCE TU 19 I have most of the the animated textures done working on the ui when I can and adding stuff that I find that it doesn't have yet.",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Texture",
|
||||
"DLC"
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "The Amazing Digital Circus", // Name
|
||||
"author": "silvaz",
|
||||
"description": "A bunch of TADC skins taken from online ported to LCE. Credits shown in game.", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Skin", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.png", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Touhou SkinPack", // Name
|
||||
"author": "spellboundstargazer",
|
||||
"description": "A collection of Touhou skins based on characters that I like.", // Description
|
||||
"extended_description": "",
|
||||
"category": ["Skin", "DLC"], // Category
|
||||
"thumbnail": "thumbnail.png", // Thumbnail filename
|
||||
"zips": {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"name": "Vintage LCE",
|
||||
"author": "ThePurpleDude",
|
||||
"description": "I helped port this for someone this is vintage texture pack I did as much as I could its only for TU 19 I'll probably make a newer version for neo legacy when I can",
|
||||
"extended_description": "",
|
||||
"category": [
|
||||
"Texture",
|
||||
"DLC"
|
||||
|
|
|
|||
Loading…
Reference in a new issue