Merge 685479e1b1
into 29c5d7f56d
This commit is contained in:
commit
0958aec5e1
|
@ -2,6 +2,7 @@ package com.garbagemule.MobArena;
|
|||
|
||||
import com.garbagemule.MobArena.framework.Arena;
|
||||
import com.garbagemule.MobArena.things.Thing;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -15,6 +16,8 @@ public class RewardManager
|
|||
{
|
||||
private Map<Player,List<Thing>> players;
|
||||
private Set<Player> rewarded;
|
||||
private static final String PREFIX_LONG = "money:";
|
||||
private static final String PREFIX_SHORT = "$";
|
||||
|
||||
public RewardManager(Arena arena) {
|
||||
this.players = new HashMap<>();
|
||||
|
@ -38,13 +41,31 @@ public class RewardManager
|
|||
|
||||
List<Thing> rewards = players.get(p);
|
||||
if (rewards == null) return;
|
||||
Double moneyTotal = 0.00;
|
||||
|
||||
for (Thing reward : rewards) {
|
||||
if (reward == null) {
|
||||
continue;
|
||||
}
|
||||
reward.giveTo(p);
|
||||
String moneyHolder = trimPrefix(reward.toString());
|
||||
if (moneyHolder == null) continue;
|
||||
if (moneyHolder.contains(",")) {
|
||||
moneyHolder = moneyHolder.replaceAll(",","");
|
||||
}
|
||||
moneyTotal += Double.parseDouble(moneyHolder);
|
||||
}
|
||||
p.sendMessage(ChatColor.GREEN + "You were rewarded with: " + ChatColor.YELLOW + "$" + moneyTotal);
|
||||
rewarded.add(p);
|
||||
}
|
||||
|
||||
private String trimPrefix(String s) {
|
||||
if (s.startsWith(PREFIX_SHORT)) {
|
||||
return s.substring(PREFIX_SHORT.length());
|
||||
}
|
||||
if (s.startsWith(PREFIX_LONG)) {
|
||||
return s.substring(PREFIX_LONG.length());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
package com.garbagemule.MobArena.listeners;
|
||||
|
||||
import com.garbagemule.MobArena.ArenaPlayerStatistics;
|
||||
import com.garbagemule.MobArena.MobArena;
|
||||
import com.garbagemule.MobArena.PluginVersionCheck;
|
||||
import com.garbagemule.MobArena.events.ArenaKillEvent;
|
||||
import com.garbagemule.MobArena.events.ArenaPlayerDeathEvent;
|
||||
import com.garbagemule.MobArena.events.NewWaveEvent;
|
||||
import com.garbagemule.MobArena.framework.Arena;
|
||||
import com.garbagemule.MobArena.framework.ArenaMaster;
|
||||
import com.garbagemule.MobArena.leaderboards.Stats;
|
||||
import com.garbagemule.MobArena.things.Thing;
|
||||
import com.garbagemule.MobArena.things.ThingPicker;
|
||||
import com.garbagemule.MobArena.util.inventory.InventoryManager;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Instrument;
|
||||
import org.bukkit.Note;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
@ -397,8 +406,60 @@ public class MAGlobalListener implements Listener
|
|||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// PER KILL REWARDS //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void kill(ArenaKillEvent event){
|
||||
if (!plugin.getConfig().getBoolean( "arenas." + event.getArena().configName() + ".settings." + "custom-reward-per-kill")) return;
|
||||
Player player = event.getPlayer();
|
||||
Arena arena = event.getArena();
|
||||
int wave = arena.getWaveManager().getWaveNumber();
|
||||
String rewardPath;
|
||||
if (wave < 5) {
|
||||
rewardPath = "custom-reward-per-kill-0-5";
|
||||
} else if (wave <= 10) {
|
||||
rewardPath = "custom-reward-per-kill-5-10";
|
||||
} else {
|
||||
rewardPath = "custom-reward-per-kill-10+";
|
||||
}
|
||||
try {
|
||||
ThingPicker picker = am.getPlugin().getThingPickerManager().parse(plugin.getConfig().getString("arenas." + event.getArena().configName() + ".settings." + rewardPath));
|
||||
Thing thing = picker.pick();
|
||||
arena.getRewardManager().addReward(player, thing);
|
||||
event.getVictim().setCustomName(ChatColor.YELLOW + "+" + ChatColor.GREEN + thing.toString());
|
||||
event.getVictim().setCustomNameVisible(true);
|
||||
player.playNote(player.getLocation(), Instrument.CHIME, Note.natural(1, Note.Tone.A));
|
||||
player.playSound(player.getLocation(), Sound.ITEM_ARMOR_EQUIP_CHAIN,5,1);
|
||||
|
||||
} catch (Exception e) {
|
||||
plugin.getLogger().warning("Failed to reward " + player.getName() + " for kill.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void WaveEvent(NewWaveEvent event) {
|
||||
if (event.getWaveNumber() > 1){
|
||||
for (Player player : event.getArena().getPlayersInArena()) {
|
||||
ArenaPlayerStatistics aps = event.getArena().getArenaPlayer(player).getStats();
|
||||
player.sendMessage("Total Kills: " + ChatColor.YELLOW + aps.getInt("kills"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void ArenaDeath(ArenaPlayerDeathEvent event) {
|
||||
Arena arena = event.getArena();
|
||||
ArenaPlayerStatistics aps = arena.getArenaPlayer(event.getPlayer()).getStats();
|
||||
event.getPlayer().sendMessage("Total Kills on death: " + ChatColor.YELLOW + aps.getInt("kills"));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// WORLD EVENTS //
|
||||
|
|
|
@ -49,3 +49,7 @@ announcer-type: title
|
|||
global-join-announce: false
|
||||
global-end-announce: false
|
||||
show-death-messages: true
|
||||
custom-reward-per-kill: false
|
||||
custom-reward-per-kill-0-5: $5
|
||||
custom-reward-per-kill-5-10: $7.5
|
||||
custom-reward-per-kill-10+: $10
|
Loading…
Reference in New Issue