网站建设维护视频教程国家工程招标网公告
web/
2025/10/8 23:24:02/
文章来源:
网站建设维护视频教程,国家工程招标网公告,中国交通建设集团有限公司网站,wordpress the7.5创造模式物品栏 添加到当前已有物品栏 再添加自定义的创造模式物品栏之前#xff0c;请确保你的确有这个需求#xff01;否则建议直接添加到当前已有的物品栏内部 创建新文件#xff1a;com/example/item/ModItemGroup.java
package com.example.item;import net.fabricmc.…创造模式物品栏 添加到当前已有物品栏 再添加自定义的创造模式物品栏之前请确保你的确有这个需求否则建议直接添加到当前已有的物品栏内部 创建新文件com/example/item/ModItemGroup.java
package com.example.item;import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemGroups;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;public class ModItemGroup {// 定义我们要把什么物品添加到物品栏里面private static void addItemsToGroup(FabricItemGroupEntries entries){entries.add(ModItems.ZER_DIAMOND);entries.add(ModItems.ZER_INGOT);}// 注册物品栏方法public static void registerItemGroup(){// 添加到已有的物品栏INGREDIENTS里面ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(ModItemGroup::addItemsToGroup);}
}最后别忘了在 TutorialMod.java 里面执行初始化
package com.example;import com.example.item.ModItemGroup;
import com.example.item.ModItems;
import net.fabricmc.api.ModInitializer;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class TutorialMod implements ModInitializer {...Overridepublic void onInitialize() {ModItems.registerModItems();// 在这里注册物品栏哦// 由于我们需要使用到自定义物品所以注册物品栏顺序必须晚于物品注册ModItemGroup.registerItemGroup();}
}最终结果 注册自定义物品栏
其他内容保持不变我们仅需修改 ModItemGroup.java
package com.example.item;import com.example.TutorialMod;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemGroups;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;public class ModItemGroup {// 注册的物品栏private static final ItemGroup ZER_GROUP FabricItemGroup.builder()// 物品栏显示的名称// Text.translatable表示根据lang文件下的不同语言来翻译名称.displayName(Text.translatable(itemgroup.tutorialmod))// 选择一个物品作为物品栏图标.icon(() - new ItemStack(ModItems.ZER_INGOT))// 选择你要加入物品栏的物品.entries((displayContext, entries) - {entries.add(ModItems.ZER_DIAMOND);entries.add(ModItems.ZER_INGOT);}).build();// 注册物品栏public static void registerItemGroup() {TutorialMod.LOGGER.debug(TutorialMod.MOD_ID 已经创建好物品栏了);// 在这里注册自定义物品栏Registry.register(Registries.ITEM_GROUP,new Identifier(TutorialMod.MOD_ID, zer_group),ZER_GROUP);}
}别忘了在 en_us.json 或者 zh_cn.json 添加对应名称翻译哦
{item.tutorialmod.zer_diamond: Zhillers Diamond,item.tutorialmod.zer_ingot: Zhillers Ingot,itemgroup.tutorialmod: Zhillers ItemGroup
}打开游戏发现创造模式下物品栏多出来了一个点进去就可以看见我们注册好的物品栏了
物品栏内部有两个我们上一期制作的自定义物品 创建方块 资源文件下载https://kaupenjoe.net/files/Minecraft/Videos/MBKJ2023-51%20-%20Fabric%201.20.X%20Blocks/ 方块注册流程
方块注册和物品注册基本上没啥区别
但要注意对于方块需要注册两次一次是注册手上拿着的物品一次是注册放在地上的方块
创建管理方块注册的类com/example/block/ModBlocks.json
package com.example.block;import com.example.TutorialMod;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;public class ModBlocks {// copyOf表示直接复制现有方块的属性比如硬度、可开采性以及亮度可堆叠啥的// sounds表示直接复制现有方框的声音如行走表面声音、破坏声音public static final Block ZER_BLOCK regBlock(zer_block,new Block(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).sounds(BlockSoundGroup.AMETHYST_BLOCK)));public static final Block RAW_ZER_BLOCK regBlock(raw_zer_block,new Block(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).sounds(BlockSoundGroup.AMETHYST_BLOCK)));// 再注册可放置的实体方块private static Block regBlock(String name, Block block){regBlockItem(name, block);return Registry.register(Registries.BLOCK,new Identifier(TutorialMod.MOD_ID,name),block);}// 先注册方块物品private static Item regBlockItem(String name, Block block){return Registry.register(Registries.ITEM,new Identifier(TutorialMod.MOD_ID,name),new BlockItem(block, new FabricItemSettings()));}public static void registerModBlocks(){TutorialMod.LOGGER.debug(TutorialMod.MOD_ID的方块已加载完毕);}
}最后别忘了在主入口中执行初始化
package com.example;import com.example.block.ModBlocks;
import com.example.item.ModItemGroup;
import com.example.item.ModItems;
import net.fabricmc.api.ModInitializer;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class TutorialMod implements ModInitializer {...Overridepublic void onInitialize() {ModItems.registerModItems();ModBlocks.registerModBlocks(); // 初始化方块管理类ModItemGroup.registerItemGroup();}
}材质纹理处理
blockstates
方块状态文件夹下创建 blockstates/zer_block.json
{variants: {: {model: tutorialmod:block/zer_block}}
}models/block
在这里设置方块的渲染模型创建文件 models/block/zer_block.json
{parent: block/cube_all,textures: {all: tutorialmod:block/zer_block}
}models/item
创建手持方块的模型创建文件 models/item/zer_block.json
这里不需要写啥了直接继承前面定义的方块模型即可
{parent: tutorialmod:block/zer_block
}然后就是翻译文件的内容添加啦这里就不多做赘述了大家按照这个模板来做就可以了 成果展示
中途我切换了一下资源包改成了下面红色的宝石之前是蓝色的纹理名称都没有改变只是图片变了而已没有影响滴~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89320.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!