info/KubeJS/Q&A/forgeEvents #95
Replies: 2 comments
-
|
简单的Forge事件使用,版本1.20.1。 ForgeEvents.onEvent("net.minecraftforge.event.entity.living.LivingHurtEvent", event =>{
const {
entity, // target
source // damage source
} = event;
if (source.actual == null) return
if (!source?.actual.isPlayer()) return
/**
* @type {Internal.Player}
*/
const player = source.actual;
const EXTRA_DAMAGE = 10;
if (player.health <= player.maxHealth * 0.5) {
event.setAmount(event.getAmount() + EXTRA_DAMAGE);
}
}) |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
这里是用特殊武器时替换伤害类型的代码 很奇怪的是 我在写这个代码的时候填入damage的传参 出现的问题很奇怪 伤害只能偶尔被替换成正确的类型 而且伤害会变成原伤害的一半 填入damage*2 的传参 伤害被正确替换了 就很神秘() let $DamageType = Java.loadClass('net.minecraft.world.damagesource.DamageTypes')
ForgeEvents.onEvent("net.minecraftforge.event.entity.living.LivingHurtEvent",event=>{
const {source,entity} = event;
const actual = source.actual;
if(actual == null) return;
if(source.getType() != "player") return;
let player = event.source.player;
let damage = event.amount;
if(player && player.mainHandItem.id == 'juitar:shadow_katana')
{
let powerAttack = player.mainHandItem.nbt.getByte("powerAttack");
if(powerAttack == 1)
{
entity.attack(entity.level.damageSources().source($DamageType.MAGIC,player),damage*2);
event.canceled = true;
player.heal(4);
player.mainHandItem.nbt.putInt("powerAttack",0) ;
}
}
else if(player && event.source.player.mainHandItem.id == 'juitar:radiation_glaive')
{
entity.potionEffects.add('alexscaves:irradiated',20*10,0)
}
else if(player && player.mainHandItem.id == 'juitar:warglaive_of_azzinoth'&& player.offHandItem.id == 'juitar:warglaive_of_azzinoth')
{
let powerAttack = player.mainHandItem.nbt.getInt("powerAttack");
if(powerAttack > 0)
{
entity.attack(entity.level.damageSources().source($DamageType.MAGIC,player),damage*2)
entity.potionEffects.add('born_in_chaos_v1:infernal_flame',20*10,5)
player.mainHandItem.nbt.putInt("powerAttack",player.mainHandItem.nbt.getInt("powerAttack")-1) ;
event.canceled = true;
}
}
else if(player && player.mainHandItem.id == 'juitar:sulfuras_mace')
{
let powerAttack = player.mainHandItem.nbt.getInt("powerAttack");
if(powerAttack > 0)
{
entity.potionEffects.add("cataclysm:blazing_brand",20*5,4)
entity.attack(entity.level.damageSources().source($DamageType.LAVA, player),damage*2)
player.mainHandItem.nbt.putInt("powerAttack",player.mainHandItem.nbt.getInt("powerAttack")-1) ;
event.canceled = true;
}
}
else if(player && player.mainHandItem.id == 'juitar:frostmourne'){
if(entity.isLiving()){
Java.loadClass('com.github.alexthe666.iceandfire.entity.props.EntityDataProvider')
.getCapability(entity).ifPresent(data => data.frozenData.setFrozen(entity, 300))
entity.potionEffects.add('minecraft:slowness',20*15,2)
}
}
}) |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
info/KubeJS/Q&A/forgeEvents
一个包含 Minecraft 开发文档的网站。
https://docs.mihono.cn/zh/info/KubeJS/Q&A/forgeEvents
Beta Was this translation helpful? Give feedback.
All reactions