はじめに
今回は、マイクラのMod開発としてブロックにタグをつけていきたいと思います。
前提
作成の前提として、以下記事を参考にModの開発環境が構築されていること。
ドロップ作成の前提として、以下記事を参考にModの開発環境が構築されていること。
【参照】
【開発環境構築】VSCodeでMinecraft(Java版)のMOD作成環境を構築する – SEもりのLog (selifemorizo.com)
【Java + Mod開発】オリジナルのアイテムを追加してみる – SEもりのLog (selifemorizo.com)
【Java + Mod開発】オリジナルのブロックをMinecraftで追加してみる – SEもりのLog (selifemorizo.com)
ブロックにタグを追加
こちらの記事で作成したブロックにタグを追加していきます。
【Java + Mod開発】ブロックの硬度と採掘道具をMinecraftで設定する方法 – SEもりのLog Mod
フォルダ構成
赤字のフォルダ・ファイルが今回必要な追加・修正対象になります。
└─src
├─generated
│ └─resources
│ └─.cache
├─main
│ ├─java
│ │ └─com
│ │ └─mori
│ │ └─morimod
│ │ │ Config.java
│ │ │ MoriMod.java
│ │ │
│ │ ├─blocks
│ │ │ │ MoriModBlock.java
│ │ │ │
│ │ │ └─customize
│ │ │ HiraganaBlock.java
│ │ │
│ │ ├─items
│ │ │ │ MoriModCreativeModeTabs.java
│ │ │ │ MoriModFood.java
│ │ │ │ MoriModItem.java
│ │ │ │
│ │ │ └─customize
│ │ │ IronSearcherItem.java
│ │ │ JudgeItem.java
│ │ │
│ │ └─util
│ │ ModTags.java
│ │
│ └─resources
│ │ pack.mcmeta
│ │
│ ├─assets
│ │ └─morimod
│ │ ├─blockstates
│ │ │ a_block.json
│ │ │ moriblock.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ ├─lang
│ │ │ en_us.json
│ │ │ ja_jp.json
│ │ │
│ │ ├─models
│ │ │ ├─block
│ │ │ │ a_block.json
│ │ │ │ moriblock.json
│ │ │ │ mo_block.json
│ │ │ │ ri_block.json
│ │ │ │
│ │ │ └─item
│ │ │ a_block.json
│ │ │ humbarger.json
│ │ │ iron_searcher.json
│ │ │ judge_rod.json
│ │ │ moriblock.json
│ │ │ moriitem.json
│ │ │ moriitem2.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ └─textures
│ │ ├─block
│ │ │ a_block.png
│ │ │ moriblock.png
│ │ │ mo_block.png
│ │ │ ri_block.png
│ │ │
│ │ └─item
│ │ humbarger.png
│ │ iron_searcher.png
│ │ judge_rod.png
│ │ moriitem.png
│ │ moriitem2.png
│ │
│ ├─data
│ │ ├─minecraft
│ │ │ └─tags
│ │ │ └─blocks
│ │ │ │ needs_diamond_tool.json
│ │ │ │ needs_iron_tool.json
│ │ │ │ needs_stone_tool.json
│ │ │ │
│ │ │ └─mineable
│ │ │ axe.json
│ │ │ hoe.json
│ │ │ pickaxe.json
│ │ │ shovel.json
│ │ │
│ │ └─morimod
│ │ ├─loot_tables
│ │ │ └─blocks
│ │ │ moriblock.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ ├─recipes
│ │ │ humbarger.json
│ │ │ moriblock.json
│ │ │ moriitem_from_block.json
│ │ │
│ │ └─tags
│ │ └─blocks
│ │ morimod-tags.json
│ │
│ └─META-INF
│ mods.toml
ソース編集
morimod-tags.json
「morimod-tags」というタグ名に所属するブロック一覧を記載します。
{
"replace": false,
"values": [
"morimod:mo_block",
"morimod:ri_block"
]
}
ModTags.java
「morimod-tags」のタグをソース内に適用します。
package com.mori.morimod.util;
import com.mori.morimod.MoriMod;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.level.block.Block;
public class ModTags {
public static class Blocks {
public static final TagKey<Block> MORIMODE_TAGS = tag("morimod-tags");
private static TagKey<Block> tag(String name) {
return BlockTags.create(new ResourceLocation(MoriMod.MODID, name));
}
private static TagKey<Block> forgeTag(String name) {
return BlockTags.create(new ResourceLocation("forge", name));
}
}
}
使い方
例
「MORIMODE_TAGS」には「morimod-tags.json」に追加したブロック一覧が全て含まれているため、一覧として扱うことができます。例えば以下の例だと対象ブロックとの比較のためにisメソッドを使用していますが、引数に「MORIMODE_TAGS」を指定することで、「morimod-tags.json」に追加したブロック全てと比較することができます。
BlockState blockstate = 対象ブロック;
// 「MORIMODE_TAGS」のブロック一覧全てと比較
if (blockstate.is(ModTags.Blocks.MORIMODE_TAGS)){
}

公式サイト
最後に
以上、ログになります。
これからも継続していきましょう!!
コメント