[1.7.10]Проблема с SetBlock

Хочу создать свое дерево, есть такой код:
Код:
package com.alternativemod.items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

import com.alternativemod.AlternativeBlocks;
import com.alternativemod.AlternativeItems;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class AltGevSap  extends AlternativeItems{
    
    @SideOnly(Side.CLIENT)
    @Override
    public boolean onItemUse(ItemStack is, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {

    if (!world.isRemote) {
        
        world.setBlock(x,y,z, Blocks.dirt);
        return true;
        }

    //    return super.onItemUse(is, player, world, x, y, z, side, hitX, hitY, hitZ);
        return false;
        }
}
В майнкрафте ничего не происходит когда жму правой кнопкой с предметом в руке

P.S. Существует проблема с прокси:
Код:
    @SidedProxy(clientSide="com.alternaivemod.ClientProxy", serverSide="com.alternaivemod.CommonProxy")
       public static CommonProxy proxy;                                      
CommonProxy - Eclipse подчеркивает как ошибку "CommonProxy cannot be resolved to a type".
Я создал два класса com.alternaivemod.ClientProxy, com.alternaivemod.CommonProxy(суперкласс для ClientProxy), но не понимаю что в них должно быть. Если это все закомментировать, все работает, но блок не ставится.
 
ChooseLife написал(а):
Код:
@SideOnly(Side.CLIENT)
Это для того чтобы метод работал на клиентской части мода.
ChooseLife написал(а):
Код:
if (!world.isRemote) {
Это условие должно работать на серверной части мода.
---
Убери:
Код:
@SideOnly(Side.CLIENT)
[merge_posts_bbcode]Добавлено: 29.07.2015 02:27:47[/merge_posts_bbcode]

Метод "onItemUse", нужно жать по какому-либо блоку, это не метод "onItemRightClick".
 
Жму на блок, 
Код:
@SideOnly(Side.CLIENT)

убирал вообще, оверрайд убирал, "!" убирал не помогает, компилируется без проблем, но в игре ничего не происходит
 
ChooseLife написал(а):
"!" убирал не помогает
Ты убрал знак "!" из "if (!world.isRemote)"? Не надо.
Трудно предположить в чём может быть проблема, не известно, что ещё могло-бы быть написано в классе "AlternativeItems".
 
Код:
if (!world.isRemote) {
        
        world.setBlock(x,y,z, Blocks.nether_brick);
        world.markBlockForUpdate(x, y, z);
        return true;
        }
Не работает, я что-то делаю не так?

Класс AlternativeItems
Код:
package com.alternativemod;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class AlternativeItems extends Item {
    public AlternativeItems(){
        maxStackSize = 64;
        setCreativeTab(AlternativeMod.tabAlternative);
        setUnlocalizedName("alternativeItem");
        
    }
    public static void RegistryItems(){        
        InitializateItems();
        RegisterItems();
            
    }
    
    public static Item alternativeStick;
    public static Item altGevSap;
    
    
    public static void InitializateItems(){
        alternativeStick = new AlternativeItems()
        .setMaxStackSize(16)
        .setUnlocalizedName("alternativeStick")
        .setTextureName("alternativemod:AlternativeStick");
        
        altGevSap = new AlternativeItems()
        .setMaxStackSize(16)
        .setUnlocalizedName("altGevSap")
        .setTextureName("alternativemod:RubSapling");
        
    }
    
    public static void RegisterItems(){
        GameRegistry.registerItem(alternativeStick,"alternativeStick");    
        GameRegistry.registerItem(altGevSap,"altGevSap");

    
    
    }
    
    
    
    
        
}
 
Отсутствия super в классе:
Код:
public AlternativeItems(){
super();
maxStackSize = 64;
setCreativeTab(AlternativeMod.tabAlternative);
setUnlocalizedName("alternativeItem");
}
И не известно, задействовал ты метод "AlternativeItems.RegistryItems();" в преИните. Если да, то в какой переменной он используеться у тебя класс "AltGevSap"?
 
Честно говоря не понимаю как я мог пропустить super(), большое спасибо! Однако проблема осталась.=(
Мой preInit:
Код:
@EventHandler
    public void preInit(FMLPreInitializationEvent event){
        AlternativeItems.RegistryItems();
        Recipies.MainRegistry();
        AlternativeBlocks.RegistryBlocks();
    }
Второй части вопроса не понял.
 
ChooseLife, у тебя есть вот этот код:
Код:
altGevSap = new AlternativeItems()
        .setMaxStackSize(16)
        .setUnlocalizedName("altGevSap")
        .setTextureName("alternativemod:RubSapling");
---
А класс "AltGevSap" из твоего первого поста используешь "onItemUse" и он у тебя не работает.
---
Что пытаюсь иметь виду ... Где у тебя объявляется переменная класса "AltGevSap"? Типа такой:
Код:
переменая_предмета = new AltGevSap();
?
 
Получается у меня такого вообще нет. Где нужно добавить? Поменял 
Код:
altGevSap = new AlternativeItem()
        .setMaxStackSize(16)
        .setUnlocalizedName("altGevSap")
        .setTextureName("alternativemod:RubSapling");

на
Код:
altGevSap = new AltGevSap()
        .setMaxStackSize(16)
        .setUnlocalizedName("altGevSap")
        .setTextureName("alternativemod:RubSapling");
Заработало, огромное спасибо всем, можно закрывать.
 
ChooseLife, я не знаю куда ты хочешь его добавить. Обычно в главный класс или в какой-нибудь другой класс - у тебя это "AlternativeItems". Хотя ты мог-бы наверное заменить, вместо:
Код:
altGevSap = new AlternativeItems()
использовать:
Код:
altGevSap = new AltGevSap()
.
 
Назад
Сверху