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