geforkt von Mirrors/Paper
[Bleeding] Directly set direction in EntityFireball. Fixes BUKKIT-1154
Because EntityFireball.setDirection() adds a random offset to passed parameters, it is not appropriate for use in an API method. As such, the values need to be directly set to remain accurate.
Dieser Commit ist enthalten in:
Ursprung
1fa4b69bd8
Commit
b4c4c8ed78
@ -1,8 +1,9 @@
|
|||||||
package org.bukkit.craftbukkit.entity;
|
package org.bukkit.craftbukkit.entity;
|
||||||
|
|
||||||
import net.minecraft.server.EntityFireball;
|
import net.minecraft.server.EntityFireball;
|
||||||
import net.minecraft.server.EntityLiving;
|
import net.minecraft.server.MathHelper;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Fireball;
|
import org.bukkit.entity.Fireball;
|
||||||
@ -49,7 +50,14 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setDirection(Vector direction) {
|
public void setDirection(Vector direction) {
|
||||||
getHandle().setDirection(direction.getX(), direction.getY(), direction.getZ());
|
Validate.notNull(direction, "Direction can not be null");
|
||||||
|
double x = direction.getX();
|
||||||
|
double y = direction.getY();
|
||||||
|
double z = direction.getZ();
|
||||||
|
double magnitude = (double) MathHelper.sqrt(x * x + y * y + z * z);
|
||||||
|
getHandle().dirX = x / magnitude;
|
||||||
|
getHandle().dirY = y / magnitude;
|
||||||
|
getHandle().dirZ = z / magnitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren