СИД , 110481, идти в сторону песка, затем болот.
рабочий код для Minecraft 1.2.3-1.2.5
Код для работы с ModLoader!
Cоздаём файлик mod_gcc.java В нём будет храниться вся информация о генерации дома и сундука...
package net.minecraft.src;
import java.util.Random;
public class mod_gcc extends BaseMod
{
public mod_gcc() {
// TODO Auto-generated constructor stub
}
@Override
public String getVersion() {
// TODO Auto-generated method stub
return "test";
}
@Override
public void load()
{
}
@Override
public void generateSurface(World world, Random random, int i, int j)
{
for(int r = 0; r < 5; r++)
{
int randPosX = i + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = j + random.nextInt(16);
(new WorldGenGcc()).generate(world, random, randPosX, randPosX, randPosZ);
}
}
}
Затем вот такой файлик WorldGenGcc.java В нём сам код дома и некоторая инфа о генерации сундука...
package net.minecraft.src;
import java.util.Random;
public class WorldGenGcc extends WorldGenerator
{
public WorldGenGcc()
{
// TODO Auto-generated constructor stub
}
public WorldGenGcc(boolean par1) {
super(par1);
// TODO Auto-generated constructor stub
}
@Override
public boolean generate(World world, Random random, int x, int y, int z)
{
// TODO Auto-generated method stub
// TODO Auto-generated method stub
int i = world.getBlockId(x, y, z);
if( i == Block.sand.blockID || i == Block.dirt.blockID )
{
int floor = Block.cobblestone.blockID;
int walls = Block.planks.blockID;
//Генерируем пол
genFloor( world, x,y,z /*координаты*/, floor /* из чего будем делать */, 10 /*длинна*/ , 5 /*ширина*/ );
//Генерируем стену (боковую)
genWallX( world, x,y+1,z /*координаты*/, walls /* из чего будем делать */, 10 /*длинна*/, 4 /*высота*/);
//Генерируем стену напротив (боковую)
genWallX( world, x,y+1,z+4 /*координаты*/, walls /* из чего будем делать */, 10 /*длинна*/, 4 /*высота*/);
//переднюю
genWallZ( world, x,y+1,z+1 /*координаты*/, walls /* из чего будем делать */, 3 /*длинна*/, 4 /*высота*/);
//заднию
genWallZ( world, x+10,y+1,z+1 /*координаты*/, walls /* из чего будем делать */, 3 /*длинна*/, 4 /*высота*/);
//потолок
genFloor( world, x,y+5,z /*координаты*/, floor /* из чего будем делать */, 10 /*длинна*/ , 5 /*ширина*/ );
//выдавливаем проход для двери
world.setBlockWithNotify(x, y+1, z+2, 0 ); //0 - это блок воздуха
world.setBlockWithNotify(x, y+2, z+2, 0 ); //0 - это блок воздуха
//Ставим дверь (дверь это два блока)
world.setBlockWithNotify(x, y+1, z+2, Block.doorWood.blockID );
world.setBlockWithNotify(x, y+2, z+2, Block.doorWood.blockID );
//Раставим факелы
world.setBlockWithNotify(x+1, y+4, z+1, Block.torchWood.blockID );
world.setBlockWithNotify(x+1, y+4, z+3, Block.torchWood.blockID );
world.setBlockWithNotify(x+9, y+4, z+1, Block.torchWood.blockID );
world.setBlockWithNotify(x+9, y+4, z+3, Block.torchWood.blockID );
//Ставим окна
genWallX( world, x+1,y+2,z /*координаты*/, Block.glass.blockID /* из чего будем делать */, 8 /*длинна*/, 2 /*высота*/);
genWallX( world, x+1,y+2,z+4 /*координаты*/, Block.glass.blockID /* из чего будем делать */, 8 /*длинна*/, 2 /*высота*/);
//Ставим сундук
//а так как мы в нём сказали что ставим только на песок или землю, то добавим ещё и песок на место сундука
//перед тем как сделаем вызов генерации сундука
//Ставим сундук
world.setBlockWithNotify(x+1, y+1, z+1, Block.chest.blockID);
//Получаем к нему доступ
TileEntityChest tc = (TileEntityChest)world.getBlockTileEntity(x+1, y+1, z+1);
//Создаем слоты для предметов
ItemStack i1 = new ItemStack( Item.swordStone,1 ); //где 1 - это количество предметов
ItemStack i2 = new ItemStack( Item.axeWood,1 );
ItemStack i3 = new ItemStack( Block.wood,64 );
//Заполняем
tc.setInventorySlotContents(0, i1); //Нумерация слотов (да и многого другого) начинается с нуля
tc.setInventorySlotContents(1, i2);
tc.setInventorySlotContents(2, i3);
//Ещё поставим табличку над дверью
world.setBlockAndMetadata(x-1, y+3, z+2, Block.signWall.blockID, 4 ); //про 4 смотрим ниже...
/*
* принимает значение 0,2,4,5
* я поставил 4, чтобы развернуть под нужным углом
* 0 - поворот на 0 градусов
* 2 - поворот на 180 градусов
* 4 - поворот на 90 градусов
* 5 - поворот на -90 градусов
*/
TileEntitySign tes = (TileEntitySign)world.getBlockTileEntity(x-1, y+3, z+2);
//и добавим надпись во второй строке Humy а на третьей сервер:)
tes.signText[1] = "Humy";
tes.signText[2] = "Server";
return true;
}
return false;
}
public void genFloor( World world, int x, int y, int z, int BlockID, int width, int deep )
{
for( int i = 0; i < width; i++ )
{
for( int k = 0; k < deep; k++ )
{
world.setBlockWithNotify(x+i, y, z+k, BlockID);
}
}
}
public void genWallX( World world, int x, int y, int z, int BlockID, int width, int height )
{
for( int i = 0; i < width; i++ )
{
for( int k = 0; k < height; k++ )
{
world.setBlockWithNotify(x+i, y+k, z, BlockID);
}
}
}
public void genWallZ( World world, int x, int y, int z, int BlockID, int width, int height )
{
for( int i = 0; i < width; i++ )
{
for( int k = 0; k < height; k++ )
{
world.setBlockWithNotify(x, y+k, z+i, BlockID);
}
}
}
}
Вот на этом и заканчивается наш урок!
Скоро выложу основы генерации
Если понравилось в комментах ставим
Если не понравилось 
Отредактировано Дмитрий (2012-07-23 10:20:57)