LTDV10/packet/kubejs/server_scripts/Lightmans Currency/entity_loot.js
2026-04-14 18:20:56 +08:00

41 lines
1.6 KiB
JavaScript

const $Mob = Java.loadClass("net.minecraft.world.entity.Mob")
const $MobSpawnType = Java.loadClass("net.minecraft.world.entity.MobSpawnType")
EntityEvents.drops(e => {
const { entity, source } = e
let player = source.player
if (player == null || !player.isPlayer() || player.isFake())
return
// player.tell(`${entity instanceof $Mob}`)
if (entity instanceof $Mob) {
/**
* @type {Internal.Mob}
*/
let mob = entity
if (mob.spawnType == $MobSpawnType.SPAWNER)
return
if (!mob.monster && !mob.aggressive)
return
let baseValue = 1
let baseHealth = 20
let baseDmg = 4.5
let dmg = mob.getAttribute("generic.attack_damage").getValue()
let armor = mob.getAttribute("generic.armor").getValue() / 2 + mob.getAttribute("generic.armor_toughness").getValue()
let maxhp = mob.maxHealth
//血量乘算
let multipler = Math.sqrt(maxhp / baseHealth)
//伤害乘算
multipler *= dmg / baseDmg
//护甲乘算
multipler *= Math.sqrt(armor + 1)
multipler /= 2
let itemStack = player.mainHandItem
if (itemStack.item instanceof $ModularItem && TetraUtil.itemHasEffect(itemStack, "createdelight:greedy")) {
let level = TetraUtil.getEffectLevel(itemStack, "createdelight:greedy")
multipler *= (1 + level / 100)
}
let list = MoneyUtil.convertBaseValueToItems(baseValue * multipler)
list.forEach(item => {
e.addDrop(item)
})
}
})