Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-17 05:20:05 +01:00
[Bleeding] Implemented PotionSplashEvent. Closes BUKKIT-307
Dieser Commit ist enthalten in:
Ursprung
74ead3abd1
Commit
872dad5540
@ -3,6 +3,16 @@ package net.minecraft.server;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
// CraftBukkit start
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
||||
import org.bukkit.craftbukkit.event.CraftEventFactory;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.entity.PotionSplashEvent;
|
||||
// CraftBukkit end
|
||||
|
||||
public class EntityPotion extends EntityProjectile {
|
||||
|
||||
private int d;
|
||||
@ -48,6 +58,9 @@ public class EntityPotion extends EntityProjectile {
|
||||
if (list1 != null && !list1.isEmpty()) {
|
||||
Iterator iterator = list1.iterator();
|
||||
|
||||
// CraftBukkit
|
||||
HashMap<LivingEntity, Double> affected = new HashMap<LivingEntity, Double>();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
double d0 = this.i(entity);
|
||||
@ -59,6 +72,21 @@ public class EntityPotion extends EntityProjectile {
|
||||
d1 = 1.0D;
|
||||
}
|
||||
|
||||
// CraftBukkit start
|
||||
affected.put((LivingEntity) entity.getBukkitEntity(), d1);
|
||||
}
|
||||
}
|
||||
|
||||
PotionSplashEvent event = CraftEventFactory.callPotionSplashEvent(this, affected);
|
||||
if (!event.isCancelled()) {
|
||||
for (LivingEntity victim : event.getAffectedEntities()) {
|
||||
if (!(victim instanceof CraftLivingEntity)) {
|
||||
continue;
|
||||
}
|
||||
EntityLiving entity = ((CraftLivingEntity) victim).getHandle();
|
||||
double d1 = event.getIntensity(victim);
|
||||
// CraftBukkit end
|
||||
|
||||
Iterator iterator1 = list.iterator();
|
||||
|
||||
while (iterator1.hasNext()) {
|
||||
|
@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.event;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.server.ChunkCoordinates;
|
||||
import net.minecraft.server.Entity;
|
||||
@ -24,6 +25,7 @@ import net.minecraft.server.EntityMushroomCow;
|
||||
import net.minecraft.server.EntityPig;
|
||||
import net.minecraft.server.EntityPigZombie;
|
||||
import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityPotion;
|
||||
import net.minecraft.server.EntitySheep;
|
||||
import net.minecraft.server.EntitySilverfish;
|
||||
import net.minecraft.server.EntitySkeleton;
|
||||
@ -56,6 +58,7 @@ import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.CreatureType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.ThrownPotion;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.block.*;
|
||||
import org.bukkit.event.entity.*;
|
||||
@ -65,6 +68,7 @@ import org.bukkit.event.player.*;
|
||||
import org.bukkit.event.server.ServerListPingEvent;
|
||||
|
||||
public class CraftEventFactory {
|
||||
// helper methods
|
||||
private static boolean canBuild(CraftWorld world, Player player, int x, int z) {
|
||||
WorldServer worldServer = world.getHandle();
|
||||
int spawnSize = Bukkit.getServer().getSpawnRadius();
|
||||
@ -321,6 +325,17 @@ public class CraftEventFactory {
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* PotionSplashEvent
|
||||
*/
|
||||
public static PotionSplashEvent callPotionSplashEvent(EntityPotion potion, Map<LivingEntity, Double> affectedEntities) {
|
||||
ThrownPotion thrownPotion = (ThrownPotion) potion.getBukkitEntity();
|
||||
|
||||
PotionSplashEvent event = new PotionSplashEvent(thrownPotion, affectedEntities);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* BlockFadeEvent
|
||||
*/
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren