Как такие финты вытворяют? (Проверка количества руды)

svk

1,185
2
Типо нету земли/камня и т.п. и только руды отображаются.
 
1,239
2
24
Да любой чит декомпильни который как мод идет и посмотри.
 

svk

1,185
2
XuPuPG написал(а):
Да любой чит декомпильни который как мод идет и посмотри.
Гениально, потратить часы на то что-б посмотреть как генерируется своя руда.

Наверняка есть способ легче.
 
1,239
2
24
Ааа...ты имеешь в виду посмотреть сколько руды в чанке сгенерировалось?У меня есть блок который при установке удаляет траву,камень и т.д как раз для таких целей не знаю подойдет тебе такое или нет :/
 

svk

1,185
2
XuPuPG написал(а):
Ааа...ты имеешь в виду посмотреть сколько руды в чанке сгенерировалось?У меня есть блок который при установке удаляет траву,камень и т.д как раз для таких целей не знаю подойдет тебе такое или нет :/
Простой цикл for с world.setBlock на весь чанк?
 
808
3
124
Если нужно только посмотреть (то есть не нужно собирать результат в мод), то я б пропатчил классы нужных блоков (камень/земля/етц) и выставил там getRenderType() на -1 и isOpaqueCube() на фолс.
 
1,239
2
24
Код:
public static final int FREEZE_RADIUS = 23;

    
    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
    {
        this.freezeArea(world, x, y, z);

    }

    public void freezeArea(World world, int x, int y, int z)
    {
        if (world.isRemote)
        {
            return;
        }

        for (int x1 = x - FREEZE_RADIUS; x1 <= x + FREEZE_RADIUS; x1++)
        {
            for (int y1 = y - FREEZE_RADIUS; y1 <= y + FREEZE_RADIUS; y1++)
            {
                for (int z1 = z - FREEZE_RADIUS; z1 <= z + FREEZE_RADIUS; z1++)
                {
                    Block block = world.getBlock(x1, y1, z1);

                    if (block == Blocks.flowing_water || block == Blocks.flowing_lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.water || block == Blocks.lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.grass)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.dirt)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.gravel)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.iron_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.coal_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.diamond_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.redstone_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.sand)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow_layer)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.netherrack)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.end_stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }



                }
            }
        }
    }
 
1,976
68
220
Как всё сложно...
Ставишь своему блоку неразрушимость (setBlockUnbreakable), и взрываешь всё нафиг :devil:
Ну или просто скачай MCEdit и через него смотри
 

svk

1,185
2
XuPuPG написал(а):
Код:
public static final int FREEZE_RADIUS = 23;

    
    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
    {
        this.freezeArea(world, x, y, z);

    }

    public void freezeArea(World world, int x, int y, int z)
    {
        if (world.isRemote)
        {
            return;
        }

        for (int x1 = x - FREEZE_RADIUS; x1 <= x + FREEZE_RADIUS; x1++)
        {
            for (int y1 = y - FREEZE_RADIUS; y1 <= y + FREEZE_RADIUS; y1++)
            {
                for (int z1 = z - FREEZE_RADIUS; z1 <= z + FREEZE_RADIUS; z1++)
                {
                    Block block = world.getBlock(x1, y1, z1);

                    if (block == Blocks.flowing_water || block == Blocks.flowing_lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.water || block == Blocks.lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.grass)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.dirt)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.gravel)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.iron_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.coal_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.diamond_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.redstone_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.sand)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow_layer)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.netherrack)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.end_stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }



                }
            }
        }
    }
А зачем ты перечисляешь все эти блоки, когда можно просто if(block != myBlock)?
 
905
5
Я вас обожаю. А не проще сетануть харднесс -1 и рвануть реактор? Или там в воздухе генерировать.
 
1,239
2
24
Легче мой способ-установил блок и все как на ладони
[merge_posts_bbcode]Добавлено: 07.01.2016 22:59:20[/merge_posts_bbcode]

Легче мой способ-установил блок и все как на ладони
 
905
5
А писать его 100500 лет не надо, ага.
 
643
6
14
XuPuPG написал(а):
Код:
public static final int FREEZE_RADIUS = 23;

    
    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
    {
        this.freezeArea(world, x, y, z);

    }

    public void freezeArea(World world, int x, int y, int z)
    {
        if (world.isRemote)
        {
            return;
        }

        for (int x1 = x - FREEZE_RADIUS; x1 <= x + FREEZE_RADIUS; x1++)
        {
            for (int y1 = y - FREEZE_RADIUS; y1 <= y + FREEZE_RADIUS; y1++)
            {
                for (int z1 = z - FREEZE_RADIUS; z1 <= z + FREEZE_RADIUS; z1++)
                {
                    Block block = world.getBlock(x1, y1, z1);

                    if (block == Blocks.flowing_water || block == Blocks.flowing_lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.water || block == Blocks.lava)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.grass)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.dirt)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.gravel)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.iron_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.coal_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.diamond_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.redstone_ore)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }

                    if (block == Blocks.sand)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.snow_layer)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.netherrack)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }
                    if (block == Blocks.end_stone)
                    {
                        world.setBlock(x1, y1, z1, Blocks.air);
                        continue;
                    }



                }
            }
        }
    }
Однако топ-велосипед нынче в моде.
Низя было запихать все блоки в одно условие?
 
1,239
2
24
Нет низзя,у меня некоторые блоки спавнятся возле лавы например или гравия или булыжника.Так что все в порядке
 
1,990
18
105
>Вопрос касательно рендера, ответили решением 'в лоб', которое влияет ещё и на логику игры, создавая неимоверные тормоза
>Всерьез оптимизируют, убирая лишние ветвления
 

svk

1,185
2
Oldestkon написал(а):
>Вопрос касательно рендера, ответили решением 'в лоб', которое влияет ещё и на логику игры, создавая неимоверные тормоза
>Всерьез оптимизируют, убирая лишние ветвления
Эм?
 
Сверху