Scoreboard functional - new event
Not perfect - see Trello Event double health added
This commit is contained in:
1 parent
cd7fbae8a6
commit
78ca4f0df1
14 files changed
+192
-92
No files matched your search
@@ -4,6 +4,7 @@ import me.lifelessnerd.purekitpvp.combathandlers.leveling.PlayerLevelChat;
|
||||
import me.lifelessnerd.purekitpvp.combathandlers.killhandler.Suicide;
|
||||
import me.lifelessnerd.purekitpvp.combathandlers.mobhandler.OnPlayerSpawnMob;
|
||||
import me.lifelessnerd.purekitpvp.combathandlers.killhandler.DeathHandler;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.events.DoubleHealthListeners;
|
||||
import me.lifelessnerd.purekitpvp.kitCommand.KitPreviewListener;
|
||||
import me.lifelessnerd.purekitpvp.scoreboards.SidebarScoreboard;
|
||||
import me.lifelessnerd.purekitpvp.cosmetics.cosmeticsCommand.CosmeticsCommand;
|
||||
@@ -78,6 +79,8 @@ public final class PureKitPvP extends JavaPlugin {
|
||||
LanguageConfig.save();
|
||||
LanguageConfig.loadLanguage();
|
||||
|
||||
SidebarScoreboard scoreboard = new SidebarScoreboard(this);
|
||||
|
||||
getCommand("getkit").setExecutor(new GetKit(this));
|
||||
getCommand("kit").setExecutor(new KitsGUI(this));
|
||||
getCommand("perk").setExecutor(new PerkCommand(this));
|
||||
@@ -104,7 +107,7 @@ public final class PureKitPvP extends JavaPlugin {
|
||||
getServer().getPluginManager().registerEvents(new BlockRemover(this), this);
|
||||
getServer().getPluginManager().registerEvents(new KitPreviewListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(new ProjectileRemover(this), this);
|
||||
getServer().getPluginManager().registerEvents(new SidebarScoreboard(this), this);
|
||||
getServer().getPluginManager().registerEvents(new DoubleHealthListeners(this), this);
|
||||
|
||||
getServer().getPluginManager().registerEvents(new CosmeticsGUIListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(new KillEffect(this), this);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package me.lifelessnerd.purekitpvp;
|
||||
|
||||
import me.lifelessnerd.purekitpvp.files.*;
|
||||
import me.lifelessnerd.purekitpvp.scoreboards.SidebarScoreboard;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -66,6 +67,8 @@ public class ReloadPlugin extends Subcommand {
|
||||
plugin.saveConfig();
|
||||
plugin.saveDefaultConfig();
|
||||
|
||||
SidebarScoreboard scoreboard = new SidebarScoreboard(plugin); // Make new Scoreboard instance
|
||||
|
||||
player.sendMessage(Component.text("Plugin configs were reloaded!"));
|
||||
player.sendMessage(Component.text("Please note that settings relating to events are not reloaded." +
|
||||
"\nIf you have made such changes, a server reload/restart is required.").color(NamedTextColor.GRAY));
|
||||
|
||||
+5
-2
@@ -17,6 +17,7 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import javax.swing.text.html.HTMLDocument;
|
||||
import java.util.Random;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class KillEffect implements Listener {
|
||||
@@ -99,14 +100,16 @@ public class KillEffect implements Listener {
|
||||
}
|
||||
|
||||
public static void bloodExplosion(Location location) {
|
||||
|
||||
Random rnd = new Random();
|
||||
for (float i = 0.5f; i < 1.8f; i += 0.1) {
|
||||
float rndFloat = rnd.nextFloat() / 10;
|
||||
location.getWorld().spawnParticle(
|
||||
Particle.BLOCK_CRACK,
|
||||
location.add(0,i,0),
|
||||
location.add(rndFloat,i,rndFloat),
|
||||
20,
|
||||
Material.REDSTONE_BLOCK.createBlockData()
|
||||
);
|
||||
location.subtract(rndFloat, i, rndFloat);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -176,12 +176,10 @@ public class LanguageConfig {
|
||||
defaults.put("SCOREBOARD_PERSONAL_KD", " &7K/D Ratio: &b%VALUE%");
|
||||
defaults.put("SCOREBOARD_PERSONAL_LEVEL", " &7Level: &b%VALUE%");
|
||||
defaults.put("SCOREBOARD_GLOBAL_TITLE", "&6Global Stats");
|
||||
defaults.put("SCOREBOARD_GLOBAL_KILLSTREAK", " &7Killstreak");
|
||||
defaults.put("SCOREBOARD_GLOBAL_KILLS", " &7Kills");
|
||||
defaults.put("SCOREBOARD_GLOBAL_KD", " &7K/D Ratio");
|
||||
defaults.put("SCOREBOARD_GLOBAL_LEVEL", " &7Level");
|
||||
|
||||
|
||||
defaults.put("SCOREBOARD_GLOBAL_KILLSTREAK", " &dKillstreak");
|
||||
defaults.put("SCOREBOARD_GLOBAL_KILLS", " &dKills");
|
||||
defaults.put("SCOREBOARD_GLOBAL_KD", " &dK/D Ratio");
|
||||
defaults.put("SCOREBOARD_GLOBAL_LEVEL", " &dLevel");
|
||||
|
||||
|
||||
customFile.addDefaults(defaults);
|
||||
|
||||
@@ -6,5 +6,7 @@ public class EventDataClass {
|
||||
public static boolean juggernautRunning = false;
|
||||
public static String juggernaut = "";
|
||||
|
||||
public static boolean doubleHealth = false;
|
||||
|
||||
|
||||
}
|
||||
+2
@@ -2,6 +2,7 @@ package me.lifelessnerd.purekitpvp.globalevents;
|
||||
|
||||
import me.lifelessnerd.purekitpvp.files.LanguageConfig;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.events.AbstractEvent;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.events.DoubleHealthEvent;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.events.PickupFrenzyEvent;
|
||||
import me.lifelessnerd.purekitpvp.globalevents.events.TeleMadnessEvent;
|
||||
import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
|
||||
@@ -37,6 +38,7 @@ public class GlobalEventManager {
|
||||
this.allEvents = new ArrayList<>();
|
||||
allEvents.add(new PickupFrenzyEvent(plugin));
|
||||
allEvents.add(new TeleMadnessEvent(plugin));
|
||||
allEvents.add(new DoubleHealthEvent(plugin));
|
||||
|
||||
enabledByConfig = new ArrayList<>();
|
||||
for (AbstractEvent event : this.allEvents) {
|
||||
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package me.lifelessnerd.purekitpvp.globalevents.events;
|
||||
|
||||
import me.lifelessnerd.purekitpvp.globalevents.EventDataClass;
|
||||
import me.lifelessnerd.purekitpvp.utils.PlayerUtils;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class DoubleHealthEvent extends AbstractEvent{
|
||||
|
||||
BukkitTask eventLoop;
|
||||
|
||||
public DoubleHealthEvent(Plugin plugin) {
|
||||
super(plugin);
|
||||
this.eventLength = plugin.getConfig().getInt("double-health-length");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventName() {
|
||||
return "Double Health";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getEventDescription() {
|
||||
return Component.text(""); // TODO add lang defs
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
this.running = true;
|
||||
EventDataClass.doubleHealth = true;
|
||||
Set<Player> players = PlayerUtils.getPlayersInWorld(plugin.getConfig().getString("world"));
|
||||
for (Player player : players){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
}
|
||||
startEndListener(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pauseResumePasser(boolean paused) {
|
||||
pauseResumeAbstractEvent(paused, eventLoop);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnd() {
|
||||
EventDataClass.doubleHealth = false;
|
||||
Set<Player> players = PlayerUtils.getPlayersInWorld(plugin.getConfig().getString("world"));
|
||||
for (Player player : players){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
}
|
||||
this.running = false;
|
||||
}
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package me.lifelessnerd.purekitpvp.globalevents.events;
|
||||
|
||||
import me.lifelessnerd.purekitpvp.globalevents.EventDataClass;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
public class DoubleHealthListeners implements Listener {
|
||||
Plugin plugin;
|
||||
public DoubleHealthListeners(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent e){
|
||||
Player player = e.getPlayer();
|
||||
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
|
||||
return;
|
||||
}
|
||||
|
||||
if (EventDataClass.doubleHealth){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(40.0D);
|
||||
// TODO and set HP to be max instantly DO THIS EVERYWHERE
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent e){
|
||||
Player player = e.getPlayer();
|
||||
if (!(player.getWorld().getName().equalsIgnoreCase(plugin.getConfig().getString("world")))){
|
||||
return;
|
||||
}
|
||||
if (EventDataClass.doubleHealth){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(20.0D);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWorldChange(PlayerChangedWorldEvent e){
|
||||
Player player = e.getPlayer();
|
||||
World fromWorld = e.getFrom();
|
||||
if (fromWorld.getName().equals(plugin.getConfig().getString("world"))){
|
||||
return;
|
||||
}
|
||||
if (EventDataClass.doubleHealth){
|
||||
AttributeInstance attribute = player.getAttribute(Attribute.GENERIC_MAX_HEALTH);
|
||||
attribute.setBaseValue(20.0D);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,27 +9,12 @@ import java.util.TreeMap;
|
||||
public class sample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Map<Integer, Integer> treeMap = new TreeMap<>();
|
||||
|
||||
// Adding elements to the tree map
|
||||
treeMap.put(1, 0);
|
||||
treeMap.put(2, 0);
|
||||
treeMap.put(3, 0);
|
||||
Double doublet = 0.1;
|
||||
|
||||
ArrayList<String> array = new ArrayList<>();
|
||||
Double inty = 23.0;
|
||||
System.out.println(doublet);
|
||||
|
||||
// Iterating over the elements of the tree map
|
||||
int enumerator = 0;
|
||||
for (Integer key : treeMap.keySet()) {
|
||||
if (enumerator >= 6){
|
||||
break;
|
||||
}
|
||||
array.add("Key: " + key + ", Value: " + treeMap.get(key));
|
||||
enumerator++;
|
||||
}
|
||||
|
||||
var dab = "dab";
|
||||
System.out.println(array);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package me.lifelessnerd.purekitpvp.scoreboards;
|
||||
|
||||
|
||||
import me.catcoder.sidebar.Sidebar;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class GlobalStats {
|
||||
|
||||
Plugin plugin;
|
||||
|
||||
public GlobalStats(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public static void appendLines(Sidebar<Component> sidebar){
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package me.lifelessnerd.purekitpvp.scoreboards;
|
||||
|
||||
import me.catcoder.sidebar.Sidebar;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PersonalStats {
|
||||
Plugin plugin;
|
||||
|
||||
public PersonalStats(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public static void updateBoard(Sidebar<Component> sidebar, Player player){
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
+33
-13
@@ -13,16 +13,21 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class SidebarScoreboard implements Listener {
|
||||
Plugin plugin;
|
||||
|
||||
|
||||
public SidebarScoreboard(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
||||
refreshLeaderboard();
|
||||
|
||||
if (plugin.getConfig().getBoolean("scoreboard-enabled")){
|
||||
refreshLeaderboard();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,8 +56,9 @@ public class SidebarScoreboard implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
long period = plugin.getConfig().getInt("scoreboard-period") * 20L;
|
||||
SidebarPager<Component> pager = new SidebarPager<>(
|
||||
enabledSidebars, plugin.getConfig().getInt("scoreboard-period") * 20L, plugin);
|
||||
enabledSidebars, period, plugin);
|
||||
|
||||
// add page status line to all sidebars in pager
|
||||
pager.addPageLine((page, maxPage, sidebar) ->
|
||||
@@ -61,7 +67,20 @@ public class SidebarScoreboard implements Listener {
|
||||
|
||||
for (Player player : players){
|
||||
pager.show(player);
|
||||
if (!(plugin.getConfig().getBoolean("scoreboard-enabled"))){
|
||||
pager.hide(player);
|
||||
}
|
||||
}
|
||||
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (plugin.getConfig().getBoolean("scoreboard-enabled")){
|
||||
refreshLeaderboard();
|
||||
}
|
||||
pager.destroy();
|
||||
}
|
||||
}.runTaskLater(plugin, period * 2);
|
||||
}
|
||||
|
||||
|
||||
@@ -101,15 +120,12 @@ public class SidebarScoreboard implements Listener {
|
||||
createdLeaderboard = new ArrayList<>(); // This is empty; only happens when there are no/faulty values defined
|
||||
break;
|
||||
}
|
||||
System.out.println("LIST: " + createdLeaderboard);
|
||||
|
||||
for (Component line : createdLeaderboard){
|
||||
sidebar.addUpdatableLine(
|
||||
(player) -> {
|
||||
System.out.println("testing");
|
||||
refreshLeaderboard(); // I need to make this function anyway to make it work with /pkpvp reload
|
||||
return line;
|
||||
}
|
||||
// TODO test this
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -119,21 +135,19 @@ public class SidebarScoreboard implements Listener {
|
||||
|
||||
|
||||
private ArrayList<Component> createLeaderboard(String statKey, int places) {
|
||||
HashMap<String, Integer> leaderboard = new HashMap<>();
|
||||
HashMap<String, Double> leaderboard = new HashMap<>();
|
||||
|
||||
Set<String> players = PlayerStatsConfig.get().getKeys(false);
|
||||
System.out.println(players.size() + "," + places);
|
||||
|
||||
for (String player : players){
|
||||
int statValue = PlayerStatsConfig.get().getInt(player + statKey);
|
||||
double statValue = PlayerStatsConfig.get().getDouble(player + statKey);
|
||||
leaderboard.put(player, statValue);
|
||||
}
|
||||
|
||||
ArrayList<Component> toBeReturned = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < places; i++) {
|
||||
System.out.println(i);
|
||||
System.out.println(leaderboard);
|
||||
int highestScore = 0;
|
||||
double highestScore = 0;
|
||||
String highestPlayer = null;
|
||||
for (String player : leaderboard.keySet()) {
|
||||
if (leaderboard.get(player) > highestScore) {
|
||||
@@ -142,7 +156,13 @@ public class SidebarScoreboard implements Listener {
|
||||
}
|
||||
}
|
||||
if (highestPlayer != null) {
|
||||
toBeReturned.add(Component.text(highestPlayer + " - " + highestScore, NamedTextColor.GRAY));
|
||||
highestScore = DoubleUtils.round(highestScore, 2);
|
||||
if (highestScore % 1 == 0){
|
||||
int highestScoreInt = (int) highestScore;
|
||||
toBeReturned.add(Component.text(" " + highestPlayer + " - ", NamedTextColor.GRAY).append(Component.text(highestScoreInt, NamedTextColor.AQUA)));
|
||||
} else {
|
||||
toBeReturned.add(Component.text(" " + highestPlayer + " - ", NamedTextColor.GRAY).append(Component.text(highestScore, NamedTextColor.AQUA)));
|
||||
}
|
||||
leaderboard.remove(highestPlayer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class TabManager {
|
||||
public TabManager(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
// CURRENTLY NOT IN USE
|
||||
public void showTab(){
|
||||
if(header == null && footer == null) return;
|
||||
|
||||
@@ -33,8 +33,7 @@ public class TabManager {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
// TODO
|
||||
// get stats and such -- let owner choose what info? loop to append certain stats
|
||||
// CURRENTLY NOT IN USE
|
||||
|
||||
net.minecraft.network.chat.Component headerTBS = ComponentUtils.toMojangComponent(header);
|
||||
net.minecraft.network.chat.Component footerTBS = ComponentUtils.toMojangComponent(footer);
|
||||
@@ -55,7 +54,7 @@ public class TabManager {
|
||||
}, 10, plugin.getConfig().getLong("tab-refresh-period"));
|
||||
|
||||
}
|
||||
|
||||
// CURRENTLY NOT IN USE
|
||||
public void addHeader(Component header){
|
||||
this.header = this.header.append(header).appendNewline();
|
||||
}
|
||||
|
||||
@@ -83,36 +83,42 @@ global-event-loop: true
|
||||
global-event-period: 300
|
||||
|
||||
# Events that occur in global combat event loop
|
||||
global-events-enabled: ["TeleMadness","Pickup Frenzy"]
|
||||
global-events-enabled: ["TeleMadness","Pickup Frenzy", "Double Health"]
|
||||
|
||||
# Event lengths in seconds
|
||||
telemadness-length: 30
|
||||
pickup-frenzy-length: 60
|
||||
juggernaut-length: 60
|
||||
double-health-length: 60
|
||||
|
||||
# Scoreboard is in BETA; reloading the plugin might not fully reload scoreboard or it might introduce bugs
|
||||
# When any bugs relating to the scoreboard arise, reloading will most likely solve them.
|
||||
# If bugs are persistent; report them please -> /purekitpvp info
|
||||
# Scoreboard Sidebar - enabled?
|
||||
scoreboard-enabled: true
|
||||
scoreboard-title: "&6&lPureKitPvP"
|
||||
|
||||
# Time between slides in seconds
|
||||
scoreboard-period: 10
|
||||
|
||||
# Slides of the sidebar scoreboard
|
||||
# Choices: GlobalStats, PersonalStats
|
||||
enabled-slides:
|
||||
- GlobalStats
|
||||
- PersonalStats
|
||||
|
||||
# What components of the global stats should be displayed
|
||||
# Choices: Killstreak, Level, Kills, KD
|
||||
global-stats-components:
|
||||
- Killstreak
|
||||
- Level
|
||||
- Kills
|
||||
- KD
|
||||
|
||||
# Amount of places for players per component: if all components are enabled 2 is max here
|
||||
# Amount of places for players per component:
|
||||
# !! If all components above are enabled 2 IS MAX HERE!
|
||||
global-stats-place-amount: 2
|
||||
|
||||
|
||||
# What components of the personal stats should be displayed
|
||||
# Choices: Killstreak, Level, Kills, KD, Deaths
|
||||
personal-stats-components:
|
||||
- Killstreak
|
||||
- Kills
|
||||
|
||||
Reference in new issue
Block a user