Delete src/main/java/pers/xanadu/enderdragon/reward directory

This commit is contained in:
Xanadu13
2023-08-25 21:51:11 +08:00
committed by GitHub
parent 3e926fd36d
commit 7e1bce15a2
10 changed files with 0 additions and 426 deletions
@@ -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);
}
});
}
}