Skip to content

Commit 54fd61c

Browse files
committed
various fixes
- firework damage protection - fixed exploit: heads getting dropped using water
1 parent 131b02a commit 54fd61c

4 files changed

Lines changed: 26 additions & 5 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.meloncode</groupId>
88
<artifactId>xmas</artifactId>
9-
<version>2.4</version>
9+
<version>2.5</version>
1010

1111
<repositories>
1212
<repository>

src/main/java/ru/meloncode/xmas/Events.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@
33
import org.bukkit.*;
44
import org.bukkit.block.Block;
55
import org.bukkit.block.BlockFace;
6+
import org.bukkit.entity.EntityType;
7+
import org.bukkit.entity.Firework;
68
import org.bukkit.entity.Player;
79
import org.bukkit.event.EventHandler;
10+
import org.bukkit.event.EventPriority;
811
import org.bukkit.event.Listener;
912
import org.bukkit.event.block.*;
13+
import org.bukkit.event.entity.EntityDamageByEntityEvent;
1014
import org.bukkit.event.entity.EntityExplodeEvent;
1115
import org.bukkit.event.entity.ItemSpawnEvent;
1216
import org.bukkit.event.player.PlayerInteractEvent;
@@ -40,6 +44,14 @@ public void onPlayerOpenPresent(PlayerInteractEvent event) {
4044
}
4145
}
4246

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+
4355
// Prevent bonemeal on magic tree
4456
@EventHandler
4557
public void onPlayerUseBonemeal(PlayerInteractEvent event) {
@@ -152,10 +164,9 @@ public void onBlockBreakByExplosion(EntityExplodeEvent event) {
152164
@EventHandler
153165
public void onItemSpawn(ItemSpawnEvent event) {
154166
ItemStack item = event.getEntity().getItemStack();
155-
// TODO Probably won't work
156167
if (item.getType() == Material.PLAYER_HEAD) {
157168
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())) {
159170
event.setCancelled(true);
160171
}
161172
}
@@ -274,5 +285,13 @@ public void disableDecay(LeavesDecayEvent e)
274285
e.setCancelled(true);
275286
}
276287

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+
}
278297
}

src/main/java/ru/meloncode/xmas/MagicTree.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.bukkit.inventory.Inventory;
1010
import org.bukkit.inventory.ItemStack;
1111
import org.bukkit.inventory.meta.FireworkMeta;
12+
import org.bukkit.metadata.FixedMetadataValue;
1213
import org.bukkit.util.Vector;
1314

1415
import java.util.*;
@@ -153,6 +154,7 @@ private void levelUp() {
153154
FireworkMeta meta = fw.getFireworkMeta();
154155
meta.addEffect(FireworkEffect.builder().trail(true).withColor(Color.RED).withFade(Color.LIME).withFlicker().with(Type.BURST).build());
155156
fw.setFireworkMeta(meta);
157+
fw.setMetadata("nodamage", new FixedMetadataValue(Main.getInstance(), true));
156158
}
157159
build();
158160
save();

src/main/resources/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ core:
1111
holiday-ends:
1212
enabled: true
1313
#DD.MM.YYYY HH-MM-SS
14-
date: 10-01-2020 03-33-33
14+
date: 10-01-2021 03-33-33
1515
# if true - plugin will summon chest with spent resources under tree
1616
resource-back: true
1717

0 commit comments

Comments
 (0)