Résolu Problème Timer et Tp
-
Salut à tous,
J’ai un petit (voir gros) problème,
Alpha ma aider (ou plutôt ma fait) un code pour faire un biome “barrière”, voici le code:
http://pastebin.com/dkZxXr0Epour les Timer c’est bon et le message (“Vous devez retourner sur le rivage !” s’affiche bien qu’une fois, mais c’est la partir du Timer2 (le Tp) qui ne marche pas. Savez vous comment faire pour que ca le tp? et si possible faire en sorte que ca ne puisse le tp que sur le biome Beach le plus proche?
Quelle est la méthode pour TP le joueur dans des coordonnée précise?
-
Pour tp le joueur , as tu essayé :
/** * Sets the location and Yaw/Pitch of an entity in the world */ public void setLocationAndAngles(double par1, double par3, double par5, float par7, float par8)
Chez moi c’est défini dans Entity.java ligne 1320. (1.6.2).
-
d’accord merci on regarde ca
comment faire pour savoir la direction vers où le joueur regarde au moment où il rentre dans le biome barrière "Nord, Sud etc….)?
-
Le problème est que ton timer2 est toujours égale à 200, tu ne le diminue jamais.
http://pastebin.com/DnE0eEXS
Comme ceci ça devrait être bon. -
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?