diff --git a/Horion.vcxproj b/Horion.vcxproj
index 72621c361..4a4025a32 100644
--- a/Horion.vcxproj
+++ b/Horion.vcxproj
@@ -361,6 +361,7 @@
+
@@ -548,6 +549,7 @@
+
diff --git a/Horion/Command/Commands/EnchantCommand.cpp b/Horion/Command/Commands/EnchantCommand.cpp
index dc0372ef2..2af59c412 100644
--- a/Horion/Command/Commands/EnchantCommand.cpp
+++ b/Horion/Command/Commands/EnchantCommand.cpp
@@ -81,13 +81,16 @@ bool EnchantCommand::execute(std::vector* args) {
C_InventoryAction* firstAction = nullptr;
C_InventoryAction* secondAction = nullptr;
+ ItemDescriptor* desc = nullptr;
+ desc = new ItemDescriptor((*item->item)->itemId, 0);
+
if (isAuto) {
{
- firstAction = new C_InventoryAction(supplies->selectedHotbarSlot, item, nullptr);
+ firstAction = new C_InventoryAction(supplies->selectedHotbarSlot, desc, nullptr, item, nullptr, item->count);
if (strcmp(g_Data.getRakNetInstance()->serverIp.getText(), "mco.mineplex.com") == 0)
- secondAction = new C_InventoryAction(0, nullptr, item, 32766, 100);
+ secondAction = new C_InventoryAction(0, nullptr, desc, nullptr, item, item->count, 32766, 100);
else
- secondAction = new C_InventoryAction(0, nullptr, item, 507, 99999);
+ secondAction = new C_InventoryAction(0, nullptr, desc, nullptr, item, item->count, 507, 99999);
manager->addInventoryAction(*firstAction);
manager->addInventoryAction(*secondAction);
delete firstAction;
@@ -159,10 +162,10 @@ bool EnchantCommand::execute(std::vector* args) {
if (isAuto) {
if (strcmp(g_Data.getRakNetInstance()->serverIp.getText(), "mco.mineplex.com") == 0)
- firstAction = new C_InventoryAction(0, item, nullptr, 32766, 100);
+ firstAction = new C_InventoryAction(0, desc, nullptr, item, nullptr, item->count, 32766, 100);
else
- firstAction = new C_InventoryAction(0, item, nullptr, 507, 99999);
- secondAction = new C_InventoryAction(supplies->selectedHotbarSlot, nullptr, item);
+ firstAction = new C_InventoryAction(0, desc, nullptr, item, nullptr, item->count, 507, 99999);
+ secondAction = new C_InventoryAction(supplies->selectedHotbarSlot, nullptr, desc, nullptr, item, item->count);
manager->addInventoryAction(*firstAction);
manager->addInventoryAction(*secondAction);
delete firstAction;
diff --git a/Horion/DrawUtils.cpp b/Horion/DrawUtils.cpp
index e30e52283..3bcfbc643 100644
--- a/Horion/DrawUtils.cpp
+++ b/Horion/DrawUtils.cpp
@@ -372,13 +372,16 @@ void DrawUtils::drawNameTags(C_Entity* ent, float textSize, bool drawHealth, boo
rectPos.w = textPos.y + textHeight + 2.f * textSize;
vec4_t subRectPos = rectPos;
subRectPos.y = subRectPos.w - 1.f * textSize;
- fillRectangle(rectPos, MC_Color(13, 29, 48), 0.8f);
- fillRectangle(subRectPos, MC_Color(28, 107, 201), 0.9f);
+ static auto nametagsMod = moduleMgr->getModule();
+ fillRectangle(rectPos, MC_Color(13, 29, 48), nametagsMod->opacity);
+ if (nametagsMod->underline) {
+ fillRectangle(subRectPos, MC_Color(30, 110, 20), 0.9f);
+ }
drawText(textPos, &text, MC_Color(255, 255, 255), textSize);
static auto nameTagsMod = moduleMgr->getModule();
- if (ent->getEntityTypeId() == 63 && nameTagsMod->displayArmor) { // is player, show armor
+ if (ent->getEntityTypeId() == 319 && nameTagsMod->displayArmor) { // is player, show armor
auto* player = reinterpret_cast(ent);
float scale = textSize * 0.6f;
float spacing = scale + 15.f;
@@ -399,7 +402,6 @@ void DrawUtils::drawNameTags(C_Entity* ent, float textSize, bool drawHealth, boo
DrawUtils::drawItem(stack, vec2_t(rectPos.z - 1.f - 15.f * scale, y), 1.f, scale, stack->isEnchanted());
}
}
-
}
}
}
diff --git a/Horion/Module/ModuleManager.cpp b/Horion/Module/ModuleManager.cpp
index 58f328230..4f1078579 100644
--- a/Horion/Module/ModuleManager.cpp
+++ b/Horion/Module/ModuleManager.cpp
@@ -101,6 +101,7 @@ void ModuleManager::initModules() {
this->moduleList.push_back(std::shared_ptr(new Compass()));
this->moduleList.push_back(std::shared_ptr(new Radar()));
this->moduleList.push_back(std::shared_ptr(new VanillaPlus()));
+ this->moduleList.push_back(std::shared_ptr(new ViewModel()));
this->moduleList.push_back(std::shared_ptr(new Twerk()));
this->moduleList.push_back(std::shared_ptr(new FollowPathModule()));
diff --git a/Horion/Module/ModuleManager.h b/Horion/Module/ModuleManager.h
index a4e6af27a..7e149148d 100644
--- a/Horion/Module/ModuleManager.h
+++ b/Horion/Module/ModuleManager.h
@@ -94,6 +94,7 @@
#include "Modules/Compass.h"
#include "Modules/Radar.h"
#include "Modules/VanillaPlus.h"
+#include "Modules/ViewModel.h"
#include "Modules/Twerk.h"
#ifdef _DEBUG
diff --git a/Horion/Module/Modules/NameTags.cpp b/Horion/Module/Modules/NameTags.cpp
index 43cd7e734..294e33097 100644
--- a/Horion/Module/Modules/NameTags.cpp
+++ b/Horion/Module/Modules/NameTags.cpp
@@ -3,8 +3,10 @@
#include "../../../Utils/Target.h"
#include "../ModuleManager.h"
-NameTags::NameTags() : IModule(0, Category::VISUAL, "Shows better nametags above players that can be seen from a lot more far aways") {
- this->registerBoolSetting("Display Armor", &this->displayArmor, this->displayArmor);
+NameTags::NameTags() : IModule(0, Category::VISUAL, "Shows betterar aways") {
+ this->registerBoolSetting("Underline", &this->underline, this->underline);
+ this->registerBoolSetting("Armor", &this->displayArmor, this->displayArmor);
+ this->registerFloatSetting("Opacity", &this->opacity, this->opacity, 0.f, 1.f);
}
NameTags::~NameTags() {
@@ -14,7 +16,7 @@ const char* NameTags::getModuleName() {
return ("NameTags");
}
-void drawNameTags(C_Entity* ent, bool isRegularEntitie) {
+void drawNameTags(C_Entity* ent, bool) {
C_LocalPlayer* localPlayer = g_Data.getLocalPlayer();
static auto nameTagsMod = moduleMgr->getModule();
@@ -29,26 +31,27 @@ void drawNameTags(C_Entity* ent, bool isRegularEntitie) {
DrawUtils::drawNameTags(ent, fmax(0.6f, 3.f / dist));
DrawUtils::flush();
}
-
}
}
void NameTags::onPreRender(C_MinecraftUIRenderContext* renderCtx) {
C_LocalPlayer* localPlayer = g_Data.getLocalPlayer();
+ if (localPlayer == nullptr || !GameData::canUseMoveKeys()) return;
- if (nameTags.size() > 100)
- nameTags.clear();
-
- if (localPlayer != nullptr && GameData::canUseMoveKeys()) {
- std::vector temp;
- for (int i = 0; i < g_Data.getEntityList()->getListSize(); i++)
- temp.push_back(g_Data.getEntityList()->get(i));
- std::sort(temp.begin(), temp.end(), [localPlayer](const C_Entity* lhs, const C_Entity* rhs) {
- return localPlayer->getPos()->dist(*lhs->getPos()) > localPlayer->getPos()->dist(*rhs->getPos());
- });
- for (C_Entity* ent : temp)
- drawNameTags(ent, true);
- } else {
- nameTags.clear();
- }
+ if (ingameNametagSetting)
+ if (!gotPrevSetting) {
+ lastSetting = *ingameNametagSetting;
+ gotPrevSetting = true;
+ *ingameNametagSetting = false;
+ } else
+ *ingameNametagSetting = false; //disable other ppl's nametags
+
+ g_Data.forEachEntity(drawNameTags);
}
+
+void NameTags::onDisable() {
+ if (ingameNametagSetting && gotPrevSetting) {
+ *ingameNametagSetting = lastSetting;
+ gotPrevSetting = false;
+ }
+}
\ No newline at end of file
diff --git a/Horion/Module/Modules/NameTags.h b/Horion/Module/Modules/NameTags.h
index f06a9dd2b..979d6a221 100644
--- a/Horion/Module/Modules/NameTags.h
+++ b/Horion/Module/Modules/NameTags.h
@@ -6,10 +6,17 @@ class NameTags : public IModule {
public:
std::set nameTags;
bool displayArmor = true;
+ bool underline = true;
+ float opacity = 0.2f;
NameTags();
~NameTags();
+ bool* ingameNametagSetting = nullptr;
+ bool lastSetting = true;
+ bool gotPrevSetting = false;
+
// Inherited via IModule
virtual const char* getModuleName() override;
virtual void onPreRender(C_MinecraftUIRenderContext* renderCtx) override;
+ virtual void onDisable() override;
};
diff --git a/Horion/Module/Modules/ViewModel.cpp b/Horion/Module/Modules/ViewModel.cpp
new file mode 100644
index 000000000..a76d5c5f6
--- /dev/null
+++ b/Horion/Module/Modules/ViewModel.cpp
@@ -0,0 +1,40 @@
+#include "ViewModel.h"
+
+
+ViewModel::ViewModel() : IModule(0, Category::VISUAL, "Custom item view model") {
+ this->registerBoolSetting("Reset", &this->Reset, this->Reset);
+ this->registerBoolSetting("Translate", &this->doTranslate, this->doTranslate);
+ this->registerBoolSetting("Scale", &this->doScale, this->doScale);
+
+ this->registerFloatSetting("TranslateX", &this->xTrans, 0.f, -2.f, 2.f);
+ this->registerFloatSetting("TranslateY", &this->yTrans, 0.f, -2.f, 2.f);
+ this->registerFloatSetting("TranslateZ", &this->zTrans, 0.f, -2.f, 2.f);
+
+ this->registerFloatSetting("ScaleX", &this->xMod, 1.f, 0.f, 2.f);
+ this->registerFloatSetting("ScaleY", &this->yMod, 1.f, 0.f, 2.f);
+ this->registerFloatSetting("ScaleZ", &this->zMod, 1.f, 0.f, 2.f);
+}
+
+ViewModel::~ViewModel() {
+}
+
+const char* ViewModel::getModuleName() {
+ return "ViewModel";
+}
+
+void ViewModel::onTick(C_GameMode* gm) {
+ if (g_Data.getLocalPlayer() == nullptr)
+ return;
+
+ if (Reset) {
+ xTrans = 0.f;
+ yTrans = 0.f;
+ zTrans = 0.f;
+
+ xMod = 1.f;
+ yMod = 1.f;
+ zMod = 1.f;
+ Reset = false;
+ }
+}
+
diff --git a/Horion/Module/Modules/ViewModel.h b/Horion/Module/Modules/ViewModel.h
new file mode 100644
index 000000000..b8b107b7a
--- /dev/null
+++ b/Horion/Module/Modules/ViewModel.h
@@ -0,0 +1,27 @@
+#pragma once
+#include "Module.h"
+class ViewModel : public IModule {
+private:
+ int delay = 0;
+
+public:
+ bool Reset = false;
+ bool doTranslate = true;
+ bool doScale = true;
+
+ float float1 = 0;
+ float xMod = 1.f;
+ float yMod = 1.f;
+ float zMod = 1.f;
+
+ float xTrans = 0.f;
+ float yTrans = 0.f;
+ float zTrans = 0.f;
+
+ ViewModel();
+ ~ViewModel();
+
+ // Inherited via IModule
+ virtual const char* getModuleName() override;
+ virtual void onTick(C_GameMode* gm) override;
+};
diff --git a/Horion/Module/Modules/Xray.cpp b/Horion/Module/Modules/Xray.cpp
index 199e2f9fb..d3e947834 100644
--- a/Horion/Module/Modules/Xray.cpp
+++ b/Horion/Module/Modules/Xray.cpp
@@ -1,11 +1,28 @@
#include "Xray.h"
-Xray::Xray() : IModule(VK_NUMPAD6, Category::VISUAL, "X-Ray view!") {
+Xray::Xray() : IModule(0, Category::VISUAL, "Allows you to see certain blocks easier") {
}
Xray::~Xray() {
}
const char* Xray::getModuleName() {
- return ("X-Ray");
+ return ("Xray");
}
+
+void Xray::onTick(C_GameMode* gm) {
+ if (smoothLightningSetting != nullptr) {
+ if (!gotSmoothInfo) {
+ gotSmoothInfo = true;
+ wasSmooth = *smoothLightningSetting;
+ }
+ *smoothLightningSetting = 0;
+ }
+}
+
+void Xray::onDisable() {
+ if (smoothLightningSetting != nullptr && gotSmoothInfo) {
+ *smoothLightningSetting = wasSmooth;
+ }
+ gotSmoothInfo = false;
+}
\ No newline at end of file
diff --git a/Horion/Module/Modules/Xray.h b/Horion/Module/Modules/Xray.h
index ea8b8139d..3bbe14f64 100644
--- a/Horion/Module/Modules/Xray.h
+++ b/Horion/Module/Modules/Xray.h
@@ -2,9 +2,15 @@
#include "Module.h"
class Xray : public IModule {
public:
+ bool* smoothLightningSetting = nullptr;
+ bool gotSmoothInfo = false;
+ bool wasSmooth = false;
+
Xray();
~Xray();
// Inherited via IModule
virtual const char* getModuleName() override;
+ virtual void onTick(C_GameMode* gm) override;
+ virtual void onDisable() override;
};
diff --git a/Memory/Hooks.cpp b/Memory/Hooks.cpp
index 75ab0bf6a..180beb6f4 100644
--- a/Memory/Hooks.cpp
+++ b/Memory/Hooks.cpp
@@ -36,17 +36,16 @@ void Hooks::Init() {
g_Hooks.GameMode_attackHook = std::make_unique(gameModeVtable[14], Hooks::GameMode_attack);
}
}
-
+
// BlockLegacy::vtable
{
intptr_t sigOffset = FindSignature("48 8D 05 ? ? ? ? 48 89 01 4C 8B 72 ? 48 B9"); // BlockLegacy constructor
int offset = *reinterpret_cast(sigOffset + 3);
- uintptr_t** blockLegacyVtable = reinterpret_cast(sigOffset + offset + 7);
+ uintptr_t** blockLegacyVtable = reinterpret_cast(sigOffset + offset + 7);
if (blockLegacyVtable == 0x0 || sigOffset == 0x0)
logF("C_BlockLegacy signature not working!!!");
else {
g_Hooks.BlockLegacy_getRenderLayerHook = std::make_unique(blockLegacyVtable[180], Hooks::BlockLegacy_getRenderLayer);
- g_Hooks.BlockLegacy_getLightEmissionHook = std::make_unique(blockLegacyVtable[183], Hooks::BlockLegacy_getLightEmission);
}
}
@@ -221,7 +220,7 @@ void Hooks::Init() {
uintptr_t** packetSenderVtable = reinterpret_cast(*(uintptr_t*)g_Data.getClientInstance()->loopbackPacketSender);
g_Hooks.LoopbackPacketSender_sendToServerHook = std::make_unique(packetSenderVtable[2], Hooks::LoopbackPacketSender_sendToServer);
- void* getFov = reinterpret_cast(FindSignature("40 53 48 83 EC 70 0F 29 7C 24 ? 44 0F 29 4C 24 ? 48 8B 05 ? ? ? ? 48 33 C4 48 89 44 24 ? F3 0F 10 3D ? ? ? ? 44 0F"));
+ void* getFov = reinterpret_cast(FindSignature("40 53 48 83 EC ?? 0F 29 7C 24 ?? 44"));
g_Hooks.LevelRendererPlayer_getFovHook = std::make_unique(getFov, Hooks::LevelRendererPlayer_getFov);
void* tick_entityList = reinterpret_cast(FindSignature("48 89 ?? ?? ?? 57 48 83 EC ?? 48 8B ?? E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B D8 ?? ?? ?? ?? ?? ?? 48 99"));
@@ -239,7 +238,7 @@ void Hooks::Init() {
void* chestScreenControllerTick = reinterpret_cast(FindSignature("48 89 5C 24 08 57 48 83 EC 20 48 8B F9 E8 ?? ?? ?? ?? 48 8B 17 48 8B CF 8B D8 FF 92 ?? ?? ?? ?? 84 C0 74 31"));
g_Hooks.ChestScreenController_tickHook = std::make_unique(chestScreenControllerTick, Hooks::ChestScreenController_tick);
- void* fullbright = reinterpret_cast(FindSignature("48 83 EC ? 80 B9 ? ? ? ? ? 48 8D 54 24 ? 74 ? 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 10 48 85 D2 74 ? 48 8B 42 ? 48 8B 88 ? ? ? ? 48 85 C9 74 ? E8 ? ? ? ? 48 83 C4 ? C3 F3 0F 10 42"));
+ void* fullbright = reinterpret_cast(FindSignature("48 83 EC ?? 80 B9 ?? ?? ?? ?? ?? 48 8D 54 24 ?? 48 8B 01 74 35 41 B8 0D 01 00 00"));
g_Hooks.GetGammaHook = std::make_unique(fullbright, Hooks::GetGamma);
// Mob::_jumpFromGround
@@ -288,25 +287,34 @@ void Hooks::Init() {
static auto bobViewHookF = [](__int64 _this, glm::mat4& matrix, float lerpT){
static auto origFunc = g_Hooks.lambdaHooks.at(lambda_counter)->GetFastcall();
-
- /*auto p = g_Data.getLocalPlayer();
+
+ static auto testMod = moduleMgr->getModule();
+ auto p = g_Data.getLocalPlayer();
float degrees = fmodf(p->getPosOld()->lerp(p->getPos(), lerpT).x, 5) - 2.5f;
degrees *= 180 / 2.5f;
auto pos = g_Data.getClientInstance()->levelRenderer->origin;
-
+
glm::mat4 View = matrix;
-
+
matrix = View;
- //matrix = glm::rotate(matrix, glm::radians(degrees), glm::vec3(0, 0, 1));*/
+ if (testMod->isEnabled()) {
+ if (testMod->doTranslate)
+ matrix = glm::translate(matrix, glm::vec3(testMod->xTrans, testMod->yTrans, testMod->zTrans));
+
+ if (testMod->doScale)
+ matrix = glm::scale(matrix, glm::vec3(testMod->xMod, testMod->yMod, testMod->zMod));
+ }
return origFunc(_this, matrix, lerpT);
};
-
+
std::shared_ptr bobViewHook = std::make_shared(levelRendererBobView, (decltype(&bobViewHookF.operator()))bobViewHookF);
g_Hooks.lambdaHooks.push_back(bobViewHook);
#undef lambda_counter
+
+
logF("Hooks initialized");
}
@@ -1145,9 +1153,9 @@ void Hooks::LoopbackPacketSender_sendToServer(C_LoopbackPacketSender* a, C_Packe
float Hooks::LevelRendererPlayer_getFov(__int64 _this, float a2, bool a3) {
static auto oGetFov = g_Hooks.LevelRendererPlayer_getFovHook->GetFastcall();
- static void* renderItemInHand = reinterpret_cast(FindSignature("0F 28 C8 F3 0F 59 0D ?? ?? ?? ?? 41 0F 28 F9"));
+ static void* renderItemInHand = reinterpret_cast(FindSignature("F3 0F 59 05 ?? ?? ?? ?? 45 0F 28 C2 F3"));
- static void* setupCamera = reinterpret_cast(FindSignature("44 0F 28 D8 F3 44 0F 59 1D ?? ?? ?? ?? 0F"));
+ static void* setupCamera = reinterpret_cast(FindSignature("0F 28 F8 F3 0F 59 3D ?? ?? ?? ?? F3 0F 11 7C 24 24 F3 0F 10 87"));
static auto zoomModule = moduleMgr->getModule();
@@ -1238,9 +1246,17 @@ int Hooks::BlockLegacy_getRenderLayer(C_BlockLegacy* a1) {
if (strcmp(text, "lava") != NULL)
if (strcmp(text, "water") != NULL)
if (strcmp(text, "portal") != NULL)
- if (strcmp(text, "ancient_debris") != NULL)
- if (strcmp(text, "command_block") != NULL)
- return 10;
+ if (strcmp(text, "amethyst_block") != NULL)
+ if (strcmp(text, "ancient_debris") != NULL)
+ if (strcmp(text, "command_block") != NULL)
+ if (strcmp(text, "repeating_command_block") != NULL)
+ if (strcmp(text, "chain_command_block") != NULL)
+ if (strcmp(text, "structure_block") != NULL)
+ if (strcmp(text, "deny") != NULL)
+ if (strcmp(text, "allow") != NULL)
+ if (strcmp(text, "bedrock") != NULL)
+ if (strcmp(text, "border_block") != NULL)
+ return 10;
}
return oFunc(a1);
}
@@ -1339,13 +1355,45 @@ __int64 Hooks::ChestScreenController_tick(C_ChestScreenController* a1) {
}
float Hooks::GetGamma(uintptr_t* a1) {
- static auto fullBrightModule = moduleMgr->getModule();
- if (fullBrightModule->isEnabled())
- return fullBrightModule->intensity;
+ static auto fullbright = moduleMgr->getModule();
+ static auto xrayMod = moduleMgr->getModule();
+ static auto nametagmod = moduleMgr->getModule();
+
+ uintptr_t** list = (uintptr_t**)a1;
+
+ char obtainedSettings = 0;
+ bool hadIt = false;
+ for (uint16_t i = 3; i < 450; i++) {
+ if (list[i] == nullptr) continue;
+ uintptr_t* info = *(uintptr_t**)((uintptr_t)list[i] + 8);
+ if (info == nullptr) continue;
+
+ TextHolder* translateName = (TextHolder*)((uintptr_t)info + 0x1D8);
+ TextHolder* settingname = (TextHolder*)((uintptr_t)info + 0x188);
+
+ if (!strcmp(translateName->getText(), "options.smoothlighting")) {
+ if (hadIt) continue;
+ bool* smoothlightning = (bool*)((uintptr_t)list[i] + 16);
+ xrayMod->smoothLightningSetting = smoothlightning;
+ obtainedSettings++;
+ hadIt = true;
+ } else if (!strcmp(settingname->getText(), "gfx_ingame_player_names")) {
+ bool* ingamePlayerName = (bool*)((uintptr_t)list[i] + 16);
+ nametagmod->ingameNametagSetting = ingamePlayerName;
+ obtainedSettings++;
+ }
+
+ if (obtainedSettings == 2) break;
+ }
+
+ if (xrayMod->isEnabled())
+ return 25.f;
+
+ if (fullbright->isEnabled())
+ return fullbright->intensity;
- //Get the normal gamma value
- float* gamer = (float*)*(a1 + 0x27);
- return *(gamer + 0x7A);
+ static auto ofunc = g_Hooks.GetGammaHook->GetFastcall();
+ return ofunc(a1);
}
bool Hooks::Actor_isInWater(C_Entity* _this) {
diff --git a/SDK/CBlockLegacy.h b/SDK/CBlockLegacy.h
index 762290721..0c76fada7 100644
--- a/SDK/CBlockLegacy.h
+++ b/SDK/CBlockLegacy.h
@@ -40,10 +40,11 @@ class C_BlockLegacy {
public:
class C_Material* material; //0x00D8
private:
- char pad_00E0[104]; //0x00E0
+ char pad_00E0[108]; //0x00E0
public:
- int64_t blockId; //0x0148
+ short blockId; //0x014C
+ int liquidGetDepth(C_BlockSource*, const vec3_ti* pos);
void liquidGetFlow(vec3_t* flowOut, C_BlockSource*, const vec3_ti* pos);
bool getCollisionShape(AABB* collShapeOut, C_Block* block, C_BlockSource* blockSource, const vec3_ti* pos, C_Entity* actor);
bool hasWater(C_BlockSource*, const vec3_ti& pos);
diff --git a/SDK/CItem.cpp b/SDK/CItem.cpp
index b93249444..c744f5be7 100644
--- a/SDK/CItem.cpp
+++ b/SDK/CItem.cpp
@@ -47,12 +47,12 @@ void C_ItemStack::fromTag(const Tag &tag) {
}
void C_ItemStack::save(CompoundTag **tag) {
using ItemStackBase__saveF = void(__fastcall *)(C_ItemStack *, CompoundTag **);
- ItemStackBase__saveF save = reinterpret_cast(FindSignature("48 89 5C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 48 8B FA 48 8B F1 48 89 55 F7 45 33 ED"));
+ ItemStackBase__saveF save = reinterpret_cast(FindSignature("48 89 5C 24 ?? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC 90 ?? ?? ?? 48 8B F2 48 8B F9 48 89 55 17 4C 8B 79"));
return save(this, tag);
}
void C_ItemStack::setUserData(std::unique_ptr tag) {
using setUserData_t = void(__fastcall *)(C_ItemStack *, std::unique_ptr);
- setUserData_t setUserData = reinterpret_cast(FindSignature("40 53 48 83 EC ? 48 8B DA 48 8D 51 10 48 3B D3 74 1F 48 8B 03 48 C7 03 ? ? ? ?"));
+ setUserData_t setUserData = reinterpret_cast(FindSignature("40 53 48 83 EC ? 48 8B DA 48 8D 51 20 48 3B D3 74 1F 48 8B 03 48 C7 03 ? ? ? ?"));
setUserData(this, std::move(tag));
}
void C_ItemStack::reinit(C_BlockLegacy &legacy, int count) {