Помощь с модом на 1.7.10

Версия Minecraft
1.7.10
API
Forge
21
2
Приветствую, я делаю мод на кольца, и вот проблема, кольцо работает только пока ты держишь его в руке, как сделать чтоб оно работало пока находиться в инвенторе? Вообще в лучшем случаи хотелось бы чтоб оно работало пока лежит тут (скрин 1) меню из баублс мода. Ещё есть проблема, я хочу чтобы оно давало доп. эффекты, с остальными эффектами всё в порядке, но с доп. хп проблема (скрин 2). Оно появляется, но не восстанавливается, так и висит. Буду очень благодарен за помощь, в моддинге новичок так что буду тупить)
 

Вложения

  • 111111111111unknown.png
    111111111111unknown.png
    21.9 KB · Просмотры: 16
  • 2222222222unknown.png
    2222222222unknown.png
    101.9 KB · Просмотры: 15
7,099
324
1,510
Добавь баблс как зависимость в проект.
В апи баблса есть интерфейс IBauble. Реализуй его в своем предмете, переопредели метод onWornTick - он будет вызываться каждый тик, пока предмет одет.

Если что-то из вышесказанного не понятно - бегом гуглить и учить матчать

Оно появляется, но не восстанавливается, так и висит
Не вижу твоего кода, хз в чем проблема. Но можно своих ходом регенить хп, если пустых сердец остается столько, сколько добавляет кольцо.
 
21
2
Неправильное оформление кода
Java:
public class Rings extends Item {











    public Rings(String name, String texture, int maxStackSize) {

        this.canRepair = false;

        this.setUnlocalizedName(name);

        this.setTextureName(DevindelMod.MODID + ":" + texture);

        this.setCreativeTab(DevindelMod.tabExampleMod);

        this.setMaxDamage(800);

        this.maxStackSize = maxStackSize;

        GameRegistry.registerItem(this, name);

    }



    @Override

    @SideOnly(Side.CLIENT)

    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {

        par3List.add("§4Кольцо жизни");

      

    }







    @Override

    public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {





        return false;

    }





 

    @Override

    public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) {

        super.onUpdate(stack, world, entity, par4, par5);

        if (entity instanceof EntityPlayer) {

            EntityPlayer player = (EntityPlayer) entity;

            ItemStack equipped = player.getCurrentEquippedItem();

            if (equipped == stack) {

                player.addPotionEffect(new PotionEffect(Potion.field_76434_w.id, 1, 1, true));

            

            }

        }



    }

Вот код
 
Последнее редактирование модератором:
7,099
324
1,510
21
2
Добавь баблс как зависимость в проект.
В апи баблса есть интерфейс IBauble. Реализуй его в своем предмете, переопредели метод onWornTick - он будет вызываться каждый тик, пока предмет одет.

Если что-то из вышесказанного не понятно - бегом гуглить и учить матчать


Не вижу твоего кода, хз в чем проблема. Но можно своих ходом регенить хп, если пустых сердец остается столько, сколько добавляет кольцо.
Java:
@SubscribeEvent

public void playerTick(TickEvent.PlayerTickEvent event) {

  // player events

  if (event.phase == TickEvent.Phase.END) {

    EntityPlayer player = event.player;

    IBaublesItemHandler baubles = BaublesApi.getBaublesHandler(player);

    for (int i = 0; i < baubles.getSlots(); i++) {

      ItemStack stack = baubles.getStackInSlot(i);

      IBauble bauble = stack.getCapability(BaublesCapabilities.CAPABILITY_ITEM_BAUBLE, null);

      if (bauble != null) {

        bauble.onWornTick(stack, player);

      }

    }

    if (!player.world.isRemote) {

      syncBaubles(player, baubles);

    }

  }

}

Что-то типа этого?
 
Последнее редактирование модератором:
7,099
324
1,510
Нет. И че-то такое уже есть в баблсе.
Тебе нужно в своем предмете реализовать onWornTick
 
21
2
Добавь баблс как зависимость в проект.
В апи баблса есть интерфейс IBauble. Реализуй его в своем предмете, переопредели метод onWornTick - он будет вызываться каждый тик, пока предмет одет.

Если что-то из вышесказанного не понятно - бегом гуглить и учить матчать


Не вижу твоего кода, хз в чем проблема. Но можно своих ходом регенить хп, если пустых сердец остается столько, сколько добавляет кольцо.
Понимаю что я тебе надоел уже, но что конкретно гуглить, я сделал интерфейс, но что дальше, мол я гуглил onWornTick и не чего не нашёл. Я честно безпонятия как сделать 1 или 2, есть какие примеры может?
 
7,099
324
1,510
Давай по пунктам
Добавь баблс как зависимость в проект.
Вот это сделал?
IBauble. Реализуй его в своем предмете, переопредели метод onWornTick
Далее, сделал это?

гуглил onWornTick и не чего не нашёл
Гуглить надо че-то типо "программирование реализация интерфейса" и "программирование переопределение метода", разбираться че это такое и делать у себя с IBauble и onWornTick

есть какие примеры может?
Есть, вот в ботании куча колец и прочих фенечек
 
21
2
Нет. И че-то такое уже есть в баблсе.
Тебе нужно в своем предмете реализовать onWornTick
Не могу ответить на последнее сообщение.
1.
public interface IBauble {
}
Я сделал это.
2. Не знаю как.
3. Хорошо.
4. Спасибо
 
21
2
Давай по пунктам

Вот это сделал?

Далее, сделал это?


Гуглить надо че-то типо "программирование реализация интерфейса" и "программирование переопределение метода", разбираться че это такое и делать у себя с IBauble и onWornTick


Есть, вот в ботании куча колец и прочих фенечек
Короче я всё сделал, спасибо за помощь, и чтоб хп держалось не надо не какую логику хила писать, надо просто время действия эффекта поставить 999999.
 
Сверху