2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Minecraft CommandAdvent Calendar 2024

Day 10

カスタムフォントで彩を

Last updated at Posted at 2024-12-09

Minecraft Command Advent Calendar 2024の10日目の記事です。

この記事はほぼリソースパックの話です。
1.21.4の情報です。(別のバージョンでも使える場合があります。)

はじめに

この記事での「カスタムフォント」はオリジナルフォントのことではなく、文字に画像やスペースを割り当てる技術のことを指します。

カスタムフォントって何?

フォントを利用してUnicodeの文字に画像やスペースを割り当てることができます。

Unicodeとは

コンピュータ上で一貫して文字や記号など扱うために作られた文字コード標準規格のことです。WindowsやmacOs、Unixなどの様々なOSでサポートされています。
簡単に言うと文字や記号を16進数の数字に割り当てたものです。
ここでは詳しく説明しないのでより知りたい方は調べてください。


  • U+0041A
    U+3042
    U+6F22

Unicodeには私用面(私用領域)と呼ばれる文字が割り当ていない文字の面があります。U+E000 ~ U+10FFFF
そこに画像やスペースを割り当てられるのがカスタムフォントです。

Fontフォルダ

assets/namespace/font内のjsonファイルでフォントが定義されます。
assets/minecraft/font内には特殊なフォントファイルがあります。
defaut.json
デフォルトで使用されるフォントです。
uniform.json
「Unicodeフォントを強制する」をオンにしたとき、使用されるフォントです。
他にもありますがこの2つを覚えておくといいでしょう。
・ファイルの例
typeは割り当てるものの種類です。

assets/namespace/font/test.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "namespace:font/test.png",
            "ascent": 8,
            "height": 9,
            "chars": [
                "\uE000"
            ]
        }
    ]
}

カスタムフォント

実際にフォントに割り当てて行きましょう。

デフォルトフォントファイルを使う方法

先ほどの挙げた特殊なフォントファイルで割り当てて行きます。

画像を割り当てる

bitmapを使います。

assets/minecraft/font/defaut.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "namespace:font/test.png",
            "ascent": 8,
            "height": 9,
            "chars": [
                "\uE000"
            ]
        }
    ]
}

fileで画像を指定します。(assets/namespace/textures階層以下から記述)
ascentは縦方向の位置です。
heightは縦方向の大きさです。任意で、デフォルト値は8です。

ascentheightでなければならないです。

下記のコマンドで表示できます。

/title @s title "\uE000"

test.png

複数割り当てる
assets/minecraft/font/defaut.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "namespace:font/test_2.png",
            "ascent": 8,
            "height": 9,
            "chars": [
                "\uE001\uE002\uE003\uE004"
            ]
        }
    ]
}

画像ファイルの行のものをそれぞれ割り当てられます。

スペースを割り当てる。

spaceを使います。
このスペースは空白というより、文字の左右の移動と考えたほうが良いです。

assets/minecraft/font/defaut.json
{
    "providers": [
        {
            "type": "space",
            "advances": {
                "\uE005":10,
                "\uE006":-10
            }
        }
    ]
}

advancesで割り当てる文字を指定します。1つでもいいです。
U+E005で10ドット右に移動します。
U+E006で10ドット左に移動します。

オリジナルフォントファイルを使う方法

assets/namespace/font/test.jsonに上記の方法と同様に記述すればいいです。

表示するとには、フォントnamespace:testを指定しないと表示されないです。

/title @p title {"font":"namespace:test","text":"\uE000"}

この方法を使うと、リソースパック同士の競合が起こらず表示できます。
2024-12-09_23.43.07.png

用例

出血表現

2024-12-09_23.25.10.png
半透明の画像を大きく表示しています。

assets/minecraft/font/defaut.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "namespace:font/test.png",
            "ascent": 64,
            "height": 128,
            "chars": [
                "\uE007"
            ]
        }
    ]
}
/title @s title "\uE007"

画像を黒にすると、暗転などにも使えます。

GUI

この画像をコンテナブロックの名前にします。
gui.png

assets/minecraft/font/defaut.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "namespace:font/gui.png",
            "ascent": 10,
            "height": 80,
            "chars": [
                "\uE008"
            ]
        },
        {
            "type": "space",
            "advances": {
                "\uE009":-8
            }
        },
    ]
}
/setblock ~ ~ ~ barrel{CustomName:'{"color":"white","text":"\\uE009\\uE008"}'}

2024-12-09_23.45.22.png

アイコン

2024-12-09_22.32.00.png

assets/namespace/font/test.json
{
    "providers": [
        {
            "type": "bitmap",
            "file": "minecraft:gui/sprites/hud/armor_half.png",
            "ascent": 8,
            "height": 9,
            "chars": [
                "\uE00A"
            ]
        }
    ]
}
assets/minecraft/lang/ja_jp.json
{
    "attribute.name.armor": "§f\uE00A§r防御力"
}

カスタムフォントは色の影響を受けるので§fを使って白にしています。

カスタムパーティクル

text_displayを使ってパーティクルを作れます。
書くと長くなるので他の方の記事を検索してみてください。

最後に

カスタムフォントの基礎について解説しました。
これを使ってデータパックを色鮮やかにしてみてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?