diff options
| author | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-07-19 19:44:23 +0200 |
|---|---|---|
| committer | hannibal2 <24389977+hannibal00212@users.noreply.github.com> | 2023-07-19 19:44:23 +0200 |
| commit | 2f820c489b61634967be9608a44564d113ae6510 (patch) | |
| tree | 3373e6f9ed64ac25b38541f5244ba3dd4ef2ced0 /src/main/java/at/hannibal2/skyhanni/features | |
| parent | 4f51a13e699fd35acf6ca4c72db8bd1b103788c8 (diff) | |
| download | skyhanni-2f820c489b61634967be9608a44564d113ae6510.tar.gz skyhanni-2f820c489b61634967be9608a44564d113ae6510.tar.bz2 skyhanni-2f820c489b61634967be9608a44564d113ae6510.zip | |
reworked EndermanSlayerFeatures.kt
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerFeatures.kt (renamed from src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerBeacon.kt) | 99 |
1 files changed, 38 insertions, 61 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerBeacon.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerFeatures.kt index 7683b30d1..f55524d91 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerBeacon.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/EndermanSlayerFeatures.kt @@ -7,88 +7,89 @@ import at.hannibal2.skyhanni.events.CheckRenderEntityEvent import at.hannibal2.skyhanni.events.RenderMobColoredEvent import at.hannibal2.skyhanni.events.ServerBlockChangeEvent import at.hannibal2.skyhanni.events.withAlpha -import at.hannibal2.skyhanni.features.damageindicator.BossType -import at.hannibal2.skyhanni.features.damageindicator.DamageIndicatorManager import at.hannibal2.skyhanni.test.GriffinUtils.drawWaypointFilled import at.hannibal2.skyhanni.utils.* +import at.hannibal2.skyhanni.utils.EntityUtils.getBlockInHand import at.hannibal2.skyhanni.utils.ItemUtils.getSkullTexture import at.hannibal2.skyhanni.utils.ItemUtils.name +import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland import at.hannibal2.skyhanni.utils.RenderUtils.drawColor import at.hannibal2.skyhanni.utils.RenderUtils.drawString import net.minecraft.entity.item.EntityArmorStand import net.minecraft.entity.monster.EntityEnderman import net.minecraft.init.Blocks -import net.minecraft.init.Items import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.event.world.WorldEvent import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -class EndermanSlayerBeacon { - +class EndermanSlayerFeatures { + private val config get() = SkyHanniMod.feature.slayer private val endermenWithBeacons = mutableListOf<EntityEnderman>() private val flyingBeacons = mutableListOf<EntityArmorStand>() private val nukekebiSkulls = mutableListOf<EntityArmorStand>() private val sittingBeacon = mutableListOf<LorenzVec>() - private val logger = LorenzLogger("slayer/voildgloom_beacon") + private val logger = LorenzLogger("slayer/enderman") + private val nukekebiSkulTexture = + "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0=" @SubscribeEvent fun onCheckRender(event: CheckRenderEntityEvent<*>) { + if (!IslandType.THE_END.isInIsland()) return val entity = event.entity if (entity in endermenWithBeacons || entity in flyingBeacons) return if (entity is EntityEnderman) { - if (hasBeaconInHand(entity) && canSee(LocationUtils.playerEyeLocation(), entity.getLorenzVec())) { - endermenWithBeacons.add(entity) - logger.log("Added enderman with beacon at ${entity.getLorenzVec()}") + if (config.slayerEndermanBeacon) { + if (hasBeaconInHand(entity) && canSee(LocationUtils.playerEyeLocation(), entity.getLorenzVec())) { + endermenWithBeacons.add(entity) + logger.log("Added enderman with beacon at ${entity.getLorenzVec()}") + } } } if (entity is EntityArmorStand) { - val stack = entity.inventory[4] ?: return - if (stack.name == "Beacon" && canSee(LocationUtils.playerEyeLocation(), entity.getLorenzVec())) { - flyingBeacons.add(entity) - if(isBeaconWarningEnabled()) - TitleUtils.sendTitle("§4Beacon", 1_000) - logger.log("Added flying beacons at ${entity.getLorenzVec()}") + if (config.slayerEndermanBeacon) { + val stack = entity.inventory[4] ?: return + if (stack.name == "Beacon" && canSee(LocationUtils.playerEyeLocation(), entity.getLorenzVec())) { + flyingBeacons.add(entity) + if (config.slayerEndermanBeaconWaring) + TitleUtils.sendTitle("§4Beacon", 2_00) + logger.log("Added flying beacons at ${entity.getLorenzVec()}") + } } - if (entity.inventory.any { - it?.takeIf { it.item == Items.skull } - ?.let { it.getSkullTexture() } == "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0=" - }) { - nukekebiSkulls.add(entity) - logger.log("Added nukekebi skulls at ${entity.getLorenzVec()}") - nukekebiSkulls.also { it.removeAll { it.isDead } } - + if (config.endermanHighlightNukekebi) { + if (entity.inventory.any { it?.getSkullTexture() == nukekebiSkulTexture }) { + nukekebiSkulls.add(entity) + logger.log("Added nukekebi skulls at ${entity.getLorenzVec()}") + nukekebiSkulls.also { it.removeAll { it.isDead } } + } } } } - private fun hasBeaconInHand(entity: EntityEnderman): Boolean { - val heldBlockState = entity.heldBlockState ?: return false - val block = heldBlockState.block ?: return false - return block == Blocks.beacon - } + private fun hasBeaconInHand(enderman: EntityEnderman) = enderman.getBlockInHand()?.block == Blocks.beacon - private fun canSee(a: LorenzVec, b: LorenzVec): Boolean = LocationUtils.canSee(a, b) || a.distance(b) < 15 + private fun canSee(a: LorenzVec, b: LorenzVec) = LocationUtils.canSee(a, b) || a.distance(b) < 15 @SubscribeEvent fun onRenderMobColored(event: RenderMobColoredEvent) { - if(!isBeaconEnabled() && !isHighlightNukekebiSkullsEnabled()) return + if (!IslandType.THE_END.isInIsland()) return - if (isBeaconEnabled() && event.entity in flyingBeacons) { + if (config.slayerEndermanBeacon && event.entity in flyingBeacons) { event.color = LorenzColor.DARK_RED.toColor().withAlpha(1) } - if (isHighlightNukekebiSkullsEnabled() && event.entity in nukekebiSkulls) { - event.color = LorenzColor.DARK_RED.toColor().withAlpha(1) + if (config.endermanHighlightNukekebi && event.entity in nukekebiSkulls) { + event.color = LorenzColor.GOLD.toColor().withAlpha(1) } } @SubscribeEvent(priority = EventPriority.HIGH) fun onWorldRender(event: RenderWorldLastEvent) { - if (!isBeaconEnabled()) return + if (!IslandType.THE_END.isInIsland()) return + if (!config.slayerEndermanBeacon) return endermenWithBeacons.removeIf { it.isDead || !hasBeaconInHand(it) } @@ -97,16 +98,16 @@ class EndermanSlayerBeacon { for (location in sittingBeacon.toMutableList()) { event.drawColor(location, LorenzColor.DARK_RED, alpha = 1f) - event.drawWaypointFilled(location, LorenzColor.RED.toColor(),true,true) + event.drawWaypointFilled(location, LorenzColor.RED.toColor(), true, true) event.drawString(location.add(0.5, 0.5, 0.5), "§4Beacon", true) - } } @SubscribeEvent fun onBlockChange(event: ServerBlockChangeEvent) { - if (!isBeaconEnabled()) return + if (!IslandType.THE_END.isInIsland()) return + if (!config.slayerEndermanBeacon) return val location = event.location if (event.new == "beacon") { @@ -124,30 +125,6 @@ class EndermanSlayerBeacon { } } - private fun isBeaconEnabled(): Boolean = LorenzUtils.inSkyBlock && - SkyHanniMod.feature.slayer.slayerEndermanBeacon && - LorenzUtils.skyBlockIsland == IslandType.THE_END && - DamageIndicatorManager.isBossSpawned( - BossType.SLAYER_ENDERMAN_2, - BossType.SLAYER_ENDERMAN_3, - BossType.SLAYER_ENDERMAN_4 - ) - private fun isBeaconWarningEnabled(): Boolean = LorenzUtils.inSkyBlock && - SkyHanniMod.feature.slayer.slayerEndermanBeaconWaring && - LorenzUtils.skyBlockIsland == IslandType.THE_END && - DamageIndicatorManager.isBossSpawned( - BossType.SLAYER_ENDERMAN_2, - BossType.SLAYER_ENDERMAN_3, - BossType.SLAYER_ENDERMAN_4 - ) - private fun isHighlightNukekebiSkullsEnabled(): Boolean = LorenzUtils.inSkyBlock && - SkyHanniMod.feature.slayer.slayerEndermanHighlightNukekebiSkulls && - LorenzUtils.skyBlockIsland == IslandType.THE_END && - DamageIndicatorManager.isBossSpawned( - BossType.SLAYER_ENDERMAN_3, - BossType.SLAYER_ENDERMAN_4 - ) - @SubscribeEvent fun onWorldChange(event: WorldEvent.Load) { endermenWithBeacons.clear() |
