Генерация у воды

397
8
33
Не подскажите, что вписать в код, чтобы растения генерировались обязательно около воды? У самого пока не очень получается
 
MrUser написал(а):
Не подскажите, что вписать в код, чтобы растения генерировались обязательно около воды? У самого пока не очень получается
Погляди вроде тростник, вдруг поможет.
 
С-час попробую
[merge_posts_bbcode]Добавлено: 08.03.2015 16:48:13[/merge_posts_bbcode]

Не помогло >_<
 
Ну, у меня только так
Код:
package assets.gothicmod.src.generation;

import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import assets.gothicmod.src.gm_blocks;
import cpw.mods.fml.common.IWorldGenerator;

public class generation_swamp implements IWorldGenerator {

    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
        
        switch(world.provider.dimensionId) {

            case -1:
                generateNether();
                break;
            case 0:
                generateSurface(world, random, chunkX*16, chunkZ*16);
                break;
            case 1:
                generateEnd();
                break;
    
        }

    }
    
    public void generateNether() {}
    
    public void generateSurface(World world, Random random, int x, int z) {
        
        x += random.nextInt(16);
        z += random.nextInt(16);
        
        if(world.getBiomeGenForCoords(x, z).biomeID == BiomeGenBase.swampland.biomeID) {
            
            for (int y = 1; y < world.getHeight(); ++y) {
                
                if (world.getBlockId(x, y - 1, z) == Block.grass.blockID && world.isAirBlock(x, y, z)) {
                    
                    world.setBlock(x, y, z, gm_blocks.swamp_grass.blockID);
                    
                }
                
            }
            
        }
        
    }
    
    public void generateEnd() {}
    
}
 
MrUser написал(а):
Ну, у меня только так
Код:
package assets.gothicmod.src.generation;

import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import assets.gothicmod.src.gm_blocks;
import cpw.mods.fml.common.IWorldGenerator;

public class generation_swamp implements IWorldGenerator {

    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
        
        switch(world.provider.dimensionId) {

            case -1:
                generateNether();
                break;
            case 0:
                generateSurface(world, random, chunkX*16, chunkZ*16);
                break;
            case 1:
                generateEnd();
                break;
    
        }

    }
    
    public void generateNether() {}
    
    public void generateSurface(World world, Random random, int x, int z) {
        
        x += random.nextInt(16);
        z += random.nextInt(16);
        
        if(world.getBiomeGenForCoords(x, z).biomeID == BiomeGenBase.swampland.biomeID) {
            
            for (int y = 1; y < world.getHeight(); ++y) {
                
                if (world.getBlockId(x, y - 1, z) == Block.grass.blockID && world.isAirBlock(x, y, z)) {
                    
                    world.setBlock(x, y, z, gm_blocks.swamp_grass.blockID);
                    
                }
                
            }
            
        }
        
    }
    
    public void generateEnd() {}
    
}
Крашит или не спаунит?
 
Не, это рабочий код, но только для просто генерации в болотах. Дальше пробовал вписать рядом с *блоком воздуха* что-то про воду, но как-то ничего -_-
 
Расскажи что у тебя не получается.

Т.к. я точно не знаю, как, я пробовал делать по подобию условия с блоком воздуха, но нормального не выходит - все время "подчеркивает" красным, т.е. ошибка.
 
Как бы сказать... Это невозможно. Я не проверял, потому что все равно бы не запустилось ничего >_<
 
Код:
if (world.getBlockId(x, y - 1, z) == Block.grass.blockID && world.isAirBlock(x, y, z)) {
У тебя проверка на блок земли и воздуха, а ещё надо сделать проверку на рядом стоящей воды.
[merge_posts_bbcode]Добавлено: 08.03.2015 16:57:21[/merge_posts_bbcode]

Код:
private void generateSurface(World world, Random random, int x, int z) {

if (world.getBiomeGenForCoords(x, z) == BiomeGenBase.swampland) {
for (int y = 1; y < world.getHeight(); ++y) {
for (int x1 = x; x < x + 16; x1++) {
for (int z1 = z; z < z + 16; z1++) {
                        
if (world.rand.nextInt(13) == 0) {
                        
if (world.getBlockId(x1, y - 1, z1) == Blocks.grass.blockID && world.isAirBlock(x1, y, z1) && 
    (world.getBlockMaterial(x1 + 1, y - 1, z1) == Material.water || 
    world.getBlockMaterial(x1 - 1, y - 1, z1) == Material.water || 
    world.getBlockMaterial(x1, y - 1, z1 + 1) == Material.water || 
    world.getBlockMaterial(x1, y - 1, z1 - 1) == Material.water)) {
world.setBlock(x1, y, z1, gm_blocks.swamp_grass.blockID);
}
}
                    
}
                    
}
}
}

}
Слегка изменил (у меня было написано под 1.7.10, а у него скорее всего под 1.6.4).
Ну как-то так.
 
timaxa007, огромное спасибо) Что от меня требовалось я знал, а вот как реализовать - увы...
[merge_posts_bbcode]Добавлено: 08.03.2015 19:26:34[/merge_posts_bbcode]

Палин, а че оно все красное-то? Все условия про воду подчеркивает без пояснения.
 
Забыл, что на 1.6.4 нету подобного:
Код:
world.getBlockId(x, y, z).getMaterial()
Но есть:
Код:
world.getBlockMaterial(x, y, z)
(Мой предыдущий пост поправил.)
 
Назад
Сверху