Как создать крафт предмета, посредством ударов ингридиента о блок? 1.7.10

Сообщения
116
Лучшие ответы
0
Реакции
4
Версия Minecraft
1.7.10
Всем привет!
Я хочу создать рецепт заточенного кремния, посредством ударов(лкм) о блок (например, камня) кремнием, как это сделано в моде PrimalCore, но у этого мода нет открытого исходного кода + он на 1.10.2+ Вот gif, где видно как это сделано в PrimalCore:
 ИНСТРУМЕНТЫ И НОЧЬ SevTech Ages ПРОХОЖДЕНИЕ СБОРКИ #1 (onlin...GIF
Буду очень признателен, если поможете!
 
Сообщения
95
Лучшие ответы
2
Реакции
20
PlayerInteractEvent.RightClickItem, но это для 1.12. Думаю, в 1.7.10 тоже есть что-то подобное?
 
Сообщения
213
Лучшие ответы
11
Реакции
48
Дам совет если кода не в общем доступе ищи у друзей или знакомых на гитлабе, либо декомпилируй, лично для этого я открываю мод через 7zip и открываю с помощью IDEA
 
Сообщения
116
Лучшие ответы
0
Реакции
4
PlayerInteractEvent есть на 1.7.10, но когда дописываю Right/LeftClickItem выдает ошибку...
 
Сообщения
116
Лучшие ответы
0
Реакции
4
Дам совет если кода не в общем доступе ищи у друзей или знакомых на гитлабе, либо декомпилируй, лично для этого я открываю мод через 7zip и открываю с помощью IDEA
Krab уже написал какой код используется на 1.12.2(то есть какой используется в PrimalCore, мне уже не надо декомпилировать. За совет спасибо, учту!), а сейчас мне нужен похожий код для 1.7.10
 
Сообщения
116
Лучшие ответы
0
Реакции
4
Я нашел, как это будет выглядеть в 1.7.10, только как это все привести в должный вид? Чтобы когда я бил кремнием о блок камня, мне дропался "MyMod.SharpedFlint"?
Код:
PlayerInteractEvent.Action.LEFT_CLICK_BLOCK
 
Сообщения
685
Лучшие ответы
29
Реакции
91
Не то нашёл ты. Это returnит Event.RESULT. Тебе нужно подобное:
Java:
public void onClick(PlayerInteractEvent e) {
        ItemStack flint = e.entityPlayer.getHeldItem();
        Block block = e.world.getBlock(e.x, e.y, e.z);
}
 
Сообщения
116
Лучшие ответы
0
Реакции
4
Спасибо, SuperCatMaster! А как полностью будет выглядеть этот код, чтобы когда я бил по камню кремнием, мне дропался "MyMod.SharpedFlint"?
 
Сообщения
927
Лучшие ответы
46
Реакции
133
Совсем обленились.... Готовое подавай...
Java:
if(block == Blocks.stone)
{
    EntityItem item = new EntityItem(e.world, e.x, e.y, e.z, YOUITEMSTACK);
    e.world.spawnEntityInWorld(item);
}
 
Сообщения
116
Лучшие ответы
0
Реакции
4
У меня не получается, требует зарегистрировать MyMod.SharpedFlint, как Entity...
Код:
    @SubscribeEvent
    public void onClick(PlayerInteractEvent e) {
        ItemStack flint = e.entityPlayer.getHeldItem();
        Block block = e.world.getBlock(e.x, e.y, e.z);
        if(block == Blocks.stone)
        {
            EntityItem item = new EntityItem(e.world, e.x, e.y, e.z, flint);
            e.world.spawnEntityInWorld(MyMod.SharpedFlint);
        }
    }
 

Agravaine

Модератор
Сообщения
4,984
Лучшие ответы
225
Реакции
819
Забаньте плез, человек ваще не понимает что делает, без основ джавы тут никак.
 
Сообщения
4,499
Лучшие ответы
41
Реакции
517
Спасибо за идею!
 
Сообщения
116
Лучшие ответы
0
Реакции
4
Спасибо Timaxa!
Спасибо SuperCatMaster!
Спасибо BlesseNTumble!
Наконец все получилось с вашей помощью!

Код:
    @SubscribeEvent
    public void onClick(PlayerInteractEvent event5) {
        ItemStack SharpedFlint = event5.entityPlayer.getHeldItem();
        Block block = event5.world.getBlock(event5.x, event5.y, event5.z);
        if(block == Blocks.stone)
        {
            EntityItem item = new EntityItem(event5.world, event5.x + 0.5, event5.y + 0.5, event5.z + 0.5, new ItemStack(MyMod.SharpedFlint));
            event5.world.spawnEntityInWorld(item);
        }
    }
 
Сообщения
1,322
Лучшие ответы
53
Реакции
352
То-есть я могу теперь делать заточенный кремний клацая чем угодно по камню, даже пустой рукой? Допиши проверку, ты получил, но нигде не используешь SharpedFlint(а еще там может быть что угодно, даже null)
 

Doc

Сообщения
2,551
Лучшие ответы
148
Реакции
366
Сообщения
116
Лучшие ответы
0
Реакции
4
То-есть я могу теперь делать заточенный кремний клацая чем угодно по камню, даже пустой рукой? Допиши проверку, ты получил, но нигде не используешь SharpedFlint(а еще там может быть что угодно, даже null)
Это я уже вчера выяснил, что этот код не делает то, что я задумал. Уже исправлено и доделано! Спасибо огромное Timaxa, что очень сильно помог мне с кодом!
Код:
    @SubscribeEvent
    public void onClick(PlayerInteractEvent event) {
        if (event.action != PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) return;
        ItemStack heldItem = event.entityPlayer.getHeldItem();
        if (heldItem == null) return;

        Block block = event.world.getBlock(event.x, event.y, event.z);
        if (block == Blocks.stone) {

            if (heldItem.getItem() == Items.flint) {
                EntityItem item = new EntityItem(event.world, event.x + 0.5, event.y + 0.5, event.z + 0.5, new ItemStack(MyMod.SharpedFlint));
                if (!event.world.isRemote) {
                    event.world.spawnEntityInWorld(item);
                    event.world.spawnParticle("smoke", event.x + 0.5, event.y + 0.5, event.z + 0.5, 0.0D, 0.0D, 0.0D);

                    if (!event.entityPlayer.capabilities.isCreativeMode) {
                        --heldItem.stackSize;
                        if (heldItem.stackSize <= 0)
                            event.entityPlayer.inventory.setInventorySlotContents(event.entityPlayer.inventory.currentItem, null);
                        else
                            event.entityPlayer.inventory.setInventorySlotContents(event.entityPlayer.inventory.currentItem, heldItem);
                    }

                }
            }
        }
    }
 
Последнее редактирование:
  • Like
Реакции: lnti
Сверху