Rerender gui when needed
This commit is contained in:
parent
fc20c9a276
commit
133cebd1ec
|
|
@ -14,7 +14,7 @@ dependencies {
|
||||||
compileOnly("com.gitlab.ruany:LiteBansAPI:0.6.1") // move to proxy
|
compileOnly("com.gitlab.ruany:LiteBansAPI:0.6.1") // move to proxy
|
||||||
compileOnly("org.apache.commons:commons-lang3:3.17.0") // needs an alternative, already removed from upstream api and will be removed in server
|
compileOnly("org.apache.commons:commons-lang3:3.17.0") // needs an alternative, already removed from upstream api and will be removed in server
|
||||||
compileOnly("net.luckperms:api:5.5") // Luckperms
|
compileOnly("net.luckperms:api:5.5") // Luckperms
|
||||||
implementation("com.alttd.inventory_gui:InventoryGUI:1.1.1-SNAPSHOT")
|
implementation("com.alttd.inventory_gui:InventoryGUI:1.1.2-SNAPSHOT")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.REVIEW));
|
sender.sendRichMessage(helpMessage(sender, HelpType.REVIEW));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NicknamesGui nicknamesGui = new NicknamesGui();
|
NicknamesGui nicknamesGui = new NicknamesGui(player);
|
||||||
ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance());
|
ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance());
|
||||||
nicknamesGui.openInventory(player);
|
nicknamesGui.openInventory(player);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.alttd.chat.config.Config;
|
||||||
import com.alttd.chat.database.Queries;
|
import com.alttd.chat.database.Queries;
|
||||||
import com.alttd.chat.events.NickEvent;
|
import com.alttd.chat.events.NickEvent;
|
||||||
import com.alttd.chat.objects.Nick;
|
import com.alttd.chat.objects.Nick;
|
||||||
|
import com.alttd.chat.util.ALogger;
|
||||||
import com.alttd.chat.util.Utility;
|
import com.alttd.chat.util.Utility;
|
||||||
import com.alttd.inventory_gui.click.GuiItem;
|
import com.alttd.inventory_gui.click.GuiItem;
|
||||||
import com.alttd.inventory_gui.gui.InventoryGui;
|
import com.alttd.inventory_gui.gui.InventoryGui;
|
||||||
|
|
@ -37,19 +38,17 @@ public class NicknamesGui implements Listener {
|
||||||
private final ChatPlugin plugin = ChatPlugin.getInstance();
|
private final ChatPlugin plugin = ChatPlugin.getInstance();
|
||||||
private final InventoryGui nicknamesGui;
|
private final InventoryGui nicknamesGui;
|
||||||
|
|
||||||
//Inventory is shared between GUI users so actions one person does are replicated to the other GUI's
|
public NicknamesGui(Player player) {
|
||||||
public NicknamesGui() {
|
|
||||||
nicknamesGui = InventoryGui.builder()
|
nicknamesGui = InventoryGui.builder()
|
||||||
.plugin(plugin)
|
.plugin(plugin)
|
||||||
.title(Component.text("Nicknames GUI"))
|
.title(Component.text("Nicknames GUI"))
|
||||||
.rows(6)
|
.rows(6)
|
||||||
.build();
|
.build();
|
||||||
currentPage = 1;
|
currentPage = 1;
|
||||||
setItems(currentPage);
|
setItems(currentPage, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO create all pages and share those between instances so page changes don't affect others, but everything is still synchronized
|
public void setItems(int currentPage, Player player) {
|
||||||
public void setItems(int currentPage) {
|
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
@ -65,8 +64,10 @@ public class NicknamesGui implements Listener {
|
||||||
ItemStack playerSkull = createPlayerSkull(nick, Config.NICK_ITEM_LORE);
|
ItemStack playerSkull = createPlayerSkull(nick, Config.NICK_ITEM_LORE);
|
||||||
nicknamesGui.getRoot().setItem(i % 27, GuiItem.clickable(playerSkull, inventoryClickEvent ->
|
nicknamesGui.getRoot().setItem(i % 27, GuiItem.clickable(playerSkull, inventoryClickEvent ->
|
||||||
handleInventoryClick(nick, inventoryClickEvent, miniMessage, playerSkull)));
|
handleInventoryClick(nick, inventoryClickEvent, miniMessage, playerSkull)));
|
||||||
|
ALogger.info("Added nick " + i + " to gui: " + nick.getUuid());
|
||||||
i++;
|
i++;
|
||||||
} else {
|
} else {
|
||||||
|
ALogger.info("Reached end of nicknames gui page");
|
||||||
hasNextPage = true;
|
hasNextPage = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +78,7 @@ public class NicknamesGui implements Listener {
|
||||||
ItemStack itemStack = createGuiItem(Material.PAPER, "§bPrevious page",
|
ItemStack itemStack = createGuiItem(Material.PAPER, "§bPrevious page",
|
||||||
"§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)),
|
"§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)),
|
||||||
"§aPrevious page: %previousPage%".replace("%previousPage%", String.valueOf(currentPage - 1)));
|
"§aPrevious page: %previousPage%".replace("%previousPage%", String.valueOf(currentPage - 1)));
|
||||||
GuiItem previousPage = GuiItem.clickable(itemStack, e -> setItems(currentPage - 1));
|
GuiItem previousPage = GuiItem.clickable(itemStack, e -> setItems(currentPage - 1, player));
|
||||||
nicknamesGui.getRoot().setItem(28, previousPage);
|
nicknamesGui.getRoot().setItem(28, previousPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,14 +86,16 @@ public class NicknamesGui implements Listener {
|
||||||
ItemStack itemStack = createGuiItem(Material.PAPER, "§bNext page",
|
ItemStack itemStack = createGuiItem(Material.PAPER, "§bNext page",
|
||||||
"§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)),
|
"§aCurrent page: %page%".replace("%page%", String.valueOf(currentPage)),
|
||||||
"§aNext page: §b%nextPage%".replace("%nextPage%", String.valueOf(currentPage + 1)));
|
"§aNext page: §b%nextPage%".replace("%nextPage%", String.valueOf(currentPage + 1)));
|
||||||
GuiItem nextPage = GuiItem.clickable(itemStack, e -> setItems(currentPage + 1));
|
GuiItem nextPage = GuiItem.clickable(itemStack, e -> setItems(currentPage + 1, player));
|
||||||
nicknamesGui.getRoot().setItem(36, nextPage);
|
nicknamesGui.getRoot().setItem(36, nextPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nicknamesGui.render(player);
|
||||||
}
|
}
|
||||||
}.runTaskAsynchronously(ChatPlugin.getInstance());
|
}.runTaskAsynchronously(ChatPlugin.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void handleInventoryClick(Nick nick, InventoryClickEvent inventoryClickEvent, MiniMessage miniMessage, ItemStack playerSkull) {
|
private void handleInventoryClick(Nick nick, InventoryClickEvent inventoryClickEvent, MiniMessage miniMessage, ItemStack playerSkull) {
|
||||||
final Player playerWhoClicked = (Player) inventoryClickEvent.getWhoClicked();
|
final Player playerWhoClicked = (Player) inventoryClickEvent.getWhoClicked();
|
||||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(nick.getUuid());
|
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(nick.getUuid());
|
||||||
if (offlinePlayer.getName() == null) {
|
if (offlinePlayer.getName() == null) {
|
||||||
|
|
@ -113,7 +116,7 @@ public class NicknamesGui implements Listener {
|
||||||
//TODO what do we do no click?
|
//TODO what do we do no click?
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void handleRightClickPlayerSkull(Nick nick, InventoryClickEvent inventoryClickEvent, OfflinePlayer offlinePlayer, Player playerWhoClicked, Component offlinePlayerName, ItemStack playerSkull) {
|
private void handleRightClickPlayerSkull(Nick nick, InventoryClickEvent inventoryClickEvent, OfflinePlayer offlinePlayer, Player playerWhoClicked, Component offlinePlayerName, ItemStack playerSkull) {
|
||||||
Queries.denyNewNickname(nick.getUuid());
|
Queries.denyNewNickname(nick.getUuid());
|
||||||
|
|
||||||
String newNick = nick.getNewNick();
|
String newNick = nick.getNewNick();
|
||||||
|
|
@ -154,6 +157,7 @@ public class NicknamesGui implements Listener {
|
||||||
|
|
||||||
ItemStack completedNickRequestItem = createCompletedNickRequestItem(offlinePlayerName, playerSkull);
|
ItemStack completedNickRequestItem = createCompletedNickRequestItem(offlinePlayerName, playerSkull);
|
||||||
inventoryClickEvent.getInventory().setItem(inventoryClickEvent.getSlot(), completedNickRequestItem);
|
inventoryClickEvent.getInventory().setItem(inventoryClickEvent.getSlot(), completedNickRequestItem);
|
||||||
|
nicknamesGui.render(playerWhoClicked);
|
||||||
playerWhoClicked.updateInventory();
|
playerWhoClicked.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user