I know this is an older question but if you have not found a solution to this or a mod implementing this functionality already I am just making a quick glance over the Minecraft source generated by the latest Minecraft Coder Pack (9.03 for Minecraft 1.7.2) and in the BlockSapling class (net.minecraft.block.BlockSapling) I found a list of imports for the tree types that can be grown from saplings
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;
In the tree generating classes there are generate methods
public boolean generate(World, Random, int, int, int)
Since these are the main tree generating classes for world generation you could find where they create the logs (Blocks.log and Blocks.log2) and change the generated type.
Keep in mind you will need to change the block leaves look for when they do their random tick (that is if you still want leaves). From what I can see you would change line 134 (as generated by this version of MCP) in net.minecraft.block.BlockLeaves
if (var15 != Blocks.log && var15 != Blocks.log2)
to
if (var15 != Blocks.obsidian)
As for obsidian to logs, you would need to do the following:
In BlockLiquid.java (net.minecraft.block.BlockLiquid) on line 526 (as generated by this version of MCP) you will find
p_149805_1_.setBlock(p_149805_2_, p_149805_3_, p_149805_4_, Blocks.obsidian);
which when deobfuscated would be
par1World.setBlock(xCoord, yCoord, zCoord, Blocks.obsidian);
you would change the Blocks.obsidian to Blocks.log and possibly set a randomized metadata value.
If you also wanted the obsidian in the end to be generated as logs you would edit net.minecraft.world.gen.feature.WorldGenSpikes, on line 55 (also as generated by the current MCP) you would do the same as above.
Now as I have seen in one of the comments, there is the problem of wood being burned by lava before the player can get to it. The solution to this is also the reason it was never a problem. The only time obsidian is created naturally is in The End (the obsidian pillars) and whenever water flows over lava. Since there would not naturally be any air around the obsidian (either being stone, gravel, ores, water, or lava) fire can not be started and cannot destroy the logs.
Edit: If you wanted to change the behavior and block type used by nether portals that might be a bit more complicated, and changing this would cause the possibility of burning portals, since they can be generated near fire or lava in either world.
Well after much testing I finally figured out what is causing the problem, but I have no clue why this. The only way this dungeon appears is when you play Single Player
mode and with Allow Cheats ON
. There is no other way you can get this dungeon spawned in.
This actually boggles my mind because I thought these settings had no influence on the actual world generation, but apparently they do.
Also, I don't think there is an option in the server.properties
on a server to set this setting, so it's basically impossible to have this dungeon on a server. Only way for me to do this is to create the world in Single player, go to the spot and load in the chunks, and then transfer the world onto my server.
Best Answer
They were used to test end structures, S stands for Save, L stands for Load, C stands for Corner, D stands for Data, but you can't obtain them. However, you can place them in a world with cheats are enabled by using the command
/setblock x y z structure_block
. A good reason to use them is the fact that they emit 15 light (as bright as sun) and their toughness is very high.You can see the Wiki Post here.