Создание удобных крафтов. (Вопрос)

Версия Minecraft
1.12.2
API
Forge
122
4
6
После небольших махинаций с "терра пластиной" и идеей крафта при выбрасывании я создал небольшой рабочий код
Java:
public class TileEntityAlchemicalPedestal extends TileEntity implements ITickable {

    private int time = 0;

    @Override
    public void update() {
        if (!world.isRemote) {
            List<EntityItem> items = getItems();
            if (craft_1(items)) {
                time++;

                Random r = new Random();

                double dx = (r.nextFloat() - 0.4d) * 0.25d;
                double dy = (r.nextFloat() - 0.4d) * 0.25d;
                double dz = (r.nextFloat() - 0.4d) * 0.25d;

                ((WorldServer) world).spawnParticle(EnumParticleTypes.ENCHANTMENT_TABLE, pos.getX() + 0.5f, pos.getY() + 2.5f, pos.getZ() + 0.5f, 16, dx, dy, dz, 0.003f, new int[0]);

                EntityItem item = items.get(0);
                if (time >= 120) for (EntityItem otherItem : items) {
                    if (otherItem != item) otherItem.setDead();
                    else {
                        item.motionY = 0.3f;
                        item.setItem(new ItemStack(BlocksInit.AWAKENED_OBSIDIAN, 1));
                        time = 0;
                    }
                }
            }
        }
    }

    List<EntityItem> getItems() {
        return world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(pos, pos.add(1, 2, 1)));
    }

    public boolean craft_1(List<EntityItem> items) {
        for (EntityItem item_0 : items) for (EntityItem item_1 : items) for (EntityItem item_2 : items) for (EntityItem item_3 : items) {
            ItemStack gs = item_0.getItem();
            ItemStack ns = item_1.getItem();
            ItemStack ee = item_2.getItem();
            ItemStack o = item_3.getItem();
            if ((gs.getItem() == new ItemStack(Blocks.GLOWSTONE).getItem() && gs.getCount() == 1) &&
                    (ns.getItem() == new ItemStack(Items.NETHER_STAR).getItem() && ns.getCount() == 1) &&
                    (ee.getItem() == new ItemStack(Items.ENDER_EYE).getItem() && ee.getCount() == 6) &&
                    (o.getItem() == new ItemStack(Blocks.OBSIDIAN).getItem() && o.getCount() == 1)) return true;
        }
        return false;
    }

    public NBTTagCompound writeToNBT(NBTTagCompound nbt) { return super.writeToNBT(nbt); }
    public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); }
}
Но я бы хотел улучшить данную систему сделав компактнее, удобнее и чтобы крафты было просто добавлять а также было видно в jei.
К сожалению я не так долго в сфере моддинга по этому не знаю многих тонкостей. И в связи с этим прошу дать совет, подсказку или часть кода чтобы я мог понять, как создавать и писать данные части. Заранее спасибо.
 
1,371
112
241
Если не знаешь где искать, обратись к сурсам Twilight Forest или Botania - там реализовано очень много вещей, и очень высока вероятность того, что и твоя вещь там будет.
Например, Elven Trade в ботании. Тут реализовано не через RecipeType, но подтянуть в JEI подобное можно. Начиная с 1.13 подтянуть такое уже нельзя, обязательно нужен RecipeType.
 
627
72
178
Сверху