|
3 | 3 | import org.bukkit.*; |
4 | 4 | import org.bukkit.block.Block; |
5 | 5 | import org.bukkit.block.BlockFace; |
| 6 | +import org.bukkit.entity.EntityType; |
| 7 | +import org.bukkit.entity.Firework; |
6 | 8 | import org.bukkit.entity.Player; |
7 | 9 | import org.bukkit.event.EventHandler; |
| 10 | +import org.bukkit.event.EventPriority; |
8 | 11 | import org.bukkit.event.Listener; |
9 | 12 | import org.bukkit.event.block.*; |
| 13 | +import org.bukkit.event.entity.EntityDamageByEntityEvent; |
10 | 14 | import org.bukkit.event.entity.EntityExplodeEvent; |
11 | 15 | import org.bukkit.event.entity.ItemSpawnEvent; |
12 | 16 | import org.bukkit.event.player.PlayerInteractEvent; |
@@ -40,6 +44,14 @@ public void onPlayerOpenPresent(PlayerInteractEvent event) { |
40 | 44 | } |
41 | 45 | } |
42 | 46 |
|
| 47 | + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) |
| 48 | + public void onPlayerOpenPresent(BlockBreakEvent event) { |
| 49 | + Block block = event.getBlock(); |
| 50 | + if (block != null && block.getType() == Material.PLAYER_HEAD) { |
| 51 | + XMas.processPresent(block, event.getPlayer()); |
| 52 | + } |
| 53 | + } |
| 54 | + |
43 | 55 | // Prevent bonemeal on magic tree |
44 | 56 | @EventHandler |
45 | 57 | public void onPlayerUseBonemeal(PlayerInteractEvent event) { |
@@ -152,10 +164,9 @@ public void onBlockBreakByExplosion(EntityExplodeEvent event) { |
152 | 164 | @EventHandler |
153 | 165 | public void onItemSpawn(ItemSpawnEvent event) { |
154 | 166 | ItemStack item = event.getEntity().getItemStack(); |
155 | | - // TODO Probably won't work |
156 | 167 | if (item.getType() == Material.PLAYER_HEAD) { |
157 | 168 | SkullMeta meta = (SkullMeta) item.getItemMeta(); |
158 | | - if (meta.getOwningPlayer() != null && Main.getHeads().contains(meta.getOwningPlayer().getName())) { |
| 169 | + if (meta.getOwner() != null && Main.getHeads().contains(meta.getOwner())) { |
159 | 170 | event.setCancelled(true); |
160 | 171 | } |
161 | 172 | } |
@@ -274,5 +285,13 @@ public void disableDecay(LeavesDecayEvent e) |
274 | 285 | e.setCancelled(true); |
275 | 286 | } |
276 | 287 |
|
277 | | - |
| 288 | + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) |
| 289 | + private void disableFireworkDamage(EntityDamageByEntityEvent e) |
| 290 | + { |
| 291 | + if (e.getDamager().getType() == EntityType.FIREWORK) { |
| 292 | + if (e.getDamager().hasMetadata("nodamage")) { |
| 293 | + e.setCancelled(true); |
| 294 | + } |
| 295 | + } |
| 296 | + } |
278 | 297 | } |
0 commit comments