Résolu Dégâts dans le désert
-
Au passage, vérifie le chemin de tes textures.
-
3 pages pour le pas résoudre un problème ? Revenons au premier code :
@‘ZeAmateis’://Degat Desert int i = MathHelper.floor_double(this.posX); int j = MathHelper.floor_double(this.posZ); ItemStack helmet = event.entityLiving.getCurrentItemOrArmor(4); if(event.entityLiving.worldObj.getBiomeGenForCoords(i, j).getFloatTemperature() > 1.0F) { if (helmet != null) { if (helmet.getItem() == Item.helmetIron && helmet.getItem() == Item.helmetLeather && helmet.getItem() == Item.helmetDiamond && helmet.getItem() == Item.helmetIron) { return; } } else { if (event.entityLiving.worldObj.rand.nextInt(100) == 0) { event.entityLiving.attackEntityFrom(DamageSource.onFire, 1.0F); } } }
Nous avons :
si(la température du biome est plus chaud que 1.0F) { si(le casque n est pas null) { si(le casque est un casque en fer ET le casque est un casque en cuivre ET le casque est un casque en diamant ET le casque est un casque en fer) { // Déjà, pourquoi deux fois le casque en fer (j'imagine un fail avec l'or) et ensuite, tu as déjà vu un joueur avec 3 casque en même temps ? on stop le void. } } sinon { brûler le joueur // ce ne doit pas être ici, car du coup il brûle le joueur, si le casque n est pas null. Donc forcement, n'importe quel casque. } }
Le bon code étant donc :
//Degat Desert int i = MathHelper.floor_double(this.posX); int j = MathHelper.floor_double(this.posZ); ItemStack helmet = event.entityLiving.getCurrentItemOrArmor(4); if(event.entityLiving.worldObj.getBiomeGenForCoords(i, j).getFloatTemperature() > 1.0F) { if (helmet != null) { if (helmet.getItem() == Item.helmetIron || helmet.getItem() == Item.helmetLeather || helmet.getItem() == Item.helmetDiamond || helmet.getItem() == Item.helmetGold) { return; } else { if (event.entityLiving.worldObj.rand.nextInt(100) == 0) { event.entityLiving.attackEntityFrom(DamageSource.onFire, 1.0F); } } } else { if (event.entityLiving.worldObj.rand.nextInt(100) == 0) { event.entityLiving.attackEntityFrom(DamageSource.onFire, 1.0F); } } }
Mais pour des questions d’optimisation, j’utiliserai plutôt :
//Degat Desert int i = MathHelper.floor_double(this.posX); int j = MathHelper.floor_double(this.posZ); ItemStack helmet = event.entityLiving.getCurrentItemOrArmor(4); if(event.entityLiving.worldObj.getBiomeGenForCoords(i, j).getFloatTemperature() > 1.0F && this.shouldDamageEntity(helmet) && event.entityLiving.worldObj.rand.nextInt(100) == 0) { event.entityLiving.attackEntityFrom(DamageSource.onFire, 1.0F); }
Avec plus bas cette méthode :
private boolean shouldDamageEntity(ItemStack helmet) { if(helmet != null && (helmet.getItem() == Item.helmetIron || helmet.getItem() == Item.helmetLeather || helmet.getItem() == Item.helmetDiamond || helmet.getItem() == Item.helmetGold)) { return false; } return true; }
-
Je regarde tout ça
C’est nickel ça fonctionne ! Et l’opti’ est sympa ! Merci les gars !
Que faut-il que je fasse pour enregistrer mes items pour qu’il survivent à l’update 1.7 car j’ai essayé un GameRegister.registerItem() mais ne fonctionne pas …
-
GameRegistry.registerItem(objet de l’item, “nom dans le game data”);
Il faut juste ça. -
J’ai ça:
GameRegistry.registerItem(ItemsManager.zombieHead, “zombieHead”);
zombieHead = (new Item(zombieHeadID)).setTextureName(“viruz:zombieHead”).setUnlocalizedName(“zombieHead”);
Mais toujours ces messages
-
Il faut enregistrer l’item après que l’item soit initialisé.
-
C’est bon nickel !