问题出在 EntityPlayer.posX 上,它在数值之间出现了“闪烁”。

huangapple go评论111阅读模式
英文:

Issue with EntityPlayer.posX "flickering" between values

问题

基本上我正在尝试创建一个坐标显示模组。在使用posX/Y/Z(此示例使用X)访问玩家位置时,显示的坐标会出现奇怪的“闪烁”现象。您可以在视频中看到。

  1. @SubscribeEvent
  2. public void playerTick(PlayerTickEvent event) {
  3. EntityPlayer player = event.player;
  4. posX = player.posX;
  5. System.out.println(posX); // 用于调试,也出现了问题,这意味着不是round()函数的问题
  6. }
  7. @SubscribeEvent
  8. public void renderOverlay(RenderGameOverlayEvent event) {
  9. if (event.type == RenderGameOverlayEvent.ElementType.TEXT) {
  10. drawString(renderer, String.valueOf(round(posX, 8)), 0, 0, -1);
  11. }
  12. }

我认为这可能与我使用的playerTick有关,但我对Forge和Java都不太熟悉,不知道是否可以使用其他方式(假设这是问题所在)。

英文:

So basically I'm trying to create a coords display mod. When accessing the player's position with posX/Y/Z (this example uses X) there is a weird "flickering" with the displayed coordinate. You can see it in this video.

  1. @SubscribeEvent
  2. public void playerTick(PlayerTickEvent event) {
  3. EntityPlayer player = event.player;
  4. posX = player.posX;
  5. System.out.println(posX); // Used to debug, also had the issue, meaning it isn't an issue with round()
  6. }
  7. @SubscribeEvent
  8. public void renderOverlay(RenderGameOverlayEvent event) {
  9. if (event.type == RenderGameOverlayEvent.ElementType.TEXT) {
  10. drawString(renderer, String.valueOf(round(posX, 8)), 0, 0, -1);
  11. }
  12. }

I think this might have something to do with me using playerTick or something, but I'm new to forge and Java and don't know what I might use instead (assuming that is the problem).

答案1

得分: 0

这是我使用了PlayerTickEvent而不是ClientTickEvent引起的问题。

  1. public void clientTick(ClientTickEvent event) {
  2. EntityPlayerSP player = mc.thePlayer;
  3. if (player == null) return;
  4. posX = player.posX;
  5. }

因为当不在游戏中时,需要if (player == null) return;,否则mc.thePlayer会返回null,导致.posX引发崩溃。

英文:

It was an issue with me using PlayerTickEvent instead of ClientTickEvent.

  1. public void clientTick(ClientTickEvent event) {
  2. EntityPlayerSP player = mc.thePlayer;
  3. if (player == null) return;
  4. posX = player.posX
  5. }

if (player == null) return; is required because when not in game, mc.thePlayer returns null so .posX causes a crash.

huangapple
  • 本文由 发表于 2020年9月12日 23:52:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/63862148.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定