MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    [1.12.2]Ma Barre d'énergie ne veux pas se mettre a jour(ou n est pas syncro)

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.12.2
    59 Messages 4 Publieurs 2.8k Vues 4 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par robin4002

      Bonsoir,
      Les variables static ont une seule instance par classe.
      Ton problème de variable partagé vient de là, ton energyStorage n’a rien à faire en static …
      Et les capabilities n’ont rien à voir dans cette histoire.

      EDIT : j’ai fusionné les deux demandes comme c’est lié au même problème.

      1 réponse Dernière réponse Répondre Citer 0
      • HeavenH Hors-ligne
        Heaven
        dernière édition par Heaven

        merci 🙂 a toi Robin je vais enlevé le static 🙂 mais comment vais je faire pour aller chercher energystorage car sans le static ca me fait un Reported exception thrown (NPE ) ?

        logs:
        https://hastebin.com/ayucunalil.rb

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Le jeu crash car tu as un NPE à la ligne 68 de ElementEnergyStored.java.
          Reste à trouver ce qui est null et pourquoi.

          1 réponse Dernière réponse Répondre Citer 0
          • HeavenH Hors-ligne
            Heaven
            dernière édition par Heaven

            bah enfaite c est le tile.energyrstorage… dans ElementEnergyStored qui fait un npe si EnergyStorage energystorage = new …est pas static
            Edit après 1h de recherche: je ne trouve toujours pas

            1 réponse Dernière réponse Répondre Citer 0
            • HeavenH Hors-ligne
              Heaven
              dernière édition par

              ca marche toujours pas ;(

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                C’est tile ou energyrstorage qui est null ? Il est censé être initialisé où ?

                1 réponse Dernière réponse Répondre Citer 0
                • HeavenH Hors-ligne
                  Heaven
                  dernière édition par

                  c est a dire qui est censé être initialiser et ou ? car de base c est pas tile.energystorage mais storage qui est public IEnergy storage mais ca marche pas si je met ca (meme avec le code de Thermal) et c est tile qui est null si je dis pas de bêtises

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    L’endroit où la variable est initialisé c’est là où il y a nomVariable = new MonObjet(...)

                    1 réponse Dernière réponse Répondre Citer 0
                    • HeavenH Hors-ligne
                      Heaven
                      dernière édition par robin4002

                      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 )

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        Normal, tu génére un tile entity relié à rien.
                        Faut get la tile qui se trouve dans le monde via world.getTileEntity(pos).

                        1 réponse Dernière réponse Répondre Citer 0
                        • HeavenH Hors-ligne
                          Heaven
                          dernière édition par Heaven

                          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 😞
                          text alternatif

                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002R Hors-ligne
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                            dernière édition par

                            Mais qu’est-ce que cette horreur qui n’a aucun sens ?

                            à quel endroit tu appeles le constructeur de ElementEnergyStored ?

                            1 réponse Dernière réponse Répondre Citer 0
                            • HeavenH Hors-ligne
                              Heaven
                              dernière édition par Heaven

                              dans mon Gui dans l initGui();

                              @Override
                                  public void initGui() {
                              
                                      super.initGui();
                                      addElement(new ElementEnergyStored(this, 150, 20, tile.getEnergyStorage()));
                                  }
                              
                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                Voilà, donc tu as déjà le tile ici …

                                1 réponse Dernière réponse Répondre Citer 0
                                • HeavenH Hors-ligne
                                  Heaven
                                  dernière édition par Heaven

                                  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

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002R Hors-ligne
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                    dernière édition par

                                    Fais une archive de ton dossier mdk et envoies-le-moi, je vais regarder …

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • HeavenH Hors-ligne
                                      Heaven
                                      dernière édition par Heaven

                                      ok
                                      le voici: projet NugarMod1.12.2
                                      (le mod ne contient pas de virus bien sur )

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • robin4002R Hors-ligne
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                        dernière édition par robin4002

                                        Il y un truc qui va pas sur ta workspace …
                                        d5ff89f3-620e-4fcf-b614-19ff14dc086f-image.png
                                        J’ai aussi eu des JEI avant ça, que j’ai pu régler avec un gradlew 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.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • HeavenH Hors-ligne
                                          Heaven
                                          dernière édition par Heaven

                                          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

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • robin4002R Hors-ligne
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                            dernière édition par

                                            J’ai déjà complètement vidé le dossier mods.
                                            Fais voir ton classpath sur eclipse ?

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB