Server Minecraft

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Server Minecraft » Архив » Генерация Ландшафта


Генерация Ландшафта

Сообщений 1 страница 5 из 5

1

СИД , 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);
                         }
         }
        }

}

Вот на этом и заканчивается наш урок!
Скоро выложу основы генерации 
Если понравилось в комментах ставим  :cool:
Если не понравилось  :canthearyou:

Отредактировано Дмитрий (2012-07-23 10:20:57)

0

2

давай на сайте публиковать твои уроки!

0

3

Давай!
Ща буду писать как создать новую жидкость...

0

4

все, жди статьи на сайте!

0

5

спс

0


Вы здесь » Server Minecraft » Архив » Генерация Ландшафта