редактирование исходников для среды

Версия Minecraft
1.7.10
235
3
21
в общем делаю, глобальный мод который переписывает много деталей из простого майна, сейчас делаю свой лук, со своими стрелами с эффектами и прочим, позади уже долбежка с текстурами, спасибо Rebel Penguin, выбор типа стрел по кнопке, выдача эффектов, все это решилось относительно быстро, но сейчас я уже умереть готов просто потому что мои EntityArrow не подымаются, чтобы они подымались нужно переопределить или хукнуть метод onCollideWithPlayer, и все бы хорошо, но там есть приватное поле inGround, которое отвечает, лежит ли стрела на земле, я не могу ничего с этим сделать, не могу это никак обойти, если делать весь мой EntityArrow с нуля, а не наследовать от оригинала, то там еще больше проблем, AcsesTransformer что расписан в гайде по хуку gloomyfolken, у меня не работает хоть ты тресни, все верно сделано, он при повторной сборке находит его, но ничего не меняет, для меня не такая проблема отредачить исходники, скачать mcp, декомпильнуть, поставить там public, собрать заного и получить нужные классы, но - я не могу ничего сделать в среде(eclipse + gradlew), я заменял везде где только мог эти классы, но оно все равно крашилось, есть ли какой-то адекватный метод, как отредачить исходники и не умереть, не очень уверен на счет работы gradlew, она же вроде сначала закачивает простой майн, потом его обрабатывает, можно ли как то стопнуть на моменте готовности загрузки, закинуть свои классы и продолжить (мне не нужно сильно менять структуру классов, изза чего все будет ломаться, где-то цирфы поменять, где то приват на паблик)
 
Решение
AcsesTransformer что расписан в гайде по хуку gloomyfolken, у меня не работает хоть ты тресни
М-да.
Access Transformers
Вот тебе гайд.
Создаешь в ресурсах -> папку мета-инф -> файл modid_at.cfg (с своим modID) -> вписываешь ето:
public net.minecraft.entity.projectile.EntityArrow field_70254_i
Потом делаешь грабли клеан ... из гайда Дахаки.

И НЕ НОЕШЬ, А ДЕЛАЕШЬ!

P.S. А по поводу копипаста стрелы - ты хотя б рендер на нее накинул?
А все другие методы сделал, где она используется?
Надо смотреть сорцы полные, а не копипастить 1 класс.
Я однажды редачил фланс не имея сорцов)0
Если я правильно понял,то тебе надо редачить класс не имея срц
Звучит тупо,но:
1)Декомпил нужного класса
2)Фикс класса
3)То,что тебе надо заменить
4)Создание всех "визуальных" классов в которых пишем параметры нужные для класса которого ты редачишь
5)Компил
6)Замена нужного класса.
Если крашит - чекать краш репорты и редачить.

Можете не писать ,что я тупой,я итак это знаю ;)
 
Поднимаются стрелы что скелет стреляет )))
Java:
        public void onEntityJoinWorld(EntityJoinWorldEvent event) {
           if(!event.world.isRemote && event.entity instanceof EntityArrow) {
              EntityArrow arrow = (EntityArrow)event.entity;
              if(!(arrow.shootingEntity instanceof EntityPlayer)) {
                 arrow.canBePickedUp = 1;
              }
          }

 }
 
Код:
public void onCollideWithPlayer(EntityPlayer p_70100_1_)
    {
        if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0)
        {
            boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode;

            if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(Items.arrow, 1)))
            {
                flag = false;
            }

            if (flag)
            {
                this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
                p_70100_1_.onItemPickup(this, 1);
                this.setDead();
            }
        }
    }

Код:
public void onCollideWithPlayer(EntityPlayer player)
    {
        if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0)
        {
            Item itemArrow = this.arrowType.itemArrow;
            Random rand = new Random();
            boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && player.capabilities.isCreativeMode;

            if (this.canBePickedUp == 1 && !player.inventory.addItemStackToInventory(new ItemStack(itemArrow, 1)))
            {
                flag = false;
            }

            if(flag)
            {
                this.playSound("random.pop", 0.2F, ((rand.nextFloat() - rand.nextFloat()) * 0.7F + 1.0F) * 2.0F);
                player.onItemPickup(this, 1);
                this.setDead();
            }
        }

и все решается кроме приватного поля inGround
 
а не проще будет тогда замутить полностью свою стрелу и издеваться над ней как хочешь
наверняка эффекты еще будет к стрелам докидывать взрывы тп тд или винтом летать будут ну там уж как фантазия накроет
 
когда я откопипастил EntityArrow из ванильного майна, и создал полностью свою, она даже летать не стала, тупо на вылете из моего лука пропадала, есть мод какой нибудь, где это уже сделано, посмотреть хочу
 
AcsesTransformer что расписан в гайде по хуку gloomyfolken, у меня не работает хоть ты тресни
М-да.
Access Transformers
Вот тебе гайд.
Создаешь в ресурсах -> папку мета-инф -> файл modid_at.cfg (с своим modID) -> вписываешь ето:
public net.minecraft.entity.projectile.EntityArrow field_70254_i
Потом делаешь грабли клеан ... из гайда Дахаки.

И НЕ НОЕШЬ, А ДЕЛАЕШЬ!

P.S. А по поводу копипаста стрелы - ты хотя б рендер на нее накинул?
А все другие методы сделал, где она используется?
Надо смотреть сорцы полные, а не копипастить 1 класс.
 
открывал заного среду и ничего не менялось
Сделай еще раз.
По крайней мере должно писаться Found AccessTransformer: modid_at.cfg.
Если и этого нету, тогда у тебя файл не в том месте создан.
 
Сделай новую папку.
Туда новую среду.
Сразу делаешь файл с AT.
Грабли декомп.
Чекаешь.
~
Если и так не работает - значит AT фиговый.
 
Назад
Сверху