Non résolu [1.12.2]Ma Barre d'énergie ne veux pas se mettre a jour(ou n est pas syncro)
-
oui c est public TileentiyMachine() tile;
voila mon code:
package com.Nugarium.NuagrMod.machine; import cofh.redstoneflux.api.*; import cofh.redstoneflux.impl.EnergyStorage; import net.minecraft.util.ResourceLocation; 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; public TileEntityUpgradeArmorMachine tile; // If this is enabled, 1 pixel of energy will always show in the bar as long as it is non-zero. public static boolean alwaysShowMinimum = false; public ElementEnergyStored(GuiBase gui, int posX, int posY, EnergyStorage storage) { super(gui, posX, posY); tile = new TileEntityUpgradeArmorMachine(); 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.energyStorage.getMaxEnergyStored() < 0) { list.add("Infinite RF"); } else { list.add(StringHelper.formatNumber(tile.energyStorage.getEnergyStored()) + " / " + StringHelper.formatNumber(tile.energyStorage.getMaxEnergyStored()) + " RF"); } } public int getScaled() { if (tile.energyStorage.getMaxEnergyStored() <= 0) { return sizeY; } long fraction = (long) tile.energyStorage.getEnergyStored() * sizeY / tile.energyStorage.getMaxEnergyStored(); return alwaysShowMinimum && tile.energyStorage.getEnergyStored() > 0 ? Math.max(1, MathHelper.round(fraction)) : MathHelper.round(fraction); } }
et si je fait ca ca ne marche pas (la texture ce load pas )
-
Normal, tu génére un tile entity relié à rien.
Faut get la tile qui se trouve dans le monde via world.getTileEntity(pos). -
oui mais le problème c est que je n est pas la fontion World ni BlockPos donc comment je pourrait faire pour appeler ces deux classes ?
ca ca marcherais ?
public TileentityMachine tile; public BlockPos pos; public ElementEnergyStored(){ tile.getWorld().getTileEntity(pos); }
j ai essayer et ca n a pas marcher la barre ne se draw meme pas
-
Mais qu’est-ce que cette horreur qui n’a aucun sens ?
à quel endroit tu appeles le constructeur de ElementEnergyStored ?
-
dans mon Gui dans l initGui();
@Override public void initGui() { super.initGui(); addElement(new ElementEnergyStored(this, 150, 20, tile.getEnergyStorage())); }
-
Voilà, donc tu as déjà le tile ici …
-
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; // If this is enabled, 1 pixel of energy will always show in the bar as long as it is non-zero. 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
-
Fais une archive de ton dossier mdk et envoies-le-moi, je vais regarder …
-
ok
le voici: projet NugarMod1.12.2
(le mod ne contient pas de virus bien sur ) -
Il y un truc qui va pas sur ta workspace …
J’ai aussi eu des JEI avant ça, que j’ai pu régler avec ungradlew clean
+ remplacer le compile par deobcompile pour JEI dans le build.gradle mais pour redstoneflux je ne vois pas où est le souci.
+ Le même soucis avec pleins d’autres mods en virant tout ce qui sont était dans le dossier mods du dossier run. -
c’est a cause de l api de RedstoneFlux qui est dans mon mod mais je n ai pas se problème pourtant ?
il faut peut être essayer de mettre le mod redstone flux dans le dossier mod avec les autre mod que j ai mis ou alors recréer un mod et met mon src a la place de l autre c est ce que j ai fait quand j’avais eu se problème -
J’ai déjà complètement vidé le dossier mods.
Fais voir ton classpath sur eclipse ? -
j ai pas éclipse ;( moi c est idea
-
Bha montre-moi le classpath d’idea dans ce cas.
-
voila:
-
c’est sans doute pour ça, si tu as mis l’api redstoneflux directement dans ton code, si tu l’ajoutes en plus en dépendances, ca risque de planter. Tente de retirer l’API de ton code et réessaye
-
C’est pas ce que je voulais, je l’ai aussi ça.
Le classpath ce sont toutes tes bibliothèques externes + les lib de Java.
Ce qui m’intéresse surtout c’est savoir si tu as les mods ici. -
a oui mais il faut enlevé RedstoneFlux car le code est déjà dans le code de mon mod et on peux pas faire autrement Flow Arg car je change des choses a l intérieure de l api
-
@Heaven a dit dans [1.12.2]Ma Barre d'énergie ne veux pas se mettre a jour(ou n est pas syncro) :
car je change des choses a l intérieure de l api
Donc tu n’as pas compris le principe d’un api …
Je ne sais même pas comment ça se fait que ton jeu se lance chez toi.Moi je m’arrête là, désolé mais il y a trop de chose qui ne va pas, j’ai plus la motivation de t’aider.