Алтарь

Итак, я сделал блок-алтарь.

Во-первых, как при нажатии ПКМ одним нужным предметом по нему заменить алтарь на другой алтарь (всмысле модель на другую модель)

И как сделать открытие ГУИ при ПКМ, и "заменить алтарь на другой алтарь" при нахождении в нем нужного предмета
 
Ну, тут как-то точного ответа не дашь. Можно в методе onBlockActivated, есть-ли нужный предмет в руке игрока. Если нет, то открывать GUI. Пример:
Код:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
    ItemStack currentItem = player.getCurrentEquippedItem();
    TileEntity tile = world.getTileEntity(x, y, z);
    if (currentItem != null && currentItem.getItem() == Items.nether_star) {
        //
    }
    else if (tile != null && tile instanceof IInventory) {
            player.openGui(MyMod.instance, idGUI, player.worldObj, x, y, z);
    }
    return super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ);
}
Под IInventory, может или должен стоять твой класс алтаря (твоего TileEntity или типа того).
Замена алтаря, как-бы должен делать ты. Так как не известно, какой у тебя должен быть другой алтарь.
 
Благодарю, благодарю.

Остался вопросик(и).

- Как сделать собственный эффект?
- Как очистить предмет при условии (например при оставшихся использованиях менее 5)

P.S. не буду же я для каждого создавать новую тему
 
Наверное, что-то типа этого:
Код:
int cont = 0;
Item item = Items.stick;//Наш предмет
for (ItemStack slot : player.inventory.mainInventory) {
    if (slot != null && slot.getItem() == item) cont += slot.stackSize;//Считаем количество нашего предмета в слотах(-е).
}
if (cont >= 5) {//Если равно или больше 5, то .. 
    for (int i = 0; i < 5; ++i) {//... пять раз ...
        player.inventory.consumeInventoryItem(item);// ... удаляем предмет
    }
}
 
Мне нужно было лишь знать "player.inventory.consumeInventoryItem(item);"

Насчет эффекта. Как добавить эффект (кастомный) какой-либо сущности?

public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
if (random.nextInt(3) == 0)
{
player.addPotionEffect(new PotionEffect(AlchemyBase.ExorcismEffect.id, 20 * 5, 2));
}


this.setDamage(stack, this.getDamage(stack) + 1);

return true;
}



Тоже самое, но для сущности


О, ах да, и еще картинка для эффекта тоже нужна, куда ее загружать?
 
Ух ты, какой ответ -_-

Спрошу у умных людей - каким образом загрузить определенную картинку для кастомного эффекта?

public class ExorcismEffect extends Potion
{
public static ResourceLocation textureResource = new ResourceLocation("textures/gui/ExorcismEffect.png");

public static Potion exorcism;

public ExorcismEffect(int id, boolean isBadEffect, int color, String name)
{
super(id, isBadEffect, color);
this.setPotionName("potion." + name);
LanguageRegistry.instance().addStringLocalization(this.getName(), name);
}


public Potion setIconIndex(int x, int y) {
super.setIconIndex(x, y);
return this;
}


public static void loadEffects()
{
//exorcism = new Potion(29, true, 5149490, "Exorcism");
}


public static void register()
{
Potion.potionTypes[29] = exorcism;
}


@Override
@SideOnly(Side.CLIENT)
public boolean hasStatusIcon()
{
Minecraft.getMinecraft().renderEngine.bindTexture(textureResource);
return true;
}
}
 
И что это тебе даст? Ты знаешь, что только из обычной, стандартной картинки можно грузить иконку. Пиши свой поушн, либо ищи костыль для дефолтных
 
Назад
Сверху