(Chore): Fix conflict?
This commit is contained in:
commit
1db0e3b7a4
@ -1,3 +1,9 @@
|
|||||||
# SkyBlockTweaks
|
# SkyBlockTweaks
|
||||||
|
|
||||||
My QOL mod for Hypixel Skyblock
|
My QOL mod for Hypixel Skyblock
|
||||||
|
|
||||||
|
## Includes:
|
||||||
|
- Grotto Finder
|
||||||
|
- Gemstone Finder
|
||||||
|
- Powder ChestESP
|
||||||
|
- Route Builder
|
@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx2g
|
|||||||
baseGroup = com.github.itzilly.sbt
|
baseGroup = com.github.itzilly.sbt
|
||||||
mcVersion = 1.8.9
|
mcVersion = 1.8.9
|
||||||
modid = sbt
|
modid = sbt
|
||||||
version = 1.4.0
|
version = 1.4.1
|
||||||
|
86
src/main/kotlin/com/github/itzilly/sbt/SBTCommand.kt
Normal file
86
src/main/kotlin/com/github/itzilly/sbt/SBTCommand.kt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package com.github.itzilly.sbt
|
||||||
|
|
||||||
|
import com.github.itzilly.sbt.features.ChestEsp
|
||||||
|
import com.github.itzilly.sbt.features.GemstoneFinder
|
||||||
|
import net.minecraft.command.CommandBase
|
||||||
|
import net.minecraft.command.CommandException
|
||||||
|
import net.minecraft.command.ICommandSender
|
||||||
|
import net.minecraft.util.ChatComponentText
|
||||||
|
import net.minecraftforge.common.config.Configuration.*
|
||||||
|
|
||||||
|
|
||||||
|
class SBTCommand : CommandBase() {
|
||||||
|
|
||||||
|
override fun getCommandName(): String {
|
||||||
|
return "sbt"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getCommandUsage(sender: ICommandSender): String {
|
||||||
|
return "/sbt <powderchests/gemstonesearchradius> [enable/disable/radius]"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getRequiredPermissionLevel(): Int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
@Throws(CommandException::class)
|
||||||
|
override fun processCommand(sender: ICommandSender, args: Array<String>) {
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
sender.addChatMessage(ChatComponentText("Invalid command. Usage: /sbt <powderchests/gemstonesearchradius> [enable/disable/radius]"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
when (args[0].lowercase()) {
|
||||||
|
"powderchests" -> {
|
||||||
|
if (args.size < 2) {
|
||||||
|
sender.addChatMessage(ChatComponentText("Usage: /sbt powderchests <enable/disable>"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
when (args[1].lowercase()) {
|
||||||
|
"enable" -> {
|
||||||
|
ChestEsp.enabled = true
|
||||||
|
SkyBlockTweaks.config.getCategory(CATEGORY_GENERAL)?.get("powderchestenable")?.set(true)
|
||||||
|
SkyBlockTweaks.config.save()
|
||||||
|
sender.addChatMessage(ChatComponentText("Powder ChestESP enabled."))
|
||||||
|
}
|
||||||
|
"disable" -> {
|
||||||
|
ChestEsp.enabled = false
|
||||||
|
SkyBlockTweaks.config.getCategory(CATEGORY_GENERAL)?.get("powderchestenable")?.set(false)
|
||||||
|
SkyBlockTweaks.config.save()
|
||||||
|
sender.addChatMessage(ChatComponentText("Powder ChestESP disabled."))
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
sender.addChatMessage(ChatComponentText("Invalid option. Usage: /sbt powderchests <enable/disable>"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"gemstonesearchradius" -> {
|
||||||
|
if (args.size < 2) {
|
||||||
|
sender.addChatMessage(ChatComponentText("Usage: /sbt gemstonesearchradius <radius>"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
val radius = args[1].toInt()
|
||||||
|
|
||||||
|
if (radius < 0) {
|
||||||
|
sender.addChatMessage(ChatComponentText("Radius must be a positive integer."))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
SkyBlockTweaks.config.getCategory(CATEGORY_GENERAL)?.get("gemstonesearchradius")?.set(radius)
|
||||||
|
SkyBlockTweaks.config.save()
|
||||||
|
GemstoneFinder.radius = radius
|
||||||
|
sender.addChatMessage(ChatComponentText("Gemstone search radius set to $radius."))
|
||||||
|
|
||||||
|
} catch (e: NumberFormatException) {
|
||||||
|
sender.addChatMessage(ChatComponentText("Invalid radius. Please provide a positive integer."))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
sender.addChatMessage(ChatComponentText("Invalid command. Usage: /sbt <powderchests/gemstonesearchradius> [enable/disable/radius]"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,12 +5,15 @@ import com.github.itzilly.sbt.features.GemstoneFinder
|
|||||||
import com.github.itzilly.sbt.features.GrottoFinder
|
import com.github.itzilly.sbt.features.GrottoFinder
|
||||||
import com.github.itzilly.sbt.features.router.RouteBuilder
|
import com.github.itzilly.sbt.features.router.RouteBuilder
|
||||||
import com.github.itzilly.sbt.util.MessageScheduler
|
import com.github.itzilly.sbt.util.MessageScheduler
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraftforge.client.ClientCommandHandler
|
||||||
import net.minecraftforge.common.MinecraftForge
|
import net.minecraftforge.common.MinecraftForge
|
||||||
|
import net.minecraftforge.common.config.Configuration
|
||||||
import net.minecraftforge.fml.common.Mod
|
import net.minecraftforge.fml.common.Mod
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent
|
||||||
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
@Mod(modid = "sbt", useMetadata = true)
|
@Mod(modid = "sbt", useMetadata = true, clientSideOnly = true)
|
||||||
class SkyBlockTweaks {
|
class SkyBlockTweaks {
|
||||||
init {
|
init {
|
||||||
INSTANCE = this
|
INSTANCE = this
|
||||||
@ -18,6 +21,14 @@ class SkyBlockTweaks {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
lateinit var INSTANCE: SkyBlockTweaks
|
lateinit var INSTANCE: SkyBlockTweaks
|
||||||
|
lateinit var config: Configuration
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventHandler
|
||||||
|
fun preInit(event: FMLPreInitializationEvent) {
|
||||||
|
val directory = event.modConfigurationDirectory
|
||||||
|
config = Configuration(File(directory.path, "sbt.cfg"))
|
||||||
|
loadConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
@ -30,5 +41,41 @@ class SkyBlockTweaks {
|
|||||||
MinecraftForge.EVENT_BUS.register(GrottoFinder)
|
MinecraftForge.EVENT_BUS.register(GrottoFinder)
|
||||||
MinecraftForge.EVENT_BUS.register(ChestEsp)
|
MinecraftForge.EVENT_BUS.register(ChestEsp)
|
||||||
MinecraftForge.EVENT_BUS.register(GemstoneFinder)
|
MinecraftForge.EVENT_BUS.register(GemstoneFinder)
|
||||||
|
|
||||||
|
ClientCommandHandler.instance.registerCommand(SBTCommand())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadConfig() {
|
||||||
|
config.load()
|
||||||
|
|
||||||
|
val powderChestEnable = config.getBoolean(
|
||||||
|
"powderchestenable",
|
||||||
|
Configuration.CATEGORY_GENERAL,
|
||||||
|
true,
|
||||||
|
"Enables/Disables Powder ChestESP"
|
||||||
|
)
|
||||||
|
ChestEsp.enabled = powderChestEnable
|
||||||
|
|
||||||
|
val gemstoneRadius = config.getInt(
|
||||||
|
"gemstonesearchradius",
|
||||||
|
Configuration.CATEGORY_GENERAL,
|
||||||
|
16,
|
||||||
|
1,
|
||||||
|
256,
|
||||||
|
"Enables/Disables Powder ChestESP"
|
||||||
|
)
|
||||||
|
ChestEsp.enabled = powderChestEnable
|
||||||
|
GemstoneFinder.radius = gemstoneRadius
|
||||||
|
|
||||||
|
if (config.hasChanged()) {
|
||||||
|
config.save()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun syncConfig() {
|
||||||
|
loadConfig()
|
||||||
|
if (config.hasChanged()) {
|
||||||
|
config.save()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.github.itzilly.sbt.features
|
package com.github.itzilly.sbt.features
|
||||||
|
|
||||||
|
import com.github.itzilly.sbt.SkyBlockTweaks
|
||||||
import com.github.itzilly.sbt.renderer.RenderUtils
|
import com.github.itzilly.sbt.renderer.RenderUtils
|
||||||
import java.awt.Color
|
import java.awt.Color
|
||||||
import com.github.itzilly.sbt.util.Chatterbox
|
import com.github.itzilly.sbt.util.Chatterbox
|
||||||
@ -16,6 +17,7 @@ import net.minecraft.util.AxisAlignedBB
|
|||||||
import net.minecraft.util.MovingObjectPosition
|
import net.minecraft.util.MovingObjectPosition
|
||||||
import net.minecraftforge.client.event.ClientChatReceivedEvent
|
import net.minecraftforge.client.event.ClientChatReceivedEvent
|
||||||
import net.minecraftforge.client.event.RenderWorldLastEvent
|
import net.minecraftforge.client.event.RenderWorldLastEvent
|
||||||
|
import net.minecraftforge.common.config.Configuration
|
||||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent
|
import net.minecraftforge.event.entity.player.PlayerInteractEvent
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
|
||||||
import org.lwjgl.opengl.GL11
|
import org.lwjgl.opengl.GL11
|
||||||
@ -32,9 +34,11 @@ fun chestNodeExists(x: Int, y: Int, z: Int): Boolean {
|
|||||||
}
|
}
|
||||||
object ChestEsp {
|
object ChestEsp {
|
||||||
var chestList: ArrayList<ChestNode> = ArrayList()
|
var chestList: ArrayList<ChestNode> = ArrayList()
|
||||||
|
var enabled: Boolean = SkyBlockTweaks.config.getBoolean("powderchestenable", Configuration.CATEGORY_GENERAL, true, "Enables/Disables Powder ChestESP")
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
fun chatMessageEvent(event: ClientChatReceivedEvent) {
|
fun chatMessageEvent(event: ClientChatReceivedEvent) {
|
||||||
|
if (!enabled) return
|
||||||
if (event.message.unformattedText == "You uncovered a treasure chest!") {
|
if (event.message.unformattedText == "You uncovered a treasure chest!") {
|
||||||
DelayedFunction({ highlightChests() }, 5)
|
DelayedFunction({ highlightChests() }, 5)
|
||||||
}
|
}
|
||||||
@ -42,6 +46,7 @@ object ChestEsp {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
fun renderBlockOverlay(event: RenderWorldLastEvent) {
|
fun renderBlockOverlay(event: RenderWorldLastEvent) {
|
||||||
|
if (!enabled) return
|
||||||
val player = Minecraft.getMinecraft().thePlayer
|
val player = Minecraft.getMinecraft().thePlayer
|
||||||
|
|
||||||
for (chest: ChestNode in chestList) {
|
for (chest: ChestNode in chestList) {
|
||||||
@ -53,6 +58,7 @@ object ChestEsp {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
fun rightClickEvent(event: PlayerInteractEvent) {
|
fun rightClickEvent(event: PlayerInteractEvent) {
|
||||||
|
if (!enabled) return
|
||||||
if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
|
if (event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK) {
|
||||||
val player = event.entityPlayer
|
val player = event.entityPlayer
|
||||||
val reachDistance = 5.0
|
val reachDistance = 5.0
|
||||||
@ -75,12 +81,12 @@ object ChestEsp {
|
|||||||
if (chestNodeExists(x, y, z)) {
|
if (chestNodeExists(x, y, z)) {
|
||||||
chestList.removeIf { it.x == x && it.y == y && it.z == z }
|
chestList.removeIf { it.x == x && it.y == y && it.z == z }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun highlightChests() {
|
fun highlightChests() {
|
||||||
|
if (!enabled) return
|
||||||
val searchRadius = 8
|
val searchRadius = 8
|
||||||
val world = Minecraft.getMinecraft().thePlayer.worldObj
|
val world = Minecraft.getMinecraft().thePlayer.worldObj
|
||||||
val posX = Minecraft.getMinecraft().thePlayer.posX
|
val posX = Minecraft.getMinecraft().thePlayer.posX
|
||||||
@ -96,7 +102,6 @@ object ChestEsp {
|
|||||||
val boundZMax = posZ + searchRadius
|
val boundZMax = posZ + searchRadius
|
||||||
val boundZMin = posZ - searchRadius
|
val boundZMin = posZ - searchRadius
|
||||||
|
|
||||||
// Chatterbox.say(SimpleChatMsg("Searching for chests...").aqua())
|
|
||||||
for (x in boundXMin.toInt()..boundXMax.toInt()) {
|
for (x in boundXMin.toInt()..boundXMax.toInt()) {
|
||||||
for (y in boundYMin.toInt()..boundYMax.toInt()) {
|
for (y in boundYMin.toInt()..boundYMax.toInt()) {
|
||||||
for (z in boundZMin.toInt()..boundZMax.toInt()) {
|
for (z in boundZMin.toInt()..boundZMax.toInt()) {
|
||||||
@ -110,7 +115,6 @@ object ChestEsp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Chatterbox.say(SimpleChatMsg("Done!").green())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.github.itzilly.sbt.features
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
|
||||||
|
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent
|
||||||
|
|
||||||
|
|
||||||
|
object FarmHelper {
|
||||||
|
|
||||||
|
// private val mc: Minecraft = Minecraft.getMinecraft()
|
||||||
|
// private var isPressingD = false
|
||||||
|
// private var isPressingMouse = false
|
||||||
|
// @SubscribeEvent
|
||||||
|
// fun onPlayerTick(event: PlayerTickEvent) {
|
||||||
|
// if (event.player === mc.thePlayer) {
|
||||||
|
// if (isPressingD) {
|
||||||
|
// mc.thePlayer.moveStrafing = 1.0f // Simulate holding 'd'
|
||||||
|
// }
|
||||||
|
// if (isPressingMouse) {
|
||||||
|
// mc.gameSettings.keyBindAttack.setPressed(true) // Simulate mouse button down
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @SubscribeEvent
|
||||||
|
// fun onKeyInput(event: KeyInputEvent) {
|
||||||
|
// if (mc.currentScreen == null) {
|
||||||
|
// if (event.getKey() === GLFW.GLFW_KEY_P && event.getAction() === GLFW.GLFW_PRESS) {
|
||||||
|
// isPressingD = !isPressingD // Toggle 'd' key
|
||||||
|
// }
|
||||||
|
// if (event.getKey() === GLFW.GLFW_KEY_O && event.getAction() === GLFW.GLFW_PRESS) {
|
||||||
|
// isPressingMouse = !isPressingMouse // Toggle mouse button
|
||||||
|
// mc.gameSettings.keyBindAttack.setPressed(isPressingMouse) // Set initial state
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
@ -1,10 +1,12 @@
|
|||||||
package com.github.itzilly.sbt.features
|
package com.github.itzilly.sbt.features
|
||||||
|
|
||||||
|
import com.github.itzilly.sbt.SkyBlockTweaks
|
||||||
import com.github.itzilly.sbt.renderer.RenderFuncs
|
import com.github.itzilly.sbt.renderer.RenderFuncs
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.init.Blocks
|
import net.minecraft.init.Blocks
|
||||||
import net.minecraft.util.BlockPos
|
import net.minecraft.util.BlockPos
|
||||||
import net.minecraftforge.client.event.RenderWorldLastEvent
|
import net.minecraftforge.client.event.RenderWorldLastEvent
|
||||||
|
import net.minecraftforge.common.config.Configuration
|
||||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
|
||||||
|
|
||||||
enum class GemstoneColors(val color: Int) {
|
enum class GemstoneColors(val color: Int) {
|
||||||
@ -18,6 +20,8 @@ enum class GemstoneColors(val color: Int) {
|
|||||||
}
|
}
|
||||||
object GemstoneFinder {
|
object GemstoneFinder {
|
||||||
private var gemstoneClusters: ArrayList<GemstoneCluster> = ArrayList()
|
private var gemstoneClusters: ArrayList<GemstoneCluster> = ArrayList()
|
||||||
|
private var gemstoneList: ArrayList<GemstoneBlock> = ArrayList()
|
||||||
|
var radius = SkyBlockTweaks.config.getCategory(Configuration.CATEGORY_GENERAL)?.get("gemstonesearchradius")?.int?: 16
|
||||||
|
|
||||||
fun clear() {
|
fun clear() {
|
||||||
gemstoneClusters.clear()
|
gemstoneClusters.clear()
|
||||||
@ -27,15 +31,15 @@ object GemstoneFinder {
|
|||||||
val playerPos = Minecraft.getMinecraft().thePlayer.position
|
val playerPos = Minecraft.getMinecraft().thePlayer.position
|
||||||
|
|
||||||
val minBounds = BlockPos(
|
val minBounds = BlockPos(
|
||||||
playerPos.x - 32,
|
playerPos.x - radius,
|
||||||
maxOf(playerPos.y - 32, 31),
|
maxOf(playerPos.y - radius, 31),
|
||||||
playerPos.z - 32
|
playerPos.z - radius
|
||||||
)
|
)
|
||||||
|
|
||||||
val maxBounds = BlockPos(
|
val maxBounds = BlockPos(
|
||||||
playerPos.x + 32,
|
playerPos.x + radius,
|
||||||
minOf(playerPos.y + 32, 188),
|
minOf(playerPos.y + radius, 188),
|
||||||
playerPos.z + 32
|
playerPos.z + radius
|
||||||
)
|
)
|
||||||
val world = Minecraft.getMinecraft().thePlayer.worldObj
|
val world = Minecraft.getMinecraft().thePlayer.worldObj
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
package com.github.itzilly.sbt.features.router
|
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.github.itzilly.sbt.renderer
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft
|
||||||
|
import net.minecraft.util.BlockPos
|
||||||
|
import net.minecraftforge.client.event.RenderWorldLastEvent
|
||||||
|
|
||||||
|
class RenderableBlockOutline(val x: Int, val y: Int, val z: Int, val outlineColor: Int) {
|
||||||
|
fun renderOutline(event: RenderWorldLastEvent) {
|
||||||
|
val player = Minecraft.getMinecraft().thePlayer
|
||||||
|
val pos = BlockPos(x, y, z)
|
||||||
|
RenderFuncs.drawBlockOutline(player, pos, event.partialTicks, outlineColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun renderLine(event: RenderWorldLastEvent) {
|
||||||
|
val pos = BlockPos(x, y, z)
|
||||||
|
RenderFuncs.drawBlockLine(pos, event.partialTicks)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user