@@ -197,6 +197,7 @@ import org.bukkit.event.inventory.TradeSelectEvent;
|
||||
import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||
import org.bukkit.event.player.PlayerBedEnterEvent.BedEnterResult;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEntityEvent;
|
||||
import org.bukkit.event.player.PlayerBucketFillEvent;
|
||||
import org.bukkit.event.player.PlayerBucketFishEvent;
|
||||
import org.bukkit.event.player.PlayerEditBookEvent;
|
||||
@@ -225,7 +226,7 @@ import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
public class CraftEventFactory {
|
||||
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN);
|
||||
public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.ON_FIRE);
|
||||
public static final DamageSource POISON = CraftDamageSource.copyOf(DamageSource.MAGIC);
|
||||
public static org.bukkit.block.Block blockDamage; // For use in EntityDamageByBlockEvent
|
||||
public static Entity entityDamage; // For use in EntityDamageByEntityEvent
|
||||
@@ -272,7 +273,7 @@ public class CraftEventFactory {
|
||||
}
|
||||
}, t -> BedEnterResult.OK).map(java.util.function.Function.identity(), java.util.function.Function.identity());
|
||||
|
||||
PlayerBedEnterEvent event = new PlayerBedEnterEvent((Player) player.getBukkitEntity(), CraftBlock.at(player.world, bed), bedEnterResult);
|
||||
PlayerBedEnterEvent event = new PlayerBedEnterEvent((Player) player.getBukkitEntity(), CraftBlock.at(player.level, bed), bedEnterResult);
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
Result result = event.useBed();
|
||||
@@ -308,12 +309,16 @@ public class CraftEventFactory {
|
||||
/**
|
||||
* Player Fish Bucket Event
|
||||
*/
|
||||
public static PlayerBucketFishEvent callPlayerFishBucketEvent(EntityFish fish, EntityHuman entityHuman, ItemStack waterBucket, ItemStack fishBucket) {
|
||||
Fish bukkitFish = (Fish) fish.getBukkitEntity();
|
||||
public static PlayerBucketEntityEvent callPlayerFishBucketEvent(EntityLiving fish, EntityHuman entityHuman, ItemStack originalBucket, ItemStack entityBucket) {
|
||||
Player player = (Player) entityHuman.getBukkitEntity();
|
||||
PlayerBucketFishEvent playerBucketFishEvent = new PlayerBucketFishEvent(player, bukkitFish, CraftItemStack.asBukkitCopy(waterBucket), CraftItemStack.asBukkitCopy(fishBucket));
|
||||
Bukkit.getPluginManager().callEvent(playerBucketFishEvent);
|
||||
return playerBucketFishEvent;
|
||||
PlayerBucketEntityEvent event;
|
||||
if (fish instanceof EntityFish) {
|
||||
event = new PlayerBucketFishEvent(player, (Fish) fish.getBukkitEntity(), CraftItemStack.asBukkitCopy(originalBucket), CraftItemStack.asBukkitCopy(entityBucket));
|
||||
} else {
|
||||
event = new PlayerBucketEntityEvent(player, fish.getBukkitEntity(), CraftItemStack.asBukkitCopy(originalBucket), CraftItemStack.asBukkitCopy(entityBucket));
|
||||
}
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -389,7 +394,7 @@ public class CraftEventFactory {
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
for (EntityItem item : items) {
|
||||
item.world.addEntity(item);
|
||||
item.level.addEntity(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -404,7 +409,7 @@ public class CraftEventFactory {
|
||||
org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(clickedFace);
|
||||
|
||||
EntityPlaceEvent event = new EntityPlaceEvent(entity.getBukkitEntity(), who, blockClicked, blockFace);
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
return event;
|
||||
}
|
||||
@@ -575,7 +580,7 @@ public class CraftEventFactory {
|
||||
|
||||
if (spawnReason != SpawnReason.CUSTOM) {
|
||||
if (isAnimal && !world.getWorld().getAllowAnimals() || isMonster && !world.getWorld().getAllowMonsters() || isNpc && !world.getServer().getServer().getSpawnNPCs()) {
|
||||
entity.dead = true;
|
||||
entity.die();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -595,15 +600,15 @@ public class CraftEventFactory {
|
||||
event = CraftEventFactory.callEntitySpawnEvent(entity);
|
||||
}
|
||||
|
||||
if (event != null && (event.isCancelled() || entity.dead)) {
|
||||
if (event != null && (event.isCancelled() || entity.isRemoved())) {
|
||||
Entity vehicle = entity.getVehicle();
|
||||
if (vehicle != null) {
|
||||
vehicle.dead = true;
|
||||
vehicle.die();
|
||||
}
|
||||
for (Entity passenger : entity.getAllPassengers()) {
|
||||
passenger.dead = true;
|
||||
passenger.die();
|
||||
}
|
||||
entity.dead = true;
|
||||
entity.die();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -641,7 +646,7 @@ public class CraftEventFactory {
|
||||
org.bukkit.entity.AnimalTamer bukkitTamer = (tamer != null ? tamer.getBukkitEntity() : null);
|
||||
CraftServer craftServer = (CraftServer) bukkitEntity.getServer();
|
||||
|
||||
entity.persistent = true;
|
||||
entity.persistenceRequired = true;
|
||||
|
||||
EntityTameEvent event = new EntityTameEvent((LivingEntity) bukkitEntity, bukkitTamer);
|
||||
craftServer.getPluginManager().callEvent(event);
|
||||
@@ -735,11 +740,17 @@ public class CraftEventFactory {
|
||||
return handleBlockSpreadEvent(world, source, target, block, 2);
|
||||
}
|
||||
|
||||
public static boolean handleBlockSpreadEvent(World world, BlockPosition source, BlockPosition target, IBlockData block, int flag) {
|
||||
public static boolean handleBlockSpreadEvent(GeneratorAccess world, BlockPosition source, BlockPosition target, IBlockData block, int flag) {
|
||||
// Suppress during worldgen
|
||||
if (!(world instanceof World)) {
|
||||
world.setTypeAndData(target, block, flag);
|
||||
return true;
|
||||
}
|
||||
|
||||
CraftBlockState state = CraftBlockState.getBlockState(world, target, flag);
|
||||
state.setData(block);
|
||||
|
||||
BlockSpreadEvent event = new BlockSpreadEvent(world.getWorld().getBlockAt(target.getX(), target.getY(), target.getZ()), world.getWorld().getBlockAt(source.getX(), source.getY(), source.getZ()), state);
|
||||
BlockSpreadEvent event = new BlockSpreadEvent(state.getBlock(), CraftBlock.at(world, source), state);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled()) {
|
||||
@@ -841,7 +852,7 @@ public class CraftEventFactory {
|
||||
} else if (damager.getBukkitEntity() instanceof Projectile) {
|
||||
cause = DamageCause.PROJECTILE;
|
||||
}
|
||||
} else if ("thorns".equals(source.translationIndex)) {
|
||||
} else if ("thorns".equals(source.msgId)) {
|
||||
cause = DamageCause.THORNS;
|
||||
}
|
||||
|
||||
@@ -866,14 +877,14 @@ public class CraftEventFactory {
|
||||
DamageCause cause = null;
|
||||
Block damager = blockDamage;
|
||||
blockDamage = null;
|
||||
if (source == DamageSource.CACTUS || source == DamageSource.SWEET_BERRY_BUSH) {
|
||||
if (source == DamageSource.CACTUS || source == DamageSource.SWEET_BERRY_BUSH || source == DamageSource.STALAGMITE) {
|
||||
cause = DamageCause.CONTACT;
|
||||
} else if (source == DamageSource.HOT_FLOOR) {
|
||||
cause = DamageCause.HOT_FLOOR;
|
||||
} else if (source == DamageSource.MAGIC) {
|
||||
cause = DamageCause.MAGIC;
|
||||
} else {
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.translationIndex));
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId));
|
||||
}
|
||||
EntityDamageEvent event = new EntityDamageByBlockEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions);
|
||||
event.setCancelled(cancelled);
|
||||
@@ -886,7 +897,7 @@ public class CraftEventFactory {
|
||||
DamageCause cause = null;
|
||||
CraftEntity damager = entityDamage.getBukkitEntity();
|
||||
entityDamage = null;
|
||||
if (source == DamageSource.ANVIL || source == DamageSource.FALLING_BLOCK) {
|
||||
if (source == DamageSource.ANVIL || source == DamageSource.FALLING_BLOCK || source == DamageSource.FALLING_STALACTITE) {
|
||||
cause = DamageCause.FALLING_BLOCK;
|
||||
} else if (damager instanceof LightningStrike) {
|
||||
cause = DamageCause.LIGHTNING;
|
||||
@@ -897,7 +908,7 @@ public class CraftEventFactory {
|
||||
} else if (source == DamageSource.MAGIC) {
|
||||
cause = DamageCause.MAGIC;
|
||||
} else {
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.translationIndex));
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.msgId));
|
||||
}
|
||||
EntityDamageEvent event = new EntityDamageByEntityEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions);
|
||||
event.setCancelled(cancelled);
|
||||
@@ -909,17 +920,17 @@ public class CraftEventFactory {
|
||||
}
|
||||
|
||||
DamageCause cause = null;
|
||||
if (source == DamageSource.FIRE) {
|
||||
if (source == DamageSource.IN_FIRE) {
|
||||
cause = DamageCause.FIRE;
|
||||
} else if (source == DamageSource.STARVE) {
|
||||
cause = DamageCause.STARVATION;
|
||||
} else if (source == DamageSource.WITHER) {
|
||||
cause = DamageCause.WITHER;
|
||||
} else if (source == DamageSource.STUCK) {
|
||||
} else if (source == DamageSource.IN_WALL) {
|
||||
cause = DamageCause.SUFFOCATION;
|
||||
} else if (source == DamageSource.DROWN) {
|
||||
cause = DamageCause.DROWNING;
|
||||
} else if (source == DamageSource.BURN) {
|
||||
} else if (source == DamageSource.ON_FIRE) {
|
||||
cause = DamageCause.FIRE_TICK;
|
||||
} else if (source == MELTING) {
|
||||
cause = DamageCause.MELTING;
|
||||
@@ -933,8 +944,10 @@ public class CraftEventFactory {
|
||||
cause = DamageCause.FLY_INTO_WALL;
|
||||
} else if (source == DamageSource.CRAMMING) {
|
||||
cause = DamageCause.CRAMMING;
|
||||
} else if (source == DamageSource.DRYOUT) {
|
||||
} else if (source == DamageSource.DRY_OUT) {
|
||||
cause = DamageCause.DRYOUT;
|
||||
} else if (source == DamageSource.FREEZE) {
|
||||
cause = DamageCause.FREEZE;
|
||||
} else if (source == DamageSource.GENERIC) {
|
||||
cause = DamageCause.CUSTOM;
|
||||
}
|
||||
@@ -943,7 +956,7 @@ public class CraftEventFactory {
|
||||
return callEntityDamageEvent(null, entity, cause, modifiers, modifierFunctions, cancelled);
|
||||
}
|
||||
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s from %s", entity, source.translationIndex));
|
||||
throw new IllegalStateException(String.format("Unhandled damage of %s from %s", entity, source.msgId));
|
||||
}
|
||||
|
||||
private static EntityDamageEvent callEntityDamageEvent(Entity damager, Entity damagee, DamageCause cause, Map<DamageModifier, Double> modifiers, Map<DamageModifier, Function<? super Double, Double>> modifierFunctions) {
|
||||
@@ -1090,7 +1103,7 @@ public class CraftEventFactory {
|
||||
}
|
||||
|
||||
public static EntityChangeBlockEvent callEntityChangeBlockEvent(Entity entity, BlockPosition position, IBlockData newBlock, boolean cancelled) {
|
||||
Block block = entity.world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ());
|
||||
Block block = entity.level.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ());
|
||||
|
||||
EntityChangeBlockEvent event = new EntityChangeBlockEvent(entity.getBukkitEntity(), block, CraftBlockData.fromData(newBlock));
|
||||
event.setCancelled(cancelled);
|
||||
@@ -1118,7 +1131,7 @@ public class CraftEventFactory {
|
||||
|
||||
public static EntityBreakDoorEvent callEntityBreakDoorEvent(Entity entity, BlockPosition pos) {
|
||||
org.bukkit.entity.Entity entity1 = entity.getBukkitEntity();
|
||||
Block block = CraftBlock.at(entity.world, pos);
|
||||
Block block = CraftBlock.at(entity.level, pos);
|
||||
|
||||
EntityBreakDoorEvent event = new EntityBreakDoorEvent((LivingEntity) entity1, block);
|
||||
entity1.getServer().getPluginManager().callEvent(event);
|
||||
@@ -1131,20 +1144,20 @@ public class CraftEventFactory {
|
||||
}
|
||||
|
||||
public static Container callInventoryOpenEvent(EntityPlayer player, Container container, boolean cancelled) {
|
||||
if (player.activeContainer != player.defaultContainer) { // fire INVENTORY_CLOSE if one already open
|
||||
player.playerConnection.a(new PacketPlayInCloseWindow(player.activeContainer.windowId));
|
||||
if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open
|
||||
player.connection.a(new PacketPlayInCloseWindow(player.containerMenu.containerId));
|
||||
}
|
||||
|
||||
CraftServer server = player.world.getServer();
|
||||
CraftServer server = player.level.getServer();
|
||||
CraftPlayer craftPlayer = player.getBukkitEntity();
|
||||
player.activeContainer.transferTo(container, craftPlayer);
|
||||
player.containerMenu.transferTo(container, craftPlayer);
|
||||
|
||||
InventoryOpenEvent event = new InventoryOpenEvent(container.getBukkitView());
|
||||
event.setCancelled(cancelled);
|
||||
server.getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
container.transferTo(player.activeContainer, craftPlayer);
|
||||
container.transferTo(player.containerMenu, craftPlayer);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1179,7 +1192,7 @@ public class CraftEventFactory {
|
||||
BlockFace hitFace = null;
|
||||
if (position.getType() == MovingObjectPosition.EnumMovingObjectType.BLOCK) {
|
||||
MovingObjectPositionBlock positionBlock = (MovingObjectPositionBlock) position;
|
||||
hitBlock = CraftBlock.at(entity.world, positionBlock.getBlockPosition());
|
||||
hitBlock = CraftBlock.at(entity.level, positionBlock.getBlockPosition());
|
||||
hitFace = CraftBlock.notchToBlockFace(positionBlock.getDirection());
|
||||
}
|
||||
|
||||
@@ -1189,7 +1202,7 @@ public class CraftEventFactory {
|
||||
}
|
||||
|
||||
ProjectileHitEvent event = new ProjectileHitEvent((Projectile) entity.getBukkitEntity(), hitEntity, hitBlock, hitFace);
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -1289,14 +1302,14 @@ public class CraftEventFactory {
|
||||
}
|
||||
|
||||
public static void handleInventoryCloseEvent(EntityHuman human) {
|
||||
InventoryCloseEvent event = new InventoryCloseEvent(human.activeContainer.getBukkitView());
|
||||
human.world.getServer().getPluginManager().callEvent(event);
|
||||
human.activeContainer.transferTo(human.defaultContainer, human.getBukkitEntity());
|
||||
InventoryCloseEvent event = new InventoryCloseEvent(human.containerMenu.getBukkitView());
|
||||
human.level.getServer().getPluginManager().callEvent(event);
|
||||
human.containerMenu.transferTo(human.inventoryMenu, human.getBukkitEntity());
|
||||
}
|
||||
|
||||
public static ItemStack handleEditBookEvent(EntityPlayer player, int itemInHandIndex, ItemStack itemInHand, ItemStack newBookItem) {
|
||||
PlayerEditBookEvent editBookEvent = new PlayerEditBookEvent(player.getBukkitEntity(), (itemInHandIndex >= 0 && itemInHandIndex <= 8) ? itemInHandIndex : -1, (BookMeta) CraftItemStack.getItemMeta(itemInHand), (BookMeta) CraftItemStack.getItemMeta(newBookItem), newBookItem.getItem() == Items.WRITTEN_BOOK);
|
||||
player.world.getServer().getPluginManager().callEvent(editBookEvent);
|
||||
player.level.getServer().getPluginManager().callEvent(editBookEvent);
|
||||
|
||||
// If they've got the same item in their hand, it'll need to be updated.
|
||||
if (itemInHand != null && itemInHand.getItem() == Items.WRITABLE_BOOK) {
|
||||
@@ -1314,13 +1327,13 @@ public class CraftEventFactory {
|
||||
|
||||
public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(EntityInsentient entity, EntityHuman player) {
|
||||
PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity());
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
public static PlayerLeashEntityEvent callPlayerLeashEntityEvent(EntityInsentient entity, Entity leashHolder, EntityHuman player) {
|
||||
PlayerLeashEntityEvent event = new PlayerLeashEntityEvent(entity.getBukkitEntity(), leashHolder.getBukkitEntity(), (Player) player.getBukkitEntity());
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -1380,13 +1393,13 @@ public class CraftEventFactory {
|
||||
event = new PlayerStatisticIncrementEvent(player, stat, current, newValue, material);
|
||||
}
|
||||
}
|
||||
entityHuman.world.getServer().getPluginManager().callEvent(event);
|
||||
entityHuman.level.getServer().getPluginManager().callEvent(event);
|
||||
return (Cancellable) event;
|
||||
}
|
||||
|
||||
public static FireworkExplodeEvent callFireworkExplodeEvent(EntityFireworks firework) {
|
||||
FireworkExplodeEvent event = new FireworkExplodeEvent((Firework) firework.getBukkitEntity());
|
||||
firework.world.getServer().getPluginManager().callEvent(event);
|
||||
firework.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -1406,19 +1419,19 @@ public class CraftEventFactory {
|
||||
|
||||
public static EntityToggleGlideEvent callToggleGlideEvent(EntityLiving entity, boolean gliding) {
|
||||
EntityToggleGlideEvent event = new EntityToggleGlideEvent((LivingEntity) entity.getBukkitEntity(), gliding);
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
public static EntityToggleSwimEvent callToggleSwimEvent(EntityLiving entity, boolean swimming) {
|
||||
EntityToggleSwimEvent event = new EntityToggleSwimEvent((LivingEntity) entity.getBukkitEntity(), swimming);
|
||||
entity.world.getServer().getPluginManager().callEvent(event);
|
||||
entity.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
public static AreaEffectCloudApplyEvent callAreaEffectCloudApplyEvent(EntityAreaEffectCloud cloud, List<LivingEntity> entities) {
|
||||
AreaEffectCloudApplyEvent event = new AreaEffectCloudApplyEvent((AreaEffectCloud) cloud.getBukkitEntity(), entities);
|
||||
cloud.world.getServer().getPluginManager().callEvent(event);
|
||||
cloud.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -1434,7 +1447,7 @@ public class CraftEventFactory {
|
||||
CraftItemStack bredWithStack = bredWith == null ? null : CraftItemStack.asCraftMirror(bredWith).clone();
|
||||
|
||||
EntityBreedEvent event = new EntityBreedEvent((LivingEntity) child.getBukkitEntity(), (LivingEntity) mother.getBukkitEntity(), (LivingEntity) father.getBukkitEntity(), breederEntity, bredWithStack, experience);
|
||||
child.world.getServer().getPluginManager().callEvent(event);
|
||||
child.level.getServer().getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user