преобразование int в float

1 класс:
int manabarwidth = (int)(((float) props.getCurrentMana() / props.getMaxMana()) * 50);

2 класс:
public float getMaxMana() {
        return this.maxMana;
    }

    public Object getCurrentMana() {
        return this.currentMana;
    }

Крашит при заходе в мир, краш из-за 1 класса
 
ExtendedPlayer:
public class ExtendedPlayer implements IExtendedEntityProperties {

    public final static String EXT_PROP_NAME = "ExtendedPlayer";

    private final EntityPlayer player;

    private int currentMana, maxMana;

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

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

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


    @Override
    public void saveNBTData(NBTTagCompound compound) {
        NBTTagCompound properties = new NBTTagCompound();
        properties.setInteger("CurrentMana", this.currentMana);
        properties.setInteger("MaxMana", this.maxMana);
        compound.setTag(EXT_PROP_NAME, properties);
    }

    @Override
    public void loadNBTData(NBTTagCompound compound) {
        NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
        this.currentMana = properties.getInteger("CurrentMana");
        this.maxMana = properties.getInteger("MaxMana");
        System.out.println("[TUT PROPS] Mana from NBT: " + this.currentMana + "/" + this.maxMana);
    }

    @Override
    public void init(Entity entity, World world) {

    }

    public boolean consumeMana(int amount)
    {

        boolean sufficient = amount <= this.currentMana;
        this.currentMana -= (amount < this.currentMana ? amount : this.currentMana);
        return sufficient;
    }

    public void replenishMana()
    {
        this.currentMana = this.maxMana;
    }

    public float getMaxMana() {
        return this.maxMana;
    }

    public Object getCurrentMana() {
        return this.currentMana;
    }
}

GuiManaBar:
@SideOnly(Side.CLIENT)
public class GuiManaBar extends Gui {

    private Minecraft mc;
    private static final ResourceLocation texturepath = new ResourceLocation("magicproject", "textures/gui/mana_bar.png");


    public GuiManaBar(Minecraft mc)
    {
        super();
        this.mc = mc;
    }

    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void onRenderExperienceBar(RenderGameOverlayEvent event)
    {
        if (event.isCancelable() || event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
        {
            return;
        }

        ExtendedPlayer props = ExtendedPlayer.get(this.mc.thePlayer);
        if (props == null || props.getMaxMana() == 0)
        {
            return;
        }
        int xPos = 2;
        int yPos = 2;
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        this.mc.getTextureManager().bindTexture(texturepath);
        this.drawTexturedModalRect(xPos, yPos, 0, 0, 50, 4);
        int manabarwidth = (int)(((float) props.getCurrentMana() / props.getMaxMana()) * 50);
        System.out.println("[GUI MANA] Current mana bar width: " + manabarwidth);
        this.drawTexturedModalRect(xPos, yPos + 1, 0, 4, manabarwidth, 2);
    }
}


Magic:
    @Mod.EventHandler
    public static void postInit(FMLPostInitializationEvent event) {
        if (FMLCommonHandler.instance().getEffectiveSide().isClient())
            MinecraftForge.EVENT_BUS.register(new GuiManaBar(Minecraft.getMinecraft()));
    }
 

Вложения

  • crash-2021-09-19_03.49.40-client.txt
    11.9 KB · Просмотры: 3

TheAndrey

Редактор учебника
1,071
72
372
Методы ExtendedPlayer.getMaxMana() и ExtendedPlayer.getCurrentMana() должны иметь возвращаемый тип int в соответствии с типом поля. Откуда там Object взялся!? Собственно из-за него краш. Преобразование с объектными типами выполняется иначе.
 
Сверху