Access Transformers

Access Transformers

Нет прав для скачивания
1,193
31
182
в EntityTrackerEntry сделал все поля и методы публичными, все пересобралось, в среде все паблик
в EntityTrackerEntry public boolean sendVelocityUpdates;
в хуке имеется

Java:
                    if (e.sendVelocityUpdates && !(packet instanceof S0FPacketSpawnMob))
                    {
                        p_73117_1_.playerNetServerHandler.sendPacket(new S12PacketEntityVelocity(e.myEntity.getEntityId(), e.myEntity.motionX, e.myEntity.motionY, e.myEntity.motionZ));
                    }
однако, при заходе в мир кидает экспешн что это поле якобы не доступно, хотя, в самом классе паблик и среда ничего не выдает насчет модификатора доступа
[21:39:23] [Server thread/ERROR]: "Silently" catching entity tracking error.
net.minecraft.util.ReportedException: Adding entity to track
at gloomyfolken.hooklib.example.AnnotationHooks.addEntityToTracker(AnnotationHooks.java:243) [AnnotationHooks.class:?]
at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java) [EntityTracker.class:?]
at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java:187) [EntityTracker.class:?]
at net.minecraft.entity.EntityTracker.addEntityToTracker(EntityTracker.java:73) [EntityTracker.class:?]
at net.minecraft.world.WorldManager.onEntityCreate(WorldManager.java:37) [WorldManager.class:?]
at net.minecraft.world.World.onEntityAdded(World.java:1516) [World.class:?]
at net.minecraft.world.WorldServer.onEntityAdded(WorldServer.java:904) [WorldServer.class:?]
at net.minecraft.world.World.spawnEntityInWorld(World.java:1507) [World.class:?]
at net.minecraft.server.management.ServerConfigurationManager.playerLoggedIn(ServerConfigurationManager.java:322) [ServerConfigurationManager.class:?]
at net.minecraft.server.management.ServerConfigurationManager.initializeConnectionToPlayer(ServerConfigurationManager.java:170) [ServerConfigurationManager.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:190) [NetworkDispatcher.class:?]
at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:463) [NetworkDispatcher.class:?]
at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:17) [HandshakeCompletionHandler.class:?]
at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) [HandshakeCompletionHandler.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.Error: Unresolved compilation problem:
The field EntityTrackerEntry.sendVelocityUpdates is not visible

at gloomyfolken.hooklib.example.AnnotationHooks.tryStartWachingThis(AnnotationHooks.java:138) ~[AnnotationHooks.class:?]
at net.minecraft.entity.EntityTrackerEntry.tryStartWachingThis(EntityTrackerEntry.java) ~[EntityTrackerEntry.class:?]
at net.minecraft.entity.EntityTrackerEntry.sendEventsToPlayers(EntityTrackerEntry.java:477) ~[EntityTrackerEntry.class:?]
at gloomyfolken.hooklib.example.AnnotationHooks.addEntityToTracker(AnnotationHooks.java:215) ~[AnnotationHooks.class:?]
... 30 more
 
7,099
324
1,510
Потому что хуки применяются до трансформеров
 
1,193
31
182
В другом хуке все прекрасно работает
И да, я сейчас выпилил полностью хук, энивей крашит, в чем трабл лол? Та же ошибка, хотя метод вообще закомменчен
public net.minecraft.entity.EntityTracker *
public net.minecraft.entity.EntityTrackerEntry *()
public net.minecraft.entity.EntityTrackerEntry *
 
7,099
324
1,510
Краш скинь
 
1,193
31
182
я ж написал, та же ошибка = тот же краш, выше скинуто уже)
хук закомменчен и все равно кидает экспешн на строку из этого хука, строку опять же выше скидывал1557076392858.png
 
7,099
324
1,510
А при запуске точно пересобирается? Может, оно старую версию запускает? Закоменченное точно не должно попадать
 
1,193
31
182
Филд на который ругается
Ну так, все поля становятся паблик еще при пересборке проекта, ибо другой хук ведь работает
Мб там какой нибудь класс наследует EntityTrackerEntry, хотя это работает только для методов...
Я несколько раз пересобирал среду лол, хрен его знает, попробую сейчас трансформеры убрать
1557076683246.png
 
7,099
324
1,510
7,099
324
1,510
Сделай сборку перед запуском принудительно. Не знаю, где в эклипсе, что-то что называется "Build"
 
1,193
31
182
Да кстати, чо эт означает? Запускался майн нормально и с ним, до применения АТ для EntityTrackerEntry
Снимок.JPG
FIXED этот значок
вместе с этим все стало нормально запускаться, попробую хукнуться еще раз
 
Последнее редактирование:
1,193
31
182
Решено, в библиотеках просто две одинаковых джавки были, лул
 
1,159
38
544
Спасибо тебе за гайд, Dahaka. Действительно полезная вещь.

Однако меня интересует вот такой вопрос - будут ли моды, подключенные в качестве зависимостей в градле, применять трансформеры при setupDecompWorkspace? К сожалению, я пока не могу проверить это самостоятельно.

Будет ли конфликт, если два разных мода трансформируют одно поле?

Мне нужно применить трансформер к методу в классе-родителе. Как автоматически применить его и ко всем методам в классах-потомках? В принципе можно и руками обозначить каждый метод наследников в конфиге, но тогда стоит опасаться ситуации, если сторонний мод тоже будет содержать класс-наследник нашего трансформированного суперкласса. Ведь тогда к может быть неприменен трансформер => будет краш.
 
1,159
38
544
2,505
81
397
Однако меня интересует вот такой вопрос - будут ли моды, подключенные в качестве зависимостей в градле, применять трансформеры при setupDecompWorkspace? К сожалению, я пока не могу проверить это самостоятельно.
Нет, не будут.

Будет ли конфликт, если два разных мода трансформируют одно поле?
Нет.

Мне нужно применить трансформер к методу в классе-родителе. Как автоматически применить его и ко всем методам в классах-потомках?
Никак.

но тогда стоит опасаться ситуации, если сторонний мод тоже будет содержать класс-наследник нашего трансформированного суперкласса. Ведь тогда к может быть неприменен трансформер => будет краш.
Я сомневаюсь. Но вполне возможно. Можешь протестировать и отписаться о результатах.
Проблема будет, скорее всего, уже на этапе компиляции этого (зависимого от твоего) мода. Потому в исходниках майна у метода одна область видимости, в твоем моде другая. И при наследовании я абсолютно без понятия что может быть.
 
Сверху