Problème Timer et Tp
-
on peut préciser le biome?
-
Non, il n’existe pas de fonction qui tp sur un biome, mais tu peux check le type de biome, et si c’est le biome voulu, tu tp.
-
comment faire?
-
J’aurai simplement remplacé ton :
entity.posX += 51;
entity.posZ += 51;
par :
entity.setLocation(entity.posX + 51, y, entity.posZ + 51);
et
entity.posX -= 51;
entity.posZ -= 51;
par :
entity.setLocation(entity.posX - 51, y, entity.posZ - 51);Le problème, c’est que même avec ça, ça fonctionnera très mal (en fait que si il y a un biome à 51 bloc du joueur en -x et -z ou en x et z).
Il faudrait un autre code plus adapter avec une boucle while pour ça. -
heu… on peut pas faire un test avec des coordonnée relative?
-
Ba si, là j’ai juste reprit ce que tu avais avant, c’est ton code x)
Pour les biomes le mieux serait faire des tests par 16 (taille d’un chunk)
Je pense a un truc du genre :int targetX = (int)entity.posX, int targetZ = (int)entity.posZ; do { targetX += 16; targetZ += 16; } while(entity.worldObj.getBiomeGenForCoords(targetX, targetZ) == BiomeGenBase.hell)Et la encore, ça check que en + +, il faut aussi check en - -, + - et - +. Je n’ai pas le temps de regarder en détail ce soir.
-
@‘robin4002’:
Blackout, utilise un Timer dans une fonction update est une très mauvaise idée. Je m’explique, le code va être lancé à chaque tick
Ah ok, je ne le savais pas désolé
Merci de m’avoir corrigé 
-
On peut pas plutôt: check dans un rayon si il y à un biome beach, calculer les coordonné, et le tp?
-
Le problème est finalement résolu!
private ChunkCoordinates findClosestBlockOfBiome(Entity e, BiomeGenBase b, double radius) { World w = e.worldObj; double min = Double.POSITIVE_INFINITY; ChunkCoordinates current = null; for(double x = -radius;x<=radius;x+=0.5) { for(double z = -radius;z<=radius;z+=0.5) { double dist = Math.sqrt(Math.pow((e.posX-(int)Math.floor(x+e.posX)),2)+Math.pow((e.posZ-(int)Math.floor(z+e.posZ)),2)); if(w.getBiomeGenForCoords((int)Math.floor(x+e.posX), (int)Math.floor(z+e.posZ)) == b && dist <= radius && min > dist) { min = dist; current = new ChunkCoordinates((int)Math.floor(x+e.posX), 0, (int)Math.floor(z+e.posZ)); } } } return current; } -
merci jg, maintenant manque plus que le tp
EDIT: maintenant ca marche, manque plus qu’a enlever les 3 effet de potion, je précise que le entity.addPotionEffect(new PotionEffect(Potion.blindness.id, 0, 0)); marche pas