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

Версия Minecraft
1.7.10
116
4
Всем привет!
Я хочу создать рецепт заточенного кремния, посредством ударов(лкм) о блок (например, камня) кремнием, как это сделано в моде PrimalCore, но у этого мода нет открытого исходного кода + он на 1.10.2+ Вот gif, где видно как это сделано в PrimalCore:
 ИНСТРУМЕНТЫ И НОЧЬ SevTech Ages ПРОХОЖДЕНИЕ СБОРКИ #1 (onlin...GIF
Буду очень признателен, если поможете!
 

Endless

Любитель OpenGL
270
11
82
Дам совет если кода не в общем доступе ищи у друзей или знакомых на гитлабе, либо декомпилируй, лично для этого я открываю мод через 7zip и открываю с помощью IDEA
 
116
4
Дам совет если кода не в общем доступе ищи у друзей или знакомых на гитлабе, либо декомпилируй, лично для этого я открываю мод через 7zip и открываю с помощью IDEA
Krab уже написал какой код используется на 1.12.2(то есть какой используется в PrimalCore, мне уже не надо декомпилировать. За совет спасибо, учту!), а сейчас мне нужен похожий код для 1.7.10
 
1,057
50
234
Совсем обленились.... Готовое подавай...
Java:
if(block == Blocks.stone)
{
    EntityItem item = new EntityItem(e.world, e.x, e.y, e.z, YOUITEMSTACK);
    e.world.spawnEntityInWorld(item);
}
 
116
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);
        }
    }
 
116
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);
        }
    }
 

Eifel

Модератор
1,623
78
608
То-есть я могу теперь делать заточенный кремний клацая чем угодно по камню, даже пустой рукой? Допиши проверку, ты получил, но нигде не используешь SharpedFlint(а еще там может быть что угодно, даже null)
 
3,005
192
592
116
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
Сверху