Dans une vidéo récente du Yogscast, il a été mentionné que l'on frayait toujours sur du sable dans un nouveau monde, est-ce vrai ?
Réponses
Trop de publicités?Note : Depuis la version 1.8, vous n'apparaissez pas toujours sur du sable.
Oui, vous frayez toujours sur du sable. Voici quelques extraits du source (décompilé par MCP ) :
Dans World.java, voici la fonction qui est appelée lors de l'ouverture d'un monde :
protected void func_25098_c() {
findingSpawnPoint = true;
int i = 0;
byte byte0 = 64;
int j;
for (j = 0; !worldProvider.canCoordinateBeSpawn(i, j);) {
i += rand.nextInt(64) - rand.nextInt(64);
j += rand.nextInt(64) - rand.nextInt(64)
}
worldInfo.setSpawn(i, byte0, j);
findingSpawnPoint = false;
}
À partir de WorldProvider, la fonction correspondante est appelée :
public boolean canCoordinateBeSpawn(int i, int j) {
int k = worldObj.getFirstUncoveredBlock(i, j);
return k == Block.sand.blockID;
}
Ainsi, lorsque Minecraft commence à définir le point de spawn, il commence à X/Z 0/0 et déplace le point de façon aléatoire (avec des étapes d'au plus 64 dans les directions cardinales), jusqu'à ce que le bloc le plus élevé au point de spawn soit du sable.
Quant à savoir pourquoi il se trouve près du niveau de la mer (la plupart du temps), je n'en suis pas sûr, probablement que le sable a plus de chance de s'y former.
Depuis la version 1.8, vous pouvez no toujours frayer sur le sable. J'ai peur de ne pas avoir de code source à poster, mais dans tous les mondes que j'ai créés, je n'ai pas frayé sur le sable.
PLUS TARD :
C'est ma première incursion dans la décompilation, mais si je comprends bien, le nouveau code du spawn initial ne mentionne pas du tout le sable.
public static void getInitialSpawnLocation()
{
scheduledTickTreeSet = a(scheduledTickTreeSet, "stat.useItem", 0x1020000, MovementInputFromOptions.m.length, 32000);
scheduledTickSet = b(scheduledTickSet, "stat.breakItem", 0x1030000, MovementInputFromOptions.m.length, 32000);
field_1019_F = true;
setSpawnLocation();
}
setSpawnLocation
est beaucoup plus grand et rempli de déclarations amusantes comme
Iterator iterator1 = OpenGlCapsChecker.a().b().values().iterator();
J'ai donc pensé qu'il valait mieux ne pas le poster. Néanmoins, je n'y ai vu aucune mention de sable non plus. J'ai vérifié World.java et WorldProvider.java. Le code posté par yatima2975 ne semble plus exister.