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

Плагин [FIX] ModFixNG [#67] - фикс разнообразных багов в модах. [1.6.4-1.8]

Тема в разделе "Релизы плагинов", создана пользователем Shevchik, 18 май 2013.

  1. Exidas

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

    Баллы:
    68
    Сделал себе фикс от дюпа с углем. Нужно просто исключить из проверки на обнуление микроблоки, дюпы с переименованием с ними не работают, так что ничего страшного не будет. Думаю, если автор так сделает, многим пригодится. Выкладывать не буду, так как у меня без конфига, для моего ID микроблоков, а они могут у вас отличаться.
     
  2. Хостинг MineCraft
    <
  3. trancefer

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

    Баллы:
    123
    Я может что то пропустил, не ругайтесь, появился ли фикс этого?
     
  4. Intern0

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

    Баллы:
    153
    Имя в Minecraft:
    Intern0
    Я запретил этот апгрейд. Обосную: он итак тупой, работает криво, очень криво определяет сундуки рядом (может вообще начать кидать блоки в воронку\двигатель\ect). Если на сервере есть билдкрафт, не вижу смысла в этом апгрейде.
     
  5. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    emou style!
     
  6. Intern0

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

    Баллы:
    153
    Имя в Minecraft:
    Intern0
    В голос :lol:
     
  7. Radviger

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

    Баллы:
    88
    Имя в Minecraft:
    Radviger
    Если автор его добавил - значит есть смысл. А и ещё, если вы не знаете понятия "инвентарь", то не стоит называть его кривым.
     
  8. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    И всё-таки одна вещь не даёт мне покоя уже целый год. Почему 0?
     
  9. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Что 0?
     
  10. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Почему в контейнере после фрикама остаётся 0 вещей? Я не нашёл ни одного следа где итемы бы реально обнулялись таким странным методом, и вообще ни одного куска кода который бы отвечал за такую связь контейнера и блока кроме 1го....
    В майне есть лишь одно место которое следит за валидностью контейнера (с 1.8 оно будет следить почти как ModFixNG кстати), но при невалидности такого инвентаря оно тупо закрывает его. После этого сервер не должен принимать пакеты для этого контейнера потому что он невалиден. Однако принимает же, и итемы в количестве 0 получаются. Как это происходит блин?
    Только одна причина - контейнер всё ещё валиден, и значит валидатор тут непричём. Тем более что ModFixNG закрывает инвентарь нормально. А значит инвентарь валидный, но почему-то с нулевыми итемами. Но должно же что-то делать их нулевыми?[DOUBLEPOST=1415966198,1415960912][/DOUBLEPOST]НАШЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЛ!!!!!

    Вот какое говно есть например в BlockChest
    Код:
        @Override
        public void remove(final World world, final int n, final int n2, final int n3, final Block block, final int n4) {
            final TileEntityChest tileEntityChest = (TileEntityChest)world.getTileEntity(n, n2, n3);
            if (tileEntityChest != null) {
                for (int i = 0; i < tileEntityChest.getSize(); ++i) {
                    final ItemStack item = tileEntityChest.getItem(i);
                    if (item != null) {
                        final float n5 = this.b.nextFloat() * 0.8f + 0.1f;
                        final float n6 = this.b.nextFloat() * 0.8f + 0.1f;
                        final float n7 = this.b.nextFloat() * 0.8f + 0.1f;
                        while (item.count > 0) {
                            int count = this.b.nextInt(21) + 10;
                            if (count > item.count) {
                                count = item.count;
                            }
                            final ItemStack itemStack = item;
                            itemStack.count -= count;
                            final EntityItem entity = new EntityItem(world, n + n5, n2 + n6, n3 + n7, new ItemStack(item.getItem(), count, item.getData()));
                            final float n8 = 0.05f;
                            entity.motX = (float)this.b.nextGaussian() * n8;
                            entity.motY = (float)this.b.nextGaussian() * n8 + 0.2f;
                            entity.motZ = (float)this.b.nextGaussian() * n8;
                            if (item.hasTag()) {
                                entity.getItemStack().setTag((NBTTagCompound)item.getTag().clone());
                            }
                            world.addEntity(entity);
                        }
                    }
                }
                world.updateAdjacentComparators(n, n2, n3, block);
            }
            super.remove(world, n, n2, n3, block, n4);
        }
    
    Получается что при уничтожении сундука из него выпадают все итемы, но в нём всё ещё лежат итемы с количеством 0. Поэтому то и выходит такое говно. Оттуда же кстати тайминг дюпы с одновременным ломанием сундука или ещё чего-нибудь и забиранием итема. Они и сейчас сработают при особом везении на самом деле. Просто пакет взаимодействия с инвентарём должен прийти после ломания сундука, но в тот же тик и тогда всё сработает.

    Вот отсюда то и появляются нулевые итемы...
     
    Последнее редактирование: 14 ноя 2014
  11. fhntv24

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

    Баллы:
    88
    знаете что самое обидное? То что весь этот гавно код не работает на 1.3+ . Раньше он служил чтобы предметы в стороны летели... но в майне 1.3 ДОБАВИЛИ "СЖАТИЕ" ШМОТА... И ОДИН МАЛЕНЬКИЙ ВОПРОС - ЗАЧЕМ ЭТО ТОГДА? Оно же всё равно выйдет как 1 предмет в итоге .... без разлетывания в разные стороны... *sideface*
     
  12. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Вово. Ладно, благо в ModFixNG проверяется валидность блока и при клике, так что это не проблема.
    Но всё равно, такое говно стоило столько нервов и времени.
     
  13. fhntv24

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

    Баллы:
    88
    Ну эт же майн! Ты че хочеш! (п.с. немешалобы им это написать в баг трекер... горошая задача для них будет =) )
     
  14. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Это же моджанги, чего вы от них хотели.
    Сделали бы нормальный ModAPI, и выпускали бы минорные апдейты с исправлением ошибок, нет начали пихать кривые реализации древних модовых вещей
     
  15. fhntv24

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

    Баллы:
    88
    помню как написал нотч , мол он не хочет добовлять майн ничего что уже есть в модах... и да будет ендер сундук! И да будет новая генерация! И да будет овер 100500 вещей которые были в модах! Я же не хочу добовлять то что уже было в модах .... Гениальность нотча .... Реально не понимаю , как так можно относиться к игре
     
  16. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Нотч ушёл после 1.2.5. Он то как раз своё слово держал, а когда не смог - свалил.
     
  17. fhntv24

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

    Баллы:
    88
    как раз таки , ендер сундуки добавили когда он еще был(в 1.2.5). Новая генерация - она же поойму менялась до 1.2.5. Или я уже не помню когда что в майне делали или что... Хотя да , нотч раковал меньше других. Когда он был , он еще не мало чего делал полезного. Да и айпи который майн делает ... Тоже знаете , обещать но ничего не делать. В итоге так всегда , когда ливает хороший человек с проекта. С тем же форжем так было , и не раз.
     
  18. gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Это означает, что если добавить удаление нулевых предметов, то такие дюпы не будут работать?
     
  19. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ровно до тех пор пока какой-нибудь моддер-долбоёб не решит что можно вообще не отнимать количество итемов, всё равно же инвнетарь сейчас уничтожится. И боюсь таких моддеров слишком много.
    Но в ванильке решатся. Впрочем это всё равно не лучших метод. Лучше пропатчить эти классы чтобы они реально удаляли предметы.
     
  20. fhntv24

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

    Баллы:
    88
    а еще лутше , сделать setItemStackSize , и там добавить чек на 0. А еще лутше , всем подарить руко выпрямитель. А еще ... А еще лутше ставить на нулл все предметы когда ты ломаеш блок ( сделать в ядре сервера , т.е. в классе world ) ...

    Но у кого руки дойдут чтобы это сделать?!
     
  21. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Средствами доступными баккиту предметы станут null слишком поздно.
    Поэтому то в модфиксе и торчит проверка валидности контейнера при каждом клике. Это 100% фикс при условии что клик собственно вызывается, и настроен список энтитей которые надо отслеживтаь (блоки работают автоматически, почти все), а не как с AE где идиот-моддер решил что неплохо было бы сделать кастомное пермещение итемов используя пробел мать его. Хорошо хоть отключить можно.
    Если поиск нормального плагина превращается в поиск иголки в стоге сена, то поиск нормального мода превращается в хождение по минному полю.
     

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