- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何让鸡蛋不会对队友造成击退?
当我使用这个代码时,不会用剑和其他东西伤害队友,但我不知道如何让鸡蛋不给队友击退。
实际上,我在游戏中向队友扔了一些鸡蛋,从我的角度来看似乎对他造成了伤害,但他并没有受到任何伤害。
@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event) {
if(faze.equals("game")){
if (Team.getTeamType(event.getEntity()) == Team.getTeamType(event.getDamager())) {
event.setCancelled(true);
event.getEntity().setVelocity(event.getEntity().getLocation().getDirection().multiply(0));
}
}
}
如果有人能帮我解决这个问题,我将不胜感激
最佳答案
取消击退的旧方法是在伤害事件发生后将受损实体的速度设置为零(在所有三个方向)一刻(使用计划任务),尽管我相信您现在可以简单地取消伤害事件,然后自己使用 damage(double)
方法重新应用初始事件造成的最终伤害,但这次没有任何击退。
第二种方法过去执行起来要困难得多,因为使用 event.getDamage()
重新施加伤害仅返回对实体造成的基本金额,而没有考虑伤害减少诸如护甲等因素,导致造成的伤害比通常预期的要多。将速度设置为零的方法效果相当好,除非损坏的实体已经在运动,在这种情况下,速度仍然会被取消,这可能会导致不需要的行为。
现在,EntityDamageEvent
中有一个 getFinalDamage()
方法,您可以使用它来确保仍然造成正确的伤害(尽管尚未对此进行彻底测试)看看它是否在每种情况下都能正常工作)。
下面是一个示例:
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Egg && event.getEntity() instanceof LivingEntity) { // If damager is an egg and hurt entity is a living entity
LivingEntity hurt = (LivingEntity) event.getEntity(); // Cast living entity so we can use damage() method
event.setCancelled(true); // Cancel the event, removing any knockback/velocity changes
hurt.damage(event.getFinalDamage()); // Re-apply final/original damage
}
}
这是重置速度的旧方法:
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Egg) { // If damager is an egg
final Entity hurt = event.getEntity(); // Declare entity final so that we can use it in future scheduling
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { // Schedule a delayed task to run in one tick, plugin is main class
public void run() {
hurt.setVelocity(new Vector(0, 0, 0)); // Set velocity to zero vector, cancelling all motion
}
});
}
}
关于java - 怎样才能让鸡蛋不会对队友造成击退?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354103/
我正在尝试使用 setuptools 为我的 python 项目构建一个鸡蛋,但是,每当我构建一个鸡蛋时,如果每个文件/文件夹都被删除,所有的内容都是用第一个字母构建的。 例如,我的父文件夹名为 dp
在 Java、Javascript、C、C++、C# 等语言中,我在教程和代码片段中看到过类似以下的代码。 int foo = 5; int bar = 10; baz(foo, bar); 我认为当
我有一个难倒我的 SQL 查询。基本上,我有一个 Recipes 表,其中包含(您肯定猜到了)许多食谱。我有一个 Ingredients 表,其中包含各种成分。我有一个 RecipeIngredien
我在 R 和 Rstudio 中工作,使用通常很棒的 ggarrange() 安排一组相当复杂的图,但这次我遇到了一个持续存在的问题,它似乎很容易重现并且可能是一个错误? library(ggplot
This problem (你需要将多少只猫扔出建筑物才能确定这样一只猫能够生存的最大楼层。实际上相当残酷),有一个 O(n^3) 复杂度的公认答案。问题等同于这个 Google Code Jam ,
我是一名优秀的程序员,十分优秀!