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

Сообщения
116
Лучшие ответы
0
Реакции
4
Версия Minecraft
1.7.10
Всем привет!
Я хочу создать рецепт заточенного кремния, посредством ударов(лкм) о блок (например, камня) кремнием, как это сделано в моде PrimalCore, но у этого мода нет открытого исходного кода + он на 1.10.2+ Вот gif, где видно как это сделано в PrimalCore:
 ИНСТРУМЕНТЫ И НОЧЬ SevTech Ages ПРОХОЖДЕНИЕ СБОРКИ #1 (onlin...GIF
Буду очень признателен, если поможете!
 
Сообщения
97
Лучшие ответы
2
Реакции
21
PlayerInteractEvent.RightClickItem, но это для 1.12. Думаю, в 1.7.10 тоже есть что-то подобное?
 
Сообщения
255
Лучшие ответы
11
Реакции
69
Дам совет если кода не в общем доступе ищи у друзей или знакомых на гитлабе, либо декомпилируй, лично для этого я открываю мод через 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
 
Сообщения
690
Лучшие ответы
29
Реакции
93
Не то нашёл ты. Это 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"?
 
Сообщения
952
Лучшие ответы
48
Реакции
167
Совсем обленились.... Готовое подавай...
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);
        }
    }
 

Dysphoria

aka Agravaine
Модератор
Сообщения
5,944
Лучшие ответы
330
Реакции
1,483
Забаньте плез, человек ваще не понимает что делает, без основ джавы тут никак.
 
Сообщения
4,744
Лучшие ответы
45
Реакции
635
Спасибо за идею!
 
Сообщения
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,426
Лучшие ответы
61
Реакции
431
То-есть я могу теперь делать заточенный кремний клацая чем угодно по камню, даже пустой рукой? Допиши проверку, ты получил, но нигде не используешь SharpedFlint(а еще там может быть что угодно, даже null)
 
Сообщения
2,847
Лучшие ответы
177
Реакции
494
Сообщения
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
Сверху