[Гайд][Легко][1.6+] Модификация чужого кода при запуске (трансфомеры)

808
3
124
Насколько я понял вопрос, он был о возможности изменить у некоторого класса то, от какого класса он унаследован.

А по сути вопроса: слабо представляю, для чего это может быть нужно, но даже если нужно, то это элементарно делается через ASM (куда проще чем хукнуться в метод без хуклибы).
 
7,099
324
1,510
Ты и так сможешь, ибо есть type erasure
 
28
0
может кто подскажет мне нужен хук чтоб сделать knockback нулевым типо чтоб игроков не отбрасывало
 
212
8
29
JAVACS написал(а):
может кто подскажет мне нужен хук чтоб сделать knockback нулевым типо чтоб игроков не отбрасывало

Это можно сделать не хуком, а эвентом
@SubscribeEvent
    public void onEntityJoinWorld(EntityJoinWorldEvent event)
    {
        if(!event.entity.worldObj.isRemote && event.entity instanceof EntityLivingBase)
        {
            EntityLivingBase entity = (EntityLivingBase)event.entity;
            entity.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).(для 1.6.4, на 1.7.10 что то типо get...attribute)setAttribute(2D);
        }
       
    }
 
5,020
47
784
Хуклиба после пересборки форджа(версия таже) перестала запускаться. В чем проблема может быть?
Код:
[15:36:32] [main/INFO]: Setting user: Player90
[15:36:36] [main/WARN]: Skipping bad option: lastServer:
[15:36:36] [main/INFO]: LWJGL Version: 2.9.4
[15:36:39] [main/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:realism
[15:36:42] [Sound Library Loader/INFO]: Starting up SoundSystem...
[15:36:42] [Thread-5/INFO]: Initializing LWJGL OpenAL
[15:36:42] [Thread-5/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[15:36:42] [Thread-5/INFO]: OpenAL initialized.
[15:36:42] [Sound Library Loader/INFO]: Sound engine started
[15:36:45] [main/WARN]: Texture realism:textures/items/counter/hand.png with size 12x12 will have visual artifacts at mip level 4, it can only support level 2. Please report to the mod author that the texture should be some multiple of 16x16.
[15:36:45] [main/INFO]: Created: 512x512 textures-atlas
[15:36:48] [main/WARN]: Skipping bad option: lastServer:
[15:36:48] [main/INFO]: Narrator library for x64 successfully loaded
[15:36:49] [Realms Notification Availability checker #1/INFO]: Could not authorize you against Realms server: Invalid session id
[15:38:08] [Server thread/INFO]: Starting integrated minecraft server version 1.12
[15:38:08] [Server thread/INFO]: Generating keypair
[15:38:09] [Server thread/ERROR]: Parsing error loading built-in advancement minecraft:recipes/tools/wooden_axe
com.google.gson.JsonSyntaxException: Unknown recipe 'minecraft:wooden_axe'
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:204) ~[AdvancementRewards$Deserializer.class:?]
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:180) ~[AdvancementRewards$Deserializer.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:359) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:381) ~[JsonUtils.class:?]
at net.minecraft.advancements.Advancement$Builder.deserialize(Advancement.java:243) ~[Advancement$Builder.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:50) ~[AdvancementManager$1.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:46) ~[AdvancementManager$1.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.fromJson(JsonUtils.java:485) ~[JsonUtils.class:?]
at net.minecraft.advancements.AdvancementManager.loadBuiltInAdvancements(AdvancementManager.java:185) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.reload(AdvancementManager.java:69) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:61) [AdvancementManager.class:?]
at net.minecraft.world.WorldServer.init(WorldServer.java:161) [WorldServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:123) [IntegratedServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:160) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:549) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[15:38:09] [Server thread/ERROR]: Parsing error loading built-in advancement minecraft:recipes/decorations/glass_pane
com.google.gson.JsonSyntaxException: Unknown recipe 'minecraft:glass_pane'
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:204) ~[AdvancementRewards$Deserializer.class:?]
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:180) ~[AdvancementRewards$Deserializer.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:359) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:381) ~[JsonUtils.class:?]
at net.minecraft.advancements.Advancement$Builder.deserialize(Advancement.java:243) ~[Advancement$Builder.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:50) ~[AdvancementManager$1.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:46) ~[AdvancementManager$1.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.fromJson(JsonUtils.java:485) ~[JsonUtils.class:?]
at net.minecraft.advancements.AdvancementManager.loadBuiltInAdvancements(AdvancementManager.java:185) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.reload(AdvancementManager.java:69) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:61) [AdvancementManager.class:?]
at net.minecraft.world.WorldServer.init(WorldServer.java:161) [WorldServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:123) [IntegratedServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:160) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:549) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[15:38:09] [Server thread/INFO]: Loaded 486 advancements
[15:38:09] [Server thread/INFO]: Preparing start region for level 0
[15:38:10] [Server thread/INFO]: Changing view distance to 12, from 10
[15:38:12] [Server thread/INFO]: Player90[local:E:8786414f] logged in with entity id 186 at (-583.6773913615793, 4.0, 1979.300000011921)
[15:38:12] [Server thread/INFO]: Player90 присоединился к игре
[15:38:13] [Server thread/INFO]: Saving and pausing game...
[15:38:13] [Server thread/INFO]: Saving chunks for level 'New World'/overworld
[15:38:13] [Server thread/INFO]: Saving chunks for level 'New World'/the_nether
[15:38:13] [Server thread/INFO]: Saving chunks for level 'New World'/the_end
[15:38:13] [main/INFO]: Loaded 2 advancements
[15:38:13] [pool-2-thread-1/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@6b837186[id=e5bad5ae-87fa-3676-b10f-8a571200822c,name=Player90,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[YggdrasilAuthenticationService.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [YggdrasilMinecraftSessionService.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) [YggdrasilMinecraftSessionService$1.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) [YggdrasilMinecraftSessionService$1.class:?]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [guava-21.0.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) [guava-21.0.jar:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) [YggdrasilMinecraftSessionService.class:?]
at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3172) [Minecraft.class:?]
at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:138) [SkinManager$3.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[15:38:15] [Server thread/INFO]: Saving and pausing game...
[15:38:15] [Server thread/INFO]: Saving chunks for level 'New World'/overworld
[15:38:15] [Server thread/INFO]: Saving chunks for level 'New World'/the_nether
[15:38:15] [Server thread/INFO]: Saving chunks for level 'New World'/the_end
[15:38:16] [Server thread/INFO]: Stopping server
[15:38:16] [Server thread/INFO]: Saving players
[15:38:16] [Server thread/INFO]: Player90 lost connection: Отключение
[15:38:16] [Server thread/INFO]: Player90 покинул игру
[15:38:16] [Server thread/INFO]: Stopping singleplayer server as player logged out
[15:38:16] [Server thread/INFO]: Saving worlds
[15:38:16] [Server thread/INFO]: Saving chunks for level 'New World'/overworld
[15:38:16] [Server thread/INFO]: Saving chunks for level 'New World'/the_nether
[15:38:16] [Server thread/INFO]: Saving chunks for level 'New World'/the_end
[15:38:20] [main/INFO]: Deleting level New World
[15:38:20] [main/INFO]: Attempt 1...
[15:38:23] [Server thread/INFO]: Starting integrated minecraft server version 1.12
[15:38:23] [Server thread/INFO]: Generating keypair
[15:38:24] [Server thread/ERROR]: Parsing error loading built-in advancement minecraft:recipes/tools/wooden_axe
com.google.gson.JsonSyntaxException: Unknown recipe 'minecraft:wooden_axe'
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:204) ~[AdvancementRewards$Deserializer.class:?]
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:180) ~[AdvancementRewards$Deserializer.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:359) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:381) ~[JsonUtils.class:?]
at net.minecraft.advancements.Advancement$Builder.deserialize(Advancement.java:243) ~[Advancement$Builder.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:50) ~[AdvancementManager$1.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:46) ~[AdvancementManager$1.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.fromJson(JsonUtils.java:485) ~[JsonUtils.class:?]
at net.minecraft.advancements.AdvancementManager.loadBuiltInAdvancements(AdvancementManager.java:185) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.reload(AdvancementManager.java:69) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:61) [AdvancementManager.class:?]
at net.minecraft.world.WorldServer.init(WorldServer.java:161) [WorldServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:123) [IntegratedServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:160) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:549) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[15:38:24] [Server thread/ERROR]: Parsing error loading built-in advancement minecraft:recipes/decorations/glass_pane
com.google.gson.JsonSyntaxException: Unknown recipe 'minecraft:glass_pane'
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:204) ~[AdvancementRewards$Deserializer.class:?]
at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:180) ~[AdvancementRewards$Deserializer.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:359) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:381) ~[JsonUtils.class:?]
at net.minecraft.advancements.Advancement$Builder.deserialize(Advancement.java:243) ~[Advancement$Builder.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:50) ~[AdvancementManager$1.class:?]
at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:46) ~[AdvancementManager$1.class:?]
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?]
at net.minecraft.util.JsonUtils.fromJson(JsonUtils.java:485) ~[JsonUtils.class:?]
at net.minecraft.advancements.AdvancementManager.loadBuiltInAdvancements(AdvancementManager.java:185) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.reload(AdvancementManager.java:69) [AdvancementManager.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:61) [AdvancementManager.class:?]
at net.minecraft.world.WorldServer.init(WorldServer.java:161) [WorldServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:123) [IntegratedServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:160) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:549) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[15:38:24] [Server thread/INFO]: Loaded 486 advancements
[15:38:24] [Server thread/INFO]: Preparing start region for level 0
[15:38:25] [Server thread/INFO]: Preparing spawn area: 7%
[15:38:26] [Server thread/INFO]: Preparing spawn area: 15%
[15:38:27] [Server thread/INFO]: Preparing spawn area: 23%
[15:38:28] [Server thread/INFO]: Preparing spawn area: 34%
[15:38:29] [Server thread/INFO]: Preparing spawn area: 44%
[15:38:30] [Server thread/INFO]: Preparing spawn area: 56%
[15:38:31] [Server thread/INFO]: Preparing spawn area: 68%
[15:38:32] [Server thread/INFO]: Preparing spawn area: 76%
[15:38:33] [Server thread/INFO]: Preparing spawn area: 89%
[15:38:34] [Server thread/INFO]: Preparing spawn area: 98%
[15:38:34] [Server thread/INFO]: Changing view distance to 12, from 10
 
