LTDV10Test/packet/kubejs/server_scripts/Create Ore/finder_overworld.js
3944Realms 67a395b765
Some checks failed
Deploy to Remote Server / deploy (push) Failing after 1m11s
初始化
2026-04-14 18:20:56 +08:00

52 lines
1.9 KiB
JavaScript

const $OreVeinGenerator = Java.loadClass("com.tom.createores.OreVeinGenerator")
const $OreVeinAtlasItem = Java.loadClass("com.tom.createores.item.OreVeinAtlasItem")
ItemEvents.rightClicked("createdelight:prospector", e => {
const { player, level } = e
if (player.cooldowns.isOnCooldown(e.item.item))
return
const MAX_SEARCH_DIST_IN_BLOCK = 16 // 最大搜索距离
const BLOCK_SIZE = 16 // 区块大小
let excludedVein = []
player.inventory.allItems.forEach(item => {
if (item.id == "createoreexcavation:vein_atlas" && item.nbt != null) {
let exclude = item.nbt[$OreVeinAtlasItem.EXCLUDE]
// console.log(exclude)
exclude.forEach(tag => {
excludedVein.push(tag.getAsString())
})
}
})
// console.log(excludedVein.toLocaleString())
let blockPosition = player.blockPosition()
let {first : pos, second : info} = $OreVeinGenerator.getPicker(level).locate(
blockPosition,
level,
MAX_SEARCH_DIST_IN_BLOCK,
(vein) => excludedVein.indexOf(vein.getId()) == -1
)
let distance = Math.floor(Math.sqrt(
Math.pow(blockPosition.x - pos.x, 2)
+ Math.pow(blockPosition.z - pos.z, 2)
))
let direction = getDirection(
Math.floor(blockPosition.x / BLOCK_SIZE),
Math.floor(blockPosition.z / BLOCK_SIZE),
Math.floor(pos.x / BLOCK_SIZE),
Math.floor(pos.z / BLOCK_SIZE)
)
let message = Component.translate("message.createdelight.nearest_vein")
.append(info.getName().color(Color.YELLOW))
if (direction == 'Same Point') {
message = message
.append(Component.translate("message.createdelight.underfoot"))
} else {
message = message
.append(Component.translate("message.createdelight.at", direction, distance))
}
player.swing()
player.addItemCooldown(e.item.item, 60)
player.setStatusMessage(message)
})