Опять эта несчастная генерация, ее за ногу!

397
8
33
Дела обстоят так: есть абы как рабочий код генерации не важно какой руды. Все вроде и правильно, но такая тема. Если поставить генерацию по 2 блока в жилу...
(сей момент): 
Код:
(new WorldGenMinable(gm_blocks.magic_ore.blockID, 2))

...то нифига не происходит, правда. Ставь ты хоть миллионную "частоту" генерации.
(это где здесь):
Код:
for (int i = 100; i < 130; i++) {
Да, я знаю, что тут от 100 до 129, но тем не менее. А если вот поставить больше - то все начинает-таки работать. Я оооооочень долго и кропотливо проверял это. И как мне быть, чтобы генерация была очень редкой? Версия 1.6.4. И вот он, полный код:
Код:
package assets.gothicmod.src.generation;

import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import assets.gothicmod.src.gm_blocks;
import cpw.mods.fml.common.IWorldGenerator;

public class generation_magic_ore implements IWorldGenerator {
    
    @Override
    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 rand, int chunkX, int chunkZ) {
            
            for (int i = 0; i < 30; i++) {
                
                int randPosX = chunkX + rand.nextInt(16);
                int randPosY = rand.nextInt(25);
                int randPosZ = chunkZ + rand.nextInt(16);
 
                (new WorldGenMinable(gm_blocks.magic_ore.blockID, 2)).generate(world, rand,  randPosX, randPosY, randPosZ);
                
            }
            
        }
 
    public void generateEnd() {}
    
}

Ну неужели, я что-то не то сделал? >_<
 
Извиняюсь, насколько редкой?
[merge_posts_bbcode]Добавлено: 11.03.2015 02:48:48[/merge_posts_bbcode]

Кстати, вроде не помогло -_-
 
Повесь перехватчик события OreGenEvent.GenerateMinable, внутри проверь, твой ли блок руды сгенерился, выводи координаты чанка, можешь в какой-нибудь массив записывать.
Потом смотришь сколько раз какой чанк вывелся в консоль - столько блоков руды в нём и сгенерилось.
Осилишь? Это гораздо лучше, нежели ползать по пещеркам и искать руду.
 
Oldestkon написал(а):
Повесь перехватчик события OreGenEvent.GenerateMinable, внутри проверь, твой ли блок руды сгенерился, выводи координаты чанка, можешь в какой-нибудь массив записывать.
Потом смотришь сколько раз какой чанк вывелся в консоль - столько блоков руды в нём и сгенерилось.
Осилишь? Это гораздо лучше, нежели ползать по пещеркам и искать руду.
Кто, я? Да сам ни в жизнь... Если можно - пару пояснений, пожалуйста)
 
Так и не нашел где с точностью проверить какой блок сгенерился, но CUSTOM'ный EventType вполне подойдет.


Код:
@SubscribeEvent
public void onOreGenerated(OreGenEvent.GenerateMinable evt) {
  if (evt.type == evt.CUSTOM)
    System.out.println("ore generated at: X=" + evt.worldX/16 + ", Y=" + evt.worldY/16);
}
 
Назад
Сверху