Как редактировать class файлы minecraft
Minecraft Java Edition имеет одни из самых знаковых текстур и графики в истории игр. Игроки до сих пор обожают ее пиксельную и блочную графику, несмотря на ее, казалось бы, устаревший вид. Однако, поскольку игра является песочницей, она может быть изменена любым способом. Даже текстуры игры могут быть легко отредактированы.
Так, тысячи текстур-паков могут полностью изменить внешний вид каждого блока, моба, предмета и текстуры частиц. Процесс может быть сложным для новых игроков, но он не слишком сложен для тех, кто уже возился с файлами игры.
Примечание: В этой статье показано только редактирование текстур; игрокам необходимо создать текстурный пакет из отредактированных текстур и использовать его в игре, чтобы увидеть текстуры правильно. Они никогда не должны вносить изменения в основные версии игры.
Шаги по редактированию текстур в Minecraft Java Edition
-
Найдите папку с основной игрой
Сначала необходимо найти главную папку игры на устройствах пользователей. Это можно сделать, выполнив поиск по папке ‘%appdata%’ и найдя в ней подпапку ‘.minecraft’. Именно там находятся все основные файлы для Java Edition.
Дублируйте нужную версию игры
Найдя папку с игрой, перейдите в папку ‘versions’, которая содержит все папки, установленные на устройстве на данный момент. Внутри папки с нужной версией игры вы найдете файл .jar. Просто извлеките содержимое файла .jar в любую другую папку. Там вы сможете легко редактировать текстуры, не рискуя повредить файл. Более того, его можно изменить в текстурный пакет, который можно легко установить на ту же версию игры.
Редактирование файлов текстур .png
После извлечения всех файлов перейдите в папку ‘assets’, затем ‘minecraft’, затем ‘textures’. Здесь находится список текстур. Если вы хотите изменить текстуры блоков, вы можете выбрать папку «block», которая содержит длинный список png-файлов для каждого блока. Просто откройте один из них и отредактируйте текстуру по своему усмотрению.
Создание текстурного пакета с отредактированными текстурами
После редактирования текстур игры вы можете создать из них текстурный пакет Minecraft Java Edition. Просто создайте пользовательский текстовый файл с помощью следующей команды:
Номер pack_format должен соответствовать версии игры. Например, версия 1.16 будет иметь номер 6, 1.17 — 7, и так далее. Сохраните текстовый файл под именем ‘pack.mcmeta’.
Наконец, выберите папку assets, в которой находятся текстуры, выберите текстовый файл и заархивируйте его с помощью программы WinRAR. Текстурный пакет будет готов к использованию на совместимой версии Minecraft Java Edition.
как редактировать 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; >
Редактирование исходных классов minecraft
Есть настроенный eclipse и forge. Есть также просто декомпилированные исходники майнкрафта. Нужно изменить классы чистого майнкрафта, чтобы например мод можно было установить добавлением скомпилированных файлов мода и затронутых файлов майнкрафта с удалением manifest.
Я мод уже написал в eclipse, проверил, все работает. Но проблема в том, что когда собираешь мод для forge в конечной версии измененные классы майна не подтягиваются, то есть мод не работает, так как forge по всей видимости не внедряет измененные классы в майнкрафт. Хотелось бы вообще без forge обойтись. Вот только в джаве я не силен и как впилить изменения не знаю.
Icosider
Kotliner
Администратор
3,589 99 662
funsfox написал(а):
Есть настроенный eclipse и forge. Есть также просто декомпилированные исходники майнкрафта. Нужно изменить классы чистого майнкрафта, чтобы например мод можно было установить добавлением скомпилированных файлов мода и затронутых файлов майнкрафта с удалением manifest.
Я мод уже написал в eclipse, проверил, все работает. Но проблема в том, что когда собираешь мод для forge в конечной версии измененные классы майна не подтягиваются. Хотелось бы вообще без forge обойтись. Вот только в джаве я не силен и как впилить изменения не знаю.
D:\Forge $version\build\tmp\recompileMc\sources\net от туда берём классы и пихаем к себе в D:\Forge $version\src\main\java
inClassTranslator – Редактор файлов .class
3.8 / 5 13 оценок
Если нужно заменить какие-то надписи в *.class-файлах игры, он может помочь. Например, для перевода модов и плагинов, для замены ссылок на пути скинов, различных стандартных надписей в игре (а-ля Copyright MojangAB) и для многого другого. Интерфейс программы довольно простой, слева список строк открытого класса, справа сверху текст выбранной строки, а внизу мы пишем свой текст. После изменения нужной надписи, надо кликнуть по ней слева ещё раз. После этого сохраняем и заменяем старый класс изменённым.
как редактировать 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; >
Как редактировать class файлы minecraft
Я пытаюсь отредактировать одну строку в моде Harvestcraft Пэм. Причина в том, что в игре эти «gardens» внутри мода появляются слишком часто. Существует конфигурационный файл для этого мода, однако минимально возможное значение для rarity = 1 все еще слишком велико. Эта редкость-int, и я хочу изменить ее на float внутри файла jar .class этого мода, чтобы я мог использовать 0.5 или что-то меньшее, чем 1, чтобы уменьшить вероятность появления этих садов.
Я копирую и вставляю файл .class в intelliJ,но он только читается. Написание моего собственного текстового файла и изменение расширения на .class явно портит файл.
В течение последнего часа я пытался найти ответ в Google. Люди говорят, что вам может понадобиться создать среду моддинга, декомпилировать код, а затем перекомпилировать его после внесения изменений. Это кажется очень многословным для простой строки редактирования кода.
1, мне также нужно отредактировать метод с getInt() по getFloat(), который я не могу сделать.
2, Когда я сохраняю только что отредактированный файл класса, а затем пытаюсь снова открыть его с помощью этого редактора JOE, он выдает мне ошибку файла. Это указывало мне на то, что если я редактирую файл класса, то он все равно его портит.
2 ответа
Когда я выполните команду gradlew build в моей папке модов возвращает BUILD SUCCESSFUL и когда я открываю папку build/библиотеки я получаю два файла один NAME-VER.jar и одно имя-Вер—sources.jar так я скопировал NAME-VER.jar в свой Minecraft мод папку и игра начинается нормально, но в Minecraft.
Я уже устанавливал Майнкрафт-мод в eclipse году, только это было в 1.12.2 году. Я установил src forge для 1.12.2, но для 1.14.4 нет опции src. Я слышал, что код для minecraft был изменен, поэтому моддинг minecraft в 1.14.4 отличается от моддинга 1.12.2 minecraft. Может кто-нибудь помочь?
Кроме того, вы можете загрузить оттуда исходный код, внести изменения и скомпилировать версию, которую вы можете использовать для себя. Для этого вам, конечно, придется создать среду разработки Forge, но это тоже не очень сложно:
Технически ты можешь это сделать, но это будет больно. Если бы это было просто изменение переменной, это могло бы быть просто, но теперь вы также говорите об изменении типа поля.
Есть несколько способов сделать это, и я не вижу ни одного из них в списке, поэтому я упомяну об этом.
Во-первых, вы можете decompile/recompile. Я уже пытался сделать это однажды, и это действительно не очень хорошо работает. В результате перекомпиляции было много ошибок, потому что это не будет полностью точной декомпиляцией.
Второй вариант, и он был бы самым простым, если бы не необходимость изменения типа поля, — это редактирование машинного кода. Java компилируется в код assembly, который специально используется JVM. Вы найдете инструкцию, измените значение, и вы будете золотыми. (Я говорю проще всего, но если вы никогда раньше не видели assembly, все это будет выглядеть для вас как греческое.)
Вернемся к проблеме: вы говорите об изменении типа данных. Этого будет недостаточно. Вам нужно будет не только изменить тип данных, но и каждое место , где используется этот тип данных и вызывается его метод get . Каждый раз, когда вызывается getter, он ожидает возвращаемое значение int. Если это float , переходящий в int , он просто будет автоматически преобразован в int .
Так вот как бы вы это сделали, но на самом деле это не стоит вашего времени. Просто попросите разработчика сделать обновление для вас. На самом деле, если это тот мод, о котором вы говорите, он уже с открытым исходным кодом, и вы можете внести изменения самостоятельно.
На данный момент я попытаюсь запрограммировать простой мод Minecraft, который автоматически записывает текст в Minecraft book . Мод отлично работает, когда я запускаю Minecraft из папки проекта с помощью my IDE(Eclipse). Но когда я начинаю Майнкрафт с модом нормально, без сбоев IDE Minecraft. И я.
Похожие вопросы:
При декомпиляции MCP 9.18 (версия 1.8.8 Майнкрафта) Я запускаю процесс декомпиляции и во время декомпиляции он несколько раз выдает эту ошибку Я выделил больше ram и так далее, но ничего из того.
Я работаю над модом Minecraft, и у меня очень мало опыта с Java. Когда я пытаюсь запустить мод с Eclipse, я получаю следующую ошибку: —- Minecraft Crash Report —- Time: 6/19/17 5:20 PM.
Я начал делать мод,он не регистрируется как предмет. Когда я набираю /give Fidojj222 fcm:fuel_canister , он должен дать мне элемент, но он говорит, что его не существует! Я использую eclipse как мой.
Когда я выполните команду gradlew build в моей папке модов возвращает BUILD SUCCESSFUL и когда я открываю папку build/библиотеки я получаю два файла один NAME-VER.jar и одно имя-Вер—sources.jar так.
Я уже устанавливал Майнкрафт-мод в eclipse году, только это было в 1.12.2 году. Я установил src forge для 1.12.2, но для 1.14.4 нет опции src. Я слышал, что код для minecraft был изменен, поэтому.
На данный момент я попытаюсь запрограммировать простой мод Minecraft, который автоматически записывает текст в Minecraft book . Мод отлично работает, когда я запускаю Minecraft из папки проекта с.
Я пытался скомпилировать мод Minecraft с помощью Eclipse и Forge, но я просто получаю ошибки Я думаю, что это как-то связано со связыванием библиотек Minecraft, но не уверен , что вот мой код.
Я пытаюсь заставить знаки Advanced GUI mod работать на 1.10.2 . Когда вы загружаете мод, все, что вы получаете, — это 2 .class файлов и документ .txt без каких-либо инструкций. Мне интересно, есть.
Вступление Я хочу объединить свои отдельные миры Minecraft в один мир, и это казалось относительно легким подвигом, но по мере того, как я проводил исследования, это превратилось в необходимость.
Я пытаюсь сделать smimple mod в eclipse на macOS, все работало нормально до тех пор, пока я не добавлю файл текстуры .jpg в игру, затем я получаю ошибку DS_Store, я посмотрел почти каждые четыре.
«Просто как в текстовом редакторе» не получится. Это бинарные файлы со строгим форматом.
Можно изучить формат, ознакомиться с принципами работы виртуальной машины, особенно в части загрузки и верификации классов, а потом использовать полученные знания для написания программы, модифицирующей бинарник нужным образом, или взять hex-редактор и сделать это вручную.
Кстати, если jar-файл подписанный, то работать он после этого перестанет.
Если нужно заменить какие-то надписи в *.class-файлах игры, он может помочь. Например, для перевода модов и плагинов, для замены ссылок на пути скинов, различных стандартных надписей в игре (а-ля Copyright MojangAB) и для многого другого. Интерфейс программы довольно простой, слева список строк открытого класса, справа сверху текст выбранной строки, а внизу мы пишем свой текст. После изменения нужной надписи, надо кликнуть по ней слева ещё раз. После этого сохраняем и заменяем старый класс изменённым.
How do I edit Minecraft Mod Class files?
I’m trying to edit a single line in Pam’s Harvestcraft mod. The reason is that in the game these «gardens» inside the mod spawn too often. There is a config file for this mod, however the lowest possible value for rarity = 1 is still too high. This rarity is an int, and I want to change it to a float inside this Mod’s jar’s .class file, so that I may be able to use 0.5 or something less than 1 to decrease the chance of these gardens spawning.
I copy and pasted the .class file into intelliJ, but it is readable only. Writing my own text file and changing the extension to .class obviously corrupts the file.
For the past hour I’ve been trying to Google the answer. People say that you might need to set up a modding environment, decompile the code, then recompile it after the changes. This seems very long-winded for a simple line of code editing.
1, I also need to edit a method that getInt() to getFloat() which I cannot do.
2, When I save the newly edited class file, then try to reopen it using this JOE editor IT IS GIVING ME A FILE ERROR. This indicated to me that if I edit the class file it corrupts it anyways.
97.8k 24 24 gold badges 169 169 silver badges 214 214 bronze badges
47 1 1 gold badge 1 1 silver badge 6 6 bronze badges If it is a compiled .class file, there is a reason for that. I would not do it, or look into the API for the file and then develop something out of that. Plus, manually editing a class file is definitely not the way to go, .class is an unreadable/uneditable format by design — by humans at least. Edit the source (decompiled if not available) and compile it back again. Instead of attempting to modify the class file, perhaps you can extend it or create your own class which periodically updates the rarity value from 1 to 0, or 0 to 1.
2 Answers 2
You technically can do this, but it’s going to be a pain. If it were just changing a variable, that might be simple, but now you’re also talking about changing a field’s type.
There are a couple ways to do this, and I don’t see one of them listed, so I’ll mention that.
First, you can decompile/recompile. I’ve tried doing this once before, and it really doesn’t work well. There were plenty of errors resulting from the recompilation, because it’s not going to be a completely accurate decompilation.
The second option, and this would be the easiest if not for needing to change a field type, is editing the machine code. Java is compiled into assembly code that is specifically used by the JVM. You would find the instruction, change the value, and you would be golden. (I say easiest, but if you’ve never seen assembly before, it’ll all look like Greek to you.)
Back to the issue: You’re talking about changing a data type. That won’t be enough. You not only would need to change the data type, but every spot that data type is used and its get method is called. Every spot that getter is called, its expecting an int return value. If it’s a float going into an int , it’ll just be automatically converted to an int .
So that is how you would do it, but it’s not really worth your time. Simply ask the developer to make an update for you. In fact, if this is the mod you’re talking about, it’s already open source and you can make the changes yourself.
Редактирование .class файлов
Есть JAR файл. Необходимо декомпилировать один из его классов, отредактировать одно значение и закомпилировать обратно.
11.3k 7 7 золотых знаков 36 36 серебряных знаков 68 68 бронзовых знаков 441 1 1 золотой знак 7 7 серебряных знаков 23 23 бронзовых знака
Если хотите сделать это одноразово, то попробуйте JAD. Но учтите, что декомпиляторы не всегда могут получить исходник из .class-файла. Предположим, вы сумели его декомпилировать верно. После этого, его надо собрать обратно. Чтобы это сделать, надо воспользоваться компилятором.
(если под виндой, то библиотеки надо разделять точкой с запятой вместо двоеточия)
Я пытаюсь отредактировать одну строку в моде Pam’s Harvestcraft. Причина в том, что в игре эти «сады» внутри мода появляются слишком часто. Для этого мода есть файл конфигурации, однако минимально возможное значение для редкости = 1 все еще слишком велико. Эта редкость — int, и я хочу изменить его на float в файле .class этого мода jar, чтобы я мог использовать 0,5 или что-то меньше 1, чтобы уменьшить вероятность появления этих садов.
Я копирую и вставляю файл .class в intelliJ, но он доступен только для чтения. Написание собственного текстового файла и изменение расширения на .class, очевидно, повреждают файл.
Последний час я пытался найти ответ в Google. Люди говорят, что вам, возможно, потребуется настроить среду моддинга, декомпилировать код, а затем перекомпилировать его после изменений. Это кажется очень длинным для простой строки редактирования кода.
1, мне также нужно отредактировать метод getInt () для getFloat (), что я не могу сделать.
2. Когда я сохраняю только что отредактированный файл класса, затем пытаюсь снова открыть его с помощью этого редактора JOE, ЭТО ВЫДАЕТ МНЕ ОШИБКУ ФАЙЛА. Это показало мне, что если я отредактирую файл класса, он все равно его повредит.
2 ответа
Технически вы можете это сделать, но это будет больно. Если бы это было просто изменение переменной, это могло бы быть просто, но теперь вы также говорите об изменении типа поля.
Есть несколько способов сделать это, и я не вижу ни одного из них в списке, поэтому я упомяну об этом.
Во-первых, вы можете декомпилировать / перекомпилировать. Я пробовал сделать это однажды раньше, и это действительно не работает. В результате перекомпиляции было много ошибок, потому что это не будет полностью точной декомпиляцией.
Второй вариант, который был бы самым простым, если бы не нужно было изменять тип поля, — это редактирование машинного кода. Java компилируется в ассемблерный код, который специально используется JVM. Вы найдете инструкцию, измените значение, и вы станете золотым. (Я говорю самый простой, но если вы никогда раньше не видели сборки, для вас все это будет похоже на греческое.)
Вернемся к вопросу: вы говорите об изменении типа данных. Этого будет недостаточно. Вам нужно будет изменить не только тип данных, но и каждое место , где используется этот тип данных и вызывается его метод get . Каждое место, которое вызывается геттером, ожидает возвращаемого значения типа int. Если float переходит в int , он просто будет автоматически преобразован в int .
Вот как бы вы это сделали, но на самом деле это не стоит вашего времени. Просто попросите разработчика сделать для вас обновление. Фактически, если это мод, о котором вы говорите, он уже имеет открытый исходный код, и вы можете сделать изменения сами.
Отправьте запрос или запрос на извлечение на странице GitHub HarvestCraft.
Кроме того, вы можете скачать исходный код оттуда, внести изменения и скомпилировать версию, которую вы сможете использовать для себя. Для этого вам, конечно же, придется настроить среду разработки Forge, но это тоже не так сложно:
Я пытаюсь отредактировать одну строку в моде Harvestcraft Пэм. Причина в том, что в игре эти «gardens» внутри мода появляются слишком часто. Существует конфигурационный файл для этого мода, однако минимально возможное значение для rarity = 1 все еще слишком велико. Эта редкость-int, и я хочу изменить ее на float внутри файла jar .class этого мода, чтобы я мог использовать 0.5 или что-то меньшее, чем 1, чтобы уменьшить вероятность появления этих садов.
Я копирую и вставляю файл .class в intelliJ,но он только читается. Написание моего собственного текстового файла и изменение расширения на .class явно портит файл.
В течение последнего часа я пытался найти ответ в Google. Люди говорят, что вам может понадобиться создать среду моддинга, декомпилировать код, а затем перекомпилировать его после внесения изменений. Это кажется очень многословным для простой строки редактирования кода.
1, мне также нужно отредактировать метод с getInt() по getFloat(), который я не могу сделать.
2, Когда я сохраняю только что отредактированный файл класса, а затем пытаюсь снова открыть его с помощью этого редактора JOE, он выдает мне ошибку файла. Это указывало мне на то, что если я редактирую файл класса, то он все равно его портит.
2 ответа
Когда я выполните команду gradlew build в моей папке модов возвращает BUILD SUCCESSFUL и когда я открываю папку build/библиотеки я получаю два файла один NAME-VER.jar и одно имя-Вер—sources.jar так я скопировал NAME-VER.jar в свой Minecraft мод папку и игра начинается нормально, но в Minecraft.
Я уже устанавливал Майнкрафт-мод в eclipse году, только это было в 1.12.2 году. Я установил src forge для 1.12.2, но для 1.14.4 нет опции src. Я слышал, что код для minecraft был изменен, поэтому моддинг minecraft в 1.14.4 отличается от моддинга 1.12.2 minecraft. Может кто-нибудь помочь?
Кроме того, вы можете загрузить оттуда исходный код, внести изменения и скомпилировать версию, которую вы можете использовать для себя. Для этого вам, конечно, придется создать среду разработки Forge, но это тоже не очень сложно:
Технически ты можешь это сделать, но это будет больно. Если бы это было просто изменение переменной, это могло бы быть просто, но теперь вы также говорите об изменении типа поля.
Есть несколько способов сделать это, и я не вижу ни одного из них в списке, поэтому я упомяну об этом.
Во-первых, вы можете decompile/recompile. Я уже пытался сделать это однажды, и это действительно не очень хорошо работает. В результате перекомпиляции было много ошибок, потому что это не будет полностью точной декомпиляцией.
Второй вариант, и он был бы самым простым, если бы не необходимость изменения типа поля, — это редактирование машинного кода. Java компилируется в код assembly, который специально используется JVM. Вы найдете инструкцию, измените значение, и вы будете золотыми. (Я говорю проще всего, но если вы никогда раньше не видели assembly, все это будет выглядеть для вас как греческое.)
Вернемся к проблеме: вы говорите об изменении типа данных. Этого будет недостаточно. Вам нужно будет не только изменить тип данных, но и каждое место , где используется этот тип данных и вызывается его метод get . Каждый раз, когда вызывается getter, он ожидает возвращаемое значение int. Если это float , переходящий в int , он просто будет автоматически преобразован в int .
Так вот как бы вы это сделали, но на самом деле это не стоит вашего времени. Просто попросите разработчика сделать обновление для вас. На самом деле, если это тот мод, о котором вы говорите, он уже с открытым исходным кодом, и вы можете внести изменения самостоятельно.
На данный момент я попытаюсь запрограммировать простой мод Minecraft, который автоматически записывает текст в Minecraft book . Мод отлично работает, когда я запускаю Minecraft из папки проекта с помощью my IDE(Eclipse). Но когда я начинаю Майнкрафт с модом нормально, без сбоев IDE Minecraft. И я.
Похожие вопросы:
При декомпиляции MCP 9.18 (версия 1.8.8 Майнкрафта) Я запускаю процесс декомпиляции и во время декомпиляции он несколько раз выдает эту ошибку Я выделил больше ram и так далее, но ничего из того.
Я работаю над модом Minecraft, и у меня очень мало опыта с Java. Когда я пытаюсь запустить мод с Eclipse, я получаю следующую ошибку: —- Minecraft Crash Report —- Time: 6/19/17 5:20 PM.
Я начал делать мод,он не регистрируется как предмет. Когда я набираю /give Fidojj222 fcm:fuel_canister , он должен дать мне элемент, но он говорит, что его не существует! Я использую eclipse как мой.
Когда я выполните команду gradlew build в моей папке модов возвращает BUILD SUCCESSFUL и когда я открываю папку build/библиотеки я получаю два файла один NAME-VER.jar и одно имя-Вер—sources.jar так.
Я уже устанавливал Майнкрафт-мод в eclipse году, только это было в 1.12.2 году. Я установил src forge для 1.12.2, но для 1.14.4 нет опции src. Я слышал, что код для minecraft был изменен, поэтому.
На данный момент я попытаюсь запрограммировать простой мод Minecraft, который автоматически записывает текст в Minecraft book . Мод отлично работает, когда я запускаю Minecraft из папки проекта с.
Я пытался скомпилировать мод Minecraft с помощью Eclipse и Forge, но я просто получаю ошибки Я думаю, что это как-то связано со связыванием библиотек Minecraft, но не уверен , что вот мой код.
Я пытаюсь заставить знаки Advanced GUI mod работать на 1.10.2 . Когда вы загружаете мод, все, что вы получаете, — это 2 .class файлов и документ .txt без каких-либо инструкций. Мне интересно, есть.
Вступление Я хочу объединить свои отдельные миры Minecraft в один мир, и это казалось относительно легким подвигом, но по мере того, как я проводил исследования, это превратилось в необходимость.
Я пытаюсь сделать smimple mod в eclipse на macOS, все работало нормально до тех пор, пока я не добавлю файл текстуры .jpg в игру, затем я получаю ошибку DS_Store, я посмотрел почти каждые четыре.
Яндекс.Браузер — быстрый и простой в использовании веб-браузер с «облачными» сервисами, созданный на движке WebKit и оболочке Chromium. Особенности:• безопасность, гарантируемая проверкой ссылок с помощью Safe Browsing и скачиваемых файлов системой «Лаборатории Касперского»;• современный минималистический интерфейс поможет удобно переходить по веб-сайтам и предложит нужные элементы управления именно тогда, когда они на самом деле понадобятся;•&n.
MSI Afterburner — функциональная утилита от компании MSI, которая предназначена для разгона видеокарт NVIDIA и AMD. Особенности: Создан на основе ядра RivaTuner Расширяемая пользователем архитектура Основные функции разгона и управления вентиляторами Поддержка основных функций захвата экрана Расширенное управление вентиляторами Мониторинг состояния оборудования Система автоматического управления профилями Дает больше свободы хардкорным оверклокерам. Что нового.
Mozilla Thunderbird — бесплатная программа для работы с электронной почтой от Mozilla, поддерживает протоколы SMTP, POP3, IMAP и RSS.Особенности:• имеет встроенный HTML редактор, который создает довольно компактный код;• поддерживает всевозможные кодировки, расширяется за счет дополнительных модулей и фильтрует рекламу, а также нежелательную корреспонденцию;• интерфейс программы прост и удобен в использовании, поддерживает.
Telegram — десктопная версия популярного мессенджера для мобильных устройств. Телеграм является одним из самых защищенных мессенджеров, обеспечивает полную конфиденциальность пользователей и использует механизмы удаления всех следов переписки не только на устройстве, но и на серверах. Особенности:• быстрая регистрация и привязка аккаунта к номеру мобильного телефона;• мгновенная синхронизация чатов между всеми устройствами;• &nb.
Adobe Photoshop для Mac — самый популярный графический редактор в мире, который используется как новичками, так и профессионалами. Приложение позволяет вносить практически любые изменения в изображения, уровень которых ограничивается лишь мастерством пользователя. Особенности: огромный функционал программы; библиотека дополнительных расширений для более профессиональных возможностей; работа с несколькими изображениями одновременно; интеграция со всеми продуктами от Adobe Cor.
Microsoft Word for Mac для Mac — бесплатный офисный компонент для пользователей компьютеров на Mac OS. Сочетает в себе все необходимые функции для просмотра и редактирования текстовых документов. для удобства работы предусмотрено две среды: рабочая и записи, для исключения внесения случайных изменений в документ; поиск по документу; галерея инструментов идентичная таковой в приложении для Windows; полная совместимость со всеми форматами Microsoft Word; создание макросов для автомат.
uTorrent — версия самого популярного p2p-клиента для компьютеров с установленной Mac OS. Позволяет скачивать файлы из пиринговых сетей с максимальной скоростью благодаря многопотоковой загрузке из различных источников. Особенности: небольшой размер; интерфейс идентичный Windows—версии; работает с torrent файлами и magnet ссылками; возможность загружать несколько раздач одновременно, а также управлять скоростью и, приоритетом загрузок; работа в фоновом режиме; приложе.
ABBYY FineReader Express Edition for Mac — это простая и удобная в использовании OCR-программа, которая позволяет с высокой точностью конвертировать отсканированные документы и файлы изображений в различные электронные форматы. ABBYY FineReader Express Edition for Mac сохраняет исходное оформление документов, тем самым, уменьшая необходимость перепечатывания и хранения бумажных документов.Программа позволяет конвертировать изображения из форматов TIFF, TIF, PNG, JPG, JPEG, JP2, J2K, BMP, PCX, DC.
Wine — это не эмулятор Windows, как думают многие, а альтернативная реализация API Windows 3.x и Win32 (кстати, и расшифровывается Wine как «Wine Is Not Emulator»).Wine позволяет конечному пользователю выполнять в unix-системах (и Linux) многие приложения, написанные для ОС Windows.
Fedora Workstation — надежная, удобная и мощная операционная система для ноутбука или настольного компьютера. Она поддерживает широкий спектр разработчиков, от любителей и студентов до профессионалов в корпоративных средах.
Представлен релиз 32-разрядного дистрибутива Runtu LITE 18.04, основой которого является пакетная база релиза Bionic Beaver 18.04 LTS. Сборка имеет минимальный набор пользовательского ПО с возможностью установки на жёсткий диск. В составе предустановлены программы для работы с Интернет, воспроизведение аудио- и видеоконтента, настройки рабочего окружения.
Богатый набор Русско-Английских и Англо-Русских словарей для StarDict
Smart Driver – удобный радар камер и ДПС, а так же видеорегистратор в одном приложении. Предупредит где камеры ГИБДД на дороге, в том числе укажет их тип:– камера только на скорость, в том числе «Стрелка»– камера на стоп–линию и проезд на красный– камера на полосу общественного транспорта и обочину– стационарный пост ДПС– парная камеры, контролирующие среднюю скорость на участке дороги ( «Автодория»)– камера смотрящая «в спину»– засада ДПС ил.
это популярный браузер с возможностью сжатия трафика через собственные сервера. Возможности программы: Сжатие страницUC Browser сэкономит более 90% трафика благодаря технологии сжатия страницСтабильное соединение с ИнтернетСобственная технология Free-link обеспечивает стабильную связь с серверамиМощный поискВ браузер встроены различные популярные и мощные поисковые сервисыМногооконностьВы можете переключаться между открытыми страницами по своему желаниюНавигация по сайтамНавигация содержит в с.
Приложение «Медитация для начинающих» можно скачать бесплатно на Android. Медитация на русском — антистресс-практика, которая изменит Вашу жизнь. Она научит расслабляться во время стресса. Пройдите базовый курс медитации для начинающих с помощью приложения, чтобы научиться снимать стресс, загляните внутрь себя, прислушайтесь к своим мыслям и своему организму, научитесь самостоятельно осознавать свои страхи и тревоги. Следите за своим дыханием. Для Вашего удобства медитация н.
TuneIn Radio для iOS — пожалуй самый мощный сервис для прослушивания онлайн радиостанций и подкастов со всего мира совершенно бесплатно. Особенности: более 100 000 уникальных радиостанций со всего света; прослушивание в режиме реального времени и отложенное воспроизведение; около 6 000 000 пользовательских подкастов; возможность работы с Apple Watch; лента событий в которой также отображается очередь воспроизведения; возможность добавления станций и подкастов в избранное; простой интуит.
Яндекс Музыка для iOS — клиент популярного музыкального сервиса для устройств Apple. С его помощью можно прослушивать онлайн музыку любимых исполнителей в высоком качестве совершенно бесплатно.Особенности: удобный поиск композиций по исполнителю, названию группы и жанру. Также учитываются предпочтения пользователя; рекомендации основанные на основе уже прослушанных и отмеченных песен; создание собственных интернет-радиостанций с возможностью поделиться ссылкой в социальных сетях и мессендже.
YouTube для iOS — популярный видеохостинг, получивший признание пользователей со всего мира. С обновленным интерфейсом, приложением стало пользовать еще удобнее, теперь можно пользоваться абсолютно всеми возможностями веб-версии сервиса на своем iPhone.Особенности: просматривайте контент других пользователей или выкладывайте свой; возможность проведения прямых трансляций; функции настройки качества воспроизводимого видео; возможность оставить комментарии к роликам, а также подписаться на п.
Читайте также:
- Dayz на ps4 какие сервера
- Где взять ссылку в телеграмме на свой профиль на компьютере
- Набор отверток для ремонта ноутбуков и телефонов рейтинг
- Не работает icq сегодня
- Ошибка установщика 1603 google earth
Как открыть и отредактировать .class файл?
Необходимо редактировать .class файл в minecraft что-бы увеличить радиус обнаружения ИИ ну и может улучшить сам ии по возможности. По умолчанию радиус поиска ии 16 блоков нужно хотя-бы 32 или выше для того что-бы мобы могли хотя бы видеть противников на свервере вооружённых куда лучше и расстреливающих их с большёго расстояния в перспективе увеличить дальность атаки скелета до 50 блоков. В конфигах ничего не нашёл вероятно всё хранится в minecraft.jar в .class файлах.
Лучший ответ
Гуглим java decompile .class
Другой вариант — найти исходники майнкрафта и их скомпилировать.
В любом случае, дело обещает быть непростым, кода очень много, но первое наверно таки проще.
SencisПрофи (512) 8 лет назад
Открыть их удалось но код непонятный вероятно он обфусцирован любые названия переменных или констант в коде набор случайных символов т. ч. придётся искать исходники.
SencisПрофи (512) 8 лет назад
Нашёл способ:
через Minecraft_Coder_Pack
хотя ещё не опробовал но наверняка подходит всем спасибо.
Остальные ответы
для начала тебе придётся декомпилировать эти файлы, получить исходники (просто текстовые файлы по сути), отредактировать их, потом заново скомпилировать
после де-компиляции и исправления тебе потребуется заново скомпилировать код.
при этом наверняка понадобятся другие классы лежащие в правильных местах. ты ведь не поймёшь где, что и как.
DJ Java Decompiler
а чё вы даже в играх честно поступать не умеете?
правду говорят, посади свинью за стол — она и ноги на стол.