Как редактировать .class файлы из архивов Jar

Собственно, перерыл весь интернет, и никак не пойму. как отредактировать вот эти переменные в файле .class
В программе Recaf даже редактировать могу, но не сохраняется при экспорте. Пробовал Эклипс — там вообще нет возможности редактировать (или я не нашел). В интернете нашел Java ByteCod Editor и DirtyJoe, у них получается редактировать только методы. А вот эти строчки переменные редактировать там возможности нет.
Подскажите, пожалуйста, чем и как редактировать эти переменные, выделенные на фото?
Deom
Пляшущий с бубном
Местный
Сообщения 110 Розыгрыши 0 Решения 2 Репутация 144 Реакции 21 Баллы 280
Собственно, перерыл весь интернет, и никак не пойму. как отредактировать вот эти переменные в файле .class
Посмотреть вложение 37913
В программе Recaf даже редактировать могу, но не сохраняется при экспорте. Пробовал Эклипс — там вообще нет возможности редактировать (или я не нашел). В интернете нашел Java ByteCod Editor и DirtyJoe, у них получается редактировать только методы. А вот эти строчки переменные редактировать там возможности нет.
Подскажите, пожалуйста, чем и как редактировать эти переменные, выделенные на фото?
class — это скомпилированный файл. Его редактирование не допустимо. Тебе нужно для начала декомпилировать сборку, потом отдельно собирать класс и добавлять его с заменой старого в свой jar файл через WinRar.
Редактирование исходных классов minecraft
Есть настроенный eclipse и forge. Есть также просто декомпилированные исходники майнкрафта. Нужно изменить классы чистого майнкрафта, чтобы например мод можно было установить добавлением скомпилированных файлов мода и затронутых файлов майнкрафта с удалением manifest.
Я мод уже написал в eclipse, проверил, все работает. Но проблема в том, что когда собираешь мод для forge в конечной версии измененные классы майна не подтягиваются, то есть мод не работает, так как forge по всей видимости не внедряет измененные классы в майнкрафт. Хотелось бы вообще без forge обойтись. Вот только в джаве я не силен и как впилить изменения не знаю.
Icosider
Kotliner
Администратор
3,584 99 662
funsfox написал(а):
Есть настроенный eclipse и forge. Есть также просто декомпилированные исходники майнкрафта. Нужно изменить классы чистого майнкрафта, чтобы например мод можно было установить добавлением скомпилированных файлов мода и затронутых файлов майнкрафта с удалением manifest.
Я мод уже написал в eclipse, проверил, все работает. Но проблема в том, что когда собираешь мод для forge в конечной версии измененные классы майна не подтягиваются. Хотелось бы вообще без forge обойтись. Вот только в джаве я не силен и как впилить изменения не знаю.
D:\Forge $version\build\tmp\recompileMc\sources\net от туда берём классы и пихаем к себе в D:\Forge $version\src\main\java
Программа для редактирования java файлов class

