java - Minecraft 模组 ".bindTexture"不起作用

标签 java events minecraft minecraft-forge

我在编写第一个 Minecraft Mod 时遇到问题。

这是源代码:

Events.java:

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);
          }
     }
}

所以,我的问题是在 Minecraft 中它向我显示了以下内容: NOTE THE RED ELLIPSE

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

我按照本教程( https://www.youtube.com/watch?v=oi41BAlRjtE )进行操作,但仍然无法正常工作...

请问有什么解决办法吗?

更新 - - - - - -

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

Here is it

中心的浅灰色矩形应该是 正方形,黑色部分应该是“圆”。

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

最佳答案

太小?

您期望的尺寸是多少?

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);

有一个很好的维基/教程,介绍您正在做的模组,可能会有所帮助:http://www.minecraftforge.net/wiki/Gui_Overlay#Mod_Code

关于java - Minecraft 模组 ".bindTexture"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850530/

相关文章:

java - 二叉 TreeMap 形表示的麻烦

node.js - 在 Node.js 中 - 事件(EventEmitter 和 Listener Function 对象)和异步回调之间是否有任何关系

python - 无名函数作为函数参数?

java - 带有事件监听器的 Android 多线程

java - Minecraft Forge 方法数据类型

java - 将剩余的小数转换为周、天、小时、分钟、秒

java - Java HashSet<Long> 应该占用多少内存

java - 如何从java中的Array类类型对象中检索值?

Java/Swing如何处理不同的屏幕DPI和密度设置?

Java 乘法