too lazy to write this

This commit is contained in:
Matheus 2024-04-08 09:46:28 -04:00
parent 3e10a8cac9
commit 4d7ea1a388
26 changed files with 172 additions and 107 deletions

View File

@ -1,7 +1,7 @@
package dev.lugami.otaku; package dev.lugami.otaku;
import dev.lugami.otaku.utils.CC;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.bukkit.ChatColor;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
@ -14,24 +14,28 @@ public enum Language {
REKIT_COOLDOWN("COOLDOWN.REKIT"), REKIT_COOLDOWN("COOLDOWN.REKIT"),
COMBAT_COOLDOWN("COOLDOWN.COMBAT"), COMBAT_COOLDOWN("COOLDOWN.COMBAT"),
NO_PEARL_COOLDOWN("NO-COOLDOWN.PEARL"), NO_PEARL_COOLDOWN("NO-COOLDOWN.PEARL"),
NO_COMBAT_COOLDOWN("NO-COOLDOWN.COMBAT"); NO_COMBAT_COOLDOWN("NO-COOLDOWN.COMBAT"),
CANT_DROP_ITEM("ERROR.CANT-DROP-ITEM"),
KIT_DOESNT_EXIST("ERROR.KIT-DOESNT-EXIST"),
KIT_ALREADY_EXISTS("ERROR.KIT-ALREADY-EXISTS"),
KIT_SPAWN_UNSET("ERROR.KIT-SPAWN-NOT-SET"),
NOT_PLAYING("ERROR.NOT-PLAYING-FFA"),
ALREADY_PLAYING("ERROR.ALREADY-PLAYING-FFA");
private String path; private String path;
public String format(Object... objects) { public String format(Object... objects) {
return new MessageFormat(ChatColor.translateAlternateColorCodes('&', return new MessageFormat(CC.translate(Main.getInstance().getLangConfig().getString(path))).format(objects);
Main.getInstance().getLangConfig().getString(path))).format(objects);
} }
public List<String> formatLines(Object... objects) { public List<String> formatLines(Object... objects) {
List<String> lines = new ArrayList<>(); List<String> lines = new ArrayList<>();
if (Main.getInstance().getLangConfig().get(path) instanceof String) { if (Main.getInstance().getLangConfig().get(path) instanceof String) {
lines.add(new MessageFormat(ChatColor.translateAlternateColorCodes('&', lines.add(new MessageFormat(CC.translate(Main.getInstance().getLangConfig().getString(path))).format(objects));
Main.getInstance().getLangConfig().getString(path))).format(objects));
} else { } else {
for (String string : Main.getInstance().getLangConfig().getStringList(path)) { for (String string : Main.getInstance().getLangConfig().getStringList(path)) {
lines.add(new MessageFormat(ChatColor.translateAlternateColorCodes('&', string)) lines.add(new MessageFormat(CC.translate(string))
.format(objects)); .format(objects));
} }
} }

View File

@ -76,6 +76,7 @@ public class Main extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
for (Player player : getServer().getOnlinePlayers()) { for (Player player : getServer().getOnlinePlayers()) {
Profile.getOrCreate(player).save();
player.kickPlayer("Server restarting"); player.kickPlayer("Server restarting");
} }
Kit.saveAll(); Kit.saveAll();

View File

@ -20,10 +20,10 @@ public class Board implements AssembleAdapter {
@Override @Override
public List<String> getLines(Player player) { public List<String> getLines(Player player) {
List<String> strings = Lists.newArrayList(); List<String> lines = Lists.newArrayList();
Profile profile = Profile.getOrCreate(player); Profile profile = Profile.getOrCreate(player);
if (profile == null) { if (profile == null) {
strings.addAll(CC.translate(Main.getInstance().getScoreboardConfig().getStringList("scoreboard.profile"))); lines.addAll(CC.translate(Main.getInstance().getScoreboardConfig().getStringList("scoreboard.profile")));
} else { } else {
if (!profile.getSettings().scoreboard()) { if (!profile.getSettings().scoreboard()) {
return null; return null;
@ -31,38 +31,50 @@ public class Board implements AssembleAdapter {
switch (profile.getState()) { switch (profile.getState()) {
case LOBBY: case LOBBY:
for (String s : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.lobby")) { for (String s : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.lobby")) {
if (s.equals("<combat>") && !Main.getInstance().getCombatManager().isInCombat(player) lines.add(providePlaceholders(s, player));
|| s.equals("<pearl>") && !Main.getInstance().getEnderpearlManager().isPearlCooldown(player)) continue;
strings.add(providePlaceholders(s, player));
} }
break; break;
case PLAYING: case PLAYING:
for (String s : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.ffa")) { for (String s : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.ffa")) {
if (s.equals("<combat>") && !Main.getInstance().getCombatManager().isInCombat(player) if (s.equals("<combat>") && !Main.getInstance().getCombatManager().isInCombat(player)
|| s.equals("<pearl>") && !Main.getInstance().getEnderpearlManager().isPearlCooldown(player)) continue; || s.equals("<pearl>") && !Main.getInstance().getEnderpearlManager().isPearlCooldown(player))
strings.add(providePlaceholders(s, player)); continue;
if (s.equals("<combat>") && Main.getInstance().getCombatManager().isInCombat(player)) {
lines.addAll(Main.getInstance().getScoreboardConfig().getStringList("scoreboard.combat-addition"));
continue;
}
if (s.equals("<pearl>") && Main.getInstance().getEnderpearlManager().isPearlCooldown(player)) {
if (Main.getInstance().getCombatManager().isInCombat(player)) {
for (String z : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.enderpearl-addition.combat")) {
if (z.contains("<seconds>")) {
z = z.replace("<seconds>", String.valueOf(Main.getInstance().getEnderpearlManager().getPearlCooldown(player)));
}
lines.add(z);
}
} else {
for (String z : Main.getInstance().getScoreboardConfig().getStringList("scoreboard.enderpearl-addition.no-combat")) {
if (z.contains("<seconds>")) {
z = z.replace("<seconds>", String.valueOf(Main.getInstance().getEnderpearlManager().getPearlCooldown(player)));
}
lines.add(z);
}
}
continue;
}
lines.add(providePlaceholders(s, player));
} }
break; break;
} }
} }
return strings; return lines;
} }
private String providePlaceholders(String s, Player player) { private String providePlaceholders(String s, Player player) {
final String COMBAT_PLACEHOLDER = "<combat>";
final String PEARL_PLACEHOLDER = "<pearl>";
Profile profile = Profile.getOrCreate(player); Profile profile = Profile.getOrCreate(player);
if (profile == null) return null; if (profile == null) return null;
if (s.equals(COMBAT_PLACEHOLDER) && Main.getInstance().getCombatManager().isInCombat(player)) { if (profile.getState() == ProfileState.PLAYING && profile.getFFA() != null) {
String combatAddition = Main.getInstance().getScoreboardConfig().getString("scoreboard.combat-addition");
String seconds = String.valueOf(Main.getInstance().getCombatManager().getCombatTime(player));
s = s.replace(COMBAT_PLACEHOLDER, combatAddition.replace("<seconds>", seconds));
} else if (s.equals(PEARL_PLACEHOLDER) && Main.getInstance().getEnderpearlManager().isPearlCooldown(player)) {
String pearlAddition = Main.getInstance().getScoreboardConfig().getString("scoreboard.enderpearl-addition");
String seconds = String.valueOf(Main.getInstance().getEnderpearlManager().getPearlCooldown(player));
s = s.replace(PEARL_PLACEHOLDER, pearlAddition.replace("<seconds>", seconds));
} else if (profile.getState() == ProfileState.PLAYING && profile.getFFA() != null) {
s = s.replace("<kills>", String.valueOf(profile.getKitData().get(profile.getFFA()).kills())) s = s.replace("<kills>", String.valueOf(profile.getKitData().get(profile.getFFA()).kills()))
.replace("<deaths>", String.valueOf(profile.getKitData().get(profile.getFFA()).deaths())) .replace("<deaths>", String.valueOf(profile.getKitData().get(profile.getFFA()).deaths()))
.replace("<killstreak>", String.valueOf(profile.getKitData().get(profile.getFFA()).killstreak())); .replace("<killstreak>", String.valueOf(profile.getKitData().get(profile.getFFA()).killstreak()));

View File

@ -1,6 +1,7 @@
package dev.lugami.otaku.commands; package dev.lugami.otaku.commands;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Main;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -8,11 +9,16 @@ import org.bukkit.entity.Player;
public class FFACommand { public class FFACommand {
public void execute(Player player) { public void execute(Player player) {
player.sendMessage(CC.CHAT_BAR); for (String s : Main.getInstance().getLangConfig().getStringList("COMMANDS.FFA.LINES")) {
player.sendMessage(CC.translate("&b/ffa join &7<kit>")); if (s.contains("<admin>")) {
player.sendMessage(CC.translate("&b/ffa leave")); for (String z : Main.getInstance().getLangConfig().getStringList("COMMANDS.FFA.ADMIN-ADDITION")) {
if (player.hasPermission("otaku.admin")) player.sendMessage(CC.translate("&b/ffa setspawn")); player.sendMessage(CC.translate(z));
player.sendMessage(CC.CHAT_BAR); }
continue;
}
player.sendMessage(CC.translate(s));
}
} }
} }

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.commands;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.events.FFAJoinEvent; import dev.lugami.otaku.events.FFAJoinEvent;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.profile.Profile; import dev.lugami.otaku.profile.Profile;
@ -21,7 +22,7 @@ public class FFAJoinCommand {
FFAJoinEvent event = new FFAJoinEvent(player, Kit.getByName(kit)); FFAJoinEvent event = new FFAJoinEvent(player, Kit.getByName(kit));
event.call(); event.call();
} else { } else {
player.sendMessage(CC.RED + "You're already on the FFA."); player.sendMessage(Language.ALREADY_PLAYING.format());
} }
} }

View File

@ -1,10 +1,10 @@
package dev.lugami.otaku.commands; package dev.lugami.otaku.commands;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.events.FFAReKitEvent; import dev.lugami.otaku.events.FFAReKitEvent;
import dev.lugami.otaku.profile.Profile; import dev.lugami.otaku.profile.Profile;
import dev.lugami.otaku.profile.data.ProfileState; import dev.lugami.otaku.profile.data.ProfileState;
import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@CommandMeta(label = "rekit") @CommandMeta(label = "rekit")
@ -13,7 +13,7 @@ public class ReKitCommand {
public void execute(Player player) { public void execute(Player player) {
Profile profile = Profile.getOrCreate(player); Profile profile = Profile.getOrCreate(player);
if (profile.getState() != ProfileState.PLAYING || profile.getFFA() == null) { if (profile.getState() != ProfileState.PLAYING || profile.getFFA() == null) {
player.sendMessage(CC.RED + "You're not playing on the FFA"); player.sendMessage(Language.NOT_PLAYING.format());
return; return;
} }
(new FFAReKitEvent(player, profile.getFFA(), false)).call(); (new FFAReKitEvent(player, profile.getFFA(), false)).call();

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -11,7 +12,7 @@ public class KitCreateCommand {
public void execute(Player player, @CPL("name") String kitName) { public void execute(Player player, @CPL("name") String kitName) {
if (Kit.getByName(kitName) != null) { if (Kit.getByName(kitName) != null) {
player.sendMessage(CC.RED + "A kit with that name already exists."); player.sendMessage(Language.KIT_ALREADY_EXISTS.format());
return; return;
} }

View File

@ -1,6 +1,7 @@
package dev.lugami.otaku.commands.kit; package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -9,7 +10,7 @@ import org.bukkit.entity.Player;
public class KitDeleteCommand { public class KitDeleteCommand {
public void execute(Player player, Kit kit) { public void execute(Player player, Kit kit) {
if (kit == null) { if (kit == null) {
player.sendMessage(CC.RED + "A kit with that name does not exist."); player.sendMessage(Language.KIT_DOESNT_EXIST.format());
return; return;
} }

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -11,7 +12,7 @@ public class KitGetLoadoutCommand {
public void execute(Player player, @CPL("kit") String kit) { public void execute(Player player, @CPL("kit") String kit) {
if (Kit.getByName(kit) == null) { if (Kit.getByName(kit) == null) {
player.sendMessage(CC.RED + "A kit with that name does not exist."); player.sendMessage(Language.KIT_DOESNT_EXIST.format());
return; return;
} }

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -11,7 +12,7 @@ public class KitSetIconCommand {
public void execute(Player player, @CPL("kit") String kit) { public void execute(Player player, @CPL("kit") String kit) {
if (Kit.getByName(kit) == null) { if (Kit.getByName(kit) == null) {
player.sendMessage(CC.RED + "A kit with that name does not exist."); player.sendMessage(Language.KIT_DOESNT_EXIST.format());
return; return;
} }

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -11,7 +12,7 @@ public class KitSetLoadoutCommand {
public void execute(Player player, @CPL("kit") String kit) { public void execute(Player player, @CPL("kit") String kit) {
if (Kit.getByName(kit) == null) { if (Kit.getByName(kit) == null) {
player.sendMessage(CC.RED + "A kit with that name does not exist."); player.sendMessage(Language.KIT_DOESNT_EXIST.format());
return; return;
} }

View File

@ -2,20 +2,17 @@ package dev.lugami.otaku.commands.kit;
import com.qrakn.honcho.command.CPL; import com.qrakn.honcho.command.CPL;
import com.qrakn.honcho.command.CommandMeta; import com.qrakn.honcho.command.CommandMeta;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import dev.lugami.otaku.utils.LocationUtil;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.Objects;
@CommandMeta(label = "kit setlocation", permission = "otaku.kit.setlocation") @CommandMeta(label = "kit setlocation", permission = "otaku.kit.setlocation")
public class KitSetLocationCommand { public class KitSetLocationCommand {
public void execute(Player player, @CPL("kit") String kit) { public void execute(Player player, @CPL("kit") String kit) {
if (Kit.getByName(kit) == null) { if (Kit.getByName(kit) == null) {
player.sendMessage(CC.RED + "A kit with that name does not exist."); player.sendMessage(Language.KIT_DOESNT_EXIST.format());
return;
} else { } else {
Kit.getByName(kit).setLocation(player.getLocation()); Kit.getByName(kit).setLocation(player.getLocation());
player.sendMessage(CC.GREEN + "The location for " + kit + " has been set!"); player.sendMessage(CC.GREEN + "The location for " + kit + " has been set!");

View File

@ -80,13 +80,8 @@ public class Essentials {
if (entity.getType() == EntityType.PLAYER) { if (entity.getType() == EntityType.PLAYER) {
continue; continue;
} }
if (entity instanceof Item) {
removed++;
entity.remove();
continue;
}
removed++; removed++;
entity.remove(); entity.remove();
} }
} }

View File

@ -1,12 +1,14 @@
package dev.lugami.otaku.essentials; package dev.lugami.otaku.essentials;
import dev.lugami.otaku.Main; import dev.lugami.otaku.Main;
import dev.lugami.otaku.events.FFADeathEvent;
import dev.lugami.otaku.hotbar.Hotbar; import dev.lugami.otaku.hotbar.Hotbar;
import dev.lugami.otaku.kit.Kit; import dev.lugami.otaku.kit.Kit;
import dev.lugami.otaku.profile.Profile; import dev.lugami.otaku.profile.Profile;
import dev.lugami.otaku.profile.data.ProfileState; import dev.lugami.otaku.profile.data.ProfileState;
import dev.lugami.otaku.utils.CC; import dev.lugami.otaku.utils.CC;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -17,12 +19,13 @@ import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.event.player.PlayerItemDamageEvent;
import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.event.world.ChunkUnloadEvent;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class EssentialsListener implements Listener { public class EssentialsListener implements Listener {
private static List<String> BLOCKED_COMMANDS = Arrays.asList( private static final List<String> BLOCKED_COMMANDS = Arrays.asList(
"//calc", "//calc",
"//eval", "//eval",
"//solve", "//solve",
@ -45,14 +48,12 @@ public class EssentialsListener implements Listener {
for (String blockedCommand : BLOCKED_COMMANDS) { for (String blockedCommand : BLOCKED_COMMANDS) {
for (String part : commandParts) { for (String part : commandParts) {
if (part.startsWith(blockedCommand)) { if (part.startsWith(blockedCommand)) {
// Check for exact matches only
if (part.equalsIgnoreCase(blockedCommand)) { if (part.equalsIgnoreCase(blockedCommand)) {
if (blockedCommand.equalsIgnoreCase("/version") || blockedCommand.equalsIgnoreCase("/ver")) { if (blockedCommand.equalsIgnoreCase("/version") || blockedCommand.equalsIgnoreCase("/ver")) {
if (event.getPlayer().isOp()) { if (event.getPlayer().isOp()) {
return; return;
} }
} }
player.sendMessage(CC.RED + "You cannot perform this command."); player.sendMessage(CC.RED + "You cannot perform this command.");
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -106,8 +107,9 @@ public class EssentialsListener implements Listener {
Kit kit = profile.getFFA(); Kit kit = profile.getFFA();
if (kit.getKitRules().isNoDamage()) { if (kit.getKitRules().isNoDamage()) {
event.setDamage(0.0); event.setDamage(0.0);
} else if (kit.getKitRules().isNoFall() && event.getCause() == EntityDamageEvent.DamageCause.VOID) { } else if (event.getCause() == EntityDamageEvent.DamageCause.VOID) {
event.setCancelled(true); CraftPlayer player = ((CraftPlayer) event.getEntity());
new FFADeathEvent(player, new ArrayList<>()).call();
} }
} }
} }

View File

@ -0,0 +1,22 @@
package dev.lugami.otaku.events;
import dev.lugami.otaku.utils.BaseEvent;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class FFADeathEvent extends BaseEvent {
private final Player player;
private final List<ItemStack> drops;
public FFADeathEvent(Player p, List<ItemStack> d) {
player = p;
drops = d;
}
}

View File

@ -1,7 +1,6 @@
package dev.lugami.otaku.hotbar; package dev.lugami.otaku.hotbar;
import dev.lugami.otaku.Main; import dev.lugami.otaku.Main;
import dev.lugami.otaku.profile.Profile;
import dev.lugami.otaku.utils.ItemBuilder; import dev.lugami.otaku.utils.ItemBuilder;
import dev.lugami.otaku.utils.PlayerUtil; import dev.lugami.otaku.utils.PlayerUtil;
import lombok.Getter; import lombok.Getter;
@ -39,8 +38,6 @@ public class Hotbar {
} }
public static boolean setup(Player player) { public static boolean setup(Player player) {
Profile profile = Profile.getOrCreate(player);
ItemStack[] itemStacks = new ItemStack[9]; ItemStack[] itemStacks = new ItemStack[9];
Arrays.fill(itemStacks, null); Arrays.fill(itemStacks, null);
try { try {

View File

@ -5,11 +5,12 @@ import lombok.Setter;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@Getter
public enum HotbarItem { public enum HotbarItem {
MAIN_MENU("menu"); MAIN_MENU("menu");
@Getter private String command; private final String command;
@Getter @Setter private Pattern pattern; @Setter private Pattern pattern;
HotbarItem(String command) { HotbarItem(String command) {
this.command = command; this.command = command;

View File

@ -50,7 +50,11 @@ public class Leaderboards {
int kills = kitSection.getInt("kills"); int kills = kitSection.getInt("kills");
int killstreak = kitSection.getInt("killstreak"); int killstreak = kitSection.getInt("killstreak");
int deaths = kitSection.getInt("deaths"); int deaths = kitSection.getInt("deaths");
ProfileKitData data = new ProfileKitData(kills, killstreak, deaths); ProfileKitData data = new ProfileKitData();
data.kills(kills);
data.killstreak(killstreak);
data.deaths(deaths);
//data.KDR((float) kills / deaths);
map.put(name, data); map.put(name, data);
} }
} }
@ -81,8 +85,6 @@ public class Leaderboards {
Integer kills = (kitDocument != null) ? kitDocument.getInteger("kills") : null; Integer kills = (kitDocument != null) ? kitDocument.getInteger("kills") : null;
Integer killstreak = (kitDocument != null) ? kitDocument.getInteger("killstreak") : null; Integer killstreak = (kitDocument != null) ? kitDocument.getInteger("killstreak") : null;
Integer deaths = (kitDocument != null) ? kitDocument.getInteger("deaths") : null; Integer deaths = (kitDocument != null) ? kitDocument.getInteger("deaths") : null;
// Use a default value if elo is null
kills = (kills != null) ? kills : 0; kills = (kills != null) ? kills : 0;
deaths = (deaths != null) ? deaths : 0; deaths = (deaths != null) ? deaths : 0;
killstreak = (killstreak != null) ? killstreak : 0; killstreak = (killstreak != null) ? killstreak : 0;

View File

@ -53,7 +53,7 @@ public class LeaderboardsMenu extends Menu {
} }
@AllArgsConstructor @AllArgsConstructor
private class KitStatsButton extends Button { private static class KitStatsButton extends Button {
private final Kit kit; private final Kit kit;
@ -63,7 +63,7 @@ public class LeaderboardsMenu extends Menu {
lore.add(CC.MENU_BAR); lore.add(CC.MENU_BAR);
int pos = 1; int pos = 1;
for (LeaderboardsEntry entry : Leaderboards.getLeaderboards().get(kit)) { for (LeaderboardsEntry entry : Leaderboards.getLeaderboards().get(kit)) {
lore.add("&b" +pos + ". " + entry.name() + "&7 - " + entry.kills() + "/" + entry.killstreak() + "/" + entry.deaths()); lore.add("&b" + pos + ". " + entry.name() + "&7 - " + entry.kills() + "/" + entry.killstreak() + "/" + entry.deaths());
pos++; pos++;
} }
lore.add(CC.MENU_BAR); lore.add(CC.MENU_BAR);

View File

@ -2,6 +2,7 @@ package dev.lugami.otaku.listener;
import dev.lugami.otaku.Language; import dev.lugami.otaku.Language;
import dev.lugami.otaku.Main; import dev.lugami.otaku.Main;
import dev.lugami.otaku.events.FFADeathEvent;
import dev.lugami.otaku.events.FFAJoinEvent; import dev.lugami.otaku.events.FFAJoinEvent;
import dev.lugami.otaku.events.FFAQuitEvent; import dev.lugami.otaku.events.FFAQuitEvent;
import dev.lugami.otaku.events.FFAReKitEvent; import dev.lugami.otaku.events.FFAReKitEvent;
@ -21,7 +22,6 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
@ -38,7 +38,7 @@ public class FFAListener implements Listener {
setupFFA(player, event.getKit()); setupFFA(player, event.getKit());
Profile.getOrCreate(player).setState(ProfileState.PLAYING); Profile.getOrCreate(player).setState(ProfileState.PLAYING);
} else { } else {
player.sendMessage(CC.RED + "The spawn location for this kit is not set!"); player.sendMessage(Language.KIT_SPAWN_UNSET.format());
} }
} }
@ -117,16 +117,19 @@ public class FFAListener implements Listener {
@EventHandler @EventHandler
public void death(PlayerDeathEvent event) { public void death(PlayerDeathEvent event) {
event.setDeathMessage(null); event.setDeathMessage(null);
Player player = event.getEntity(); new FFADeathEvent(event.getEntity(), event.getDrops()).call();
}
@EventHandler
public void handleDeath(FFADeathEvent event) {
Player player = event.getPlayer();
player.spigot().respawn(); player.spigot().respawn();
Profile profile = Profile.getOrCreate(player); Profile profile = Profile.getOrCreate(player);
Player killer = PlayerUtil.getLastAttacker(player); Player killer = PlayerUtil.getLastAttacker(player);
ItemStack[] contents = event.getDrops().toArray(new ItemStack[0]); if (profile.getState() == ProfileState.PLAYING && event.getPlayer() != null) {
ItemStack[] killerContents = killer != null ? killer.getInventory().getContents() : null;
if (profile.getState() == ProfileState.PLAYING && event.getEntity() != null) {
for (Player player1 : FFACache.getFFAList().get(profile.getFFA())) { for (Player player1 : FFACache.getFFAList().get(profile.getFFA())) {
LightningUtil.spawnLightning(player1, player.getLocation()); LightningUtil.spawnLightning(player1, player.getLocation());
player1.sendMessage(CC.translate("&a" + player.getName() + " [" + PlayerUtil.getRemainingPotions(contents) + "] &7died" + (killer != null ? " to &c" + killer.getName() + " [" + PlayerUtil.getRemainingPotions(killerContents) + "]&7." : "&7."))); player1.sendMessage(CC.translate("&a" + player.getName() + " &7died" + (killer != null ? " to &c" + killer.getName() + "&7." : "&7.")));
} }
PlayerUtil.reset(player); PlayerUtil.reset(player);
if (player.isDead()) { if (player.isDead()) {
@ -154,6 +157,7 @@ public class FFAListener implements Listener {
@Override @Override
public void run() { public void run() {
if (setupFFA(player, profile.getFFA())) { if (setupFFA(player, profile.getFFA())) {
// Ignored. I don't even know why this is an boolean but okay :skull:
} else this.run(); } else this.run();
if (killer != null && Profile.getOrCreate(killer).getSettings().autoRekit()) { if (killer != null && Profile.getOrCreate(killer).getSettings().autoRekit()) {
(new FFAReKitEvent(killer, profile.getFFA(), true)).call(); (new FFAReKitEvent(killer, profile.getFFA(), true)).call();
@ -202,18 +206,14 @@ public class FFAListener implements Listener {
@EventHandler @EventHandler
public void onDamage(EntityDamageEvent event) { public void onDamage(EntityDamageEvent event) {
if (event.getEntity() instanceof Player) { if (event.getEntity() instanceof Player) {
if (Profile.getOrCreate((Player) event.getEntity()).getFFA().getKitRules().isNoDamage()) {
event.setDamage(0.0);
return;
}
if (event.getCause() == EntityDamageEvent.DamageCause.FALL) { if (event.getCause() == EntityDamageEvent.DamageCause.FALL) {
if (Profile.getOrCreate((Player) event.getEntity()).getState() == ProfileState.PLAYING) event.setCancelled(Profile.getOrCreate((Player) event.getEntity()).getFFA().getKitRules().isNoFall()); if (Profile.getOrCreate((Player) event.getEntity()).getState() == ProfileState.PLAYING) event.setCancelled(Profile.getOrCreate((Player) event.getEntity()).getFFA().getKitRules().isNoFall());
} }
} }
} }
@EventHandler
public void onDamage2(EntityDamageByEntityEvent event) {
if (event.getEntity() instanceof Player) {
if (Profile.getOrCreate((Player) event.getEntity()).getFFA().getKitRules().isNoDamage()) event.setDamage(0.0);
}
}
} }

View File

@ -1,5 +1,6 @@
package dev.lugami.otaku.listener; package dev.lugami.otaku.listener;
import dev.lugami.otaku.Language;
import dev.lugami.otaku.Main; import dev.lugami.otaku.Main;
import dev.lugami.otaku.hotbar.Hotbar; import dev.lugami.otaku.hotbar.Hotbar;
import dev.lugami.otaku.profile.Profile; import dev.lugami.otaku.profile.Profile;
@ -31,7 +32,7 @@ public class GeneralListeners implements Listener {
if (isSword(droppedItem.getType()) && profile.getSettings().dropProtect()) { if (isSword(droppedItem.getType()) && profile.getSettings().dropProtect()) {
event.setCancelled(true); event.setCancelled(true);
event.getPlayer().sendMessage(CC.RED + "You cannot drop this item."); event.getPlayer().sendMessage(CC.translate(Language.CANT_DROP_ITEM.format()));
} }
} }
@ -123,7 +124,7 @@ public class GeneralListeners implements Listener {
if (attacker != null) { if (attacker != null) {
PlayerUtil.setLastAttacker(victim, attacker); PlayerUtil.setLastAttacker(victim, attacker);
if (attacker instanceof Player && attacker != victim) { if (attacker != victim) {
Main.getInstance().getCombatManager().setCombatTime(victim, 15); Main.getInstance().getCombatManager().setCombatTime(victim, 15);
Main.getInstance().getCombatManager().setCombatTime(attacker, 15); Main.getInstance().getCombatManager().setCombatTime(attacker, 15);
Main.getInstance().getCombatManager().setInCombat(victim, true); Main.getInstance().getCombatManager().setInCombat(victim, true);

View File

@ -12,6 +12,7 @@ import dev.lugami.otaku.utils.CC;
import dev.lugami.otaku.utils.Cooldown; import dev.lugami.otaku.utils.Cooldown;
import dev.lugami.otaku.utils.FFACache; import dev.lugami.otaku.utils.FFACache;
import dev.lugami.otaku.utils.SaveMethodType; import dev.lugami.otaku.utils.SaveMethodType;
import dev.lugami.otaku.utils.config.ConfigUtil;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;
import org.bson.Document; import org.bson.Document;
@ -20,7 +21,6 @@ import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.io.IOException;
import java.util.*; import java.util.*;
@Data @Data
@ -136,6 +136,7 @@ public class Profile {
profileKitData.kills(kitDocument.getInteger("kills")); profileKitData.kills(kitDocument.getInteger("kills"));
profileKitData.deaths(kitDocument.getInteger("deaths")); profileKitData.deaths(kitDocument.getInteger("deaths"));
profileKitData.killstreak(kitDocument.getInteger("killstreak")); profileKitData.killstreak(kitDocument.getInteger("killstreak"));
//profileKitData.KDR((float) profileKitData.kills() / profileKitData.deaths());
kitData.put(kit, profileKitData); kitData.put(kit, profileKitData);
} }
@ -193,11 +194,7 @@ public class Profile {
Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".scoreboard", settings.scoreboard()); Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".scoreboard", settings.scoreboard());
Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".autoRekit", settings.autoRekit()); Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".autoRekit", settings.autoRekit());
Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".dropProtect", settings.dropProtect()); Main.getInstance().getProfileConfig().getConfiguration().set("settings." + getPlayer().getName() + ".dropProtect", settings.dropProtect());
try { ConfigUtil.save(Main.getInstance().getProfileConfig());
Main.getInstance().getProfileConfig().getConfiguration().save(Main.getInstance().getProfileConfig().getFile());
} catch (IOException e) {
e.printStackTrace();
}
if (Main.getInstance().getSaveMethodType() == SaveMethodType.MONGO && collection == null) Bukkit.getLogger().warning("Profile#getCollection was null, so " + player.getName() + "'s profile was saved using the fallback flatfile method."); if (Main.getInstance().getSaveMethodType() == SaveMethodType.MONGO && collection == null) Bukkit.getLogger().warning("Profile#getCollection was null, so " + player.getName() + "'s profile was saved using the fallback flatfile method.");
} }
} }

View File

@ -1,12 +1,11 @@
package dev.lugami.otaku.profile.data; package dev.lugami.otaku.profile.data;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@Data @Accessors(fluent = true) @Data @Accessors(fluent = true)
@AllArgsConstructor @NoArgsConstructor @NoArgsConstructor
public class ProfileKitData { public class ProfileKitData {
private int kills; private int kills;

View File

@ -7,7 +7,7 @@ import java.util.UUID;
@Getter @Getter
public class PlayerEvent extends BaseEvent { public class PlayerEvent extends BaseEvent {
private Player player; private final Player player;
public PlayerEvent(Player player) { public PlayerEvent(Player player) {
this(player, false); this(player, false);
@ -17,10 +17,6 @@ public class PlayerEvent extends BaseEvent {
this.player = player; this.player = player;
} }
public Player getPlayer() {
return player;
}
public UUID getUniqueId() { public UUID getUniqueId() {
return player.getUniqueId(); return player.getUniqueId();
} }

View File

@ -5,4 +5,23 @@ COOLDOWN:
NO-COOLDOWN: NO-COOLDOWN:
PEARL: "&aYour pearl cooldown expired!" PEARL: "&aYour pearl cooldown expired!"
COMBAT: "&aYou're no longer in combat!" COMBAT: "&aYou're no longer in combat!"
ERROR:
CANT-DROP-ITEM: "&cYou cannot drop this item."
KIT-DOESNT-EXIST: "&cA kit with that name does not exist."
KIT-ALREADY-EXISTS: "&cA kit with that name already exists."
KIT-SPAWN-NOT-SET: "&cThe spawn location for this kit is not set!"
NOT-PLAYING-FFA: "&cYou're not playing on FFA."
ALREADY-PLAYING-FFA: "&cYou're already on the FFA."
COMMANDS:
FFA:
LINES:
- "&7&m------------------------------------------------"
- "&b/ffa join &7<kit>"
- "&b/ffa leave"
- "<admin>"
- "&7&m------------------------------------------------"
ADMIN-ADDITION:
- "&b/ffa setspawn"

View File

@ -1,29 +1,37 @@
scoreboard: scoreboard:
global: global:
title: "&b&lFFA" title: "&b&lAngolanos"
lobby: lobby:
- "&7&m---------------------" - "&7&m---------------------"
- "&bOnline: &f<online>" - "&fOnline: &b<online>"
- "&bPlaying: &f<playing>" - "&fPlaying: &b<playing>"
- "" - ""
- "&7&oilovefemboys.xyz" - "&7&oangolanos.fun"
- "&7&m---------------------" - "&7&m---------------------"
ffa: ffa:
- "&7&m---------------------" - "&7&m---------------------"
- "&bKills: &f<kills>" - "&fKills: &b<kills>"
- "&bDeaths: &f<deaths>" - "&fDeaths: &b<deaths>"
- "&bKillstreak: &f<killstreak>" - "&fKillstreak: &b<killstreak>"
- "<combat>" - "<combat>"
- "<pearl>" - "<pearl>"
- "" - ""
- "&7&oilovefemboys.xyz" - "&7&oangolanos.fun"
- "&7&m---------------------" - "&7&m---------------------"
profile: profile:
- "&7&m---------------------" - "&7&m---------------------"
- "&cYour profile was not loaded." - "&cYour profile was not loaded."
- "&cTry rejoining." - "&cTry rejoining."
- "" - ""
- "&7&oilovefemboys.xyz" - "&7&oangolanos.fun"
- "&7&m---------------------" - "&7&m---------------------"
combat-addition: "&c&lCombat Tag: <seconds>s" combat-addition:
enderpearl-addition: "&c&lEnderpearl: <seconds>s" - ""
- "&fCombat: &7(<seconds>)"
enderpearl-addition:
# considering combat will be the priority
no-combat:
- ""
- "&fEnderpearl: &7(<seconds>)"
combat:
- "&fEnderpearl: &7(<seconds>)"