Skip to content
This repository has been archived by the owner on Jun 23, 2024. It is now read-only.

Commit

Permalink
Отмена открытия GUI прокачки теперь работает без необходимости наличи…
Browse files Browse the repository at this point in the history
…я модифицированного класса, где убирается использование метода slice ну bytebuff
  • Loading branch information
Serega007RU committed Apr 25, 2024
1 parent 23c909f commit bcc19aa
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Injector/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Сразу скажу, инжекторы не мои, один из них лишь мною модифицировался.

В bypass.jar содержатся классы которые модифицируют minecraft.jar или core-mode.jar, в частности там убирается проверка на @SidedApi(Side.SERVER) также проверки запрещающее доступ модам ко внутренним классам майнкрафта
в ru.cristalix.client.CristalixClient.class идёт подгрузка модов из папки C:\Xenoceal\mods, также разрешена модификация пакетов для PluginMessage (убрано использование метода slice в ByteBuf)
в ru.cristalix.client.CristalixClient.class идёт подгрузка модов из папки C:\Xenoceal\mods
в dev.xdark.clientapi.loader.ClientVerifier.class убираются проверки на доступ к внутренним классам майнкрафта
dev.xdark.clientapi.loader.Verifier.class это интерфейс класса dev.xdark.clientapi.loader.ClientVerifier.class, иначе без него не запускается майнкрафт

Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/xenoceal/cristalix/Reflection.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.Map;

import dev.xdark.clientapi.util.EnumHand;
import io.netty.buffer.ByteBuf;
import sun.misc.Unsafe;

public final class Reflection {
Expand All @@ -26,11 +27,13 @@ public static void initialize() {
addClass("EnumHand", "nikmfbx");
addClass("CPacketPlayerTryUseItem", "ifLorDS");
addClass("InventoryPlayer", "DfByzYv");
addClass("UnpooledSlicedByteBuf", "io.netty.buffer.UnpooledSlicedByteBuf");
addHandle("getMinecraft", LOOKUP.findStatic(getClass("Minecraft"), "gWjrZHr", MethodType.methodType(getClass("Minecraft"))));
addHandle("getClientConnection", LOOKUP.findVirtual(getClass("Minecraft"), "gWjrZHr", MethodType.methodType(getClass("ClientConnection"))));
addHandle("sendPacket", LOOKUP.findVirtual(getClass("ClientConnection"), "gWjrZHr", MethodType.methodType(Void.TYPE, getClass("Packet"))));
addHandle("CPacketPlayerTryUseItem", LOOKUP.findConstructor(getClass("CPacketPlayerTryUseItem"), MethodType.methodType(Void.TYPE, getClass("EnumHand"))));
addHandle("changeActiveSlot", LOOKUP.findSetter(getClass("InventoryPlayer"), "ulWRDdg", Integer.TYPE));
addHandle("unwrapByteBuff", LOOKUP.findVirtual(getClass("UnpooledSlicedByteBuf"), "unwrap", MethodType.methodType(ByteBuf.class)));
} catch (Throwable var1) {
throw SneakyThrow.sneaky(var1);
}
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/com/xenoceal/cristalix/Wrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
*/
package com.xenoceal.cristalix;

import io.netty.buffer.ByteBuf;

public final class Wrapper {
public static Object getMinecraft() {
return Reflection.invoke("getMinecraft");
Expand All @@ -38,6 +40,16 @@ public static Object CPacketPlayerTryUseItem(Object enumHand) {
return Reflection.invoke("CPacketPlayerTryUseItem", enumHand);
}

static Class<?> unpooledSlicedByteBufClass = Reflection.getClass("UnpooledSlicedByteBuf");
public static ByteBuf unwrapBuffer(ByteBuf buf) {
Class<?> bufferClass = buf.getClass();
if (bufferClass.isAssignableFrom(unpooledSlicedByteBufClass)) {
return (ByteBuf) Reflection.invoke("unwrapByteBuff", buf);
} else {
return buf;
}
}

private Wrapper() {
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/ru/serega007/bcsc/BetterCSC.java
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,15 @@ public void load(ClientApi api) {
idShopItems.put(container, itemList);
} else if (pluginMessage.getChannel().equals("csc:upgrade")) {
if (protectUp) {
pluginMessage.getData().clear();
// pluginMessage.getData().clear();
try {
ByteBuf unwrapped = Wrapper.unwrapBuffer(pluginMessage.getData());
unwrapped.clear();
} catch (Exception e) {
//noinspection CallToPrintStackTrace
e.printStackTrace();
disableBuy(api, Text.of("Произошла ошибка при попытке отменить открытие GUI прокачки", TextFormatting.RED, ", ", TextFormatting.GOLD, e.toString(), TextFormatting.DARK_RED));
}
}
} else if (pluginMessage.getChannel().equals("csc:balance")) {
balance = NetUtil.readVarLong(pluginMessage.getData());
Expand Down

0 comments on commit bcc19aa

Please sign in to comment.