Modifier le nombre de ticks de la journée et de la nuit
-
@‘Superloup10’:
J’ai toujours pensé que 10 faisaient 1 seconde, surtout lors des systèmes redstone expliqué par aypierre.
Aypierre ne connait pas le vrai système technique de Minecraft (nombre de ticks etc…). Surtout que là il a dit une grosse bêtise en disant que 10 ticks = 1 seconde…
-
Ok, de toute façon, on en apprend tous les jours.
-
on est là pour aider Axaurus –’
-
Salut
J’ai chercher dans le fichier, mais je ne trouve pasJ’ai lu tout le fichier, mais non : rien
Peut être que je sais pas chercher
Mais pouvez vous m’indiquez c’est dans quel condition, ou quel ligne pour modifier ?
Merci d’avance
-
désoler j’ai rien trouver d’autres

-
Dans WorldInfo.java, tu devrais avoir ceci:
private long worldTime;Avec la réflexion (Java, pas de ton cerveau… quoi qu’il faut bien l’utiliser ici ^^'), tu devrais pouvoir détecter si c’est la nuit ou le jour et accélérer/ralentir artificiellement le temps du monde
-
Petit cours sur les ticks :
Dans Minecraft, il y a DEUX types de ticks :
Les ticks du jeu
Les “redstone ticks”Le tick du jeu représente 0.05 secondes ( 20 ticks = 1 seconde )
Le “redstone tick” représente 0.1 seconde ( 10 redstone ticks = 1 seconde ). -
@‘jglrxavpok’:
Dans WorldInfo.java, tu devrais avoir ceci:
private long worldTime;Avec la réflexion (Java, pas de ton cerveau… quoi qu’il faut bien l’utiliser ici ^^'), tu devrais pouvoir détecter si c’est la nuit ou le jour et accélérer/ralentir artificiellement le temps du monde
Salut
Merci, mais je ne peux pas(enfin……, je ne pense pas)
Car, chaque “truc”(pas explicite) est dans Minecraft.java
Par exemple :ObfuscationReflectionHelper.setPrivateValue(SoundManager.class, mc.sndManager, 999999999, "ticksBeforeMusic", "");Ici, sndManager est dans le fichier Minecraft.java
J’ai donc chercher le worldinfo, mais il n’y a pas
Donc si vous pouvez m’aider, merci d’avance
-
Chaque “truc” est dans Minecraft.java…
Minecraft est looooooooooooooooooooooooooooooooooooooooooooooooin d’avoir une seule classe qui dirige tout (parce que Notch/Dinner bone/jeb_ savent coder un minimum). Et WorldInfo est dans les instances de World

-
Salut
Donc logiquement, dans la reflection de Forge, il devrait y avoir un truc en rapport avec worldinfo quand je met world et que je met un point après.
Mais quand je met le point, le seul truc que ça met, c’est MAX_ENTITY_RADIUS
J’ai donc marquer worldclient après le point, mais ils me disent de le mettre en public(je le fait juste pour tester). Mais une fois que je l’ai mis en public, ils me disent que ce field n’existe pas.
Donc du coup, je suis bloquerVoilà la ligne :
ObfuscationReflectionHelper.setPrivateValue(WorldInfo.class, World., 0, "ceci_n'est_pas_un_field", ""); -
Ne jamais, au grand JAMAIS, modifier le code source de Minecraft si tu utilises Forge, autant coder en Vanilla sinon.
De plus, le field worldInfo EXISTE dans World. Je suis pas sûr-sûr que tu connaisses vraiment le principe de la POO (& de la réflexivité.)
Et il faut que tu ais une instance (variable) de World.Ce forum n’étant pas un forum d’apprentissage du java, donc je te redirige donc vers OpenClassroom (anciennement siteduzero.com

http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-javaAh aussi, je sens que je vais le répéter, le re-répéter et le re-re-répéter sur le forum… Mais Java est sensible à la casse! wordInfo n’a rien à voir avec worldinfo ou WorldInfo (pareil WORLDINFO).
-
J’ai trouver avec la reflection.
Mais le problème, c’est que quand je met ça :if(mc.theWorld.getWorldTime() == 600) { ObfuscationReflectionHelper.setPrivateValue(WorldInfo.class, mc.theWorld.getWorldInfo(), 15000, "worldTime", ""); }en jeu, quand c’est à 600 ticks, ça met à 15000 ticks; mais ça remet à 601 ticks juste après.
Donc je ne sais pas comment faire.
Logiquement, ça reste la nuit(à partir de 15000 ticks) et bah non -
Peut être une ligne à mettre pour que ça reste à l’heure que j’ai dit
-
Aucune idées, mais je vais regarder de mon coté.
Il faudrait faire que si le tick est entre 600 et 15000 il le mette a 15000+(x-600)
x = nombre de tick actuel, mais cela risque de crée un décalage.___Essaie avec un NBTTag:NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setLong("Time", 15000); -
Salut
Merci de ta réponse, mais …
Voilà le code :if(mc.theWorld.getWorldTime() == 600) { NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setLong("Time", 15000); }J’ai tester et ça n’a pas marcher. J’ai donc tester de mettre “worldTime” au lieu de “Time” : ça n’a pas marché.
J’ai tester de mettre ce code avec l’obfuscation de forge(que vous pouvez retrouver à la page 2) : ça n’a pas marché.Donc si quelqu’un à une idée…
Merci d’avance -
Personne ne sait ?
Sinon, ce n’est pas grave je ne modifierai pas le jour et la nuit -
Sinon regarde comment la boussole et le capteur de soleil détectent les changements d’heure.