На этой странице вы можете скачать специальную программу для редактирования файлов .class, которые используются в приложениях построенных на java. Например этой программой вы можете редактировать файлы Minecraft. Скачать InClassTran
You have no rights to post comments
как редактировать class
просто как в текстовом редакторе. только с компиляцией декомпиляцией. без зависимостей и библиотек. просто редактировать как txt. нужно в jar впихнуть отредактированный class. как редактировать class можете просто сказать как редактировать
// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov Date: 27.08.2019 23:38:49 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: Freecam.java package net.halalaboos.huzuni.mod.movement; import net.minecraft.client.Minecraft; import com.mojang.authlib.GameProfile; import net.halalaboos.huzuni.Huzuni; import net.halalaboos.huzuni.api.event.EventManager; import net.halalaboos.huzuni.api.event.PlayerMoveEvent; import net.halalaboos.huzuni.api.mod.BasicMod; import net.halalaboos.huzuni.api.mod.Category; import net.halalaboos.huzuni.api.settings.Node; import net.halalaboos.huzuni.api.settings.Value; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityOtherPlayerMP; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.multiplayer.WorldClient; // Referenced classes of package net.halalaboos.huzuni.mod.movement: // Flight public class Freecam extends BasicMod < private Freecam() < super("Freecam", "Allows an individual to fly FROM THEIR BODY?", 22); oldFlying = false; setCategory(Category.MOVEMENT); setAuthor("Halalaboos"); addChildren(new Node[] < speed >); > public void toggle() < super.toggle(); if(mc.field_71439_g != null && mc.field_71441_e != null) if(isEnabled()) < oldFlying = Flight.INSTANCE.isEnabled(); fakePlayer = new EntityOtherPlayerMP(mc.field_71441_e, new GameProfile(mc.field_71439_g.func_110124_au(), mc.field_71439_g.func_70005_c_())); fakePlayer.func_82149_j(mc.field_71439_g); fakePlayer.field_71071_by = mc.field_71439_g.field_71071_by; fakePlayer.func_70080_a(mc.field_71439_g.field_70165_t, mc.field_71439_g.field_70163_u, mc.field_71439_g.field_70161_v, mc.field_71439_g.field_70177_z, mc.field_71439_g.field_70125_A); fakePlayer.field_70759_as = mc.field_71439_g.field_70759_as; mc.field_71441_e.func_73027_a(-69, fakePlayer); Flight.INSTANCE.setEnabled(true); >else < if(fakePlayer != null && mc.field_71439_g != null) < mc.field_71439_g.func_70080_a(fakePlayer.field_70165_t, fakePlayer.field_70163_u, fakePlayer.field_70161_v, fakePlayer.field_70177_z, fakePlayer.field_70125_A); mc.field_71441_e.func_73028_b(-69); Flight.INSTANCE.setEnabled(oldFlying); >if(mc.field_71439_g != null) Flight.INSTANCE.setEnabled(oldFlying); > > public void onEnable() < huzuni.eventManager.addListener(this); >public void onDisable() < huzuni.eventManager.removeListener(this); >@EventManager.EventMethod public void onPlayerMove(PlayerMoveEvent event) < mc.field_71439_g.func_70031_b(false); Flight.INSTANCE.setEnabled(true); if(fakePlayer != null) fakePlayer.func_70606_j(mc.field_71439_g.func_110143_aJ()); event.setMotionX(event.getMotionX() * (double)speed.getValue()); event.setMotionY(event.getMotionY() * (double)speed.getValue()); event.setMotionZ(event.getMotionZ() * (double)speed.getValue()); >public static final Freecam INSTANCE = new Freecam(); public final Value speed = new Value("Speed", "", 0.1F, 1.0F, 10F, "movement speed"); private boolean oldFlying; private EntityOtherPlayerMP fakePlayer; >
// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov Date: 27.08.2019 23:38:10 // Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version! // Decompiler options: packimports(3) // Source File Name: FreecamHack.java package net.wurstclient.forge.hacks; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import net.minecraft.network.play.client.CPacketPlayer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.EventBus; import net.wurstclient.fmlevents.*; import net.wurstclient.forge.Category; import net.wurstclient.forge.Hack; import net.wurstclient.forge.settings.SliderSetting; import net.wurstclient.forge.utils.EntityFakePlayer; import net.wurstclient.forge.utils.KeyBindingUtils; @Hack.DontSaveState public final class FreecamHack extends Hack < public FreecamHack() < super("Freecam", "Allows you to move the camera\nwithout moving your character."); speed = new SliderSetting("Speed", 1.0D, 0.050000000000000003D, 10D, 0.050000000000000003D, net.wurstclient.forge.settings.SliderSetting.ValueDisplay.DECIMAL); setCategory(Category.RENDER); addSetting(speed); >protected void onEnable() < MinecraftForge.EVENT_BUS.register(this); fakePlayer = new EntityFakePlayer(); GameSettings gs = mc.field_71474_y; KeyBinding bindings[] = < gs.field_74351_w, gs.field_74368_y, gs.field_74370_x, gs.field_74366_z, gs.field_74314_A, gs.field_74311_E >; KeyBinding akeybinding[] = bindings; int i = akeybinding.length; for(int j = 0; j < i; j++) < KeyBinding binding = akeybinding[j]; KeyBindingUtils.resetPressed(binding); >> protected void onDisable() < MinecraftForge.EVENT_BUS.unregister(this); fakePlayer.resetPlayerPosition(); fakePlayer.despawn(); mc.field_71438_f.func_72712_a(); >@SubscribeEvent public void onUpdate(WUpdateEvent event) < EntityPlayerSP player = event.getPlayer(); player.field_70159_w = 0.0D; player.field_70181_x = 0.0D; player.field_70179_y = 0.0D; player.field_70122_E = false; player.field_70747_aH = speed.getValueF(); if(mc.field_71474_y.field_74314_A.func_151470_d()) player.field_70181_x += speed.getValue(); if(mc.field_71474_y.field_74311_E.func_151470_d()) player.field_70181_x -= speed.getValue(); >@SubscribeEvent public void onPlayerMove(WPlayerMoveEvent event) < event.getPlayer().field_70145_X = true; >@SubscribeEvent public void onIsNormalCube(WIsNormalCubeEvent event) < event.setCanceled(true); >@SubscribeEvent public void onSetOpaqueCube(WSetOpaqueCubeEvent event) < event.setCanceled(true); >@SubscribeEvent public void onPacketOutput(WPacketOutputEvent event) < if(event.getPacket() instanceof CPacketPlayer) event.setCanceled(true); >private final SliderSetting speed; private EntityFakePlayer fakePlayer; >