41 lines
1.6 KiB
JavaScript
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)
|
|
})
|
|
}
|
|
}) |