本篇只是一个注意事项,非教程向。其深度了解难度较大,要涉及到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]相关推荐

  1. Mc1.16forge官混教程/教补-#1 开发环境配置的注意要点

    注意:本合集内容并不是完全的教程,而是针对mcforge的boson1.16教程(boson教程使用mcp混淆版开发,链接如下:Forge是什么 - Boson 1.16 Modding Tutori ...

  2. Mc1.16forge官混教程/教补-#5 官混方块写法差异与为方块赋予常见属性

    写法差异 在教程中,对于定义一个方块的super一行是这么写的: super(Properties.create(Material.ROCK).hardnessAndResistance(5)); 在 ...

  3. Mc1.16forge官混教程/教补-#4 为物品赋予常用属性

    首先先明确一下关于为物品赋予属性要怎么写入--只包含一些原版中常用的. public class Dt_crystal extends Item {public Dt_crystal() {super ...

  4. 好奇那些进了大厂的程序员面试前都做了哪些准备?Android大厂面试官全套教程教你:这样准备面试顺利拿到offer

    同时由于疫情的关系,从去年开始倒闭的小公司特别多,进一步加剧了整体的就业形势.所以准备要裸辞的同学最好掂量下自己,除非已经没法忍受或者确实实力够硬,否则还是骑驴找马最好. 在工作中积累 当你还比较年轻 ...

  5. Gem5模拟器,详解官网教程Event-driven programming(五)

    目录 一.解释一下gem5中的event-driven? 二.Creating a simple event callback (1)定义一个新的 C++ 类,并继承自 SimObject 抽象基类 ...

  6. ps右键不显示编辑选项_PS教程教你如何删除和修改图片文字却不留痕迹

    来这里找志同道合的小伙伴! PS教程教你如何删除和修改图片文字 PS教程怎么取删除和修改图片文字呢? 你有没有很棒的图片,但因为上面有文字所以不想用它?Photoshop有一些非常好用的功能可以去掉文 ...

  7. [pytorch] 官网教程+注释

    pytorch官网教程+注释 Classifier import torch import torchvision import torchvision.transforms as transform ...

  8. php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]

    PHP培训教程教你快速打造PHP MVC框架[PHP基础教程] 简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开 ...

  9. MNE溯源fieldtrip官网教程

    MNE溯源fieldtrip官网教程 Introduction 在本教程中,您可以找到有关如何使用最小范数估计进行源重构的信息,以重构单个主题的事件相关字段(MEG).我们将使用预处理教程中描述的数据 ...

最新文章

  1. JavaScript 对象属性作实参以及实参对象的callee属性
  2. Zip文件中文乱码问题解决方法(MAC->Windows)
  3. Jenkins 部署
  4. POJ2391 Floyd+离散化+二分+DINIC
  5. Docker管理面板Portainer中文汉化教程
  6. 信息学奥赛一本通(1188:菲波那契数列(2))
  7. 编写base64图片文件
  8. django 1.8 官方文档翻译: 3-1-1 URL调度器
  9. Linux进入救援系统怎么恢复,Linux在rescue(救援)模式修复GRUB (引导菜单)
  10. Xen虚拟机加入Puppet环境如何解决时间同步问题
  11. 常见的重要电脑英语及缩写
  12. ADC参数中的SNR、SNDR与SFDR的区别是什么
  13. H266VVC电子书开放下载啦
  14. Python dummy variable
  15. The system proxy was changed. Click to reenable capturing.
  16. 如何裁剪动图的大小?教你一分钟快速裁剪gif
  17. deepin系统的安装与问题解决
  18. 2022 - 软件构造复习
  19. 多彩HUAWEI nova 2系列手机炫丽亮相 自拍功能抢眼
  20. 动态添加/注册路由之addRoutes

热门文章

  1. 小米5s plus 刷机 国际版
  2. java fuoco车架_为速度而生 JAVA Fuoco铝合金气动公路
  3. 用*号输出字母C的图案。
  4. latex 分布符号_LaTeX最全的数学符号大全(更新中…… )
  5. 跨境电商平台哪个好?——扬帆际海
  6. 深入学习理解java虚拟机--1.win10 下构建64位 openJDK8
  7. MLY翻译 -- 2.How to use this book to help your team?
  8. 一款支持http与dubbo协议互相转换的网关
  9. 【C语言语法】表达式与语句的区别与联系
  10. Quasi-Newton拟牛顿法(共轭方向法)