Mc1.16forge官混教程/教补-#3 物品材质覆盖注意要点[分支1]
本篇只是一个注意事项,非教程向。其深度了解难度较大,要涉及到eventbus等东西,或许之后会讲,所以叫分支1。
首先,什么是材质覆盖:材质覆盖是在代码中通过输出某一特定变量值,以更改物品材质,大概是这样。比如说弓,指南针之类的物品。
代码部分
如下,是关于一个材质覆盖的代码。
public static void etedatasAccumulation(FMLClientSetupEvent event){//FMLClientSetupEvent客户端设置事件,大概是指定event.enqueueWork(()->{ItemModelsProperties.register(ItemRegistry.e_t_experiment_data.get(),new ResourceLocation(Utils.MOD_ID,"quantity"),(ItemStack, ClientWorld, LivingEntity)->ItemStack.getCount());})}
因为太长了,长得可能有点奇怪,将就着看看吧)
首先是调用ItemModelsProperties . register,可以在这里看到官方对于这个方法的写法是:
public static void register(Item p_239418_0_, ResourceLocation p_239418_1_, IItemPropertyGetter p_239418_2_) {PROPERTIES.computeIfAbsent(p_239418_0_, (p_239416_0_) -> {return Maps.newHashMap();}).put(p_239418_1_, p_239418_2_);
}
着重看看这个输入内容就好。Item处get一下我们注册过的一个物品,比如我这里就是
ItemRegistry . e_t_experiment_data . get()
^注册文件名 ^物品名字 ^固定写法
ResourceLocation传入的modid与一个可以自选的name,这里我们传入的是quantity,在稍后关于json配置中会提到。
至于第三个IItemPropertyGetter……传入一个lambda表达式,在三个类下可以get到挺多东西的,自己琢磨吧,暂时没有深入研究(摆)。
Json文件配置部分
Boson教程中给出的配置挺简单的:
{"parent": "item/generated","textures": {"layer0": "item/iron_ingot"},"overrides": [{"predicate": {"boson:size": 16},"model": "item/gold_ingot"}]
}
看这个boson : size,教程中在代码部分的string部分内容写的是size。如果按照我在上面写的,这里应该是[你的modid] : quantity。
但这回有一点误导性:layer0对应的是材质没错,这个item/gold_ingot是什么?
教程中是直接调用的原版的材质,但这或许会让想要使用自己mod内材质的朋友们有点困扰。这里来说说到底要怎么写:
首先,教程中使用的item/gold_ingot使用的是原版材质,而我们知道mod材质前面要加mod名。也就是说,这是默认的使用minecraft:item/gold_ingot。如果使用的是mod内新增的贴图而没有在前面加上[mod名:]部分,就会默认去mc原版材质寻找,造成报错。
其次,这个model对应的值并非其贴图位置,而是这个名字对应的json文件位置。这样一来,我们还要在对应位置为新的材质添加json。
可以这么来看会直观一点:
效果如下:
(这几堆数量不同)
Mc1.16forge官混教程/教补-#3 物品材质覆盖注意要点[分支1]相关推荐
- Mc1.16forge官混教程/教补-#1 开发环境配置的注意要点
注意:本合集内容并不是完全的教程,而是针对mcforge的boson1.16教程(boson教程使用mcp混淆版开发,链接如下:Forge是什么 - Boson 1.16 Modding Tutori ...
- Mc1.16forge官混教程/教补-#5 官混方块写法差异与为方块赋予常见属性
写法差异 在教程中,对于定义一个方块的super一行是这么写的: super(Properties.create(Material.ROCK).hardnessAndResistance(5)); 在 ...
- Mc1.16forge官混教程/教补-#4 为物品赋予常用属性
首先先明确一下关于为物品赋予属性要怎么写入--只包含一些原版中常用的. public class Dt_crystal extends Item {public Dt_crystal() {super ...
- 好奇那些进了大厂的程序员面试前都做了哪些准备?Android大厂面试官全套教程教你:这样准备面试顺利拿到offer
同时由于疫情的关系,从去年开始倒闭的小公司特别多,进一步加剧了整体的就业形势.所以准备要裸辞的同学最好掂量下自己,除非已经没法忍受或者确实实力够硬,否则还是骑驴找马最好. 在工作中积累 当你还比较年轻 ...
- Gem5模拟器,详解官网教程Event-driven programming(五)
目录 一.解释一下gem5中的event-driven? 二.Creating a simple event callback (1)定义一个新的 C++ 类,并继承自 SimObject 抽象基类 ...
- ps右键不显示编辑选项_PS教程教你如何删除和修改图片文字却不留痕迹
来这里找志同道合的小伙伴! PS教程教你如何删除和修改图片文字 PS教程怎么取删除和修改图片文字呢? 你有没有很棒的图片,但因为上面有文字所以不想用它?Photoshop有一些非常好用的功能可以去掉文 ...
- [pytorch] 官网教程+注释
pytorch官网教程+注释 Classifier import torch import torchvision import torchvision.transforms as transform ...
- php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]
PHP培训教程教你快速打造PHP MVC框架[PHP基础教程] 简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开 ...
- MNE溯源fieldtrip官网教程
MNE溯源fieldtrip官网教程 Introduction 在本教程中,您可以找到有关如何使用最小范数估计进行源重构的信息,以重构单个主题的事件相关字段(MEG).我们将使用预处理教程中描述的数据 ...
最新文章
- JavaScript 对象属性作实参以及实参对象的callee属性
- Zip文件中文乱码问题解决方法(MAC->Windows)
- Jenkins 部署
- POJ2391 Floyd+离散化+二分+DINIC
- Docker管理面板Portainer中文汉化教程
- 信息学奥赛一本通(1188:菲波那契数列(2))
- 编写base64图片文件
- django 1.8 官方文档翻译: 3-1-1 URL调度器
- Linux进入救援系统怎么恢复,Linux在rescue(救援)模式修复GRUB (引导菜单)
- Xen虚拟机加入Puppet环境如何解决时间同步问题
- 常见的重要电脑英语及缩写
- ADC参数中的SNR、SNDR与SFDR的区别是什么
- H266VVC电子书开放下载啦
- Python dummy variable
- The system proxy was changed. Click to reenable capturing.
- 如何裁剪动图的大小?教你一分钟快速裁剪gif
- deepin系统的安装与问题解决
- 2022 - 软件构造复习
- 多彩HUAWEI nova 2系列手机炫丽亮相 自拍功能抢眼
- 动态添加/注册路由之addRoutes
热门文章
- 小米5s plus 刷机 国际版
- java fuoco车架_为速度而生 JAVA Fuoco铝合金气动公路
- 用*号输出字母C的图案。
- latex 分布符号_LaTeX最全的数学符号大全(更新中…… )
- 跨境电商平台哪个好?——扬帆际海
- 深入学习理解java虚拟机--1.win10 下构建64位 openJDK8
- MLY翻译 -- 2.How to use this book to help your team?
- 一款支持http与dubbo协议互相转换的网关
- 【C语言语法】表达式与语句的区别与联系
- Quasi-Newton拟牛顿法(共轭方向法)