Add option for allowing command loot to be executed for offline players
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>pers.xanadu</groupId>
|
<groupId>pers.xanadu</groupId>
|
||||||
<artifactId>EnderDragon</artifactId>
|
<artifactId>EnderDragon</artifactId>
|
||||||
<version>2.5.6</version>
|
<version>2.5.7</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>EnderDragon</name>
|
<name>EnderDragon</name>
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.clip</groupId>
|
<groupId>me.clip</groupId>
|
||||||
<artifactId>placeholderapi</artifactId>
|
<artifactId>placeholderapi</artifactId>
|
||||||
<version>2.11.2</version>
|
<version>2.11.6</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
<!-- <systemPath>${basedir}/lib/PlaceholderAPI-2.11.2.jar</systemPath>-->
|
<!-- <systemPath>${basedir}/lib/PlaceholderAPI-2.11.2.jar</systemPath>-->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|||||||
@@ -99,16 +99,12 @@ public class DragonDeathListener implements Listener {
|
|||||||
private static void handleSpecialLoot(final MyDragon myDragon, final EnderDragon dragon){
|
private static void handleSpecialLoot(final MyDragon myDragon, final EnderDragon dragon){
|
||||||
List<Pair<String,Double>> list = DamageManager.getDamageList(dragon.getUniqueId());
|
List<Pair<String,Double>> list = DamageManager.getDamageList(dragon.getUniqueId());
|
||||||
list.sort(DamageManager::sortByDamage);
|
list.sort(DamageManager::sortByDamage);
|
||||||
Set<String> online_players = new HashSet<>();
|
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> online_players.add(player.getName()));
|
|
||||||
List<SpecialLoot> participants = myDragon.lootMap.get(0);
|
List<SpecialLoot> participants = myDragon.lootMap.get(0);
|
||||||
boolean tag = participants != null;
|
boolean tag = participants != null;
|
||||||
int size = list.size();
|
int size = list.size();
|
||||||
for(int i=0;i<size;i++){
|
for(int i=0;i<size;i++){
|
||||||
Pair<String,Double> pair = list.get(i);
|
Pair<String,Double> pair = list.get(i);
|
||||||
String name = pair.first;
|
String name = pair.first;
|
||||||
//玩家不在线
|
|
||||||
if(!online_players.contains(name)) continue;
|
|
||||||
String damage = String.format("%.2f",pair.second);
|
String damage = String.format("%.2f",pair.second);
|
||||||
//所有参与者
|
//所有参与者
|
||||||
if(tag) participants.forEach(loot -> loot.accept(name,damage));
|
if(tag) participants.forEach(loot -> loot.accept(name,damage));
|
||||||
|
|||||||
@@ -281,7 +281,8 @@ public class DragonManager {
|
|||||||
SpecialLoot specialLoot;
|
SpecialLoot specialLoot;
|
||||||
if("command".equals(type)){
|
if("command".equals(type)){
|
||||||
List<String> commands = loot.getStringList("data");
|
List<String> commands = loot.getStringList("data");
|
||||||
specialLoot = (player, damage) -> handleCommandLoot(commands,player,damage);
|
boolean executeOffline = loot.getBoolean("execute-if-offline");
|
||||||
|
specialLoot = (player, damage) -> handleCommandLoot(commands,player,damage,executeOffline);
|
||||||
}
|
}
|
||||||
else if("exp".equals(type)){
|
else if("exp".equals(type)){
|
||||||
int amount = loot.getInt("data"+f.options().pathSeparator()+"amount");
|
int amount = loot.getInt("data"+f.options().pathSeparator()+"amount");
|
||||||
@@ -325,8 +326,13 @@ public class DragonManager {
|
|||||||
dragon_names.add(myDragon.unique_name);
|
dragon_names.add(myDragon.unique_name);
|
||||||
sum += edge;
|
sum += edge;
|
||||||
}
|
}
|
||||||
private static void handleCommandLoot(List<String> list, String name, String damage){
|
private static void handleCommandLoot(List<String> list, String name, String damage, boolean executeOffline){
|
||||||
if(list == null) return;
|
if(list == null) return;
|
||||||
|
|
||||||
|
Player player = Bukkit.getPlayer(name);
|
||||||
|
if (player == null && !executeOffline)
|
||||||
|
return;
|
||||||
|
|
||||||
for (String cmd : list) {
|
for (String cmd : list) {
|
||||||
if(cmd.equals("")) continue;
|
if(cmd.equals("")) continue;
|
||||||
plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),cmd.replaceAll("%player%",name).replaceAll("%damage%",damage));
|
plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),cmd.replaceAll("%player%",name).replaceAll("%damage%",damage));
|
||||||
|
|||||||
Reference in New Issue
Block a user