Начинающий
-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Всем привет. Я никак не могу понять в чем проблема. Похоже проблема с маппингами, но я их использую как я считаю корректно. Если есть тут шарящие люди за JNI и маппингами Forge 1.16.5, помогите пожалуйста разобраться, где я мог допустить ошибку. Я использую jdk8_202, JAVA_HOME и LIB так же под этим jdk. Посмотрите пожалуйста код, уже третий день ебусь с этой проблемой:
C++:
Main.h
#pragma once
#include "JNI/jni.h"
#include <Windows.h>
#include <iostream>
#include <thread>
#include <chrono>
namespace main_jni
{
JNIEnv* env;
JavaVM* jvm;
void init();
}
namespace AutoSprint
{
void setSprint(bool b);
void AutoSprint();
}
namespace Minecraft_Cheat
{
jobject getInstance();
jobject getPlayer();
void init();
}
C++:
Minecraft.cpp
#include "Main.h"
jclass Minecraft_Cheat::Mappings::Minecraft::MinecraftClass()
{
jclass MinecraftClass = env->FindClass("djz"); // net/minecraft/client/Minecraft
return MinecraftClass;
}
jobject Minecraft_Cheat::Mappings::Minecraft::getMinecraft()
{
jobject getMinecraft = env->CallStaticObjectMethod(Minecraft_Cheat::Mappings::Minecraft::MinecraftClass(),
env->GetStaticMethodID(MinecraftClass(), "C", "()Ldjz;")); // net/minecraft/client/Minecraft.getInstance
return getMinecraft;
}
C++:
#include "Main.h"
namespace Minecraft_Cheat
{
jobject Minecraft_Cheat::getInstance()
{
jclass MinecraftClass = main_jni::env->FindClass("djz"); // net/minecraft/client/Minecraft
jobject getMinecraft = main_jni::env->CallStaticObjectMethod(MinecraftClass,
main_jni::env->GetStaticMethodID(MinecraftClass, "C", "()Ldjz;")); // net/minecraft/client/Minecraft.getInstance
return getMinecraft;
}
jobject Minecraft_Cheat::getPlayer()
{
jclass playerClass = main_jni::env->FindClass("dzm"); // net/minecraft/client/entity/player/ClientPlayerEntity
jfieldID playerField = main_jni::env->GetFieldID(playerClass, "s", "Ldzm"); // net/minecraft/client/Minecraft.player
jobject playerObject = main_jni::env->GetObjectField(Minecraft_Cheat::getInstance(), playerField);
return playerObject;
}
void Minecraft_Cheat::init()
{
while (1)
{
if (!Minecraft_Cheat::getInstance())
std::cout << "getInstance error" << std::endl;
if (!Minecraft_Cheat::getPlayer())
std::cout << "getPlayer error" << std::endl;
/*if (!Minecraft_Cheat::Mappings::World::getWorld())*/
AutoSprint::AutoSprint();
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
}
}
C++:
#include "Main.h"
typedef jint(JNICALL* GetCreatedJavaVMs)(JavaVM**, jsize, jsize*);
void main_jni::init()
{
HMODULE _jvm = GetModuleHandleW(L"C:\\Program Files\\Java\\jre1.8.0_202\\bin\\server\\jvm.dll");
if (!_jvm)
return;
auto JNI_GetCreatedJavaVMs = (GetCreatedJavaVMs)GetProcAddress(_jvm, "JNI_GetCreatedJavaVMs");
if (!JNI_GetCreatedJavaVMs)
return;
/*JNI_GetCreatedJavaVMs(&main_jni::jvm, 1, NULL);
main_jni::jvm->AttachCurrentThread((void**)&env, NULL);*/
if (main_jni::env != nullptr)
Minecraft_Cheat::init();
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
switch(reason)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main_jni::init, 0, 0, 0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
if (lpReserved != nullptr)
{
break;
}
break;
}
return TRUE;
}
Последнее редактирование: