Untitled
unknown
plain_text
2 years ago
11 kB
4
Indexable
package org.lifestealsmp.duelscore;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
public class EventsManager implements Listener {
public ArrayList<String> respawning = new ArrayList<String>();
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Main.getInstance().createPlayerFile(event.getPlayer().getUniqueId().toString());
}
@EventHandler
public void onPlayerTeleport(PlayerTeleportEvent event) {
Location to = event.getTo();
World duelsWorld = Bukkit.getWorld("duels");
if (duelsWorld == null) {
return; // World not found, you might want to handle this case.
}
for (Player player : duelsWorld.getPlayers()) {
if (player.getLocation().equals(to)) {
event.getPlayer().sendMessage("You cannot teleport to a player in the duels world!");
event.setCancelled(true);
return;
}
}
}
@EventHandler
public void onCmd(PlayerCommandPreprocessEvent event) {
Player player = (Player) event.getPlayer();
if (Main.getInstance().functionsManager.savedInventories.containsKey(player.getName())) {
event.setCancelled(true);
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.getView().getTitle().startsWith("§4§lDuels §0§lSelect Game Mode")) {
event.setCancelled(true);
if (event.getSlot() == 12) {
Main.getInstance().inventoryManager.openUnRankedDuelsGUI(player);
}
if (event.getSlot() == 14) {
Main.getInstance().inventoryManager.openRankedDuelsGUI(player);
}
}
}
@EventHandler
public void onPlayerDroppingItem(PlayerDropItemEvent event) {
Player player = (Player) event.getPlayer();
World duels = Bukkit.getServer().getWorld("duels");
if(player.getLocation().getWorld().equals(duels)) {
event.setCancelled(true);
}
}
@EventHandler
public void onInventoryClickUnRankedDuelsGUI(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.getView().getTitle().startsWith("§4§lDuels §0§lUnranked Kits")) {
event.setCancelled(true);
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem != null && clickedItem.hasItemMeta()) {
// Get the kits section from the config here, so it's accessible throughout the method
ConfigurationSection kitsSection = Main.getInstance().getConfig().getConfigurationSection("Kits");
ItemMeta itemMeta = clickedItem.getItemMeta();
if (clickedItem.getType().equals(Material.EMERALD_BLOCK) && itemMeta.getDisplayName().contains("Join All Un-Ranked Queues")) {
// Logic to add the player to all unranked queues
if (kitsSection != null) {
for (String key : kitsSection.getKeys(false)) {
Main.getInstance().functionsManager.addPlayerToUnRankedQueue(player, key);
}
}
player.sendMessage("§e§lDuels §8> §cYou've joined all unranked queues!");
player.closeInventory();
return;
}
if (!clickedItem.getType().equals(Material.BLACK_STAINED_GLASS_PANE)) {
String kitDisplayName = ChatColor.stripColor(itemMeta.getDisplayName()).trim();
// Check if kitsSection is not null
if (kitsSection != null) {
for (String key : kitsSection.getKeys(false)) {
String displayName = ChatColor.stripColor(kitsSection.getString(key + ".name")).trim();
if (displayName.contains(kitDisplayName)) {
// key is the kit path you're looking for
player.sendMessage("§e§lDuels §8> §cYou've joined the queue for kit §a" + kitDisplayName);
Main.getInstance().functionsManager.addPlayerToUnRankedQueue(player, key);
break;
}
}
}
player.closeInventory();
}
}
}
}
@EventHandler
public void onInventoryClickRankedDuelsGUI(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.getView().getTitle().startsWith("§4§lDuels §0§lRanked Kits")) {
event.setCancelled(true);
ItemStack clickedItem = event.getCurrentItem();
if (clickedItem != null && clickedItem.hasItemMeta()) {
// Get the kits section from the config here, so it's accessible throughout the method
ConfigurationSection kitsSection = Main.getInstance().getConfig().getConfigurationSection("Kits");
ItemMeta itemMeta = clickedItem.getItemMeta();
if (clickedItem.getType().equals(Material.EMERALD_BLOCK) && itemMeta.getDisplayName().contains("Join All Ranked Queues")) {
// Logic to add the player to all ranked queues
if (kitsSection != null) {
for (String key : kitsSection.getKeys(false)) {
Main.getInstance().functionsManager.addPlayerToRankedQueue(player, key);
}
}
player.sendMessage("§e§lDuels §8> §cYou've joined all ranked queues!");
player.closeInventory();
return;
}
if (!clickedItem.getType().equals(Material.BLACK_STAINED_GLASS_PANE)) {
String kitDisplayName = ChatColor.stripColor(itemMeta.getDisplayName()).trim();
// Check if kitsSection is not null
if (kitsSection != null) {
for (String key : kitsSection.getKeys(false)) {
String displayName = ChatColor.stripColor(kitsSection.getString(key + ".name")).trim();
if (displayName.contains(kitDisplayName)) {
player.sendMessage("§e§lDuels §8> §cYou've joined the queue for kit §a" + kitDisplayName);
Main.getInstance().functionsManager.addPlayerToRankedQueue(player, key);
break;
}
}
}
player.closeInventory();
}
}
}
}
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
if (event.getEntity() instanceof Player) {
Player deceasedPlayer = (Player) event.getEntity();
for (Map.Entry<String, List<Player>> entry : Main.getInstance().functionsManager.map.entrySet()) {
List<Player> players = entry.getValue();
if (players.contains(deceasedPlayer)) {
respawning.add(deceasedPlayer.getName());
event.getDrops().clear();
String arenaName = entry.getKey();
Player otherPlayer = players.stream().filter(player -> !player.equals(deceasedPlayer)).findFirst()
.orElse(null);
if (otherPlayer != null) {
Main.getInstance().functionsManager.FinishDuelMatch(arenaName, otherPlayer, deceasedPlayer);
}
break;
}
}
}
}
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent event) {
Player player = (Player) event.getPlayer();
if (respawning.contains(player.getName())) {
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), new Runnable() {
public void run() {
Main.getInstance().functionsManager.RestorePlayerData(player);
respawning.remove(player.getName());
}
}, 1);
}
}
@EventHandler
public void OnPlayerQuit(PlayerQuitEvent event) {
Player QuittingPlayer = (Player) event.getPlayer();
Main.getInstance().functionsManager.RemoveQueue(QuittingPlayer);
File directory = new File("plugins/Duels/players");
File QuittingPlayerFile = new File(directory, QuittingPlayer.getUniqueId() + ".yml");
FileConfiguration QuittingPlayerConfig = YamlConfiguration.loadConfiguration(QuittingPlayerFile);
for (Map.Entry<String, List<Player>> entry : Main.getInstance().functionsManager.map.entrySet()) {
List<Player> players = entry.getValue();
if (players.contains(QuittingPlayer)) {
String arenaName = entry.getKey();
Player otherPlayer = players.stream().filter(player -> !player.equals(QuittingPlayer)).findFirst()
.orElse(null);
if (otherPlayer != null) {
QuittingPlayerConfig.set("Location", Main.getInstance().functionsManager.savedlocation.get(QuittingPlayer.getName()));
try {
QuittingPlayerConfig.save(QuittingPlayerFile);
} catch (IOException e) {
e.printStackTrace(); // Handle any exceptions
}
Main.getInstance().functionsManager.RestorePlayerData(QuittingPlayer);
Main.getInstance().functionsManager.FinishDuelMatch(arenaName, otherPlayer, QuittingPlayer);
}
}
}
}
@EventHandler
public void onLocationTeleportJoin(PlayerJoinEvent event) {
Player joiningPlayer = event.getPlayer(); // Renamed for clarity, as they are no longer quitting
File directory = new File("plugins/Duels/players");
File playerFile = new File(directory, joiningPlayer.getUniqueId() + ".yml");
FileConfiguration playerConfig = YamlConfiguration.loadConfiguration(playerFile);
// Check if the location is saved in the config
Location savedLocation = playerConfig.getLocation("Location");
if(savedLocation != null) {
// Teleport the player to the saved location
joiningPlayer.teleport(savedLocation);
// Remove the location from config after successful teleport
playerConfig.set("Location", null);
try {
// Save the config to reflect the removal of the location
playerConfig.save(playerFile);
} catch (IOException e) {
e.printStackTrace(); // Handle any exceptions
}
}
}
}
Editor is loading...
Leave a Comment