1
0
mirror of https://github.com/Zrips/Jobs.git synced 2024-11-29 05:55:27 +01:00

GUI buttons to join and leave jobs directly

This commit is contained in:
Zrips 2023-08-30 13:03:13 +03:00
parent 1b4d358100
commit 753edd7c9f
4 changed files with 120 additions and 15 deletions

View File

@ -21,6 +21,7 @@ import com.gamingmesh.jobs.container.JobProgression;
import com.gamingmesh.jobs.container.JobsPlayer;
import net.Zrips.CMILib.CMILib;
import net.Zrips.CMILib.Colors.CMIChatColor;
import net.Zrips.CMILib.Container.CMICommands;
import net.Zrips.CMILib.GUI.CMIGui;
import net.Zrips.CMILib.GUI.CMIGuiButton;
@ -144,25 +145,40 @@ public class GuiManager {
}
lore.add("");
if (Jobs.getGCManager().JobsGUISwitcheButtons) {
if (!jPlayer.isInJob(job)) {
lore.add(Jobs.getLanguage().getMessage("command.info.gui.leftClick"));
}
} else {
lore.add(Jobs.getLanguage().getMessage("command.info.gui.leftClick"));
}
if (jPlayer.isInJob(job)) {
if (Version.isCurrentEqualOrHigher(Version.v1_18_R1))
lore.add(Jobs.getLanguage().getMessage("command.info.gui.qClick"));
else
lore.add(Jobs.getLanguage().getMessage("command.info.gui.middleClick"));
}
if (!Jobs.getGCManager().JobsGUISwitcheButtons) {
if (!jPlayer.isInJob(job)) {
lore.add(Jobs.getLanguage().getMessage("command.info.gui.rightClick"));
}
} else {
lore.add(Jobs.getLanguage().getMessage("command.info.gui.rightClick"));
ItemStack guiItem = job.getGuiItem();
ItemMeta meta = guiItem.getItemMeta();
meta.setDisplayName(job.getDisplayName());
meta.setLore(lore);
if (Jobs.getGCManager().hideItemAttributes) {
meta.addItemFlags(org.bukkit.inventory.ItemFlag.HIDE_ATTRIBUTES, org.bukkit.inventory.ItemFlag.HIDE_ENCHANTS);
}
guiItem.setItemMeta(meta);
ItemStack guiItem = job.getGuiItem();
// ItemMeta meta = guiItem.getItemMeta();
// meta.setDisplayName(job.getDisplayName());
// meta.setLore(lore);
//
// if (Jobs.getGCManager().hideItemAttributes) {
// meta.addItemFlags(org.bukkit.inventory.ItemFlag.HIDE_ATTRIBUTES, org.bukkit.inventory.ItemFlag.HIDE_ENCHANTS);
// }
//
// guiItem.setItemMeta(meta);
CMIGuiButton button = new CMIGuiButton(job.getGuiSlot() >= 0 ? job.getGuiSlot() : pos, guiItem) {
@ -206,6 +222,12 @@ public class GuiManager {
}
};
button.setName(job.getDisplayName());
button.addLore(lore);
if (Jobs.getGCManager().hideItemAttributes) {
button.hideItemFlags();
}
if (jPlayer.isInJob(job)) {
button.setGlowing();
}
@ -288,15 +310,15 @@ public class GuiManager {
double income = jInfo.getIncome(level, numjobs, jPlayer.maxJobsEquation);
income = boost.getFinalAmount(CurrencyType.MONEY, income);
String incomeColor = income >= 0 ? "" : ChatColor.DARK_RED.toString();
String incomeColor = income >= 0 ? "" : CMIChatColor.DARK_RED.toString();
double xp = jInfo.getExperience(level, numjobs, jPlayer.maxJobsEquation);
xp = boost.getFinalAmount(CurrencyType.EXP, xp);
String xpColor = xp >= 0 ? "" : ChatColor.GRAY.toString();
String xpColor = xp >= 0 ? "" : CMIChatColor.GRAY.toString();
double points = jInfo.getPoints(level, numjobs, jPlayer.maxJobsEquation);
points = boost.getFinalAmount(CurrencyType.POINTS, points);
String pointsColor = points >= 0 ? "" : ChatColor.RED.toString();
String pointsColor = points >= 0 ? "" : CMIChatColor.RED.toString();
if (income == 0D && points == 0D && xp == 0D)
continue;
@ -384,6 +406,24 @@ public class GuiManager {
});
}
if (!Jobs.getGCManager().DisableJoiningJobThroughGui) {
if (jPlayer.isInJob(job)) {
CMIGuiButton button = new CMIGuiButton(40, Jobs.getGCManager().guiLeaveButton) {
@Override
public void click(GUIClickType type) {
leaveConfirmation(player, job, fromCommand, guiSize);
}
};
button.setName(Jobs.getLanguage().getMessage("general.info.leave"));
gui.addButton(button);
} else if (Jobs.getPlayerManager().getJobsLimit(jPlayer, (short) jPlayer.getJobProgression().size())) {
gui.addButton(generateJoinButton(player, job, fromCommand, 39));
gui.addButton(generateJoinButton(player, job, fromCommand, 40));
gui.addButton(generateJoinButton(player, job, fromCommand, 41));
}
}
if (i >= 53 && !jobsRemained.isEmpty()) {
CMIItemStack next = CMILib.getInstance().getConfigManager().getGUINextPage();
next.setDisplayName(LC.info_nextPageHover.getLocale());
@ -400,6 +440,57 @@ public class GuiManager {
gui.open();
}
private void leaveConfirmation(Player player, Job job, boolean fromCommand, int guiSize) {
CMIGui gui = new CMIGui(player);
gui.setTitle(Jobs.getLanguage().getMessage("command.info.gui.jobinfo", "[jobname]", job.getName()));
gui.setInvSize(guiSize);
gui.addButton(generateLeaveButton(player, job, fromCommand, 21));
gui.addButton(generateLeaveButton(player, job, fromCommand, 22));
gui.addButton(generateLeaveButton(player, job, fromCommand, 23));
CMIGuiButton button = new CMIGuiButton(40, Jobs.getGCManager().guiJoinButton) {
@Override
public void click(GUIClickType type) {
openJobsBrowseGUI(player, job, fromCommand);
}
};
button.setName(LC.modify_cancelSymbolHover.getLocale());
gui.addButton(button);
gui.fillEmptyButtons();
gui.open();
}
private CMIGuiButton generateJoinButton(Player player, Job job, boolean fromCommand, int slot) {
CMIGuiButton button = new CMIGuiButton(slot, Jobs.getGCManager().guiJoinButton) {
@Override
public void click(GUIClickType type) {
Jobs.getCommandManager().onCommand(player, null, "jobs", new String[] { "join", job.getName() });
openJobsBrowseGUI(player, job, fromCommand);
}
};
button.setName(Jobs.getLanguage().getMessage("general.info.join"));
return button;
}
private CMIGuiButton generateLeaveButton(Player player, Job job, boolean fromCommand, int slot) {
CMIGuiButton button = new CMIGuiButton(slot, Jobs.getGCManager().guiLeaveButton) {
@Override
public void click(GUIClickType type) {
Jobs.getCommandManager().onCommand(player, null, "jobs", new String[] { "leave", job.getName() });
openJobsBrowseGUI(player, job, fromCommand);
}
};
button.setName(Jobs.getLanguage().getMessage("general.info.leave"));
return button;
}
private void openJobsBrowseGUI(Player player, Job job, List<ActionType> jobsRemained) {
Inventory tempInv = Bukkit.createInventory(player, 54, "");

View File

@ -116,6 +116,8 @@ public class GeneralConfigManager {
public boolean DailyQuestsEnabled;
public ItemStack guiInfoButton;
public ItemStack guiJoinButton;
public ItemStack guiLeaveButton;
public int InfoButtonSlot = 9;
public List<String> InfoButtonCommands = new ArrayList<String>();
@ -1106,6 +1108,14 @@ public class GeneralConfigManager {
"head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjcwNWZkOTRhMGM0MzE5MjdmYjRlNjM5YjBmY2ZiNDk3MTdlNDEyMjg1YTAyYjQzOWUwMTEyZGEyMmIyZTJlYyJ9fX0="));
guiInfoButton = item.getCMIType() == CMIMaterial.NONE ? CMIMaterial.ARROW.newItemStack() : item.getItemStack();
item = CMIItemStack.deserialize(c.get("JobsGUI.JoinButton.Material",
"head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmZlYzNkMjVhZTBkMTQ3YzM0MmM0NTM3MGUwZTQzMzAwYTRlNDhhNWI0M2Y5YmI4NThiYWJmZjc1NjE0NGRhYyJ9fX0="));
guiJoinButton = item == null || item.getCMIType() == CMIMaterial.NONE ? CMIMaterial.GREEN_STAINED_GLASS_PANE.newItemStack() : item.getItemStack();
item = CMIItemStack.deserialize(c.get("JobsGUI.LeaveButton.Material",
"head:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzY1ZjNiYWUwZDIwM2JhMTZmZTFkYzNkMTMwN2E4NmE2MzhiZTkyNDQ3MWYyM2U4MmFiZDlkNzhmOGEzZmNhIn19fQ=="));
guiLeaveButton = item == null || item.getCMIType() == CMIMaterial.NONE ? CMIMaterial.RED_STAINED_GLASS_PANE.newItemStack() : item.getItemStack();
c.addComment("JobsGUI.InfoButton.Commands", "closeinv! can be used to close players inventory when you click this icon");
InfoButtonCommands = c.get("JobsGUI.InfoButton.Commands", Arrays.asList("closeinv!"));

View File

@ -98,6 +98,10 @@ public class LanguageManager {
c.get("general.info.blocks.smoker", "Smoker");
c.get("general.info.blocks.blastfurnace", "Blast furnace");
c.get("general.info.blocks.brewingstand", "Brewing stand");
c.get("general.info.join", "&eClick to join job");
c.get("general.info.leave", "&cClick to leave job");
c.get("general.admin.error", "&cThere was an error in the command.");
c.get("general.admin.success", "&eYour command has been performed.");
c.get("general.error.noHelpPage", "&cThere is no help page by this number!");
@ -112,6 +116,7 @@ public class LanguageManager {
c.get("general.error.noRegistration", "&cYou've reached max [block] count!");
c.get("general.error.blockDisabled", "&6Payments from &e[type] &6got disabled. &2[location]");
c.get("command.help.output.cmdUsage", "&2Usage: &7[command]");
c.get("command.help.output.label", "Jobs");

View File

@ -77,7 +77,6 @@ import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerShearEntityEvent;
import org.bukkit.event.player.PlayerBucketEntityEvent;
import org.bukkit.event.world.ChunkUnloadEvent;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.EnchantingInventory;