package me.km.effects.passive; import java.util.List; import me.km.KajetansMod; import me.km.api.Module; import me.km.api.ModuleListener; import me.km.api.Utils; import me.km.effects.Effect; import me.km.effects.EffectUtils; import me.km.utils.ItemStackBuilder; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class LeaveDecay extends ModuleListener { public LeaveDecay(Module m) { super(m); } @SubscribeEvent(receiveCanceled = false) public void onLeaveDecay(BlockEvent.HarvestDropsEvent e) { if(!KajetansMod.worldManager.getWorldPreferences(e.getWorld()).skills) { return; } IBlockState state = e.getState(); Block b = state.getBlock(); if(b == Blocks.LEAVES) { World w = e.getWorld(); BlockPos pos = e.getPos(); List players = Utils.getNearbyPlayers(w, pos.getX(), pos.getY(), pos.getZ(), 15); int i = (int) players.stream().filter((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.MORE_SAPLINGS)).count(); if(i >= 1) { new ItemStackBuilder(Blocks.SAPLING, i, (Blocks.LEAVES.getMetaFromState(state) % 4)).drop(w, pos); } if(players.stream().anyMatch((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.TREE_PICKER))) { Utils.dropRandomTreeItem(w, pos, state); } } else if(b == Blocks.LEAVES2) { World w = e.getWorld(); BlockPos pos = e.getPos(); List players = Utils.getNearbyPlayers(w, pos.getX(), pos.getY(), pos.getZ(), 15); int i = (int) players.stream().filter((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.MORE_SAPLINGS)).count(); if(i >= 1) { new ItemStackBuilder(Blocks.SAPLING, i, (Blocks.LEAVES.getMetaFromState(state) % 4) + 4).drop(w, pos); } if(players.stream().anyMatch((p) -> Utils.randomInt(1, 25) <= EffectUtils.getEffectLevel(p, Effect.TREE_PICKER))) { Utils.dropRandomTreeItem(w, pos, state); } } } }