Skip to content

Commit

Permalink
LEGACY: Fixed NoSlotSet Desync (CCBlueX#2862)
Browse files Browse the repository at this point in the history
Should fully fixed CCBlueX#2580

Also added server/client slot check in text (useful for developers 😀)
  • Loading branch information
EclipsesDev committed Apr 20, 2024
1 parent 09ae756 commit f9bd47c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import net.ccbluex.liquidbounce.utils.PPSCounter
import net.ccbluex.liquidbounce.utils.ServerUtils
import net.ccbluex.liquidbounce.utils.TimerBalanceUtils
import net.ccbluex.liquidbounce.utils.extensions.getPing
import net.ccbluex.liquidbounce.utils.inventory.InventoryUtils.serverSlot
import net.ccbluex.liquidbounce.utils.render.ColorUtils
import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawRoundedRect2
import net.ccbluex.liquidbounce.utils.render.shader.shaders.RainbowFontShader
Expand Down Expand Up @@ -137,6 +138,8 @@ class Text(x: Double = 10.0, y: Double = 10.0, scale: Float = 1F, side: Side = S
"sneak", "sneaking" -> return (thePlayer.isSneaking || mc.gameSettings.keyBindSneak.isKeyDown)
"sprint", "sprinting" -> return (thePlayer.serverSprintState || thePlayer.isSprinting || mc.gameSettings.keyBindSprint.isKeyDown)
"inventory", "inv" -> return mc.currentScreen is GuiInventory || mc.currentScreen is GuiContainer
"serverslot" -> return serverSlot
"clientslot" -> return thePlayer.inventory?.currentItem
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ package net.ccbluex.liquidbounce.utils.inventory
import net.ccbluex.liquidbounce.event.*
import net.ccbluex.liquidbounce.features.module.modules.misc.NoSlotSet
import net.ccbluex.liquidbounce.features.module.modules.world.ChestAura
import net.ccbluex.liquidbounce.script.api.global.Chat
import net.ccbluex.liquidbounce.utils.ClientUtils.LOGGER
import net.ccbluex.liquidbounce.utils.MinecraftInstance
import net.ccbluex.liquidbounce.utils.PacketUtils.sendPacket
Expand Down Expand Up @@ -200,20 +199,39 @@ object InventoryUtils : MinecraftInstance(), Listenable {

@EventTarget
fun onWorld(event: WorldEvent) {
if (_serverSlot > 0 || _serverOpenInventory || serverOpenContainer) {
LOGGER.info("previous slot: $_serverSlot")
val player = mc.thePlayer ?: return

// Prevents desync
_serverOpenInventory = false
_serverSlot = 0
serverOpenContainer = false
val prevServerSlot = _serverSlot
val playerSlot = player.inventory.currentItem
val startTime = System.currentTimeMillis()

// Prevent desync in minemen server
serverSlot = _serverSlot
mc.playerController?.currentPlayerItem = serverSlot
if (playerSlot == -1)
return

LOGGER.info("reset slot: $serverSlot")
// TODO: Make better alternative..
if (prevServerSlot != playerSlot) {
LOGGER.info("Previous Slot: $prevServerSlot | Previous Client Slot: ${player.inventory.currentItem}")

// Sync server slot to client-side slot
serverSlot = playerSlot
mc.playerController.updateController()
}

if (prevServerSlot != _serverSlot) {

// Update previous slot to match server-side slot
_serverSlot = serverSlot
mc.playerController.updateController()

// Not really needed but ok :)
val elapsedTime = System.currentTimeMillis() - startTime

LOGGER.info("Slot Synced (${elapsedTime}ms)")
}

// Reset flags to prevent de-sync
_serverOpenInventory = false
serverOpenContainer = false
}

override fun handleEvents() = true
Expand Down

0 comments on commit f9bd47c

Please sign in to comment.