Some checks failed
Deploy to Remote Server / deploy (push) Failing after 1m11s
52 lines
1.9 KiB
JavaScript
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)
|
|
})
|