Delete src/main/java/pers/xanadu/enderdragon/reward directory
This commit is contained in:
@@ -1,22 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward;
|
|
||||||
|
|
||||||
|
|
||||||
public class Chance {
|
|
||||||
private double value;
|
|
||||||
private String str;
|
|
||||||
public Chance(Chance chance){
|
|
||||||
str = chance.str;
|
|
||||||
value = chance.value;
|
|
||||||
}
|
|
||||||
public Chance(double d0,String str){
|
|
||||||
this.str = str;
|
|
||||||
this.value = d0;
|
|
||||||
}
|
|
||||||
public double getValue(){
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
public String getStr(){
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
public enum DistType {
|
|
||||||
killer,
|
|
||||||
drop,//glow?
|
|
||||||
all,
|
|
||||||
rank,//num
|
|
||||||
pack,//num
|
|
||||||
termwise,
|
|
||||||
unknown;
|
|
||||||
|
|
||||||
private static final Map<String, DistType> mp = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
|
|
||||||
|
|
||||||
public static DistType getByName(String str){
|
|
||||||
//if(str == null) return drop;
|
|
||||||
return mp.getOrDefault(str,unknown);
|
|
||||||
}
|
|
||||||
static {
|
|
||||||
DistType[] values = DistType.values();
|
|
||||||
for (DistType type : values) {
|
|
||||||
String name = type.name();
|
|
||||||
mp.put(name, type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.manager.ItemManager;
|
|
||||||
|
|
||||||
|
|
||||||
public class Reward extends ItemStack {
|
|
||||||
protected String name;
|
|
||||||
protected Chance chance;
|
|
||||||
private ItemStack item;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString(){
|
|
||||||
return ItemManager.write(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public int hashCode() {
|
|
||||||
// return this.name.hashCode();
|
|
||||||
// }
|
|
||||||
|
|
||||||
public ItemStack getItem() {
|
|
||||||
if(item == null) return new ItemStack(Material.AIR);
|
|
||||||
return item.clone();
|
|
||||||
}
|
|
||||||
public Chance getChance(){
|
|
||||||
return this.chance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected Reward(ItemStack item,String chance) {
|
|
||||||
this.item = item;
|
|
||||||
|
|
||||||
}
|
|
||||||
public Reward(ItemStack item, Chance chance){
|
|
||||||
this.item = item;
|
|
||||||
this.chance = chance;
|
|
||||||
}
|
|
||||||
public Reward(ItemStack item){
|
|
||||||
this.item = item;
|
|
||||||
this.chance = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.reward.dist.*;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
|
||||||
|
|
||||||
public abstract class RewardDist {
|
|
||||||
public static RewardDist parse(ConfigurationSection section){
|
|
||||||
if(section == null) return new Dist_Drop();
|
|
||||||
String type_name = section.getString("type");
|
|
||||||
DistType type = DistType.getByName(type_name);
|
|
||||||
switch (type){
|
|
||||||
case all : {
|
|
||||||
return new Dist_All();
|
|
||||||
}
|
|
||||||
case drop : {
|
|
||||||
return new Dist_Drop(section.getConfigurationSection("drop"));
|
|
||||||
}
|
|
||||||
case killer : {
|
|
||||||
return new Dist_Killer();
|
|
||||||
}
|
|
||||||
case pack : {
|
|
||||||
return new Dist_Pack(section.getConfigurationSection("pack"));
|
|
||||||
}
|
|
||||||
case rank : {
|
|
||||||
return new Dist_Rank(section.getConfigurationSection("rank"));
|
|
||||||
}
|
|
||||||
case termwise : {
|
|
||||||
return new Dist_Termwise();
|
|
||||||
}
|
|
||||||
default : {
|
|
||||||
Lang.error("Unknown reward_dist type: "+type_name);
|
|
||||||
return new Dist_Drop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public List<ItemStack> getDropReward(MyDragon myDragon){
|
|
||||||
List<ItemStack> list = new ArrayList<>();
|
|
||||||
for(Reward reward : myDragon.datum){
|
|
||||||
double chance = reward.getChance().getValue();
|
|
||||||
if(chance > ThreadLocalRandom.current().nextDouble(100)){
|
|
||||||
list.add(reward.getItem());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player killer){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.manager.DamageManager;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
public class Dist_All extends RewardDist {
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player killer){
|
|
||||||
ConcurrentHashMap<String,Double> damage_data = DamageManager.data.get(dragon.getUniqueId());
|
|
||||||
if(damage_data == null) return;
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
Bukkit.getOnlinePlayers().forEach(p->{
|
|
||||||
if(damage_data.containsKey(p.getName())){
|
|
||||||
boolean full = false;
|
|
||||||
for(ItemStack item : items){
|
|
||||||
if(full || p.getInventory().firstEmpty() == -1){
|
|
||||||
p.getWorld().dropItem(p.getLocation(),item);
|
|
||||||
full = true;
|
|
||||||
}
|
|
||||||
else p.getInventory().addItem(item);
|
|
||||||
}
|
|
||||||
if(full) Lang.sendFeedback(p, Lang.dragon_player_inv_full);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
import pers.xanadu.enderdragon.manager.GlowManager;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
|
||||||
|
|
||||||
import static pers.xanadu.enderdragon.manager.GlowManager.setGlowingColor;
|
|
||||||
|
|
||||||
public class Dist_Drop extends RewardDist {
|
|
||||||
private final GlowManager.GlowColor color;
|
|
||||||
public Dist_Drop(ConfigurationSection section){
|
|
||||||
if(section == null) color = GlowManager.GlowColor.NONE;
|
|
||||||
else {
|
|
||||||
String color = section.getString("glow","NONE").toUpperCase();
|
|
||||||
this.color = GlowManager.GlowColor.valueOf(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public Dist_Drop(){
|
|
||||||
color = GlowManager.GlowColor.NONE;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon, final EnderDragon dragon, final Player killer){
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
World world = dragon.getWorld();
|
|
||||||
Location loc = dragon.getLocation();
|
|
||||||
items.forEach(item->{
|
|
||||||
Item entity_item = world.dropItemNaturally(loc,item);
|
|
||||||
ChatColor color = getGlowColor();
|
|
||||||
if(color!=null) setGlowingColor(entity_item,color);
|
|
||||||
double x = ThreadLocalRandom.current().nextDouble(0.25);
|
|
||||||
double y = ThreadLocalRandom.current().nextDouble(0.25);
|
|
||||||
double z = ThreadLocalRandom.current().nextDouble(0.25);
|
|
||||||
entity_item.setVelocity(new Vector(x,y,z));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChatColor getGlowColor(){
|
|
||||||
return GlowManager.getGlowColor(color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Dist_Killer extends RewardDist {
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player p){
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
if(p != null){
|
|
||||||
boolean full = false;
|
|
||||||
for(ItemStack item : items){
|
|
||||||
if(full || p.getInventory().firstEmpty() == -1){
|
|
||||||
p.getWorld().dropItem(p.getLocation(),item);
|
|
||||||
full = true;
|
|
||||||
}
|
|
||||||
else p.getInventory().addItem(item);
|
|
||||||
}
|
|
||||||
if(full) Lang.sendFeedback(p, Lang.dragon_player_inv_full);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.manager.DamageManager;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.AExpJ;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
public class Dist_Pack extends RewardDist {
|
|
||||||
private final int max_num;
|
|
||||||
public Dist_Pack(ConfigurationSection section){
|
|
||||||
if(section == null) max_num = 1;
|
|
||||||
else max_num = section.getInt("max_num",1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player killer){
|
|
||||||
ConcurrentHashMap<String,Double> damage_data = DamageManager.data.get(dragon.getUniqueId());
|
|
||||||
if(damage_data == null) return;
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
int m = Math.min(max_num,damage_data.size());
|
|
||||||
if(m<=0) return;
|
|
||||||
List<String> receivers = AExpJ.sample(damage_data,m);
|
|
||||||
receivers.forEach(receiver->{
|
|
||||||
Player p = Bukkit.getPlayer(receiver);
|
|
||||||
if(p != null){
|
|
||||||
boolean full = false;
|
|
||||||
for(ItemStack item : items){
|
|
||||||
if(full || p.getInventory().firstEmpty() == -1){
|
|
||||||
p.getWorld().dropItem(p.getLocation(),item);
|
|
||||||
full = true;
|
|
||||||
}
|
|
||||||
else p.getInventory().addItem(item);
|
|
||||||
}
|
|
||||||
if(full) Lang.sendFeedback(p, Lang.dragon_player_inv_full);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getMax_num(){
|
|
||||||
return max_num;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.manager.DamageManager;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class Dist_Rank extends RewardDist {
|
|
||||||
private final int max_num;
|
|
||||||
public Dist_Rank(ConfigurationSection section){
|
|
||||||
if(section == null) max_num = 1;
|
|
||||||
else max_num = section.getInt("max_num",1);
|
|
||||||
}
|
|
||||||
public int getMax_num(){
|
|
||||||
return max_num;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player killer){
|
|
||||||
ConcurrentHashMap<String,Double> damage_data = DamageManager.data.get(dragon.getUniqueId());
|
|
||||||
if(damage_data == null) return;
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
int m = Math.min(max_num,damage_data.size());
|
|
||||||
if(m<=0) return;
|
|
||||||
List<Map.Entry<String, Double>> list = damage_data.entrySet().stream().sorted(Dist_Rank::sortByDamage).collect(Collectors.toList());
|
|
||||||
for(int i=0;i<m;i++){
|
|
||||||
String name = list.get(i).getKey();
|
|
||||||
Player p = Bukkit.getPlayer(name);
|
|
||||||
if(p != null){
|
|
||||||
boolean full = false;
|
|
||||||
for(ItemStack item : items){
|
|
||||||
if(full || p.getInventory().firstEmpty() == -1){
|
|
||||||
p.getWorld().dropItem(p.getLocation(),item);
|
|
||||||
full = true;
|
|
||||||
}
|
|
||||||
else p.getInventory().addItem(item);
|
|
||||||
}
|
|
||||||
if(full) Lang.sendFeedback(p, Lang.dragon_player_inv_full);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static <T> int sortByDamage(Map.Entry<T, Double> e1,Map.Entry<T, Double> e2){
|
|
||||||
if(e2.getValue()>e1.getValue()) return 1;
|
|
||||||
if(e2.getValue().equals(e1.getValue())) return 0;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
package pers.xanadu.enderdragon.reward.dist;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.EnderDragon;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import pers.xanadu.enderdragon.config.Lang;
|
|
||||||
import pers.xanadu.enderdragon.manager.DamageManager;
|
|
||||||
import pers.xanadu.enderdragon.reward.RewardDist;
|
|
||||||
import pers.xanadu.enderdragon.util.AliasSample;
|
|
||||||
import pers.xanadu.enderdragon.util.MyDragon;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
public class Dist_Termwise extends RewardDist {
|
|
||||||
@Override
|
|
||||||
public void handle_dist(final MyDragon myDragon,final EnderDragon dragon,final Player killer){
|
|
||||||
ConcurrentHashMap<String,Double> damage_data = DamageManager.data.get(dragon.getUniqueId());
|
|
||||||
if(damage_data == null) return;
|
|
||||||
List<ItemStack> items = getDropReward(myDragon);
|
|
||||||
if(items.isEmpty()) return;
|
|
||||||
AliasSample alias = new AliasSample(new ArrayList<>(damage_data.values()));
|
|
||||||
List<String> list = new ArrayList<>(damage_data.keySet());
|
|
||||||
items.forEach(item->{
|
|
||||||
int idx = alias.next();
|
|
||||||
String receiver = list.get(idx);
|
|
||||||
Player p = Bukkit.getPlayer(receiver);
|
|
||||||
if(p != null){
|
|
||||||
if(p.getInventory().firstEmpty() == -1){
|
|
||||||
p.getWorld().dropItem(p.getLocation(),item);
|
|
||||||
Lang.sendFeedback(p, Lang.dragon_player_inv_full);
|
|
||||||
}
|
|
||||||
else p.getInventory().addItem(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user