Skip to content
This repository has been archived by the owner on Jul 20, 2024. It is now read-only.

Commit

Permalink
connectiing the differnet modules is almost done
Browse files Browse the repository at this point in the history
also added generic boss killer and changed enderman boss killer

Signed-off-by: TomJuri <[email protected]>
  • Loading branch information
TomJuri committed Sep 10, 2023
1 parent ae05416 commit 28ef342
Show file tree
Hide file tree
Showing 12 changed files with 180 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public abstract class RenderGuardianMixin {
private void renderGuardianBeamMixin(EntityGuardian entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
Vec3 start = func_177110_a(entity.getTargetedEntity(), (double) entity.getTargetedEntity().height * 0.5D, partialTicks);
Vec3 end = func_177110_a(entity, entity.getEyeHeight(), partialTicks);
SwiftSlayer.Companion.getInstance().getVoidgloomKiller().lasers = new Pair<>(start, end);
SwiftSlayer.Companion.getInstance().getVoidgloomKiller().setLastLaser(System.currentTimeMillis());
SwiftSlayer.Companion.getInstance().getEndermanBossKiller().lasers = new Pair<>(start, end);
SwiftSlayer.Companion.getInstance().getEndermanBossKiller().setLastLaser(System.currentTimeMillis());
}
}
10 changes: 7 additions & 3 deletions src/main/kotlin/dev/macrohq/swiftslayer/SwiftSlayer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import cc.polyfrost.oneconfig.utils.commands.CommandManager
import dev.macrohq.swiftslayer.command.PathfindTest
import dev.macrohq.swiftslayer.config.SwiftSlayerConfig
import dev.macrohq.swiftslayer.feature.AutoBatphone
import dev.macrohq.swiftslayer.macro.EndermanBossKiller
import dev.macrohq.swiftslayer.macro.GenericBossKiller
import dev.macrohq.swiftslayer.macro.MacroManager
import dev.macrohq.swiftslayer.macro.MobKiller
import dev.macrohq.swiftslayer.macro.VoidgloomKiller
import dev.macrohq.swiftslayer.pathfinding.PathExecutor
import dev.macrohq.swiftslayer.util.RenderUtil
import dev.macrohq.swiftslayer.util.RotationUtil
Expand All @@ -27,24 +28,27 @@ class SwiftSlayer {
lateinit var pathExecutor: PathExecutor private set
lateinit var config: SwiftSlayerConfig private set
lateinit var mobKiller: MobKiller private set
lateinit var voidgloomKiller: VoidgloomKiller private set
lateinit var endermanBossKiller: EndermanBossKiller private set
lateinit var autoBatphone: AutoBatphone private set
lateinit var macroManager: MacroManager private set
lateinit var genericBossKiller: GenericBossKiller private set
var removeLater: BlockPos? = null

@Mod.EventHandler
fun init(event: FMLInitializationEvent) {
config = SwiftSlayerConfig()
pathExecutor = PathExecutor()
mobKiller = MobKiller()
voidgloomKiller = VoidgloomKiller()
endermanBossKiller = EndermanBossKiller()
autoBatphone = AutoBatphone()
macroManager = MacroManager()
genericBossKiller = GenericBossKiller()
MinecraftForge.EVENT_BUS.register(this)
MinecraftForge.EVENT_BUS.register(pathExecutor)
MinecraftForge.EVENT_BUS.register(mobKiller)
MinecraftForge.EVENT_BUS.register(autoBatphone)
MinecraftForge.EVENT_BUS.register(macroManager)
MinecraftForge.EVENT_BUS.register(genericBossKiller)
CommandManager.register(PathfindTest())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@ package dev.macrohq.swiftslayer.command
import cc.polyfrost.oneconfig.utils.commands.annotations.Command
import cc.polyfrost.oneconfig.utils.commands.annotations.Main
import cc.polyfrost.oneconfig.utils.commands.annotations.SubCommand
import dev.macrohq.swiftslayer.pathfinding.AStarPathfinder
import dev.macrohq.swiftslayer.util.*
import net.minecraft.entity.item.EntityArmorStand
import net.minecraft.entity.monster.EntityZombie
import net.minecraft.entity.passive.EntityWolf
import net.minecraft.util.BlockPos

@Command(value = "pathfindtest", aliases = ["pft"])
Expand Down Expand Up @@ -46,6 +42,6 @@ class PathfindTest {
mobKiller.disable()
PathingUtil.stop()
RotationUtil.stop()
batphoneHandler.disable()
autoBatphone.disable()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,23 @@ class SwiftSlayerConfig : Config(Mod("SwiftSlayer", ModType.SKYBLOCK), "swiftsla
subcategory = "Slayers",
options = ["1", "2", "3", "4", "5"]
)
var slayerTier = 5
var slayerTier = 4

@Dropdown(
name = "MobKiller Weapon",
category = "General",
subcategory = "Slayer",
options = ["Spirit Sceptre", "Aspect of the Dragons"]
options = ["Spirit Sceptre", "Melee"]
)
var mobkillerWeapon = 0
var mobKillerWeapon = 0

@Dropdown(
name = "BossKiller Weapon",
category = "General",
subcategory = "Slayer",
options = ["Hyperion", "Melee"]
)
var bossKillerWeapon = 0

@Slider(
name = "Failsafe volume",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
package dev.macrohq.swiftslayer.macro

import dev.macrohq.swiftslayer.util.*
import net.minecraft.entity.EntityLiving
import net.minecraft.entity.item.EntityArmorStand
import net.minecraft.entity.monster.EntityZombie
import net.minecraft.util.StringUtils
import net.minecraft.util.Vec3
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent

class VoidgloomKiller {
class EndermanBossKiller {

private var enabled = false
private lateinit var target: EntityArmorStand
var enabled = false
private set
private lateinit var target: EntityLiving
private lateinit var targetArmorStand: EntityArmorStand
private var state = State.HIT
lateinit var lasers: Pair<Vec3, Vec3>
var lastLaser = 0L
var timer = Timer(0)
private var timer = Timer(0)

@SubscribeEvent
fun onTick(event: ClientTickEvent) {
Expand All @@ -28,15 +32,15 @@ class VoidgloomKiller {
}
when(state) {
State.HIT -> {
RotationUtil.easeToEntity(target, 250, true)
RotationUtil.easeToEntity(target, 250, aimLock = true, true)
if(player.getDistanceSqToEntity(target) < 10.0) gameSettings.keyBindBack.setPressed(true) else gameSettings.keyBindBack.setPressed(false)
if(player.worldObj.loadedEntityList.filterIsInstance<EntityZombie>().any { it.getDistanceSqToEntity(target) > 4.0 }) return
InventoryUtil.holdItem("Reaper Scythe")
KeyBindUtil.rightClick()
}

State.DAMAGE -> {
RotationUtil.easeToEntity(target, 250, true)
RotationUtil.easeToEntity(target, 250, aimLock = true, true)
if(player.getDistanceSqToEntity(target) > 3.0) gameSettings.keyBindForward.setPressed(true) else gameSettings.keyBindForward.setPressed(false)
if (timer.isDone) {
gameSettings.keyBindSneak.setPressed(true)
Expand All @@ -59,10 +63,12 @@ class VoidgloomKiller {
}
}

fun enable(target: EntityArmorStand) {
fun enable(target: EntityLiving) {
if (enabled) return
enabled = true
this.target = target
targetArmorStand = player.worldObj.loadedEntityList.filterIsInstance<EntityArmorStand>()
.first { StringUtils.stripControlCodes(it.name).contains("Voidgloom Seraph") }
Logger.info("VoidgloomKiller enabled")
}

Expand Down
55 changes: 55 additions & 0 deletions src/main/kotlin/dev/macrohq/swiftslayer/macro/GenericBossKiller.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package dev.macrohq.swiftslayer.macro

import dev.macrohq.swiftslayer.util.*
import net.minecraft.entity.EntityLiving
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent

class GenericBossKiller {

var enabled = false
private set
private lateinit var target: EntityLiving
private var hasRotated = false

@SubscribeEvent
fun onTick(event: ClientTickEvent) {
if (!enabled) return
if (target.isDead) {
Logger.info("Boss killed.")
disable()
return
}
if (!hasRotated) {
if (config.bossKillerWeapon == 1) {
RotationUtil.easeToEntity(target, 500, aimLock = true, true)
} else {
RotationUtil.ease(RotationUtil.Rotation(player.rotationYaw, 90f), 500)
}
hasRotated = true
}
if (player.getDistanceToEntity(target) <= 5) {
if (config.bossKillerWeapon == 1)
KeyBindUtil.leftClick(10)
else
KeyBindUtil.rightClick(10)
} else {
KeyBindUtil.stopClicking()
}
}

fun enable(target: EntityLiving) {
if (enabled) return
Logger.info("Enabling GenericBossKiller")
enabled = true
}

fun disable() {
if (!enabled) return
Logger.info("Disabling GenericBossKiller")
enabled = false
RotationUtil.stop()
KeyBindUtil.stopClicking()
hasRotated = false
}
}
41 changes: 34 additions & 7 deletions src/main/kotlin/dev/macrohq/swiftslayer/macro/MacroManager.kt
Original file line number Diff line number Diff line change
@@ -1,30 +1,57 @@
package dev.macrohq.swiftslayer.macro

import dev.macrohq.swiftslayer.util.Logger
import dev.macrohq.swiftslayer.util.config
import dev.macrohq.swiftslayer.util.*
import net.minecraft.entity.EntityLiving
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent

class MacroManager {

private var enabled = false
private var state = State.ACTIVATE_QUEST

fun toggle() {
if (!enabled) {
enabled = true
} else {
enabled = false
@SubscribeEvent
fun onTick(event: ClientTickEvent) {
if (!enabled || autoBatphone.enabled || mobKiller.enabled || genericBossKiller.enabled || endermanBossKiller.enabled) return
when (state) {
State.ACTIVATE_QUEST -> autoBatphone.enable(true)
State.KILL_MOBS -> mobKiller.enable()
State.KILL_BOSS -> {
val boss =
player.worldObj.loadedEntityList.filterIsInstance<EntityLiving>().maxByOrNull { it.maxHealth }!!
if (config.slayer == 3) endermanBossKiller.enable(boss)
else genericBossKiller.enable(boss)
}
}
}

fun toggle() {
if (!enabled) enable() else disable()
}

private fun enable() {
if (enabled) return
if (config.slayer != 0 && config.slayerTier == 4) {
Logger.error("There's no tier 5 boss for this slayer.")
return
}
Logger.info("Enabling macro.")
enabled = true
}

private fun disable() {
if (!enabled) return
Logger.info("Disabling macro.")
enabled = false
autoBatphone.disable()
mobKiller.disable()
genericBossKiller.disable()
endermanBossKiller.disable()
}

enum class State {
ACTIVATE_QUEST,
KILL_MOBS,
KILL_BOSS
}
}
25 changes: 11 additions & 14 deletions src/main/kotlin/dev/macrohq/swiftslayer/macro/MobKiller.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package dev.macrohq.swiftslayer.macro

import cc.polyfrost.oneconfig.libs.checker.units.qual.Angle
import dev.macrohq.swiftslayer.util.*
import dev.macrohq.swiftslayer.util.Logger.info
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLiving
import net.minecraft.entity.monster.EntitySpider
import net.minecraft.entity.monster.EntityZombie
import net.minecraft.entity.passive.EntityWolf
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
import kotlin.math.abs

class MobKiller {
private var blacklist = mutableListOf<EntityLiving>()
private var mobKiller = false
var enabled = false
private set
private var state: State = State.NONE
private var targetEntity: EntityLiving? = null
private var ticks: Int = 0
Expand All @@ -36,7 +33,7 @@ class MobKiller {
@SubscribeEvent
fun onTick(event: TickEvent.ClientTickEvent){
if(player == null || world == null) return
if(!mobKiller) return
if (!enabled) return
ticks++
if(player.lastTickPosition().add(0,-1,0) == player.getStandingOnFloor()){stuckCounter++}
else stuckCounter=0
Expand Down Expand Up @@ -109,20 +106,20 @@ class MobKiller {
}

fun enable(){
mobKiller = true
enabled = true
state = State.STARTING
}

fun disable() {
mobKiller = false
enabled = false
PathingUtil.stop()
RotationUtil.stop()
state = State.NONE
Logger.error("Disabling")
}

private fun angleForWeapon(entity: EntityLiving): RotationUtil.Rotation {
return when (config.mobkillerWeapon) {
return when (config.mobKillerWeapon) {
0 -> {
RotationUtil.Rotation(AngleUtil.getAngles(targetEntity!!).yaw, 45f)
}
Expand All @@ -138,30 +135,30 @@ class MobKiller {
}

private fun useWeapon() {
when (config.mobkillerWeapon) {
when (config.mobKillerWeapon) {
0 -> KeyBindUtil.rightClick()
1 -> KeyBindUtil.leftClick()
else -> {}
}
}

private fun attackDistance(): Int {
return when (config.mobkillerWeapon) {
return when (config.mobKillerWeapon) {
0 -> 6
1 -> 3
else -> 6
}
}

private fun holdWeapon() {
when (config.mobkillerWeapon) {
when (config.mobKillerWeapon) {
0 -> InventoryUtil.holdItem("Spirit")
1 -> InventoryUtil.holdItem("Aspect of the Dragons")
}
}

private fun stop() {
when (config.mobkillerWeapon) {
when (config.mobKillerWeapon) {
0 -> {}
1 -> PathingUtil.stop()
}
Expand All @@ -170,7 +167,7 @@ class MobKiller {
private fun lookDone(): Boolean {
val yawDiff = abs(AngleUtil.yawTo360(player.rotationYaw) - AngleUtil.yawTo360(angle.yaw))
val pitchDiff = abs(mc.thePlayer.rotationPitch - angle.pitch)
when (config.mobkillerWeapon) {
when (config.mobKillerWeapon) {
0 -> return pitchDiff < 2
1 -> return yawDiff < 10 && pitchDiff < 5
}
Expand Down
Loading

0 comments on commit 28ef342

Please sign in to comment.