aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/BurrowGuessEvent.kt (renamed from src/main/java/at/hannibal2/skyhanni/events/SoopyGuessBurrowEvent.kt)2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinBurrowHelper.kt172
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/SoopyGuessBurrow.kt4
5 files changed, 73 insertions, 114 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java
index 9db30db0c..2de341b4c 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java
@@ -29,9 +29,9 @@ public class DianaConfig {
public boolean burrowsNearbyDetection = false;
@Expose
- @ConfigOption(name = "Smooth Transition", desc = "Show the way from one burrow to another smoothly.")
+ @ConfigOption(name = "Line To Next", desc = "Show a line to the closest burrow or guess location.")
@ConfigEditorBoolean
- public boolean burrowSmoothTransition = false;
+ public boolean lineToNext = true;
@Expose
@ConfigOption(name = "Nearest Warp", desc = "Warps to the nearest warp point on the hub, if closer to the next burrow.")
diff --git a/src/main/java/at/hannibal2/skyhanni/events/SoopyGuessBurrowEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/BurrowGuessEvent.kt
index c4b4683c5..844e43eef 100644
--- a/src/main/java/at/hannibal2/skyhanni/events/SoopyGuessBurrowEvent.kt
+++ b/src/main/java/at/hannibal2/skyhanni/events/BurrowGuessEvent.kt
@@ -2,4 +2,4 @@ package at.hannibal2.skyhanni.events
import at.hannibal2.skyhanni.utils.LorenzVec
-class SoopyGuessBurrowEvent(val guessLocation: LorenzVec) : LorenzEvent() \ No newline at end of file
+class BurrowGuessEvent(val guessLocation: LorenzVec) : LorenzEvent()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinBurrowHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinBurrowHelper.kt
index a305c7d5e..06007c80c 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinBurrowHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinBurrowHelper.kt
@@ -5,11 +5,12 @@ import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.EntityMovementData
import at.hannibal2.skyhanni.events.BurrowDetectEvent
import at.hannibal2.skyhanni.events.BurrowDugEvent
+import at.hannibal2.skyhanni.events.BurrowGuessEvent
import at.hannibal2.skyhanni.events.EntityMoveEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
-import at.hannibal2.skyhanni.events.SoopyGuessBurrowEvent
import at.hannibal2.skyhanni.utils.BlockUtils.getBlockAt
import at.hannibal2.skyhanni.utils.KeyboardManager
import at.hannibal2.skyhanni.utils.LocationUtils
@@ -22,6 +23,7 @@ import at.hannibal2.skyhanni.utils.RenderUtils.draw3DLine
import at.hannibal2.skyhanni.utils.RenderUtils.drawColor
import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText
import at.hannibal2.skyhanni.utils.RenderUtils.drawString
+import at.hannibal2.skyhanni.utils.RenderUtils.exactPlayerEyeLocation
import at.hannibal2.skyhanni.utils.TimeUtils
import net.minecraft.client.Minecraft
import net.minecraft.init.Blocks
@@ -32,55 +34,59 @@ import kotlin.time.Duration.Companion.seconds
object GriffinBurrowHelper {
private val config get() = SkyHanniMod.feature.event.diana
- private var guessLocation: LorenzVec? = null
private var targetLocation: LorenzVec? = null
+ private var guessLocation: LorenzVec? = null
private var particleBurrows = mapOf<LorenzVec, BurrowType>()
- var animationLocation: LorenzVec? = null
- private var lastDug: LorenzVec? = null
- private var teleportedLocation: LorenzVec? = null
+
private var lastGuessTime = 0L
- private var lastAnimationTime = 0L
@SubscribeEvent
- fun onSoopyGuessBurrow(event: SoopyGuessBurrowEvent) {
- EntityMovementData.addToTrack(Minecraft.getMinecraft().thePlayer)
- if (System.currentTimeMillis() > lastGuessTime + 1_000) {
- animationLocation = LocationUtils.playerLocation().add(-0.5, -1.0, -0.5)
- }
- lastGuessTime = System.currentTimeMillis()
+ fun onTick(event: LorenzTickEvent) {
+ if (!isEnabled()) return
+ if (!event.repeatSeconds(1)) return
- guessLocation = event.guessLocation
- setTargetLocation(event.guessLocation)
+ update()
}
- fun setTargetLocation(location: LorenzVec) {
- targetLocation = location
+ private fun update() {
+ if (config.burrowsNearbyDetection) {
+ checkRemoveGuess()
+ }
- if (config.burrowNearestWarp) {
- BurrowWarpHelper.shouldUseWarps(findBlock(location))
+ val locations = particleBurrows.keys.toMutableList()
+ guessLocation?.let {
+ locations.add(findBlock(it))
}
- if (config.burrowsNearbyDetection) {
- checkRemoveGuess(false)
+ locations.addAll(InquisitorWaypointShare.waypoints.values.map { it.location })
+ targetLocation = locations.minByOrNull { it.distanceToPlayer() }
+
+ if (config.burrowNearestWarp) {
+ targetLocation?.let {
+ BurrowWarpHelper.shouldUseWarps(it)
+ }
}
}
@SubscribeEvent
+ fun onBurrowGuess(event: BurrowGuessEvent) {
+ EntityMovementData.addToTrack(Minecraft.getMinecraft().thePlayer)
+ lastGuessTime = System.currentTimeMillis()
+
+ guessLocation = event.guessLocation
+ update()
+ }
+
+ @SubscribeEvent
fun onBurrowDetect(event: BurrowDetectEvent) {
EntityMovementData.addToTrack(Minecraft.getMinecraft().thePlayer)
particleBurrows = particleBurrows.editCopy { this[event.burrowLocation] = event.type }
-
- if (config.burrowsNearbyDetection) {
- checkRemoveGuess(true)
- }
+ update()
}
- private fun checkRemoveGuess(animation: Boolean) {
+ private fun checkRemoveGuess() {
guessLocation?.let { guessRaw ->
val guess = findBlock(guessRaw)
if (particleBurrows.any { guess.distance(it.key) < 40 }) {
- if (animation) {
- animationLocation = guess
- }
guessLocation = null
}
}
@@ -90,17 +96,14 @@ object GriffinBurrowHelper {
fun onBurrowDug(event: BurrowDugEvent) {
val location = event.burrowLocation
particleBurrows = particleBurrows.editCopy { remove(location) }
- if (particleBurrows.isNotEmpty()) {
- animationLocation = location
- }
- lastDug = location
+ update()
}
@SubscribeEvent
fun onPlayerMove(event: EntityMoveEvent) {
if (!isEnabled()) return
if (event.distance > 10 && event.entity == Minecraft.getMinecraft().thePlayer) {
- teleportedLocation = event.newLocation
+ update()
}
}
@@ -111,20 +114,14 @@ object GriffinBurrowHelper {
particleBurrows = particleBurrows.editCopy { keys.removeIf { this[it] == BurrowType.MOB } }
}
if (event.message == "§6Poof! §r§eYou have cleared your griffin burrows!") {
- reset()
+ guessLocation = null
+ particleBurrows = emptyMap()
}
}
@SubscribeEvent
fun onWorldChange(event: LorenzWorldChangeEvent) {
- reset()
- }
-
- private fun reset() {
guessLocation = null
- targetLocation = null
- animationLocation = null
- lastDug = null
particleBurrows = emptyMap()
}
@@ -181,6 +178,25 @@ object GriffinBurrowHelper {
}
}
+ if (config.lineToNext) {
+ val player = event.exactPlayerEyeLocation()
+
+ var color: LorenzColor?
+ val renderLocation = if (BurrowWarpHelper.currentWarp != null) {
+ color = LorenzColor.AQUA
+ player.add(y = -5)
+ } else {
+ color = LorenzColor.WHITE
+ targetLocation?.add(0.5, 0.5, 0.5) ?: return
+ }
+
+ val lineWidth = if (targetLocation in particleBurrows) {
+ color = particleBurrows[targetLocation]!!.color
+ 3
+ } else 2
+ event.draw3DLine(player, renderLocation, color.toColor(), lineWidth, false)
+ }
+
if (InquisitorWaypointShare.waypoints.isNotEmpty() && config.inquisitorSharing.focusInquisitor) {
return
}
@@ -200,7 +216,8 @@ object GriffinBurrowHelper {
val guessLocation = findBlock(it)
val distance = guessLocation.distance(playerLocation)
event.drawColor(guessLocation, LorenzColor.WHITE, distance > 10)
- event.drawDynamicText(guessLocation.add(y = 1), "Guess", 1.5)
+ val color = if (BurrowWarpHelper.currentWarp == null) "§f" else "§b"
+ event.drawDynamicText(guessLocation.add(y = 1), "${color}Guess", 1.5)
if (distance > 5) {
val formattedDistance = LorenzUtils.formatInteger(distance.toInt())
event.drawDynamicText(guessLocation.add(y = 1), "§e${formattedDistance}m", 1.7, yOff = 10f)
@@ -215,70 +232,17 @@ object GriffinBurrowHelper {
}
private fun sendTip(event: LorenzRenderWorldEvent) {
- teleportedLocation?.let {
- teleportedLocation = null
-
- if (BurrowWarpHelper.currentWarp != null) {
- BurrowWarpHelper.currentWarp = null
- if (config.burrowNearestWarp) {
- animationLocation = it
- return
- }
- }
- }
- if (config.burrowNearestWarp) {
- BurrowWarpHelper.currentWarp?.let { warp ->
- animationLocation?.let {
- event.drawColor(it.add(y = 1), LorenzColor.AQUA)
- if (it.distanceToPlayer() < 10) {
- event.drawString(it.add(0.5, 1.5, 0.5), "§bWarp to " + warp.displayName, true)
- if (config.keyBindWarp != Keyboard.KEY_NONE) {
- val keyname = KeyboardManager.getKeyName(config.keyBindWarp)
- event.drawString(it.add(0.5, 1.2, 0.5), "§ePress $keyname", true)
- }
- }
- return
- }
- }
- }
- if (config.burrowSmoothTransition) {
- animationLocation?.let {
- event.drawColor(it, LorenzColor.WHITE)
- animationLocation = moveAnimation(it, event)
- }
- }
- }
+ if (!config.burrowNearestWarp) return
+ val warp = BurrowWarpHelper.currentWarp ?: return
- private fun moveAnimation(animation: LorenzVec, event: LorenzRenderWorldEvent): LorenzVec? {
- val list = mutableListOf<LorenzVec>()
- if (config.burrowsNearbyDetection) {
- list.addAll(particleBurrows.keys)
- }
- targetLocation?.let {
- val loc = findBlock(it)
- if (loc.y > 200) {
- list.add(LorenzVec(loc.x, LocationUtils.playerLocation().y, loc.z))
- } else {
- list.add(loc)
- }
- }
- val target = list.minByOrNull { it.distance(animation) } ?: return null
- val distance = target.distance(animation)
- if (distance < 0.20) return null
-
- var vector = target.subtract(animation)
-
- event.draw3DLine(animation.add(0.5, 0.5, 0.5), target.add(0.5, 0.5, 0.5), LorenzColor.WHITE.toColor(), 2, true)
-
- return if (System.currentTimeMillis() > lastAnimationTime + 25) {
- lastAnimationTime = System.currentTimeMillis()
- vector = vector.multiply(1 / vector.length())
- vector = vector.multiply(0.18)
- animation.add(vector)
- } else {
- animation
- }
+ val location = event.exactPlayerEyeLocation().add(y = -5)
+ val text = "§bWarp to " + warp.displayName
+ val keybindSuffix = if (config.keyBindWarp != Keyboard.KEY_NONE) {
+ val keyname = KeyboardManager.getKeyName(config.keyBindWarp)
+ " §7(§ePress $keyname§7)"
+ } else ""
+ event.drawString(location, text + keybindSuffix, true)
}
private fun isEnabled() = DianaAPI.isDoingDiana()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt
index d7cbba03f..f8469f83f 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/InquisitorWaypointShare.kt
@@ -10,7 +10,6 @@ import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.PacketEvent
import at.hannibal2.skyhanni.utils.EntityUtils
import at.hannibal2.skyhanni.utils.KeyboardManager
-import at.hannibal2.skyhanni.utils.LocationUtils
import at.hannibal2.skyhanni.utils.LorenzLogger
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.editCopy
@@ -243,10 +242,6 @@ object InquisitorWaypointShare {
}
val inquis = SharedInquisitor(name, displayName, location, SimpleTimeMark.now())
waypoints = waypoints.editCopy { this[name] = inquis }
- if (config.focusInquisitor) {
- GriffinBurrowHelper.setTargetLocation(location.add(y = 1))
- GriffinBurrowHelper.animationLocation = LocationUtils.playerLocation()
- }
event.isCanceled = true
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/SoopyGuessBurrow.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/SoopyGuessBurrow.kt
index f14aa59b9..2fa31408d 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/diana/SoopyGuessBurrow.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/SoopyGuessBurrow.kt
@@ -1,10 +1,10 @@
package at.hannibal2.skyhanni.features.event.diana
import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.BurrowGuessEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.PlaySoundEvent
import at.hannibal2.skyhanni.events.ReceiveParticleEvent
-import at.hannibal2.skyhanni.events.SoopyGuessBurrowEvent
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzVec
import at.hannibal2.skyhanni.utils.toLorenzVec
@@ -243,7 +243,7 @@ class SoopyGuessBurrow {
} else {
LorenzVec(floor(p2.x), 255.0, floor(p2.z))
}
- SoopyGuessBurrowEvent(finalLocation).postAndCatch()
+ BurrowGuessEvent(finalLocation).postAndCatch()
}
}
}