用户:MashKJo/1.12.2模组开发教程/2.基础概念:修订间差异

→‎享元设计模式:​ // Edit via Wikiplus
第12行: 第12行:
  Minecraft.getMinecraft().getTextureManager().bindTexture(location);
  Minecraft.getMinecraft().getTextureManager().bindTexture(location);


Minecraft就会尝试去原版和各个模组的.jar包中找路径为<code>assets/minecraft/textures/items/apple.png</code>的文件,代码中的<code>TextureManager#bindTexture</code>的作用是把图片绑定到当前渲染器,那么,苹果的材质文件就会被绑定。当然,这段代码看不懂没关系。笔者只是想说明ResourceLocation对象的使用机制:一般情况下,它实际上能指代一个位于某个.jar包中路径为<code>"assets/" + resourceDomain + "/" + resourcePath</code>的文件。
Minecraft就会尝试去原版和各个模组的.jar包中找路径为<code>assets/minecraft/textures/items/apple.png</code>的文件,代码中的<code>TextureManager#bindTexture</code>的作用是把图片绑定到当前渲染器,那么,苹果的材质文件就会被绑定。当然,这段代码看不懂没关系。作者只是想说明ResourceLocation对象的使用机制:一般情况下,它实际上能指代一个位于某个.jar包中路径为<code>"assets/" + resourceDomain + "/" + resourcePath</code>的文件。


但是也不是所有时候都是如此,比如在设定物品的模型文件的时候,resourcePath就不需要打那么多了,只需要<code>new ResourceLocation(modid, itemid)</code>就可以了,比如<code>new ResourceLocation("minecraft", "apple")</code>。所以,笔者的建议是,如果是你自定义的渲染操作,你按照“路径为<code>"assets/" + resourceDomain + "/" + resourcePath</code>”的规则,是没问题的;但是如果你要用Minecraft或Forge内置的某些方法,其中要传入一个ResourceLocation对象,那你就要小心了,还是点进去看看Minecraft或Forge的代码到底是怎么处理这个ResourceLocation的吧。
但是也不是所有时候都是如此,比如在设定物品的模型文件的时候,resourcePath就不需要打那么多了,只需要<code>new ResourceLocation(modid, itemid)</code>就可以了,比如<code>new ResourceLocation("minecraft", "apple")</code>。所以,作者的建议是,如果是你自定义的渲染操作,你按照“路径为<code>"assets/" + resourceDomain + "/" + resourcePath</code>”的规则,是没问题的;但是如果你要用Minecraft或Forge内置的某些方法,其中要传入一个ResourceLocation对象,那你就要小心了,还是点进去看看Minecraft或Forge的代码到底是怎么处理这个ResourceLocation的吧。


那么,那个只有一个resourceName的构造方法是怎么回事呢?再举个例子,我可以这样:
那么,那个只有一个resourceName的构造方法是怎么回事呢?再举个例子,我可以这样:
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,430

个编辑