Some checks failed
Deploy to Remote Server / deploy (push) Failing after 1m11s
60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
const $OreDataCapability = Java.loadClass("com.tom.createores.OreDataCapability")
|
|
|
|
BlockEvents.broken(e => {
|
|
const {player, block} = e
|
|
|
|
// player.tell("start")
|
|
if (!block.hasTag("createdelight:cluster_mineable"))
|
|
return
|
|
if (player == null || !player.player || player.fake)
|
|
return
|
|
let y = block.pos.y
|
|
function linear(val, start, end) {
|
|
return val * (end - start) + start
|
|
}
|
|
let chance = Math.max(0, linear((y + 64) / 128, 1, 0)) * 0.05
|
|
|
|
if (block.level.random.nextDouble() > chance)
|
|
return
|
|
if (!block.blockState.canHarvestBlock(block.level, block.pos, player))
|
|
return
|
|
|
|
let trunk = block.level.getChunk(block.pos)
|
|
let oreData = $OreDataCapability.getData(trunk)
|
|
if (oreData.getRecipe(block.level.getRecipeManager()) == null)
|
|
return
|
|
|
|
let veinId = oreData.getRecipe(block.level.getRecipeManager()).getId()
|
|
/**
|
|
* @type {Internal.DrillingRecipe}
|
|
*/
|
|
let find = null
|
|
block.level.getRecipeManager().getByType("createoreexcavation:drilling").forEach((id, r) => {
|
|
/**
|
|
* @type {Internal.DrillingRecipe}
|
|
*/
|
|
let recipe = r
|
|
if(recipe.veinId.equals(veinId))
|
|
find = recipe
|
|
})
|
|
if (find == null)
|
|
return
|
|
if (!player.creative)
|
|
block.popItem(find.getOutput().get(0).stack)
|
|
|
|
block.setBlockState(Block.getBlock("minecraft:air").defaultBlockState(), 2)
|
|
e.cancel()
|
|
})
|
|
|
|
ServerEvents.tags("minecraft:block", e => [
|
|
e.add("createdelight:cluster_mineable",
|
|
"#forge:stone",
|
|
"minecraft:netherrack",
|
|
"ad_astra:moon_stone",
|
|
"ad_astra:mars_stone",
|
|
"ad_astra:venus_sandstone",
|
|
"ad_astra:mercury_stone",
|
|
"ad_astra:glacio_stone",
|
|
"ad_astra:venus_stone"
|
|
)
|
|
]) |