Update Entity,Bloc Machine
-
Pourtant quand je regarde dans le TileEntity du furnace(ctrl + f) avec flag il n’y a que
boolean flag = this.furnaceBurnTime > 0;et ça
if (flag != this.furnaceBurnTime > 0) { flag1 = true; BlockFurnace.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); }du coup je re-envois pour voir si il n’y a pas de fautes … :s
public void updateEntity() { boolean flag = this.power > 0; boolean flag1 = false; if (hasPower() && isMacerating()) { this.power--; } if (!this.worldObj.isRemote) { if(this.power !=0 ||this.slots[0] != null){ if (this.power == 0 && this.canSmelt()){ if (this.power > 0) { flag1 = true; } } if (this.canSmelt() && this.hasPower() ) { ++this.cookTime; if (this.cookTime == this.maceratingSpeed) { this.cookTime = 0; this.smeltItem(); flag1 = true; } } else { this.cookTime = 0; } } if (flag != power > 0) { flag1 = true; PlateMachine.updateFurnaceBlockState(this.power > 0,this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.markDirty(); } if (!addedToEnet) onLoaded(); } -
Mets des System.out.println pour voir ce qu’il se passe.
-
Bon ça me spamme de “LA RECETTE MARCHE” xD
Mais Parcontre il semble que l’update ne se fasse pas -
Mets en plusieurs à plusieurs endroits et c’est mieux de nous dire où tu les a mis.
-
Bon voila le code de l’updateEntity
public void updateEntity() { boolean flag = this.power > 0; boolean flag1 = false; if (hasPower() && isMacerating()) { this.power–; } if (!this.worldObj.isRemote) { if(this.power !=0 ||this.slots[0] != null){ if (this.power == 0 && this.canSmelt()){ if (this.power > 0) { flag1 = true; } } if (this.canSmelt() && this.hasPower() ) { ++this.cookTime; System.out.println("la recette marche"); if (this.cookTime == this.maceratingSpeed) { this.cookTime = 0; this.smeltItem(); flag1 = true; } } else { this.cookTime = 0; } } if (flag != power > 0) { flag1 = true; PlateMachine.updateFurnaceBlockState(this.power > 0,this.worldObj, this.xCoord, this.yCoord, this.zCoord); System.out.println("update?"); } } if (flag1) { this.markDirty(); } if (!addedToEnet) onLoaded(); }Donc j’en ai mis 2,Hors ça m’en spam qu’un(“La recette marche”)
Il ne me spam pas de “update?” donc il y a forcement un problème avec leif(flag!= power > 0)ce qui empêche .updateFurnaceBlockState
-
Affiche la valeur de flag et la valeur de power > 0
-
Nope ça n’a rien changé
-
Non mais je sais très bien que ça va rien changer x)
Ce que je veux c’est la valeur de ces deux booleans x)Faut vraiment que je fasse un tutoriel pour expliquer comment déboguer du code.
-
boolean flag = this.power > 0;par contre l’autre boolean tu veux parler de this.power?
-
Ok, tu n’as rien compris.
Comme ça :public void updateEntity() { boolean flag = this.power > 0; boolean flag1 = false; if (hasPower() && isMacerating()) { this.power–; } if (!this.worldObj.isRemote) { if(this.power !=0 ||this.slots[0] != null){ if (this.power == 0 && this.canSmelt()){ if (this.power > 0) { flag1 = true; } } if (this.canSmelt() && this.hasPower() ) { ++this.cookTime; if (this.cookTime == this.maceratingSpeed) { this.cookTime = 0; this.smeltItem(); flag1 = true; } } else { this.cookTime = 0; } } System.out.println("flag ? " + flag); System.out.println("power > 0 ? " + Boolean.valueOf(power > 0)); if (flag != power > 0) { flag1 = true; PlateMachine.updateFurnaceBlockState(this.power > 0,this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.markDirty(); } if (!addedToEnet) onLoaded(); }Et je veux savoir ce qui s’affiche dans la console.
-
ah ok je n’avait vraiment pas compris x)
bon ça me spam:
flag ? true
power > 0 ? true -
Je trouve çà bizarre le “flag != power > 0”. çà veut dire qu’il faut que les 2 soit différents (par exemple l’un à true et l’autre à false) pour que la condition soit exécutée, que veux-tu faire vraiment ?
-
power > 0 est sur true même quand il n’y a rien dans ta machine ?
SCAREX -> c’est normal. flag vaut power > 0 au début de la fonction, donc lorsque la machine arrive à la fin, flag sera true et power > 0 sera faux, donc ça change. Et au début c’est l’inverse, flag faux false et power > 0 vaut true. Ça c’est le fonctionnement normal de ce code.
Or chez lui il y a un problème. -
Oui il est sur true même quand il n’y a rien
-
Dans ce cas il faut trouver pourquoi power est toujours supérieur à 0. Envoies ta classe entière.
-
le code entier http://pastebin.com/MEUewhyQ
-
public double injectEnergy(ForgeDirection forgeDirection, double v,
double v2) {
Tu appel cette fonction où ? Ton bloc fonctionne comment ?
Car s’il est fait de tel sorte que power est toujours > 0 il faut revoir la façon de détecter si ça fonctionne.
Le code du four ne correspond pas à ce que tu veux faire dans ce cas. -
Bon enfaite j’utilise IC2 api,mon bloc fonctionne avec leur energie.
Du coup on peux peut-être essayer avec le cooktime?
EDIT : le cookTime fonctionne