summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/event
diff options
context:
space:
mode:
authorRobotHanzo <36107150+RobotHanzo@users.noreply.github.com>2024-05-03 19:33:47 +0800
committerGitHub <noreply@github.com>2024-05-03 13:33:47 +0200
commit23a5bc7eaf0e6ddc189b54d88d49d86c87174440 (patch)
tree959f46539aba9f846ebe6b426d943ba312ba6bd2 /src/main/java/at/hannibal2/skyhanni/features/event
parent3b47c1b7223796b5a6dfed62730d3dd11871bad2 (diff)
downloadskyhanni-23a5bc7eaf0e6ddc189b54d88d49d86c87174440.tar.gz
skyhanni-23a5bc7eaf0e6ddc189b54d88d49d86c87174440.tar.bz2
skyhanni-23a5bc7eaf0e6ddc189b54d88d49d86c87174440.zip
Feature: Ability to adjust opacity of players near shared & guessed egg waypoints (#1582)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/event')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggLocator.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggPlayerOpacityChanger.kt60
2 files changed, 61 insertions, 2 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggLocator.kt b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggLocator.kt
index 371dbf9e8..1319cc3af 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggLocator.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggLocator.kt
@@ -25,7 +25,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration.Companion.seconds
object HoppityEggLocator {
-
private val config get() = HoppityEggsManager.config
private val locatorItem = "EGGLOCATOR".asInternalName()
@@ -36,13 +35,13 @@ object HoppityEggLocator {
private var drawLocations = false
private var firstPos = LorenzVec()
private var secondPos = LorenzVec()
- private var possibleEggLocations = listOf<LorenzVec>()
private var ticksSinceLastParticleFound = -1
private var lastGuessMade = SimpleTimeMark.farPast()
private var eggLocationWeights = listOf<Double>()
var sharedEggLocation: LorenzVec? = null
+ var possibleEggLocations = listOf<LorenzVec>()
var currentEggType: HoppityEggType? = null
var eggLocations: Map<IslandType, List<LorenzVec>> = mapOf()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggPlayerOpacityChanger.kt b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggPlayerOpacityChanger.kt
new file mode 100644
index 000000000..68436438f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/event/hoppity/HoppityEggPlayerOpacityChanger.kt
@@ -0,0 +1,60 @@
+package at.hannibal2.skyhanni.features.event.hoppity
+
+import at.hannibal2.skyhanni.events.SkyHanniRenderEntityEvent
+import at.hannibal2.skyhanni.features.inventory.chocolatefactory.ChocolateFactoryAPI
+import at.hannibal2.skyhanni.utils.EntityUtils.getArmorInventory
+import at.hannibal2.skyhanni.utils.LocationUtils.distanceTo
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.LorenzVec
+import net.minecraft.client.renderer.GlStateManager
+import net.minecraft.entity.EntityLivingBase
+import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.item.ItemStack
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import org.lwjgl.opengl.GL11
+
+object HoppityEggPlayerOpacityChanger {
+ private val config get() = HoppityEggsManager.config
+ private var armor = mapOf<Int, ItemStack>()
+
+ private fun hideNearbyPlayer(entity: EntityPlayer, location: LorenzVec) {
+ if (entity.distanceTo(location) >= 4.0) return
+ GlStateManager.enableBlend()
+ GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
+ GlStateManager.color(1.0f, 1.0f, 1.0f, config.playerOpacity / 100f)
+ val armorInventory = entity.getArmorInventory() ?: return
+
+ armor = buildMap {
+ for ((i, stack) in armorInventory.withIndex()) {
+ stack?.let {
+ this[i] = it.copy()
+ armorInventory[i] = null
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onPreRenderPlayer(event: SkyHanniRenderEntityEvent.Pre<EntityLivingBase>) {
+ if (!isEnabled()) return
+ if (event.entity !is EntityPlayer) return
+ if (event.entity.name == LorenzUtils.getPlayerName()) return
+ HoppityEggLocator.sharedEggLocation?.let { hideNearbyPlayer(event.entity, it) }
+ HoppityEggLocator.possibleEggLocations.forEach { hideNearbyPlayer(event.entity, it) }
+ }
+
+ @SubscribeEvent
+ fun onPostRenderPlayer(event: SkyHanniRenderEntityEvent.Post<EntityLivingBase>) {
+ if (!isEnabled()) return
+ GlStateManager.color(1f, 1f, 1f, 1f)
+ GlStateManager.disableBlend()
+ val armorInventory = event.entity.getArmorInventory() ?: return
+
+ for ((index, stack) in armor) { // restore armor after players leave the area
+ armorInventory[index] = stack
+ }
+ }
+
+ private fun isEnabled() = LorenzUtils.inSkyBlock && config.waypoints
+ && ChocolateFactoryAPI.isHoppityEvent() && config.playerOpacity != 100
+}