Skip to content

Commit

Permalink
Support for PlaceholderAPI
Browse files Browse the repository at this point in the history
Fixes some bugs
  • Loading branch information
BuildTools committed May 30, 2020
1 parent 0f6de61 commit 15795b5
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 11 deletions.
37 changes: 34 additions & 3 deletions src/main/java/com/morkaz/moxchattitles/MoxChatTitles.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,18 @@
import com.morkaz.moxchattitles.managers.DataManager;
import com.morkaz.moxchattitles.managers.GUIManager;
import com.morkaz.moxchattitles.misc.Metrics;
import com.morkaz.moxchattitles.misc.TitlePlaceholder;
import com.morkaz.moxlibrary.api.QueryUtils;
import com.morkaz.moxlibrary.api.ServerUtils;
import com.morkaz.moxlibrary.database.sql.SQLDatabase;
import com.morkaz.moxlibrary.database.sql.mysql.MySQLDatabase;
import com.morkaz.moxlibrary.database.sql.sqlite.SQLiteDatabase;

import org.apache.commons.lang3.tuple.Pair;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

import org.apache.commons.lang3.tuple.Pair;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand Down Expand Up @@ -103,6 +102,38 @@ public void onEnable(){
new QuitListener(this);
new ChatListener(this);

// if (Bukkit.getPluginManager().isPluginEnabled("MVdWPlaceholderAPI")){
// boolean oldVersion = false;
// try {
// Class.forName("be.maximvdw.placeholderapi.PlaceholderReplacer");
// } catch( ClassNotFoundException e ) {
// oldVersion = true;
// }
// if (oldVersion == false){
// PlaceholderAPI.registerPlaceholder(this, "mox_title", new PlaceholderReplacer() {
// @Override
// public String onPlaceholderReplace(PlaceholderReplaceEvent placeholderReplaceEvent) {
// Player player = placeholderReplaceEvent.getPlayer();
// PlayerData playerData = MoxChatTitles.getInstance().getDataManager().getPlayerData(MoxChatTitles.getInstance().getDataManager().getPlayerID(player));
// if (playerData != null){
// if (playerData.getLastTitle() != null){
// return playerData.getLastTitle().getTitle();
// }
// }
// Bukkit.getLogger().warning("["+getDescription().getName()+"] Title placeholder \"mox_title\" registered for MVDwPlaceholderAPI!");
// return "";
//
// }
// });
// } else {
// Bukkit.getLogger().warning("["+getDescription().getName()+"] You are using old MVdWPlaceholderAPI version! Update it if you want to use placeholders!");
// }
// }
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")){
TitlePlaceholder titlePlaceholder = new TitlePlaceholder();
titlePlaceholder.register();
Bukkit.getLogger().warning("["+getDescription().getName()+"] Title placeholder \"moxchattitles_title\" registered for PlaceholderAPI!");
}
//Ending
Bukkit.getLogger().info("["+getDescription().getName()+"] Plugin enabled!");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public boolean onCommand(CommandSender sender, Command command, String alias, St
List<String> args = Arrays.asList(argsArray);
if (args.size() == 0){
if (!sender.hasPermission("mox.chattitles.help")){
ServerUtils.sendMessage(sender, main.getPrefix(), main.getMessagesConfig().getString("bad-command-usage")
ServerUtils.sendMessage(sender, main.getPrefix(), main.getMessagesConfig().getString("errors.bad-command-usage")
.replace("%command%", "&9/"+alias+" &3<args&d[?]&3>")
);
return true;
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/com/morkaz/moxchattitles/data/PlayerData.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ private void updateDatabase(){
List<Pair<String, Object>> pairs = new ArrayList<>();
pairs.add(Pair.of(main.ID_COLUMN, playerID));
pairs.add(Pair.of(main.LAST_LOGIN_COLUMN, lastLogin));
pairs.add(Pair.of(main.LAST_TITLE_COLUMN, lastTitle.getTitleIndex()));
if (lastTitle != null){
pairs.add(Pair.of(main.LAST_TITLE_COLUMN, lastTitle.getTitleIndex()));
} else {
pairs.add(Pair.of(main.LAST_TITLE_COLUMN, null));
}
List<String> queries = QueryUtils.constructQueryMultipleValuesSet(
main.TABLE,
pairs,
Expand Down
24 changes: 20 additions & 4 deletions src/main/java/com/morkaz/moxchattitles/managers/GUIManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftInventory;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

Expand All @@ -31,11 +33,11 @@ public GUIManager(MoxChatTitles main) {
public void openGUI(Player player, Integer pageNumber){
List<ChatTitle> chatTitles = main.getDataManager().getOwnedTitles(player);
Pages<ChatTitle> chatTitlePages = new Pages(chatTitles, 28);

List<ChatTitle> chatTitlesPage = new ArrayList(chatTitlePages.getObjects(pageNumber) != null ? chatTitlePages.getObjects(pageNumber) : new ArrayList());
String playerID = main.getDataManager().getPlayerID(player);
PlayerData playerData = main.getDataManager().getPlayerData(playerID);
ChestGUI chestGUI = new ChestGUI(main, 6, ChatColor.translateAlternateColorCodes('&', main.getMessagesConfig().getString("gui.gui-title")), true);

//Generate Fillers
generateFillers(chestGUI);
//Fill GUI with content
Expand Down Expand Up @@ -77,11 +79,12 @@ public void onClick(InventoryClickEvent event) {
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_FLAP, 2.0F, 1.5F);
playerData.setLastTitle(chatTitle);
}
player.closeInventory();
//player.closeInventory();
openGUI(player, pageNumber);
}
});
}
// Gdyby były wyczerpane itemki na jakimś y.
if (chatTitlesPage.size() <= counter){
break;
}
Expand All @@ -94,12 +97,25 @@ public void onClick(InventoryClickEvent event) {
}
});
}
// Remove chat title button
chestGUI.addItem(new ActionItem(5, 6, ItemUtils.createItemStack(Material.REDSTONE_TORCH, 1, main.getMessagesConfig().getString("gui.remove-title-gui-button-name"), main.getMessagesConfig().getString("gui.remove-title-gui-button-lore"))) {
@Override
public void onClick(InventoryClickEvent event) {
event.setCancelled(true);
if (playerData.getLastTitle() == null){
ServerUtils.sendMessage(player, main.getPrefix(), main.getMessagesConfig().getString("gui.outputs.no-title-to-clear"));
} else {
ServerUtils.sendMessage(player, main.getPrefix(), main.getMessagesConfig().getString("gui.outputs.title-cleared"));
playerData.setLastTitle(null);
}
}
});
if (chatTitlePages.getLastPageNumber() > pageNumber){
chestGUI.addItem(new ActionItem(9, 6, ItemUtils.createItemStack(Material.NETHER_STAR, 1, main.getMessagesConfig().getString("gui.next-page-item-name"), null)) {
@Override
public void onClick(InventoryClickEvent event) {
event.setCancelled(true);
player.closeInventory();
//player.closeInventory();
openGUI(player, pageNumber+1);
}
});
Expand All @@ -109,7 +125,7 @@ public void onClick(InventoryClickEvent event) {
@Override
public void onClick(InventoryClickEvent event) {
event.setCancelled(true);
player.closeInventory();
//player.closeInventory();
openGUI(player, pageNumber-1);
}
});
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/com/morkaz/moxchattitles/misc/TitlePlaceholder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.morkaz.moxchattitles.misc;

