Skip to content

Commit c99aafa

Browse files
committed
Explosive Drops avoiding
1 parent 765fd83 commit c99aafa

1 file changed

Lines changed: 34 additions & 23 deletions

File tree

src/main/java/org/electroraven/randomItemXP/RandomItemXP.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.bukkit.event.block.BlockBreakEvent;
1414
import org.bukkit.event.block.BlockPlaceEvent;
1515
import org.bukkit.event.entity.EntityDeathEvent;
16+
import org.bukkit.event.entity.EntityExplodeEvent;
1617
import org.bukkit.event.player.PlayerInteractEvent;
1718
import org.bukkit.event.world.ChunkLoadEvent;
1819
import org.bukkit.inventory.ItemStack;
@@ -25,7 +26,6 @@
2526

2627
public final class RandomItemXP extends JavaPlugin implements Listener {
2728
private final Random random = new Random();
28-
private final NamespacedKey placedBlockKey = new NamespacedKey(this, "placed");
2929
private boolean isLevelRandomizerActive = false;
3030

3131
@Override
@@ -69,27 +69,27 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
6969
return false;
7070
}
7171

72-
@EventHandler
73-
public void onPlayerUse(PlayerInteractEvent event) {
74-
if (isLevelRandomizerActive) {
75-
Player player = event.getPlayer();
76-
if (player.getInventory().getItemInMainHand().getType() == Material.STICK) {
77-
int levels = player.getLevel();
78-
if (levels > 0) {
79-
player.setLevel(0);
80-
ItemStack randomItem = createRandomItem(levels);
81-
player.getInventory().addItem(randomItem);
82-
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f);
83-
player.spawnParticle(Particle.ENCHANT, player.getLocation(), 10);
72+
@EventHandler
73+
public void onPlayerUse(PlayerInteractEvent event) {
74+
// Nur aktiv, wenn der Level Randomizer aktiv ist
75+
if (isLevelRandomizerActive) {
76+
Player player = event.getPlayer();
77+
if (player.getInventory().getItemInMainHand().getType() == Material.STICK) {
78+
int levels = player.getLevel();
79+
if (levels > 0) {
80+
player.setLevel(0);
81+
ItemStack randomItem = createRandomItem(levels);
82+
player.getInventory().addItem(randomItem);
83+
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f);
84+
player.spawnParticle(Particle.ENCHANT, player.getLocation(), 10);
85+
}
8486
}
8587
}
8688
}
87-
}
8889

8990
@EventHandler
9091
public void onBlockPlace(BlockPlaceEvent event) {
9192
if (isLevelRandomizerActive) {
92-
// Markiere den Block als vom Spieler platziert
9393
event.getBlock().getState().setMetadata("placed", new org.bukkit.metadata.FixedMetadataValue(this, true));
9494
}
9595
}
@@ -98,11 +98,18 @@ public void onBlockPlace(BlockPlaceEvent event) {
9898
public void onBlockBreak(BlockBreakEvent event) {
9999
if (isLevelRandomizerActive) {
100100
if (!event.getBlock().hasMetadata("placed")) {
101-
event.setDropItems(false); // Wenn der Block nicht platziert wurde, keine Drops
101+
event.setDropItems(false); // Wenn der Block nicht vom Spieler platziert wurde, keine Drops
102102
}
103103
}
104104
}
105105

106+
@EventHandler
107+
public void onEntityExplode(EntityExplodeEvent event) {
108+
if (isLevelRandomizerActive) {
109+
event.blockList().forEach(block -> block.setType(Material.AIR)); // Setzt die zerstörten Blöcke auf Luft, um die Zerstörung durch Explosion zu simulieren
110+
}
111+
}
112+
106113
@EventHandler
107114
public void onMobDeath(EntityDeathEvent event) {
108115
if (isLevelRandomizerActive) {
@@ -112,13 +119,15 @@ public void onMobDeath(EntityDeathEvent event) {
112119

113120
@EventHandler
114121
public void onChunkLoad(ChunkLoadEvent event) {
115-
for (int x = 0; x < 16; x++) {
116-
for (int z = 0; z < 16; z++) {
117-
for (int y = 0; y < event.getWorld().getMaxHeight(); y++) {
118-
Block block = event.getChunk().getBlock(x, y, z);
119-
if (block.getType() == Material.CHEST) {
120-
Chest chest = (Chest) block.getState();
121-
chest.getInventory().clear();
122+
if (isLevelRandomizerActive) {
123+
for (int x = 0; x < 16; x++) {
124+
for (int z = 0; z < 16; z++) {
125+
for (int y = 0; y < event.getWorld().getMaxHeight(); y++) {
126+
Block block = event.getChunk().getBlock(x, y, z);
127+
if (block.getType() == Material.CHEST) {
128+
Chest chest = (Chest) block.getState();
129+
chest.getInventory().clear(); // Leere den Inhalt der generierten Truhe
130+
}
122131
}
123132
}
124133
}
@@ -146,6 +155,8 @@ private ItemStack createRandomItem(int amount) {
146155
return item;
147156
}
148157

158+
159+
149160
private Material getRandomMaterial() {
150161
List<Material> materials = List.of(Material.values());
151162
return materials.get(random.nextInt(materials.size()));

0 commit comments

Comments
 (0)