Крафт с без слотов крафта возможно ли?

Версия Minecraft
1.12.2
476
9
39
Нужно реализовать крафт стол, желательно, без плохих последствий в виде дюпа, где слоты инвентаря чекаются автоматически находят все рецепты и выводят список и кнопку замутить, как в террарии. Проблема в том, что нужно чтобы крафт происходил без слотов крафта потому как их попросту нету.
 
2,932
44
598
Проблема в том, что нужно чтобы крафт происходил без слотов крафта потому как их попросту нету.
А что мешает сделать проверку на нужные предметы в инвентаре, после чего удалять их, и выплёвывать в тот же мир, или сделать какой-то Output слот где будут как понятно с названия получаться скрафченные вещи.
 
476
9
39
А что мешает сделать проверку на нужные предметы в инвентаре, после чего удалять их, и выплёвывать в тот же мир, или сделать какой-то Output слот где будут как понятно с названия получаться скрафченные вещи.
Нужен алгоритм поиска рецепта, а предметов может быть 99х64, где рецепт может требовать разное кол-во предметов, плюс ванильные рецепты и из модов все рецепты должны грузиться, если они для верстака или для 2х2.
То есть адекватное решение я пока не нашёл. Ибо они тупо не работают адекватно. И требуют обязательно слоты.
Ну и я хочу через json новые рецепты регать.
 
214
11
59
Нужно реализовать крафт стол, желательно, без плохих последствий в виде дюпа, где слоты инвентаря чекаются автоматически находят все рецепты и выводят список и кнопку замутить, как в террарии. Проблема в том, что нужно чтобы крафт происходил без слотов крафта потому как их попросту нету.
Можно.
Java:
    void craft(int[] itemIDsForCraft, EntityPlayer player) {
        boolean isCompleted = false;
        for(int a = 0; a < itemIDsForCraft.length && !isCompleted; a++) {
            int id = itemIDsForCraft[a];
            for (int i = 0; i < player.inventory.mainInventory.length; i++) {
                ItemStack is = player.inventory.mainInventory[i];
                if (is != null && Item.getIdFromItem(is.getItem()) == id) {
                    int temp = itemIDsForCraft[a];
                    itemIDsForCraft[a] = itemIDsForCraft[itemIDsForCraft.length - 1];
                    itemIDsForCraft[itemIDsForCraft.length - 1] = temp;
                    int[] tempArr = new int[itemIDsForCraft.length - 1];
                    for(int t = 0; t < tempArr.length; t++) {
                        tempArr[t] = itemIDsForCraft[t];
                    }
                    itemIDsForCraft = tempArr;
                    if(itemIDsForCraft.length == 0) {
                        isCompleted = true;
                        break;
                    }
                }
            }
        }
        if(isCompleted) {
            //do something what you want
        }
    }
 
344
1
47
Ну в сущности они правы. Просто проверяй все тридцать шесть слотов (в обыкновенном случае) и ищи нужные предметы. Если они есть и их количество совпадает с нужным, то удаляй и передавай в руки игрока предмет.

Делай все на сервере разумеется, игрок лишь отсылает пакет, что он желает делать.

А сервер уже проверяет все там ))

Можно сделать так, что игрок сам все проверяет и отсылает на сервер уже пакет, что у него все есть, а тот тупо принимает и удаляет/добавляет. Но это уже если у вас просто обыкновенный мод и не боитесь встретить читеров :))
 
476
9
39
Как достать все рецепты из игры и где?
 
476
9
39
У тебя же свои рецепты, не?
Нужен алгоритм поиска рецепта, а предметов может быть 99х64, где рецепт может требовать разное кол-во предметов, плюс ванильные рецепты и из модов все рецепты должны грузиться, если они для верстака или для 2х2.
То есть адекватное решение я пока не нашёл. Ибо они тупо не работают адекватно. И требуют обязательно слоты.
Ну и я хочу через json новые рецепты регать.
Да, даже если у меня свои рецепты, весьма нелогично не юзать уже то, что есть и городить свои костыли и наступать на грабли, увеличивать время разработки. В общем я хочу юзать готовую систему и всё. Зачем страдать?
 
Последнее редактирование:
Сверху