3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-17 05:20:05 +01:00

Fixed issues with Ender Pearls. This fixes BUKKIT-248 and BUKKIT-264.

Dieser Commit ist enthalten in:
EvilSeph 2011-12-11 00:52:55 -05:00
Ursprung 77c07095bd
Commit 88d1512507
2 geänderte Dateien mit 7 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -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

Datei anzeigen

@ -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;