Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Мод Как пофиксить дюп с микро блоками?

Тема в разделе "Модификации клиента", создана пользователем Navion, 28 сен 2014.

  1. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    он есть , НО ОН ПРИВАТНЫЙ. читать умеете или как?
    Да и зачем вам 1 аргумент , лень написать лишних пару символов (ItemStack)?...
     
  2. Хостинг MineCraft
    <
  3. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Вы по-моему вообще не в теме, или сами читать не умеете.
     
  4. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    как раз таки в теме. isItemStackEqual - проверка одинаковые ли 2 айтем стака , вызывать его как ItemStack.isItemStacksEqual(item1, item2). Его надо вызывать когда вы например сравниваите 2 предмета , когда суете их в сундук. Что же делает форестри - он использует другой метод , который без проверки нбт даты.

    Так же есть не статик метод , а простой. работает он как item1.isItemStackEqual(item2). Делает тоже самое , точнее статик метод только и делает одну работу - нулл чек и вызов данного метода. Зачем сделали его приватным - я хз. Но в нём нету нул чека.
     
  5. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    :confused:

    Вы вообще видели, на какой я пост дал ответ? И как мой ответ сформулирован?
    Я в курсе, как оно работает, зачем Вы мне это рассказываете?
    Для решения дюпа, Вам не поможет isItemStackEqual(par1, par2), если Вы этого не понимаете, а в Forestry используется isItemEqual(par1); => доступа к isItemStackEqual(par1) нет, потом что он private.
    Доходит?
     
  6. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    мне он помог.... У вас руки не с того места чтоли... к тому же - можно в ручную проверять нбт теги , ничего там такого сложного нету.
     
  7. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Очень хороший вывод про мои руки конечно, но я не обижусь.
    Очень интересно, как же Вам помог тот метод.
    Вручную конечно можно проверять, так и нужно.
     
  8. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +1 Я тоже не стал ипать мозг и просто вывел nbt тег и прогнал через egual.
     
  9. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    Код:
        // Чек только нбт
        public static boolean areItemStackTagsEqual(ItemStack par0ItemStack, ItemStack par1ItemStack)
    
       // Чек нбт + айди / метта
        /**
         * compares ItemStack argument1 with ItemStack argument2; returns true if both ItemStacks are equal
         */
        public static boolean areItemStacksEqual(ItemStack par0ItemStack, ItemStack par1ItemStack)
    
        // ЧЕК ТОЛЬКО АЙДИ И МЕТТА ( например для крафта , и тд ). Проверяет одинаковый ли ITEM , а не ItemStack !!!
        /**
         * compares ItemStack argument to the instance ItemStack; returns true if the Items contained in both ItemStacks are
         * equal
         */
        public boolean isItemEqual(ItemStack par1ItemStack)
    
     
  10. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Я вовсе через binpatches сделал фикс.

    В общем-то это все и так понятно, я просто говорю, что достаточно проверить nbt и что метод, который это делает принимая один аргумент - приватный.


    Кстати похоже Sengir сам сделал исправления.
    PHP:
    @Override
        
    public int addItem(ItemStack stackboolean doAddForgeDirection from) {
            
    ItemStack resource inventory.getStackInSlot(SLOT_RESOURCE);
            if (
    resource == null) {
                if (
    doAdd)
                    
    inventory.setInventorySlotContents(SLOT_RESOURCEstack.copy());
                return 
    stack.stackSize;
            }

            if (!
    StackUtils.isIdenticalItem(resourcestack))
                return 
    0;

            
    int space resource.getMaxStackSize() - resource.stackSize;
            if (
    space <= 0)
                return 
    0;

            if (
    doAdd)
                if (
    stack.stackSize <= space)
                    
    resource.stackSize += stack.stackSize;
                else
                    
    resource.stackSize += space;

            return 
    Math.min(stack.stackSizespace);
        }
     
  11. Sirse

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    https://github.com/ForestryMC/ForestryMC/pull/325
     
    smilesdc нравится это.
  12. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    О, даже так) Ну, я особо не слежу за этим. Хотя что-то в мыслях было такое, чтобы пулл-реквест кинуть им, но потом подумал, что все сразу же узнают о дюпе и ховайся.
     
  13. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    ну да , он приватный... ну да , ну да...
     
  14. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
  15. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    спасибо за скрин. Видем док-ва моих слов. Прям над тем приватным , есть не приватный метод. Он делает нулл чек , как я и говорил , И ВЫЗЫВАЕТ ТОТ ПРИВАТНЫЙ МЕТОД. Опять же , вам лень написать ItemStack. ? Несколько лишних символов .. а уже лень ..
     
  16. Sirse

    Sirse Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Присоединяюсь, isItemStackEqual является приватным.
     
  17. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Я же Вам совсем другое пытаюсь объяснить, а Вы в упор стоите на своем :)
     
  18. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    ну и что же вы хотие обеснить?

    он то приватный , но есть публичный статик метод - который делает тоже самое...
     
  19. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Очень хорошо, что он есть, но пост, на который я дал ответ, гласил, что необходимо использовать isItemStackEqual, а я написал, что он приватный. Сложно было прочитать, да?)
    А Вы мне начали рассказывать, что есть паблик статик методы, которые принимают 2 аргумента, которыми также можно пользоваться и т.п., это все хорошо, это я и без Вас знаю, но суть моего сообщения была вовсе не в этом :)
    Успокойтесь и расслабьтесь. Он то делает все тоже самое, да, но суть была совать в метод один аргумент, вот и завели на этом тему.
     
  20. fhntv24

    fhntv24 Активный участник Пользователь

    Баллы:
    88
    тфу , спать надо больше. Не заметил что название другое (не заметил разницу между is и are). Так то да , надо было большими буквами написать "смотри на is"
     

Поделиться этой страницей