geforkt von Mirrors/Paper
Fixed issues with Ender Pearls. This fixes BUKKIT-248 and BUKKIT-264.
Dieser Commit ist enthalten in:
Ursprung
77c07095bd
Commit
88d1512507
@ -2,8 +2,7 @@ package net.minecraft.server;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerPortalEvent;
|
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
|
||||||
public class EntityEnderPearl extends EntityProjectile {
|
public class EntityEnderPearl extends EntityProjectile {
|
||||||
@ -37,7 +36,7 @@ public class EntityEnderPearl extends EntityProjectile {
|
|||||||
if (this.shooter instanceof EntityPlayer) {
|
if (this.shooter instanceof EntityPlayer) {
|
||||||
CraftPlayer player = (CraftPlayer)this.shooter.bukkitEntity;
|
CraftPlayer player = (CraftPlayer)this.shooter.bukkitEntity;
|
||||||
teleport = player.isOnline();
|
teleport = player.isOnline();
|
||||||
|
|
||||||
if (teleport) {
|
if (teleport) {
|
||||||
teleEvent = new PlayerTeleportEvent(player, player.getLocation(), getBukkitEntity().getLocation(), PlayerTeleportEvent.TeleportCause.ENDER_PEARL);
|
teleEvent = new PlayerTeleportEvent(player, player.getLocation(), getBukkitEntity().getLocation(), PlayerTeleportEvent.TeleportCause.ENDER_PEARL);
|
||||||
Bukkit.getPluginManager().callEvent(teleEvent);
|
Bukkit.getPluginManager().callEvent(teleEvent);
|
||||||
@ -55,11 +54,13 @@ public class EntityEnderPearl extends EntityProjectile {
|
|||||||
this.shooter.a_(this.locX, this.locY, this.locZ);
|
this.shooter.a_(this.locX, this.locY, this.locZ);
|
||||||
}
|
}
|
||||||
this.shooter.fallDistance = 0.0F;
|
this.shooter.fallDistance = 0.0F;
|
||||||
EntityDamageEvent damageEvent = new EntityDamageEvent(getBukkitEntity(), EntityDamageEvent.DamageCause.FALL, 5);
|
EntityDamageByEntityEvent damageEvent = new EntityDamageByEntityEvent(this.getBukkitEntity(), this.shooter.getBukkitEntity(), EntityDamageByEntityEvent.DamageCause.FALL, 5);
|
||||||
Bukkit.getPluginManager().callEvent(damageEvent);
|
Bukkit.getPluginManager().callEvent(damageEvent);
|
||||||
|
|
||||||
if (!damageEvent.isCancelled()) {
|
if (!damageEvent.isCancelled()) {
|
||||||
this.shooter.damageEntity(DamageSource.FALL, damageEvent.getDamage());
|
org.bukkit.entity.Player bPlayer = Bukkit.getPlayerExact(((EntityPlayer) this.shooter).name);
|
||||||
|
((CraftPlayer) bPlayer).getHandle().cg = -1; // Remove spawning invulnerability.
|
||||||
|
((CraftPlayer) bPlayer).getHandle().damageEntity(DamageSource.FALL, 5); // Damage the new player instead of the old
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
@ -28,7 +28,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
|||||||
private int cd = -99999999;
|
private int cd = -99999999;
|
||||||
private boolean ce = true;
|
private boolean ce = true;
|
||||||
public int cf = -99999999; // Craftbukkit - priv to pub - "lastSentExp"
|
public int cf = -99999999; // Craftbukkit - priv to pub - "lastSentExp"
|
||||||
private int cg = 60;
|
public int cg = 60; // CraftBukkit - private to public; temporary until we get an API out
|
||||||
private ItemStack[] ch = new ItemStack[] { null, null, null, null, null};
|
private ItemStack[] ch = new ItemStack[] { null, null, null, null, null};
|
||||||
private int ci = 0;
|
private int ci = 0;
|
||||||
public boolean h;
|
public boolean h;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren