当前位置: 首页 > 知识库问答 >
问题:

Minecraft Modding“.bindTexture”不起作用

江瀚昂
2023-03-14

我在编程我的第一个Minecraft Mod时遇到了问题。

以下是源代码:

事件。爪哇:

public class Events { 
     @SubscribeEvent
     public void onRenderGameOverlay(RenderGameOverlayEvent event) {
          if(!event.isCancelable() && event.type == ElementType.EXPERIENCE && !Minecraft.getMinecraft().thePlayer.capabilities.isCreativeMode) {
               int posX = event.resolution.getScaledWidth() / 2 + 10;
               int posY = event.resolution.getScaledHeight() - 48;
               Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("tc:textures/gui/thermo-icon.png"));
               Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(posX + 9, posY + 3, 0, 9, 71, 3);
          }
     }
}

注意红色椭圆(我用GIMP添加了它),里面有一个黑色矩形(我没有用GIMP添加它)。。。它太小,没有纹理。。。

我遵循了这个教程(https://www.youtube.com/watch?v=oi41BAlRjtE),但仍然不起作用。。。

有什么解决办法吗?

更新-----

谢谢大家的帮助,我知道高度=3像素太小了。。。但现在我还有一个问题。。。

中间的浅灰色矩形应为正方形,黑色部分应为“圆形”。

有人知道错误比例的原因吗?谢谢!

共有1个答案

花稳
2023-03-14

太小了?

你想要多大尺寸的?

drawTexturedModalRect(posX + 9, posY + 3, 0, 9, 71, 3);

它不是71像素长,3像素高吗。。。你提供了什么?很难说。可能纹理正在工作,但您将其偏移了9个像素(当您仅绘制3个像素时),但看起来您使用的bindTexture是错误的。它接受从getTexture返回的int。

int i = mc.renderEngine.getTexture("/Items/GUI/mixer.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(i);

有一个很好的wiki/教程,介绍您正在进行的MOD类型,这可能会有所帮助:http://www.minecraftforge.net/wiki/Gui_Overlay#Mod_Code

 类似资料:
  • 因此,我在一个控制器中有一个非常简单的代码片段,在这个代码片段中,我使用从外部文件中获取数据,它工作得很好!但是当我使用时,我会在控制台中得到一个

  • 问题内容: 正则表达式似乎还可以,因为第一行将子字符串正确替换为“ helloworld”,但是后者却不匹配,因为我看不到“ whynothelloworld?”。在控制台上 问题答案: 期望 整个 字符串匹配,而不仅仅是子字符串。 使用正则表达式匹配器对象的方法代替:

  • 问题内容: 我的 活动无法正常进行。 以下是我一一尝试过的代码段,但无济于事: 使用方法实施 设定方法 使用方法 这是我完整的MainActivity.java文件: 问题答案: 我遇到了同样的问题,我发现Android非常注重布局XML。我将NavigationView作为DrawerLayout的第一个孩子,但是出于某些愚蠢的原因,它必须是最后一个孩子。因此,您的布局必须具有以下顺序的元素:

  • 问题内容: 在什么情况下,java的System.out.println无法产生任何输出。我在方法内部调用了它,有时在调用该方法时得到了println,而有时却没有。 更新:我还在println之后使用System.out.flush()。 更新:感谢您的调试帮助。原来,阻止调用打开了一个对话框,使输出看起来与正常顺序大相径庭。我以为我要打印消息的方法是在对话框关闭时被调用的,但是该方法本身就是在

  • 问题内容: 第一次运行此sql时,需要39秒,再次运行并增加SQL_NO_CACHE时,它似乎没有生效: 我在这里尝试了多种方法 甚至重新启动mysql服务器或更改表名,但我仍然不能让39秒运行此SQL 我替换了另一个SQL,并在第一次运行SQL_NO_CACHE上增加了一个,问题是一样的: 是什么原因?如何获得相同的SQL运行时? 我想找到一种方法来优化此SQL以执行39秒 顺便说一句: 不起作

  • 问题内容: 我正在尝试使用此API用Java开发TS3 Bot:https : //github.com/TheHolyWaffle/TeamSpeak-3-Java- API 我有一个客户端所有服务器组的列表: 现在,我检查列表是否包含组: 结果是错误的。我100%确定此列表包含ServerGroup。 已经使用Sysouts进行了检查。 这是ServerGroup类的链接:[https]( h