• Stars
    star
    144
  • Rank 255,590 (Top 6 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 1 year ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Textures and fonts for the Minecraft Title Generator Blockbench plugin

Minecraft Title Generator

This plugin adds a new format that allows you to create Minecraft-styled title models that you can render in high quality.

Plugin Homepages: ewanhowell.com and blockbench.net

This repo contains the fonts and textures that the plugin uses. To download and use the plugin, go to the plugin store within Blockbench (File > Plugins > Available) and install it. For more information, please see the plugin homepage.

Submissions

Anyone can submit fonts and textures to this plugin, as long as they meet the requirements and follow the rules.

General rules

  • Fonts/textures must be somewhat high quality. No low-effort submissions.
  • Fonts/textures must be somewhat unique from other fonts/textures. Try not to re-use other textures.
  • Full credit must be provided. If you are basing a font/texture off of someone else's design, credit them too!
  • Font/texture IDs must be in the snake_case format, and only use the characters a-z, 0-9, and underscores.

How to make a submission

To make a submission, create a fork of this repository and edit/upload the necessary files. After all the changes are made, create a pull request and explain what you are adding.

For larger submissions like fonts, it will be a lot easier to clone the repo to your PC and use an app like GitHub Desktop to manage changes.

Texture submissions video tutorial

Compiling

After making a submission, it would be really helpful if you could compile it. If you don't understand how to do this, you can skip this step and I can do it for you.

First time setup:

  1. Install Node.js.
  2. Install Visual Studio Installer and install Desktop development with C++ using it.
  3. Clone the repo to your PC, add your changes, and then navigate to the scripts directory in the repo.
  4. Open a terminal inside this directory. On Windows, this can be done by typing cmd into the address bar in file explorer.
  5. Run the command npm i.

Compiling:

  • If on Windows, just run the compile.bat file.
  • If on macOS or Linux, run the command node compile.js.
  • Wait until the script finishes.

Textures

Creating a texture

  1. To create a new texture, start by using another texture as a template. flat.png is the best template for general textures.
  2. Textures can be found at fonts/fontname/textures, and overlays can be found in fonts/fontname/overlays. Save your texture to either the textures or overlays folder, depending on what you made.
  3. Edit the textures.json file located at fonts/fontname/textures.json and add your texture to it. This file follows the following formatting:
{
  "textures": { // If you are adding a texture, it goes in here
    "texture_id": { // The ID of the texture you are adding (required)
      "category": "Category Name", // If the texture has variants, the name of the category (optional)
      "name": "Texture Name", // The name of the texture if it doesn't match the ID (optional)
      "author": "Author Name", // Your name (required)
      "variants": { // The variants for this texture (optional)
        "variant_id": {
          "name": "Variant Name", // (optional)
          "author": "Author Name" // Only needed if different from the texture author (optional)
        }
      }
    }
  },
  "overlays": { // If you are adding an overlay, it goes in here
    "overlay_id": { // The ID of the overlay you are adding (required)
      "name": "Overlay Name", // The name of the overlay if it doesn't match the ID (optional)
      "author": "Author Name" // Your name (required)
    }
  }
}

Note: Overlays do not support variants

Thumbnails are generated through the compile script. Do not make them manually.

Texture rules

  • Textures must use the exact same shapes as the flat.png texture. This means no extra cut-outs or filling parts in.
  • Textures must be one of these three sizes: 1000x320, 2000x640, or 4000x1280.
  • Do not add too many variants to a single texture. If I feel a variant is unnecessary, or there are too many, it will be denied.
  • The border colour at the bottom (under all character lines) must be the same colour for the entire thing. It will not work if you try to use multiple colours. This may not apply for certain fonts. Please check the flat.png to see if it is a solid colour there.
  • Do not submit textures generated using the plugin, or that could be easily recreated using the plugin.
  • Semi transparency is not supported for regular textures. It is supported for overlays.

Tileables

Creating a tileable

  1. To create a new tileable, add the tileable to the tileables folder under a fitting subdirectory.
  2. Edit the tileables.json file and add your tileable to it. This file follows the following formatting:
{
  "tileable_id": { // The ID of the tileable you are adding (required)
    "category": "Category Name", // If the tileable has variants, the name of the category (optional)
    "name": "Tileable Name", // The name of the tileable if it doesn't match the ID (optional)
    "author": "Author Name", // Your name (optional, defaults to "Mojang")
    "path": "directory/path", // Where the tileable is located inside the tileables folder (optional, defaults to "minecraft")
    "variants": { // The variants for this tileable (optional)
      "variant_id": {
        "name": "Variant Name", // (optional)
        "author": "Author Name" // Only needed if different from the tileable author (optional)
      }
    }
  }
}

Tileable rules

  • Tileables must be 8x8 minimum, and 128x128 maximum, but do not have to be square.
  • Tileables must tile. Tiling is not required when random rotations and random mirroring are enabled.
  • Do not add too many variants to a single tileable. If I feel a variant is unnecessary, or there are too many, it will be denied.

Fonts

Fonts require you to create a model for every character.

These are the characters for a font. Some characters use a name instead, since the characters are invalid for file names.

Required characters
  • creeper
  • a
  • b
  • c
  • d
  • e
  • f
  • g
  • h
  • i
  • j
  • k
  • l
  • m
  • n
  • o
  • p
  • q
  • r
  • s
  • t
  • u
  • v
  • w
  • x
  • y
  • z
  • £
  • €
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • &
  • #
  • (
  • )
  • [
  • ]
  • {
  • }
  • forwardslash
  • backwardslash
  • questionmark
  • !
  • .
  • colon
  • -
  • openquote
  • '
  • +
  • =
  • lessthan
  • greaterthan
  • %
  • ^
  • asterisk
  • ~
  • end - The start terminator
  • start - The end terminator
  • ,
  • ;
  • _
  • $
  • @
Optional characters
  • space - The font will use this character instead of automatically generating a space
  • spacer - A 1px wide model to use when character spacing is used. This model will be stretched to fill the space.

Different alphabets are allowed (such as Cyrillic), but all non-letter characters must still be present in the font.

If you want to make a font using different characters, please make an issue about it first.

Creating a font

  1. To create a font, create a new folder inside the fonts directory with the ID of your font.
  2. Inside this new folder, create the folders characters, textures, and overlays.
  3. Create a flat.png texture inside the textures folder. This will be used for your UV.
  4. Create the full layout for your UV.
    • Characters need to be arranged into rows, with the top face directly above the character, and the bottom face directly below.
    • You can have as many rows as you need, as long as you leave room for the border UV at the bottom.
    • 2px-wide spaces must be between the characters and the rows.
    • If some characters are taller than the standard character height, they can go into their own rows.
    • You do not need to worry about making the border UVs at this time.
    • See the minecraft-ten and minecraft-five-bold textures for example UVs.
    • Font UVs must be 1000x320.
  5. Now it is time to create the models. For every character, create a model for it and save it to the characters folder using the name listed above in the characters list.
    • Characters are modelled using the Java Block/Item format. You will probably need to enable the Deactivate Size Limit Blockbench setting.
    • The borders for each character must be 2px thick (if your font has borders).
    • You can now add the border UVs to the texture as you create the borders. If you are unsure on how borders should work, see the minecraft-ten and minecraft-five-bold models for examples.
    • The UV for the borders must be located underneath all the character rows.
    • The baseline for the text must be at Y level 2, with the border going to Y level 0. If the font does not have a border, the text baseline needs to be Y level 0.
    • Keep characters centred in the scene.
    • Groups and textures in the model do not matter, they will be ignored when the font is compiled.
    • Try to create optimised models without unnecessary elements.
  6. Create a textures.json file, following the formatting explained in the textures section.
    • The first texture must be flat, and is required for all fonts.
    • The second texture is the main texture, and will be the one that is automatically selected in the plugin.
    • All the other textures will be sorted by popularity over the last week.
  7. Create at least one overlay texture. It doesn't matter what it is, but at least one is required.
  8. Add your font to the fonts.json file found at the root of the repo. This file follows the following formatting:
[
  {
    "id": "font-id", // Font ID (required)
    "name": "Font Name", // The name of the font if it doesn't match the ID (optional)
    "description": "A description", // A description of what the font is (optional)
    "author": "Ewan Howell", // Font author (required)
    "height": 36, // Character height, including border, but not characters that go above or below the baselines, such as a comma (required)
    "border": 212, // The Y coordinate of the top of the border UV (required)
    "faces": [ // List of coordinates defining the front faces of the rows of characters (required)
      [16, 48], // When there are two values, these are the top and bottom of the face
      [148, 154, 186, 194] // When there are four values, these are the top of the section over the topline, the top of the normal height, but bottom of the normal height, and the bottom of the section below the baseline. The first and second values can be the same if there is no section above the topline. Same goes for the baseline.
    ],
    "ends": [ // List of coordinates defining the top and bottom faces of the rows of characters (required)
      [0, 16, 48, 64], // First two values are the top and bottom Y coordinates of the top face, second two are the bottom face
      [132, 132, 186, 186] // If your font does not have top and bottom faces, you can make the top and bottom the same values, which should match the top and bottom of the front faces.
    ],
    "terminatorSpace": true, // The terminator characters should have a space between itself and the text (optional)
    "forcedTerminators": true, // The terminator characters will always be used and cannot be disabled (optional)
    "autoBorder": true, // Will generate an automatic border which is a single element around the entire text row (optional)
    "borderless": true, // The font has no border (optional)
    "overlay": true, // The font has an overlay texture that is applied over the top of the "gradient" texture mode. Requires an "overlay.png" in the textures folder. See the "minecraft-five-bold-block" for an example (optional)
    "preview": "abc", // The text to use in the generated thumbnail images. Normally 3 characters, but I may allow exceptions (optional)
    "example": [ // The example text to display in the dialog text preview. Only provide if you are creating characters for a different alphabet, or if your font does not contain any letters (optional)
      "exmple", // The top text
      "text" // The bottom text
    ],
    "flat": true, // The font is a flat plane with no depth (optional)
    "variants": [ // The variants for this font (optional)
      {
        "id": "variant-id", // The ID of the variant
        // All other properties for variants are the same as the base font and optional. Any missing properties will be inherited from the base font
      }
    ]
  }
]

Testing your font

The easiest way to test your font is to modify the plugin to use your fork of this repo instead of the official one.

  1. Download the plugin file from the Blockbench Plugins repository.
  2. Edit the repo variable on line 2 to be your repo.
  3. Uninstall the official plugin and install your modified one by dragging and dropping the file into Blockbench.
  4. Compile the font using the compile script and commit the font to your fork, then view the font from within Blockbench!

To view all characters in your font, you can use Help > Developer > Load Debug Minecraft Title Text

Font Variants

Fonts have support for variants. These are alternative versions of an existing font, such as slightly different character designs, or different character sets.

The characters in font variants do not matter, but the first 4 characters must all be the same width, where character 2, 3, and 4 are the ones that appear in the thumbnail. There is a minimum requirement of 4 characters for a font variant.

To create a font variant, follow the same process as creating a normal font. When it comes to adding to the fonts.json, instead of adding a new entry, instead add to a variants array of the parent font.

[
  {
    "id": "parent-font",
    // rest of parent font details
    "variants": [
      {
        "id": "variant-id"
      }
    ]
  }
]

Variant fonts use the same properties as normal fonts. The only required property of a variant is its ID. Any missing properties will be inherited from the parent font.

Official Minecraft Assets

Some textures in this repository are official Minecraft assets, or contain parts of official Minecraft assets. These will be licensed under the Minecraft End User License Agreement (see LICENSE.md).

When submitting textures or tileables that include official Minecraft assets, please add them to the LICENSE.md.