package ru.WS.DROP.II;
import org.bukkit.entity.LivingEntity;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.event.entity.EntityDeathEvent;
import org.*********ventory.ItemStack;
import org.bukkit.event.EventPriority;
import org.bukkit.event.EventHandler;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.PluginManager;
import java.util.logging.Logger;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public class RUN extends JavaPlugin implements Listener {
public boolean usePEX;
public boolean usePB;
public static Logger log;
public List<Material> list;
public boolean onMobs;
public boolean onBlocks;
@Override
public void onEnable() {
if (!this.LoadConfig()) {
this.setEnabled(false);
return;
}
RUN.log.info("Starting WS Plag Drop II ...");
PluginManager pm = this.getServer().getPluginManager();
pm.registerEvents(this, this);
}
@Override
public void onDisable() {
RUN.log.info("Disabling WS Plag Drop II ...");
}
private boolean LoadConfig() {
this.saveDefaultConfig();
FileConfiguration conf = this.getConfig();
List<String> mat = (List<String>) conf.getStringList("Material-Not-Drop-Blocks");
this.onMobs = conf.getBoolean("enabled_drop_mobs", true);
this.onBlocks = conf.getBoolean("enabled_drop_blocks", true);
this.list = new ArrayList<Material>();
for (String s : mat) {
this.list.add(Material.matchMaterial(s));
}
return conf.getBoolean("enabled", true);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void StopDiamondBlockBreak(BlockBreakEvent e) {
if (!this.onBlocks) {
return;
}
if (e.isCancelled()) {
return;
}
if (e.getPlayer().getGameMode() == GameMode.CREATIVE) {
return;
}
Material mat = e.getBlock().getType();
for (int i = 0; i < this.list.size(); ++i) {
if (mat == this.list.get(i)) {
return;
}
}
ItemStack[] stack = e.getBlock().getDrops().toArray(new ItemStack[] {});
if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.20X")) {
this.dropBlock(stack, 20.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.15X")) {
this.dropBlock(stack, 15.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.10X")) {
this.dropBlock(stack, 10.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.5X")) {
this.dropBlock(stack, 5.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.4X")) {
this.dropBlock(stack, 4.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.3X")) {
this.dropBlock(stack, 3.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.2X")) {
this.dropBlock(stack, 2.0, e);
} else if (e.getPlayer().hasPermission("PlugDrop.DROP.BLOCK.1.5X")) {
this.dropBlock(stack, 1.5, e);
}
if (e.getPlayer().hasPermission("PlugDrop.Effect.BLOCK.I")) {
e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.ENDER_SIGNAL, 10);
}
}
public void dropBlock(ItemStack[] stacks, double d, BlockBreakEvent event) {
if (!this.onBlocks) {
return;
}
for (ItemStack stack : stacks) {
int l5 = (int) (stack.getAmount() * d);
int l6 = l5 / 64;
stack.setAmount(64);
for (int l7 = 0; l7 < l6; ++l7) {
event.getBlock().getWorld().dropItem(event.getBlock().getLocation(), stack);
}
stack.setAmount(l5 % 64);
event.getBlock().getWorld().dropItem(event.getBlock().getLocation(), stack);
stack.setType(Material.AIR);
}
}
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
if (!this.onMobs) {
return;
}
Player player = event.getEntity().getKiller();
if (player == null) {
return;
}
LivingEntity entity = event.getEntity();
if (entity.hasPermission("PlugDrop.EXP.20X")) {
event.setDroppedExp(event.getDroppedExp() * 20);
} else if (entity.hasPermission("PlugDrop.EXP.15X")) {
event.setDroppedExp(event.getDroppedExp() * 15);
} else if (entity.hasPermission("PlugDrop.EXP.10X")) {
event.setDroppedExp(event.getDroppedExp() * 10);
} else if (entity.hasPermission("PlugDrop.EXP.5X")) {
event.setDroppedExp(event.getDroppedExp() * 5);
} else if (entity.hasPermission("PlugDrop.EXP.4X")) {
event.setDroppedExp(event.getDroppedExp() * 4);
} else if (entity.hasPermission("PlugDrop.EXP.3X")) {
event.setDroppedExp(event.getDroppedExp() * 3);
} else if (entity.hasPermission("PlugDrop.EXP.2X")) {
event.setDroppedExp(event.getDroppedExp() * 2);
} else if (entity.hasPermission("PlugDrop.EXP.1.5X")) {
event.setDroppedExp((int) (event.getDroppedExp() * 1.5));
}
ItemStack[] stack = event.getDrops().toArray(new ItemStack[] {});
if (entity instanceof Player) {
if (entity.hasPermission("PlugDrop.DROP.PLAYER")) {
if (entity.hasPermission("PlugDrop.DROP.20X")) {
this.dropEntity(stack, 20.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.15X")) {
this.dropEntity(stack, 15.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.10X")) {
this.dropEntity(stack, 10.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.5X")) {
this.dropEntity(stack, 5.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.4X")) {
this.dropEntity(stack, 4.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.3X")) {
this.dropEntity(stack, 3.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.2X")) {
this.dropEntity(stack, 2.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.1.5X")) {
this.dropEntity(stack, 1.5, event.getEntity());
}
}
} else if (entity.hasPermission("PlugDrop.DROP.20X")) {
this.dropEntity(stack, 20.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.15X")) {
this.dropEntity(stack, 15.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.10X")) {
this.dropEntity(stack, 10.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.5X")) {
this.dropEntity(stack, 5.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.4X")) {
this.dropEntity(stack, 4.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.3X")) {
this.dropEntity(stack, 3.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.2X")) {
this.dropEntity(stack, 2.0, event.getEntity());
} else if (entity.hasPermission("PlugDrop.DROP.1.5X")) {
this.dropEntity(stack, 1.5, event.getEntity());
}
if (entity.hasPermission("PlugDrop.Effect.I")) {
event.getEntity().addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 10, 10));
}
}
public void dropEntity(ItemStack[] stacks, double d, LivingEntity entity) {
for (ItemStack stack : stacks) {
int l5 = (int) (stack.getAmount() * d);
int l6 = l5 / 64;
stack.setAmount(64);
for (int l7 = 0; l7 < l6; ++l7) {
entity.getWorld().dropItem(entity.getLocation(), stack);
}
stack.setAmount(l5 % 64);
}
}
static {
log = Logger.getLogger("Minecrat");
}
}