Последнее редактирование модератором:
476
9
39
Maxik001 написал(а):
Хуклиба после пересборки форджа(версия таже) перестала запускаться. В чем проблема может быть?

Если в ваниле(т.е обфусцированном майне) на новой версии мб забыл сгенерировать methods.bin? По крайне мере у меня был такой косяк.
 
1,015
9
102
Хотел сделать переменную публичной, юзанул Access Transformers по инструкции. Засунул в gradle тот код, создал папку, файл, и написал туда вот это
public net.minecraft.client.renderer.InventoryEffectRenderer field_147045_u

Далее, как было написано, пересобрал проект, но поле почему-то не стало публичным. Это я что-то не так сделал или как?
Безымянный.png
 
Последнее редактирование:
1,015
9
102
Где можно достать mcp нужной версии? На сайте с версиями нет той, которая у меня стоит. Можно ли как-то methods.csv из сурсов форжа достать?
 
2,505
81
397
Где можно достать mcp нужной версии? На сайте с версиями нет той, которая у меня стоит. Можно ли как-то methods.csv из сурсов форжа достать?
Ну они же в папке conf.
User\.gradle\caches\minecraft\net\minecraftforge\forge\version\unpacked\conf\
 
269
8
19
После сборки мода Перестало работать.В build.gradlew добавил

Java:
jar {
  manifest {
      attributes 'FMLCorePlugin': 'name.of.YourHookLoader'
      attributes 'FMLCorePluginContainsFMLMod': 'true'
  }
}

Всё ровно не работает! Пути проверял! Что делать?
 
Последнее редактирование модератором:
Сверху