Skip to content

Commit

Permalink
implemented reloading mechanic for team menus to reload to everyone a…
Browse files Browse the repository at this point in the history
…fter a change;

implemented that a deleted team can not be opened
  • Loading branch information
PrinzPizza42 committed Jan 28, 2025
1 parent ce16f52 commit 4c35fc6
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 10 deletions.
2 changes: 2 additions & 0 deletions src/main/java/de/j/stationofdoom/main/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import de.j.stationofdoom.enchants.FurnaceEvents;
import de.j.stationofdoom.enchants.TelepathyEvents;
import de.j.stationofdoom.listener.*;
import de.j.stationofdoom.teams.TeamInventoryReload;
import de.j.stationofdoom.teams.TeamSettingsCMD;
import de.j.stationofdoom.teams.TeamSettingsInventoryListener;
import de.j.stationofdoom.util.EntityManager;
Expand Down Expand Up @@ -116,6 +117,7 @@ public void onEnable() {
pluginManager.registerEvents(new LeaveListener(), this);
pluginManager.registerEvents(new AnvilListener(), this);
pluginManager.registerEvents(new TeamSettingsInventoryListener(), this);
pluginManager.registerEvents(new TeamInventoryReload(), this);

//CustomEnchants.register(); -> see custom enchants class for more info

Expand Down
8 changes: 8 additions & 0 deletions src/main/java/de/j/stationofdoom/teams/Team.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
Expand All @@ -23,6 +24,12 @@ public class Team {
private HashMap<Player, Boolean> members = new HashMap<>();
private UUID uuid;

public boolean isDeleted() {
return deleted;
}

private volatile boolean deleted = false;

public Team(Player player) {
uuid = UUID.randomUUID();
name = player.getName() + "'s Team";
Expand Down Expand Up @@ -162,6 +169,7 @@ public void remove() {
}
this.members.clear();
TeamsMainMenuGUI.teams.remove(this);
this.deleted = true;
Main.getMainLogger().info("Removed team " + this.name);
}

Expand Down
45 changes: 45 additions & 0 deletions src/main/java/de/j/stationofdoom/teams/TeamInventoryReload.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package de.j.stationofdoom.teams;

import de.j.deathMinigames.settings.GUI;
import de.j.stationofdoom.main.Main;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.scheduler.BukkitRunnable;

public class TeamInventoryReload implements Listener {
private static final int secondsBetweenReloads = 1;

@EventHandler
public void onInventoryOpen(InventoryOpenEvent event) {
if(event.getInventory().getHolder() instanceof TeamsMainMenuGUI || event.getInventory().getHolder() instanceof TeamSettingsGUI) {
GUI gui = (GUI) event.getInventory().getHolder();
Player viewer = (Player) event.getPlayer();
Inventory inv = event.getInventory();
startTimer(inv, gui, viewer);
}
}

private void startTimer(Inventory inv, GUI gui, Player viewer) {
new BukkitRunnable() {
@Override
public void run() {
if(!inv.getViewers().contains(viewer)) {
cancel();
}
else {
int currentPage = inv.getItem(53).getAmount() - 1;
if(gui instanceof TeamsMainMenuGUI teamsMainMenuGUI) {
teamsMainMenuGUI.showPage(currentPage, viewer);
}
else if(gui instanceof TeamSettingsGUI teamSettingsGUI) {
teamSettingsGUI.showPage(currentPage, viewer);
}
cancel();
}
}
}.runTaskTimer(Main.getPlugin(), 10, secondsBetweenReloads * 20);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import de.j.deathMinigames.settings.GUI;
import de.j.stationofdoom.util.translations.TranslationFactory;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;

Expand All @@ -12,11 +13,15 @@ public class TeamPlayerSettingsGUI extends GUI {
private volatile Player player;
private volatile Team team;

public TeamPlayerSettingsGUI() {
super("Team player settings", false, false, 2 * 9);
public TeamPlayerSettingsGUI() {}

public void showInventory(Player playerToShowTheInvTo, Player playerBasedOnSlot) {
fillInv(playerBasedOnSlot);
playerToShowTheInvTo.openInventory(inventory);
}

private void fillInv(Player player) {
this.inventory = Bukkit.createInventory(this.inventory.getHolder(), 18, player.getName());
this.player = player;
this.team = TeamsMainMenuGUI.getTeam(player);
boolean isOperator = team.getTeamOperators().contains(player);
Expand All @@ -40,11 +45,6 @@ private void fillInv(Player player) {
addClickableItemStack(tf.getTranslation(player, "backButton"), Material.RED_CONCRETE, 1, 17);
}

public void showInventory(Player playerToShowTheInvTo, Player playerBasedOnSlot) {
fillInv(playerBasedOnSlot);
playerToShowTheInvTo.openInventory(inventory);
}

public Player getPlayer() {
return player;
}
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/de/j/stationofdoom/teams/TeamSettingsGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import de.j.deathMinigames.settings.MainMenu;
import de.j.stationofdoom.main.Main;
import de.j.stationofdoom.util.translations.TranslationFactory;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -33,6 +35,12 @@ public TeamSettingsGUI(Team team) {
public void showPage(int page, Player playerToShowTheInvTo) {
this.inventory = null;
this.inventory = Bukkit.createInventory(this, inventorySize, team.getName() +" - " + tf.getTranslation(playerToShowTheInvTo, "page") + " " + page );
if(this.team.isDeleted()) {
Main.getMainLogger().info("Team is deleted and therefore not opened");
playerToShowTheInvTo.sendMessage(Component.text(tf.getTranslation(playerToShowTheInvTo, "teamDeleted", team.getName())).color(NamedTextColor.RED));
new TeamsMainMenuGUI().showPage(1, playerToShowTheInvTo);
return;
}
members = team.getAllPlayers();
if(members.isEmpty()) {
Main.getMainLogger().info("No players were found!");
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/de/j/stationofdoom/teams/TeamsMainMenuGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.HashMap;
Expand All @@ -25,7 +24,13 @@ public TeamsMainMenuGUI() {}

public static Team getTeam(Player player) {
for(Team team : TeamsMainMenuGUI.teams) {
Main.getMainLogger().info(team.getName());
for (Player player1 : team.getAllPlayers()) {
Main.getMainLogger().info(player1.getName());
}
if(team.isDeleted()) continue;
if(team.getAllPlayers().contains(player)) {
Main.getMainLogger().info("Found team " + team.getName());
return team;
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/resources/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@
"teamPlayerSettingsDemoteToMember": "Zu Mitglied herunterstufen",
"teamPlayerSettingsPromoteToOperator": "Zu Operator hochstufen",
"teamPlayerSettingsKickPlayer": "Spieler kicken",
"kickedFromTeam": "Du wurdest von %s vom Team gekickt"
"kickedFromTeam": "Du wurdest von %s vom Team gekickt",
"teamDeleted": "Das Team, %s, ist gelöscht und du kannst es nicht mehr öffnen"
}
],
"en-US": [
Expand Down Expand Up @@ -210,7 +211,8 @@
"teamPlayerSettingsDemoteToMember": "Demote to member",
"teamPlayerSettingsPromoteToOperator": "Promote to operator",
"teamPlayerSettingsKickPlayer": "Kick player",
"kickedFromTeam": "You got kicked from the team by %s"
"kickedFromTeam": "You got kicked from the team by %s",
"teamDeleted": "The team, %s, is deleted and you can not open it anymore"
}
]
}

0 comments on commit 4c35fc6

Please sign in to comment.