Je sais que c'est une vieille question mais si vous n'avez pas trouvé une solution ou un mod qui implémente déjà cette fonctionnalité, je jette un coup d'œil rapide sur les sources Minecraft générées par le dernier Minecraft Coder Pack (9.03 pour Minecraft 1.7.2) et dans la classe BlockSapling (net.Minecraft.block.BlockSapling) j'ai trouvé une liste d'importations pour les types d'arbres qui peuvent être cultivés à partir de jeunes pousses.
import net.minecraft.world.gen.feature.WorldGenBigTree;
import net.minecraft.world.gen.feature.WorldGenCanopyTree;
import net.minecraft.world.gen.feature.WorldGenForest;
import net.minecraft.world.gen.feature.WorldGenMegaJungle;
import net.minecraft.world.gen.feature.WorldGenMegaPineTree;
import net.minecraft.world.gen.feature.WorldGenSavannaTree;
import net.minecraft.world.gen.feature.WorldGenTaiga2;
import net.minecraft.world.gen.feature.WorldGenTrees;
import net.minecraft.world.gen.feature.WorldGenerator;
Les classes génératrices d'arbres disposent de méthodes de génération
public boolean generate(World, Random, int, int, int)
Comme il s'agit des principales classes génératrices d'arbres pour la génération de mondes, vous pourriez trouver l'endroit où elles créent les journaux (Blocks.log et Blocks.log2) et changer le type généré.
Gardez à l'esprit que vous devrez modifier le bloc que les feuilles recherchent lorsqu'elles font leur tic aléatoire (si vous voulez toujours des feuilles). D'après ce que je vois, vous devez modifier la ligne 134 (telle qu'elle est générée par cette version de MCP) dans net.Minecraft.block.BlockLeaves
if (var15 != Blocks.log && var15 != Blocks.log2)
à
if (var15 != Blocks.obsidian)
Pour ce qui est de la transformation de l'obsidienne en billes, il faut procéder comme suit :
Dans BlockLiquid.java (net.Minecraft.block.BlockLiquid) à la ligne 526 (tel que généré par cette version de MCP) vous trouverez
p_149805_1_.setBlock(p_149805_2_, p_149805_3_, p_149805_4_, Blocks.obsidian);
qui, une fois désobfusqué, serait
par1World.setBlock(xCoord, yCoord, zCoord, Blocks.obsidian);
vous devez remplacer Blocks.obsidian par Blocks.log et éventuellement définir une valeur aléatoire pour les métadonnées.
Si vous voulez aussi que l'obsidienne à la fin soit générée comme des logs, vous devez éditer net.Minecraft.world.gen.feature.WorldGenSpikes, à la ligne 55 (également comme généré par le MCP actuel), vous devez faire la même chose que ci-dessus.
Comme je l'ai vu dans l'un des commentaires, il y a le problème du bois qui est brûlé par la lave avant que le joueur ne puisse l'atteindre. La solution à ce problème est aussi la raison pour laquelle il n'a jamais été un problème. La seule fois où l'obsidienne est créée naturellement, c'est dans The End (les piliers d'obsidienne) et chaque fois que l'eau coule sur la lave. Comme il n'y a pas d'air autour de l'obsidienne (qu'il s'agisse de pierre, de gravier, de minerai, d'eau ou de lave), le feu ne peut pas être allumé et ne peut pas détruire les rondins.
Edit : Si vous voulez changer le comportement et le type de bloc utilisé par les portails du Nether, cela pourrait être un peu plus compliqué, et changer cela entraînerait la possibilité de portails brûlants, puisqu'ils peuvent être générés près du feu ou de la lave dans l'un ou l'autre des mondes.