Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,22 @@ object SlayerFeatures : EventSubscriber, CoroutineScope {
override val coroutineContext = Executors.newSingleThreadExecutor().asCoroutineDispatcher() + SupervisorJob()

private val ZOMBIE_MINIBOSSES = arrayOf(
"§cRevenant Sycophant",
"§cRevenant Champion",
"§4Deformed Revenant",
"§cAtoned Champion",
"§4Atoned Revenant"
"Revenant Sycophant",
"Revenant Champion",
"Deformed Revenant",
"Atoned Champion",
"Atoned Revenant"
)
private val SPIDER_MINIBOSSES = arrayOf("§cTarantula Vermin", "§cTarantula Beast", "§4Mutant Tarantula")
private val WOLF_MINIBOSSES = arrayOf("§cPack Enforcer", "§cSven Follower", "§4Sven Alpha")
private val SPIDER_MINIBOSSES = arrayOf("Tarantula Vermin", "Tarantula Beast", "Mutant Tarantula")
private val WOLF_MINIBOSSES = arrayOf("Pack Enforcer", "Sven Follower", "Sven Alpha")
private val ENDERMAN_MINIBOSSES = arrayOf("Voidling Devotee", "Voidling Radical", "Voidcrazed Maniac")
private val BLAZE_MINIBOSSES = arrayOf("Flare Demon", "Kindleheart Demon", "Burningsoul Demon")

// there might be a point replacing this with §c\d+:\d+(?:§r)?$ and only partially check for matches
// but that requires a more extensive testing of all skyblock timers,
// something I am not quite particularly fond of doing
internal val timerRegex =
Regex("(?:§[8bef]§l(ASHEN|CRYSTAL|AURIC|SPIRIT)§[8bef] ♨\\d |§4§lIMMUNE )?§c\\d+:\\d+(?:§r)?")
Regex("(?:§r)?(?:§[8bef]§l(ASHEN|CRYSTAL|AURIC|SPIRIT)§[8bef] ♨\\d |§4§lIMMUNE )?§c\\d+:\\d+(?:§r)?")
internal val totemRegex = Regex("§6§l(?<time>\\d+)s §c§l(?<hits>\\d+) hits")
var slayer: Slayer<*>? = null
set(value) {
Expand All @@ -117,8 +117,8 @@ object SlayerFeatures : EventSubscriber, CoroutineScope {
slayer = try {
when (entity) {
is ZombieEntity -> RevenantSlayer(entity)
is SpiderEntity -> Slayer(entity, "Tarantula Broodfather", "§5☠ §4Tarantula Broodfather")
is WolfEntity -> Slayer(entity, "Sven Packmaster", "§c☠ §fSven Packmaster")
is SpiderEntity -> Slayer(entity, "Tarantula Broodfather", "§4Tarantula Broodfather")
is WolfEntity -> Slayer(entity, "Sven Packmaster", "§fSven Packmaster")
is EndermanEntity -> SeraphSlayer(entity)
is BlazeEntity -> DemonlordSlayer(entity)
is OtherClientPlayerEntity -> {
Expand Down Expand Up @@ -256,7 +256,7 @@ object SlayerFeatures : EventSubscriber, CoroutineScope {
val entity = event.entity as ArmorStandEntity
if (!entity.hasCustomName()) return
val name = entity.displayName?.string ?: return
if (Skytils.config.slayerBossHitbox && name.endsWith("§c❤") && !name.endsWith("§e0§c❤") && !mc.entityRenderDispatcher.shouldRenderHitboxes()) {
if (Skytils.config.slayerBossHitbox && name.endsWith("❤") && !name.endsWith(" 0❤") && !mc.entityRenderDispatcher.shouldRenderHitboxes()) {
val (x, y, z) = RenderUtil.fixRenderPos(event.x, event.y, event.z)
if (ZOMBIE_MINIBOSSES.any { name.contains(it) } || BLAZE_MINIBOSSES.any { name.contains(it) }) {
drawOutlinedBoundingBox(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import net.minecraft.item.ItemStack
open class Slayer<T : LivingEntity>(
val entity: T,
private val name: String,
private vararg val nameStart: String,
private vararg val nameContains: String,
) {
var nameEntity: ArmorStandEntity? = null
var timerEntity: ArmorStandEntity? = null
Expand Down Expand Up @@ -84,7 +84,7 @@ open class Slayer<T : LivingEntity>(
for (nearby in nearbyArmorStands) {
when {
nearby.displayName?.formattedText?.startsWith("§8[§7Lv") == true -> continue
nameStart.any { nearby.displayName?.formattedText?.startsWith(it) == true } -> {
nameContains.any { nearby.displayName?.formattedText?.contains(it) == true } -> {
printDevMessage(
{ "expected tier $currentTier, hp $expectedHealth - spawned hp ${entity.baseMaxHealth.toInt()}" },
"slayer"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import net.minecraft.util.math.BlockPos
*
* Subtype of [Slayer]
*/
abstract class ThrowingSlayer<T : MobEntity>(entity: T, name: String, nameStart: String) : Slayer<T>(
entity, name, nameStart,
abstract class ThrowingSlayer<T : MobEntity>(entity: T, name: String, nameContains: String) : Slayer<T>(
entity, name, nameContains,
) {
var thrownLocation: BlockPos? = null
var thrownEntity: ArmorStandEntity? = null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ import net.minecraft.util.math.BlockPos
import java.awt.Color

class DemonlordSlayer(entity: BlazeEntity) :
ThrowingSlayer<BlazeEntity>(entity, "Inferno Demonlord", "§c☠ §bInferno Demonlord") {
ThrowingSlayer<BlazeEntity>(entity, "Inferno Demonlord", "§bInferno Demonlord") {
var totemEntity: ArmorStandEntity? = null
var totemPos: BlockPos? = null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import net.minecraft.registry.tag.BlockTags
import net.minecraft.util.math.BlockPos

class RevenantSlayer(entity: ZombieEntity) :
Slayer<ZombieEntity>(entity, "Revenant Horror", "§c☠ §bRevenant Horror", "§c☠ §fAtoned Horror") {
Slayer<ZombieEntity>(entity, "Revenant Horror", "§bRevenant Horror", "§fAtoned Horror") {

override fun set() {
rev5PingTask.start()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import net.minecraft.util.math.Box
import kotlin.math.abs

class SeraphSlayer(entity: EndermanEntity) :
ThrowingSlayer<EndermanEntity>(entity, "Voidgloom Seraph", "§c☠ §bVoidgloom Seraph") {
ThrowingSlayer<EndermanEntity>(entity, "Voidgloom Seraph", "§bVoidgloom Seraph") {
val nukekebiSkulls = mutableListOf<ArmorStandEntity>()
var yangGlyphAdrenalineStressCount = -1L
var lastYangGlyphSwitch = -1L
Expand Down