@FunctionRegister(name = "InventoryMove", type = Category.Movement)
public class InventoryMove extends Function {
private final ModeSetting mode = new ModeSetting("Обход", "FunTime", "FunTime", "HolyWorld", "Обычный");
private final List<IPacket<?>> packet = new ArrayList<>();
private boolean isProcessingClose = false;
private int closeDelayTicks = 0;
public InventoryMove(){
addSettings(mode);
}
@Subscribe
public void onUpdate(EventUpdate e) {
if (mc.player == null) return;
final KeyBinding[] pressedKeys = {mc.gameSettings.keyBindForward, mc.gameSettings.keyBindBack,
mc.gameSettings.keyBindLeft, mc.gameSettings.keyBindRight, mc.gameSettings.keyBindJump,
mc.gameSettings.keyBindSprint};
if (mode.is("FunTime")) {
if (closeDelayTicks > 0) {
closeDelayTicks--;
for (KeyBinding keyBinding : pressedKeys) {
keyBinding.setPressed(false);
}
if (closeDelayTicks == 0 && !packet.isEmpty()) {
for (IPacket p : packet) {
mc.player.connection.sendPacketWithoutEvent(p);
}
packet.clear();
mc.player.closeScreen();
}
return;
}
if (isProcessingClose || !wait.isReached(400)) {
for (KeyBinding keyBinding : pressedKeys) {
keyBinding.setPressed(false);
}
return;
}
} else if (mode.is("HolyWorld")) {
if (closeDelayTicks > 0) {
closeDelayTicks--;
for (KeyBinding keyBinding : pressedKeys) {
keyBinding.setPressed(false);
}
if (closeDelayTicks == 0 && !packet.isEmpty()) {
for (IPacket p : packet) {
mc.player.connection.sendPacketWithoutEvent(p);
}
packet.clear();
mc.player.closeScreen();
}
return;
}
if (isProcessingClose || !wait.isReached(400)) {
for (KeyBinding keyBinding : pressedKeys) {
keyBinding.setPressed(false);
}
return;
}
}
if (mc.currentScreen instanceof ChatScreen || mc.gameSettings.keyBindSneak.isKeyDown() || mc.currentScreen instanceof EditSignScreen) {
return;
}
if (mode.is("HolyWorld")) {
if (mc.currentScreen instanceof CraftingScreen ||
mc.currentScreen instanceof ChestScreen ||
mc.currentScreen instanceof ShulkerBoxScreen ||
mc.currentScreen instanceof FurnaceScreen ||
mc.currentScreen instanceof BrewingStandScreen ||
mc.currentScreen instanceof EnchantmentScreen ||
mc.currentScreen instanceof BeaconScreen ||
mc.currentScreen instanceof HopperScreen ||
mc.currentScreen instanceof DispenserScreen) {
return;
}
}
updateKeyBindingState(pressedKeys);
}
@Subscribe
public void onPacket(EventPacket e) {
if (mode.is("FunTime") ) {
if (e.getPacket() instanceof CClickWindowPacket p) {
if (MoveUtils.isMoving() && mc.currentScreen instanceof InventoryScreen) {
packet.add(p);
e.cancel();
}
}
}
if (mode.is("HolyWorld") ) {
if (e.getPacket() instanceof CClickWindowPacket p) {
if ( mc.currentScreen instanceof InventoryScreen) {
packet.add(p);
e.cancel();
}
}
}
}
public StopWatch wait = new StopWatch();
@Subscribe
public void onClose(InventoryCloseEvent e) {
if (mode.is("FunTime")) {
if (mc.currentScreen instanceof InventoryScreen && MoveUtils.isMoving()) {
if (!packet.isEmpty()) {
isProcessingClose = true;
closeDelayTicks = 2;
e.cancel();
}
} else {
packet.clear();
isProcessingClose = false;
closeDelayTicks = 0;
}
}
if (mode.is("HolyWorld")) {
if (mc.currentScreen instanceof InventoryScreen) {
if (!packet.isEmpty()) {
isProcessingClose = true;
closeDelayTicks = 2;
e.cancel();
}
} else {
packet.clear();
isProcessingClose = false;
closeDelayTicks = 0;
}
}
}
@override
public void onDisable() {
if (!packet.isEmpty()) {
for (IPacket p : packet) {
mc.player.connection.sendPacketWithoutEvent(p);
}
}
packet.clear();
isProcessingClose = false;
closeDelayTicks = 0;
super.onDisable();
}
private void updateKeyBindingState(KeyBinding[] keyBindings) {
for (KeyBinding keyBinding : keyBindings) {
boolean isKeyPressed = InputMappings.isKeyDown(mc.getMainWindow().getHandle(), keyBinding.getDefault().getKeyCode());
keyBinding.setPressed(isKeyPressed);
}
}
}
килка снап обычная