Skip to content

Commit

Permalink
Update map data from packet
Browse files Browse the repository at this point in the history
  • Loading branch information
Harry282 committed Aug 13, 2024
1 parent 7053554 commit 29c9b0e
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 9 deletions.
1 change: 1 addition & 0 deletions src/main/kotlin/funnymap/features/dungeon/Dungeon.kt
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ object Dungeon {
espDoors.clear()
PlayerTracker.roomClears.clear()
MapUtils.calibrated = false
MapUtils.mapData = null
DungeonScan.hasScanned = false
RunInformation.reset()
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/funnymap/features/dungeon/MapUpdate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ object MapUpdate {
}
}

val decor = MapUtils.getMapData()?.mapDecorations ?: return
val decor = MapUtils.mapData?.mapDecorations ?: return
Dungeon.dungeonTeammates.forEach { (name, player) ->
decor.entries.find { (icon, _) -> icon == player.icon }?.let { (_, vec4b) ->
player.isPlayer = vec4b.func_176110_a().toInt() == 1
Expand All @@ -100,7 +100,7 @@ object MapUpdate {
}

fun updateRooms() {
val map = DungeonMap(MapUtils.getMapData()?.colors ?: return)
val map = DungeonMap(MapUtils.mapData?.colors ?: return)
Dungeon.espDoors.clear()

for (x in 0..10) {
Expand Down
23 changes: 19 additions & 4 deletions src/main/kotlin/funnymap/utils/MapUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ package funnymap.utils

import funnymap.FunnyMap.mc
import funnymap.features.dungeon.DungeonScan
import funnymap.utils.Location.inDungeons
import funnymap.utils.Utils.equalsOneOf
import net.minecraft.item.ItemMap
import net.minecraft.item.ItemStack
import net.minecraft.network.play.server.S34PacketMaps
import net.minecraft.util.Vec4b
import net.minecraft.world.storage.MapData

object MapUtils {

val Vec4b.mapX
get() = (this.func_176112_b() + 128) shr 1

Expand All @@ -18,15 +20,28 @@ object MapUtils {
val Vec4b.yaw
get() = this.func_176111_d() * 22.5f

var mapData: MapData? = null
var startCorner = Pair(5, 5)
var mapRoomSize = 16
var coordMultiplier = 0.625
var calibrated = false

fun getMapData(): MapData? {
private fun getMapItem(): ItemStack? {
val map = mc.thePlayer?.inventory?.getStackInSlot(8) ?: return null
if (map.item !is ItemMap || !map.displayName.contains("Magical Map")) return null
return (map.item as ItemMap).getMapData(map, mc.theWorld)
return map
}

fun updateMapData(packet: S34PacketMaps) {
if (!inDungeons) return
val map = getMapItem()
if (map != null) {
mapData = (map.item as ItemMap).getMapData(map, mc.theWorld)
}
if (mapData == null) {
mapData = MapData("map_${packet.mapId}")
}
packet.setMapdataTo(mapData)
}

/**
Expand Down Expand Up @@ -58,7 +73,7 @@ object MapUtils {
private fun findEntranceCorner(): Pair<Int, Int> {
var start = 0
var currLength = 0
getMapData()?.colors?.forEachIndexed { index, byte ->
mapData?.colors?.forEachIndexed { index, byte ->
if (byte.toInt() == 30) {
if (currLength == 0) start = index
currLength++
Expand Down
8 changes: 5 additions & 3 deletions src/main/kotlin/funnymap/utils/PacketHandler.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import funnymap.events.ChatEvent
import funnymap.events.ScoreboardEvent
import funnymap.events.TabListEvent
import net.minecraft.network.Packet
import net.minecraft.network.play.server.S02PacketChat
import net.minecraft.network.play.server.S38PacketPlayerListItem
import net.minecraft.network.play.server.S3EPacketTeams
import net.minecraft.network.play.server.*
import net.minecraftforge.common.MinecraftForge

object PacketHandler {
Expand All @@ -25,6 +23,10 @@ object PacketHandler {
is S38PacketPlayerListItem -> {
MinecraftForge.EVENT_BUS.post(TabListEvent(packet))
}

is S34PacketMaps -> {
MapUtils.updateMapData(packet)
}
}
}
}

0 comments on commit 29c9b0e

Please sign in to comment.