package com.mengcraft.team;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
public class TeamRoll extends JavaPlugin {
public static HashSet<Integer> dropItems;
@Override
public void onEnable() {
if (getServer().getPluginManager().getPlugin("TeamPlugin") != null) {
getServer().getPluginManager().registerEvents(new RollListener(), this);
dropItems = new HashSet<>();
getServer().getScheduler().runTaskTimerAsynchronously(this, new ClearItemSet(), 3600, 3600);
} else {
setEnabled(false);
}
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "梦梦家高性能服务器出租");
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "淘宝店 http://shop105595113.taobao.com");
}
private class RollListener implements Listener {
@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent event) {
int getEntityId = event.getItemDrop().getEntityId();
TeamRoll.dropItems.add(getEntityId);
}
@EventHandler
public void onPlayerPickup(PlayerPickupItemEvent event) {
if (dropItems.contains(event.getItem().getEntityId())) {
TeamRoll.dropItems.remove(event.getItem().getEntityId());
} else if (TeamUtils.getPlayerLeader(event.getPlayer().getName()) != null) {
Player player = rollPlayer(event.getPlayer());
if (player != null) {
Item getItem = event.getItem();
ItemStack itemStack = getItem.getItemStack();
HashMap<Integer, ItemStack> map = player.getInventory().addItem(itemStack);
if (map.isEmpty()) {
player.sendMessage(ChatColor.DARK_PURPLE + "恭喜你获得了物品");
} else {
Location loc = player.getLocation();
player.getWorld().dropItem(loc, itemStack);
}
getItem.remove();
event.setCancelled(true);
}
}
}
private Player rollPlayer(Player player) {
List<Player> nearby = TeamUtils.getTeamMateNearby(player.getName());
if (nearby.size() > 1) {
Random random = new Random();
Player roll = null;
int point = 0;
for (Player near : nearby) {
int i = random.nextInt(1024);
near.sendMessage(ChatColor.DARK_PURPLE + "你掷出了 " + i + " 点");
if (i > point) {
point = i;
roll = near;
}
}
return roll;
} else {
return null;
}
}
}
private class ClearItemSet extends BukkitRunnable {
@Override
public void run() {
TeamRoll.dropItems.clear();
}
}
}