|
18 | 18 | import org.bukkit.block.Block;
|
19 | 19 | import org.bukkit.block.BlockFace;
|
20 | 20 | import org.bukkit.block.DoubleChest;
|
| 21 | +import org.bukkit.damage.DamageSource; |
| 22 | +import org.bukkit.damage.DamageType; |
21 | 23 | import org.bukkit.enchantments.Enchantment;
|
22 | 24 | import org.bukkit.entity.ArmorStand;
|
23 | 25 | import org.bukkit.entity.Entity;
|
@@ -253,7 +255,7 @@ public void onInteractItem(PlayerInteractEvent e) {
|
253 | 255 |
|
254 | 256 | private void damageFNS(Player player, EquipmentSlot slot) {
|
255 | 257 | ItemStack stack = player.getEquipment().getItem(slot);
|
256 |
| - if (player.getGameMode() != GameMode.CREATIVE) { |
| 258 | + if (player.getGameMode() != GameMode.CREATIVE || stack.getItemMeta().isUnbreakable()) { |
257 | 259 | ItemMeta meta = stack.getItemMeta();
|
258 | 260 | int maxDurability = stack.getType().getMaxDurability();
|
259 | 261 | if (maxDurability > 0) {
|
@@ -307,7 +309,8 @@ public void onDamage(EntityDamageByEntityEvent e) {
|
307 | 309 | List<ItemStack> stackList = new ArrayList<>();
|
308 | 310 | stackList.add(stack);
|
309 | 311 | stand.setLastDamageCause(e);
|
310 |
| - FireworkDeathEvent fireworkDeathEvent = new FireworkDeathEvent(stand, stackList); |
| 312 | + DamageSource damageSource = DamageSource.builder(DamageType.PLAYER_ATTACK).withCausingEntity(player).withDirectEntity(player).withDamageLocation(stand.getLocation()).build(); |
| 313 | + FireworkDeathEvent fireworkDeathEvent = new FireworkDeathEvent(stand, stackList, damageSource); |
311 | 314 | player.getServer().getPluginManager().callEvent(fireworkDeathEvent);
|
312 | 315 | if (fireworkDeathEvent.isCancelled()) {
|
313 | 316 | e.setCancelled(true);
|
|
0 commit comments