oui mais je vois pas le rapport car la classe TileentityMachine je l appelle de la meme manière pour tile.getEnergyStorage() c est a dire public TileentityMachine tile; je n utilise pas de world.getTileEntity(pos)
arpes je peux faire ca
| package com.Nugarium.NuagrMod.machine; |
| |
| |
| import cofh.redstoneflux.api.*; |
| import cofh.redstoneflux.impl.EnergyStorage; |
| import net.minecraft.util.ResourceLocation; |
| import net.minecraft.util.math.BlockPos; |
| import net.minecraft.world.World; |
| |
| import java.util.List; |
| |
| |
| |
| public class ElementEnergyStored extends ElementBase { |
| |
| public static final ResourceLocation DEFAULT_TEXTURE = new ResourceLocation(GuiProps.PATH_ELEMENTS + "energy.png"); |
| public static final int DEFAULT_SCALE = 42; |
| |
| public EnergyStorage storage; |
| private TileEntityUpgradeArmorMachine tile; |
| |
| |
| |
| public static boolean alwaysShowMinimum = false; |
| |
| public ElementEnergyStored(GuiBase gui, int posX, int posY, EnergyStorage storage) { |
| |
| |
| super(gui, posX, posY); |
| |
| this.storage = storage; |
| this.texture = DEFAULT_TEXTURE; |
| this.sizeX = 16; |
| this.sizeY = DEFAULT_SCALE; |
| |
| this.texW = 32; |
| this.texH = 64; |
| } |
| |
| public ElementEnergyStored setAlwaysShow(boolean show) { |
| |
| alwaysShowMinimum = show; |
| return this; |
| } |
| |
| @Override |
| public void drawBackground(int mouseX, int mouseY, float gameTicks) { |
| |
| int amount = getScaled(); |
| RenderHelper.bindTexture(texture); |
| drawTexturedModalRect(posX, posY, 0, 0, sizeX, sizeY); |
| drawTexturedModalRect(posX, posY + DEFAULT_SCALE - amount, 16, DEFAULT_SCALE - amount, sizeX, amount); |
| } |
| |
| @Override |
| public void drawForeground(int mouseX, int mouseY) { |
| |
| } |
| |
| @Override |
| public void addTooltip(List<String> list) { |
| |
| if (tile.getMaxEnergyStored() < 0) { |
| list.add("Infinite RF"); |
| } else { |
| list.add(StringHelper.formatNumber(tile.getEnergyStored()) + " / " + StringHelper.formatNumber(tile.getMaxEnergyStored()) + " RF"); |
| } |
| } |
| |
| public int getScaled() { |
| |
| |
| if (tile.getMaxEnergyStored() <= 0) { |
| return sizeY; |
| } |
| long fraction = (long) this.tile.getEnergyStored() * sizeY / this.tile.getMaxEnergyStored(); |
| |
| return alwaysShowMinimum && this.tile.getEnergyStored() > 0 ? Math.max(1, MathHelper.round(fraction)) : MathHelper.round(fraction); |
| } |
| |
| } |
| |
dans la tile les fonctions
| @Override |
| public int getEnergyStored() { |
| |
| return energyStorage.energy; |
| } |
| |
| @Override |
| public int getMaxEnergyStored() { |
| |
| return energyStorage.capacity; |
| } |
mais ca fait aussi un NPE