Problème Timer et Tp
-
j’essaye tout ca
EDIT: le timer c’est bon mais ca tp pas…
-
Pourquoi tu n’utilises pas la classe Timer ? _
Qu’est ce que tu ne comprend pas ? -
les fonction a utiliser, mais comme le timer marche maintenant c’est niquel, manque que le système de tp
-
Timer: schedule(TimerTask, paramètres genre date ou timestamp)
Va exécuter la methode run() de la classe TimerTask a un certains moment que tu précises grâce au autre paramètres.Tu na plus qu’a créé une classe qui extends TimerTask et qui redéfinit run().
Rien de plus simple. -
non mais pour le timer c’est bon ca marche niquel. mais il me manque juste la fonction pour le tp
-
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, donc ça ne change strictement rien, la seul chose que ça va faire, c’est retarder le moment où va se lancer le code.
Son timer actuelle est très bien.Pour le tp, utilise simplement entity.setLocation(x, y, z);
-
je veux le tp au biome beach le plus proche , le entity.setLocation ne va pas marcher.
-
Heu ? En quoi il ne va pas marcher ?
-
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