Minecraft Fabric 教程 #8 添加附魔书
首发于Enaium的个人博客
创建一个附魔书类
public class FireBoomEnchantment extends Enchantment {
[...]
}
在类中添一下
@Override
public int getMinimumPower(int level) {
return 15;
}
@Override
public int getMaximumLevel() {
return 1;
}
@Override
public void onTargetDamaged(LivingEntity user, Entity target, int level) {
if(target instanceof LivingEntity) {
World world = user.world;
boolean bl = world.getGameRules().getBoolean(GameRules.MOB_GRIEFING);
world.createExplosion(target, target.prevX, target.prevY, target.prevZ, 1.0f, bl, bl ? Explosion.DestructionType.DESTROY : Explosion.DestructionType.NONE);
world.spawnEntity(target);
}
}
这就创建了一个FireBoom附魔书
onTargetDamaged //当目标被攻击
在mc FireballEntity类有一个 方法就是当火球碰撞了就创建一个火焰爆炸的效果
protected void onCollision(HitResult hitResult) {
super.onCollision(hitResult);
if (!this.world.isClient) {
if (hitResult.getType() == HitResult.Type.ENTITY) {
Entity entity = ((EntityHitResult)hitResult).getEntity();
entity.damage(DamageSource.explosiveProjectile(this, this.owner), 6.0F);
this.dealDamage(this.owner, entity);
}
boolean bl = this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING);
this.world.createExplosion((Entity)null, this.getX(), this.getY(), this.getZ(), (float)this.explosionPower, bl, bl ? Explosion.DestructionType.DESTROY : Explosion.DestructionType.NONE);
this.remove();
}
}
我们可以加以利用
boolean bl = world.getGameRules().getBoolean(GameRules.MOB_GRIEFING);
world.createExplosion(target, target.prevX, target.prevY, target.prevZ, 1.0f, bl, bl ? Explosion.DestructionType.DESTROY :
Explosion.DestructionType.NONE);
this.world.createExplosion()
我们替换相对应的参数 参数一就是实体 target就是攻击目标 参数二、三、四 就是目标 X Y Z 由于 xyz是private 只能用 public 的 prevX prevY prevZ 参数五就是爆炸大小 参数六不用管
world.spawnEntity(target);//生成实体在target
创建附魔书
private static final FireBoomEnchantment END_FIRE_BOOM_ENCHANTMENT = new FireBoomEnchantment(
Enchantment.Weight.VERY_RARE,
EnchantmentTarget.WEAPON,
new EquipmentSlot[] {
EquipmentSlot.MAINHAND
}
);
注册
Registry.register(Registry.ENCHANTMENT,new Identifier("endarmor","end_fire_boom_enchantment"),END_FIRE_BOOM_ENCHANTMENT);
9 声望
0 粉丝
推荐阅读
Gradle极简入门
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,而不是传统的XML。Gradle构建脚本是用Groovy编写的,也可以使用Kotlin编写,两者...
Enaium阅读 183
Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 32阅读 27.5k评论 1
一文彻底搞懂加密、数字签名和数字证书!
微信搜索🔍「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍来源:个人CS学习网站:[链接]前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视...
编程指北赞 71阅读 33.6k评论 20
Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 28阅读 19.3k评论 3
Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 13阅读 21.8k
Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 20阅读 15.3k
Java13的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...
codecraft赞 17阅读 11.2k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。