package me.km.effects.passive; import java.util.Collection; import me.kt.KajetansTools; import me.kt.api.ItemStackBuilder; import me.kt.api.Module; import me.kt.api.ModuleListener; import me.kt.api.Utils; import me.kt.effects.Effect; import me.kt.effects.EffectUtils; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.LeavesDecayEvent; public class LeaveDecay extends ModuleListener { public LeaveDecay(Module m) { super(m); } @EventHandler(ignoreCancelled = true) public void onLeaveDecay(LeavesDecayEvent e) { Location l = e.getBlock().getLocation(); if(!KajetansTools.worldManager.getWorldPreferences(l.getWorld()).skills) { return; } Collection players = Utils.getNearbyEntities(l, 15, Player.class); if(players.isEmpty()) { return; } Block b = e.getBlock(); players.stream().filter((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.TREE_PICKER)).forEach((p) -> { Utils.dropRandomTreeItem(b); }); Material m = b.getType(); if(m == Material.LEAVES) { players.stream().filter((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.MORE_SAPLINGS)).forEach((p) -> { new ItemStackBuilder(Material.SAPLING, 1, (short) (b.getState().getData().toItemStack().getDurability() % 4)).drop(l); }); } else if(m == Material.LEAVES_2) { players.stream().filter((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.MORE_SAPLINGS)).forEach((p) -> { new ItemStackBuilder(Material.SAPLING, 1, (short) ((b.getState().getData().toItemStack().getDurability() % 4) + 4)).drop(l); }); } } }