Счётчик убийств.

Версия Minecraft
1.7.10
29
1
Пытаюсь сделать счётчик убийств.Ошибок никаких нету.Но убийства не считает.Стоит значение 0 и всё.
Много кода.
Java:
package com.revolution.suicide.entities.player;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.common.IExtendedEntityProperties;

public class ExtendedPlayer
  implements IExtendedEntityProperties
{
  public static final String EXT_PROP_NAME = "ExtendedPlayer";
  private EntityPlayer player;
  public int playersKilled = 0;
  public int zombiesKilled = 0;

  public void init(Entity entity, World world) {}

  public ExtendedPlayer(EntityPlayer player)
  {
    this.player = player;
  }

  public static final void register(EntityPlayer player)
  {
    player.registerExtendedProperties("ExtendedPlayer", new ExtendedPlayer(player));
  }

  public static final ExtendedPlayer get(EntityPlayer player)
  {
    return (ExtendedPlayer)player.getExtendedProperties("ExtendedPlayer");
  }

  public void copy(ExtendedPlayer props)
  {
    this.playersKilled = props.playersKilled;
    this.zombiesKilled = props.zombiesKilled;
  }

  public final void saveNBTData(NBTTagCompound compound)
  {
    NBTTagCompound properties = new NBTTagCompound();
    properties.setInteger("playersKilled", this.playersKilled);
    properties.setInteger("zombiesKilled", this.zombiesKilled);
    compound.setTag("ExtendedPlayer", properties);
  }

  public final void loadNBTData(NBTTagCompound compound)
  {
    NBTTagCompound properties = (NBTTagCompound)compound.getTag("ExtendedPlayer");
    this.playersKilled = properties.getInteger("playersKilled");
    this.zombiesKilled = properties.getInteger("zombiesKilled");
  }
}
Java:
drawString(this.mc.fontRenderer, "zombi: " + ExtendedPlayer.get(player).zombiesKilled, this.mc.displayWidth / 2 - 123, 75, 16777215);
drawString(this.mc.fontRenderer, "Player: " + ExtendedPlayer.get(player).playersKilled, this.mc.displayWidth / 2 - 123, 55, 16777215);
Java:
   @SubscribeEvent
   public void kill(LivingDeathEvent event)
   {
     if ((event.source.getEntity() instanceof EntityPlayer))
     {
       EntityPlayer player = (EntityPlayer)event.source.getEntity();
       if ((event.entity instanceof EntityPlayer))
       {
         ExtendedPlayer.get(player).playersKilled += 1;
         PacketDispatcher.sendTo(new SyncPlayerPropsMessage(player), (EntityPlayerMP)player);
       }
       else if ((event.entity instanceof EntityZombie))
       {
         ExtendedPlayer.get(player).zombiesKilled += 1;
         PacketDispatcher.sendTo(new SyncPlayerPropsMessage(player), (EntityPlayerMP)player);
       }
     }
   }
 
Последнее редактирование:

timaxa007

Модератор
5,831
409
672
А пакеты зарегистрированы? ExtendedPlayer добавлен в конструктор для Entity?
Пытаюсь сделать счётчик убийств.
Не верю. Верю в то, что ты пытаешься запустить чужой код.
 
29
1
@Cornette, удачи тебе с этим кодом.
Где ошибка, без понятия. Я тебе два мнения написал, на одно ответил, а на второе нет.
@timaxa007
После моих попыток исправить этот код.Я решил использовать твой.Всё хорошо,но проблема,мне нужно было переместить статистику киллов,я переместил в оконном режиме,но как только решил сделать полный экран всё сдвинулось,в чём может быть проблема?
 

will0376

Токсичная личность
2,072
55
584
big_1411639319_1401284567_image.jpg

они сдвигаются?
потому-что ты где-то что-то не так написал. эксперементируй. или перекинь в верхний-левый угол(его координаты 0,0)
 
29
1
Вот код:
Java:
    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void drawText(RenderGameOverlayEvent.Post event) {
        switch(event.type) {
        case TEXT:
            KillerPlayer killerPlayer = KillerPlayer.get(Minecraft.getMinecraft().thePlayer);
            if (killerPlayer == null) return;
            Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(
                    StatCollector.translateToLocal("Убито игроков") + ": " + killerPlayer.getKillPlayers() + "",
                    335, 220 + 2, 0xFFFFFF);
            Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(
                    StatCollector.translateToLocal("Убито зомби") + ": " + killerPlayer.getKillZombies() + "",
                    335, 220 + 12, 0xFFFFFF);
            break;
        default:return;
        }
    }
 
355
2
17
Сдвигается, потому что расширение экрана меняется, и "+335" это уже не край. Чтобы рисовать скраю получай ширину сжатого экрана:

Java:
ScaledResolution scaledResolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
int width = scaledResolution.getScaledWidth();

// Позиция по X : (width - 335)

А убийства не считает, потому что явно синхронизация плохо настроена (обмен пакетов).
 
Последнее редактирование:
Сверху