Почему-то не копает редстоун

26
1
Java:
    @Override
    public boolean onBlockStartBreak(ItemStack stack, int x, int y, int z, EntityPlayer player) {
       
        World world = player.worldObj;
        Block block = world.getBlock(x, y, z);
       
        if (mode == 1) {
            MovingObjectPosition object = RandomUtils.raytraceFromEntity(world, player, false, 4.5D);
            if (object == null) {
                return super.onBlockDestroyed(stack, world, block, x, y, z, player);
            }

            int side = object.sideHit;
            int xmove = 0;
            int ymove = 0;
            int zmove = 0;

            if (side == 0 || side == 1) {
                xmove = 1;
                zmove = 1;
            } else {
                ymove = 1;
                if (side == 4 || side == 5) {
                    zmove = 1;
                } else {
                    xmove = 1;
                }
            }

            float strength = ForgeHooks.blockStrength(block, player, world, x, y, z);

            if (player.isSneaking() && ConfigInfo.EnableHammerShiftOneBlock &&
                (player.experienceLevel >= 20 || player.capabilities.isCreativeMode)) {
                checkBlockBreak(world, player, x, y, z, stack, strength, block, side);
            } else {
                for (int i = -xmove; i <= xmove; i++) {
                    for (int j = -ymove; j <= ymove; j++) {
                        for (int k = -zmove; k <= zmove; k++) {
                            if (i != x && j != y && k != z) {
                                checkBlockBreak(world, player, x + i, y + j, z + k, stack, strength, block, side);
                            }
                        }
                    }
                }
            }
        }
        return false;

    }

    public void checkBlockBreak(World world, EntityPlayer player, int x, int y, int z, ItemStack stack, float strength, Block originalBlock, int side) {
        Block breakBlock = world.getBlock(x, y, z);

        if (this.canHarvestBlock(breakBlock, stack)) {
            float newStrength = ForgeHooks.blockStrength(breakBlock, player, world, x, y, z);
            Material material = originalBlock.getMaterial();

            if (newStrength > 0f && strength / newStrength <= 10f && breakBlock.getMaterial() == material) {
                RandomUtils.breakBlock(world, breakBlock, x, y, z, side, player);

                if ((double) breakBlock.getBlockHardness(world, x, y, z) != 0.0D) {
                    stack.damageItem(1, player);
                }
            }
        }
    }
}
Копает все руды кроме редстоуна. И уголь и руды из других модов.
 
Я так понимаю там каждый блок прописан отдельно
private static final Set field_150915_c = Sets.newHashSet(new Block[] {Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail});
 
Я покопался в block.Block, там с getMaterial идет return this.blockMaterial, он много где используется, например в isNormalCube() и isBlockNormalCube().
if (block10.blockMaterial == Material.air) ну и вот тут.
Моих знаний видимо не достаточно дабы это понять.
Почему редстоун не относится ни к isBlockNormalCube(), ни к isNormalCube()...
 
потому что он не куб
 
Я нашел в принципе
public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ)
{
return this == Blocks.emerald_block || this == Blocks.gold_block || this == Blocks.diamond_block || this == Blocks.iron_block;
}
public boolean isToolEffective(String type, int metadata)
{
if ("pickaxe".equals(type) && (this == Blocks.redstone_ore || this == Blocks.lit_redstone_ore || this == Blocks.obsidian))
return false;
if (harvestTool[metadata] == null) return false;
return harvestTool[metadata].equals(type);
}
 
на сколько я помню, к кубам относятся квадратные блоки, типа бревен, булыжника и тд. даже забор по идее не относится к кубу(потому что по бокам он меньше блока, а в высоту немного больше)
 
(потому что по бокам он меньше блока, а в высоту немного больше)
Но ведь редстоун тоже как блок. Я так понимаю он просто относится к классу "тяжелых" блоков, по типу Обсидиана. Но вы правы. Ступеньки не ломаются, видимо потому что они не блоки.
 
в высоту он намного меньше блока, в ширину он тоже меньше. этот метод вообще возвращает false для всех нестандартных блоков
 
найти НОРМАЛЬНЫЙ мод
Я искал - но не нашел. Из всех таких модов я посмотрел Ботанию, там через либы все сделано, и СТОЛЬКО бесполезного для себя кода мне не нужно. С драконик Эволюшеном вообще все то же самое. Там полностью все на либах. Абсолютно все. У таума и его аддонов нет сурса, а других модов я не знаю. Хотя может не все осмотренные мной написал
 
Назад
Сверху