import com.morkaz.moxchattitles.MoxChatTitles;
import com.morkaz.moxchattitles.data.PlayerData;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.entity.Player;

public class TitlePlaceholder extends PlaceholderExpansion {


public String getIdentifier() {
return "moxchattitles";
}

public String getPlugin() {
return MoxChatTitles.getInstance().getName();
}

public String getAuthor() {
return "Morkazoid";
}


public String getVersion() {
return MoxChatTitles.getInstance().getDescription().getVersion();
}


public String onPlaceholderRequest(Player player, String identifier) {
if (identifier.equalsIgnoreCase("title")){
if (player != null){
PlayerData playerData = MoxChatTitles.getInstance().getDataManager().getPlayerData(MoxChatTitles.getInstance().getDataManager().getPlayerID(player));
if (playerData != null){
if (playerData.getLastTitle() != null){
return playerData.getLastTitle().getTitle();
}
}
}
return "";
}
return null;
}
}
4 changes: 4 additions & 0 deletions src/main/resources/messages-pl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@ gui:
selected: "&2&k!&aAKTUALNIE WYBRANY&2&k!"
empty-gui-item-name: "&cNie masz żadnego tytułu :("
empty-gui-item-lore: "&3Tytuły możesz nabyć||&3W sklepiku serwera!||&3Wpisz komendę: &9/sklepik"
remove-title-gui-button-name: "&eWyczyść tytuł z nicku"
remove-title-gui-button-lore: "&7Kliknij, aby wyczyścić z czatu||&7aktualny tytuł."
next-page-item-name: "&9>> &3Następna strona &9>>"
previous-page-item-name: "&9<< &3Poprzednia strona &9<<"
outputs:
title-selected: "&bNowy tytuł został wybrany! Sprawdź jak wygląda na czacie! :)"
title-already-selected: "&cMasz już wybrany ten tytuł!"
title-cleared: "&bAktualnie wybrany tytuł został wyczyszczony z czatu pomyślnie."
no-title-to-clear: "&cNie masz ustawionego żadnego tytułu aby go wyczyścić z czatu!"

errors:
bad-command-usage: "&cKomenda została źle użyta, poprawne użycie: %command%"
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: MoxChatTitles
author: Morkazoid
version: 0.1
version: 1.1
depend: [MoxCore]
softdepend: []
softdepend: [MVdWPlaceholderAPI, PlaceholderAPI]
description: "Morkazoids premium chat prefixes (titles) plugin. Created for GC2.PL Network"
main: com.morkaz.moxchattitles.MoxChatTitles
api-version: 1.13

0 comments on commit 15795b5

Please sign in to comment.