This commit is contained in:
JL-III 2024-01-01 15:25:10 -06:00 committed by GitHub
commit 0958aec5e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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 //

View File

@ -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