Получение энергии и её отображение в гуи

Версия Minecraft
1.12.2
47
1
Всем привет! Во время работы над механизмом, у меня возникло два вопроса, которые хотелось бы разрешить.
У меня есть тайл, в котором определено поле
private BasicMachineStorage storage = new BasicMachineStorage(50000);
И целочисленная переменная, которая хранит текущий запас энергии.
Собственно вопрос: как мне принимать энергию от внешних блоков, например от двигателей из TE?
Код BasicMachineStorage.

Java:
public class BasicMachineStorage extends EnergyStorage
{
    protected int energy;
    protected int capacity;
    protected int maxReceive;
    protected int maxExtract;

    public BasicMachineStorage(int capacity)
    {
        super(capacity);
    }
  
    public BasicMachineStorage(int capacity, int maxReceive, int maxExtract)
    {
        super(capacity, maxReceive, maxExtract);
    }
  

    @Override
    public int receiveEnergy(int maxReceive, boolean simulate) {
        return super.receiveEnergy(maxReceive, simulate);
    }

    @Override
    public int extractEnergy(int maxExtract, boolean simulate) {
        return super.extractEnergy(maxExtract, simulate);
    }

    @Override
    public int getEnergyStored() {
        return super.getEnergyStored();
    }

    @Override
    public int getMaxEnergyStored() {
        return 50000;
    }
  
  
    public EnergyStorage readFromNBT(NBTTagCompound nbt) {

        this.energy = nbt.getInteger("Energy");
        this.capacity = nbt.getInteger("Capacity");
        this.maxReceive = nbt.getInteger("Receive");
        this.maxExtract = nbt.getInteger("Extract");
        return this;
    }

  
    public NBTTagCompound writeToNBT(NBTTagCompound nbt) {

        nbt.setInteger("Energy", this.energy);
        nbt.setInteger("Capacity", this.capacity);
        nbt.setInteger("Receive", this.maxReceive);
        nbt.setInteger("Extract", this.maxExtract);
        return nbt;
    }

}


И второй вопрос: как реализовать красивое отображение текущей энергии в гуи, типо как на скриншоте.
Уточню: Как нарисовать мне понятно, интересует именно рендер надписи, который привязан к указателю (на скрине 0/20,000 RF).
2018-11-03_22.37.32.png
 

timaxa007

Модератор
5,831
409
672
интересует именно рендер надписи, который привязан к указателю
Используй ванильный метод для рендера текста tooltip'а. Типа так ElectricBoxAccumulatorGuiContainer.java#L55 - но может по другому на новой версии.
Чтобы он рендерился в определённой области, нужно установить условие с каких до каких координат мыши рендерить. ElectricBoxAccumulatorGuiContainer.java#L49
 
Сверху