Создание пилы
Item.java
Для начала создадим в Item.java строчку:
public static Item hacksaw = (new ItemHacksaw(2012, EnumToolMaterial.EMERALD)).setUnlocalizedName("hacksaw");
EnumToolMaterial.EMERALD - Материал - Алмаз (Не знаю, почему так записано в клиенте)
ItemHacksaw.java
Переходим непосредственно к файлу нашего итема.
package net.minecraft.src;
public class ItemHacksaw extends ItemTool
{
    private static Block[] blocksEffectiveAgainst = new Block[] {Block.wood};
    protected ItemHacksaw(int par1, EnumToolMaterial par2EnumToolMaterial)
    {
        super(par1, 3, par2EnumToolMaterial, blocksEffectiveAgainst);
    }
    public boolean onBlockDestroyed(ItemStack iStack, World world, int blockID, int x, int y, int z, EntityLiving entity) {
        if(!world.isRemote){
        	 for(int j = y - 1; j ‹ y + 70; j++){
        		   if(!(world.getBlockId(x, j, z) == Block.leaves.blockID)){
        		      world.destroyBlock(x, j, z, true);
        		   }
        		
            }  
        }
        iStack.damageItem(1, entity);
        return true;
    }
    public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
    {
        return par2Block != null && (par2Block.blockMaterial == Material.wood) ? this.efficiencyOnProperMaterial : super.getStrVsBlock(par1ItemStack, par2Block);
    }
}
private static Block[] blocksEffectiveAgainst = new Block[] {Block.wood}; - список блоки, с которыми будет работать инструмент. Если ломать блоки не из списка, то эффективность разрушения ухудшается.
    public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
    {
        return par2Block != null && (par2Block.blockMaterial == Material.wood) ? this.efficiencyOnProperMaterial : super.getStrVsBlock(par1ItemStack, par2Block);
    }
Задаем материалы, с которыми будет работать инструмент. В данном случае - дерево (не Log!)
А вот теперь начинается самое вкусное. Пила разрубает вверх определенное количество блоков.
В этом примере я ограничусь 70-ю блоками по Y.
    public boolean onBlockDestroyed(ItemStack iStack, World world, int blockID, int x, int y, int z, EntityLiving entity) {
        if(!world.isRemote){
        	 for(int j = y - 1; j ‹ y + 70; j++){
        		   if(!(world.getBlockId(x, j, z) == Block.leaves.blockID)){
        		      world.destroyBlock(x, j, z, true);
        		   }
        		
            }  
        }
        iStack.damageItem(1, entity);
        return true;
    }
        if(!world.isRemote){
        	 for(int j = y - 1; j ‹ y + 70; j++){
        		   if(!(world.getBlockId(x, j, z) == Block.leaves.blockID)){
        		      world.destroyBlock(x, j, z, true);
        		   }
        		
            }  
        }
Координаты.
На 70 Y вверх от места удара.
Также здесь идет небольшое правило:
     if(!(world.getBlockId(i, j, k) == Block.leaves.blockID)){
                            world.destroyBlock(i, j, k, true);
Таким образом мы получили свою собственную пилу, разрушающую вверх на 70 блоков.
 Достижения
 Достижения Биржа
 Биржа 
 Карты ↓
 Карты ↓


 Поиск
 Поиск Твинки
 Твинки Друзья
 Друзья Администрация
 Администрация