mirror of https://github.com/kami-blue/client
Added the option to look for droppers and dispensers in stashfinder. (#807)
This commit is contained in:
parent
6929040d9d
commit
40c39209de
|
@ -12,6 +12,8 @@ import net.minecraft.init.SoundEvents
|
||||||
import net.minecraft.tileentity.TileEntity
|
import net.minecraft.tileentity.TileEntity
|
||||||
import net.minecraft.tileentity.TileEntityChest
|
import net.minecraft.tileentity.TileEntityChest
|
||||||
import net.minecraft.tileentity.TileEntityShulkerBox
|
import net.minecraft.tileentity.TileEntityShulkerBox
|
||||||
|
import net.minecraft.tileentity.TileEntityDropper
|
||||||
|
import net.minecraft.tileentity.TileEntityDispenser
|
||||||
import net.minecraft.util.math.BlockPos
|
import net.minecraft.util.math.BlockPos
|
||||||
import net.minecraft.util.math.ChunkPos
|
import net.minecraft.util.math.ChunkPos
|
||||||
|
|
||||||
|
@ -21,7 +23,7 @@ import net.minecraft.util.math.ChunkPos
|
||||||
@Module.Info(
|
@Module.Info(
|
||||||
name = "StashFinder",
|
name = "StashFinder",
|
||||||
category = Module.Category.MISC,
|
category = Module.Category.MISC,
|
||||||
description = "Logs chests and shulkers around you."
|
description = "Logs storage units in render distance."
|
||||||
)
|
)
|
||||||
class StashFinder : Module() {
|
class StashFinder : Module() {
|
||||||
private val logChests = register(Settings.b("Chests"))
|
private val logChests = register(Settings.b("Chests"))
|
||||||
|
@ -30,16 +32,24 @@ class StashFinder : Module() {
|
||||||
private val logShulkers = register(Settings.b("Shulkers"))
|
private val logShulkers = register(Settings.b("Shulkers"))
|
||||||
private val shulkerDensity = register(Settings.integerBuilder("Min Shulkers").withMinimum(1).withMaximum(20).withValue(1).build())
|
private val shulkerDensity = register(Settings.integerBuilder("Min Shulkers").withMinimum(1).withMaximum(20).withValue(1).build())
|
||||||
|
|
||||||
|
private val logDroppers = register(Settings.b("Droppers", false))
|
||||||
|
private val dropperDensity = register(Settings.integerBuilder("Min Droppers").withMinimum(1).withMaximum(20).withValue(5).build())
|
||||||
|
|
||||||
|
private val logDispensers = register(Settings.b("Dispensers", false))
|
||||||
|
private val dispenserDensity = register(Settings.integerBuilder("Min Dispensers").withMinimum(1).withMaximum(20).withValue(5).build())
|
||||||
|
|
||||||
private val logToChat = register(Settings.b("Log To Chat"))
|
private val logToChat = register(Settings.b("Log To Chat"))
|
||||||
private val playSound = register(Settings.b("Play Sound"))
|
private val playSound = register(Settings.b("Play Sound"))
|
||||||
|
|
||||||
private data class ChunkStats(var chests: Int = 0, var shulkers: Int = 0, var hot: Boolean = false) {
|
private data class ChunkStats(var chests: Int = 0, var shulkers: Int = 0, var droppers: Int = 0, var dispensers: Int = 0, var hot: Boolean = false) {
|
||||||
val tileEntities = mutableListOf<TileEntity>()
|
val tileEntities = mutableListOf<TileEntity>()
|
||||||
|
|
||||||
fun add(tileEntity: TileEntity) {
|
fun add(tileEntity: TileEntity) {
|
||||||
when (tileEntity) {
|
when (tileEntity) {
|
||||||
is TileEntityChest -> chests++
|
is TileEntityChest -> chests++
|
||||||
is TileEntityShulkerBox -> shulkers++
|
is TileEntityShulkerBox -> shulkers++
|
||||||
|
is TileEntityDropper -> droppers++
|
||||||
|
is TileEntityDispenser -> dispensers++
|
||||||
}
|
}
|
||||||
|
|
||||||
tileEntities.add(tileEntity)
|
tileEntities.add(tileEntity)
|
||||||
|
@ -59,7 +69,7 @@ class StashFinder : Module() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "($chests chests, $shulkers shulkers)"
|
return "($chests chests, $shulkers shulkers, $droppers droppers, $dispensers dispensers)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +91,7 @@ class StashFinder : Module() {
|
||||||
val chunkStats = chunkData.getOrPut(chunk, { ChunkStats() })
|
val chunkStats = chunkData.getOrPut(chunk, { ChunkStats() })
|
||||||
|
|
||||||
chunkStats.add(tileEntity)
|
chunkStats.add(tileEntity)
|
||||||
if (chunkStats.chests >= chestDensity.value || chunkStats.shulkers >= shulkerDensity.value) {
|
if (chunkStats.chests >= chestDensity.value || chunkStats.shulkers >= shulkerDensity.value || chunkStats.droppers >= dropperDensity.value || chunkStats.dispensers >= dispenserDensity.value) {
|
||||||
chunkStats.hot = true
|
chunkStats.hot = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +100,7 @@ class StashFinder : Module() {
|
||||||
super.onUpdate()
|
super.onUpdate()
|
||||||
|
|
||||||
mc.world.loadedTileEntityList
|
mc.world.loadedTileEntityList
|
||||||
.filter { (it is TileEntityChest && logChests.value) || (it is TileEntityShulkerBox && logShulkers.value) }
|
.filter { (it is TileEntityChest && logChests.value) || (it is TileEntityShulkerBox && logShulkers.value) || (it is TileEntityDropper && logDroppers.value) || (it is TileEntityDispenser && logDispensers.value) }
|
||||||
.forEach { logTileEntity(it) }
|
.forEach { logTileEntity(it) }
|
||||||
|
|
||||||
chunkData.values.filter { it.hot }.forEach { chunkStats ->
|
chunkData.values.filter { it.hot }.forEach { chunkStats ->
|
||||||
|
|
Loading…
Reference in New Issue