mirror of
https://github.com/Zrips/Jobs.git
synced 2025-02-18 05:11:32 +01:00
Better handling for jobs GUI interact
- Minor loading improvement speed for connecting to the database
This commit is contained in:
parent
c2e0dcd366
commit
e2629b4ea6
@ -40,6 +40,10 @@ public class GuiManager {
|
||||
return GuiList.containsKey(player.getUniqueId());
|
||||
}
|
||||
|
||||
public GuiInfoList getGuiInfo(Player p) {
|
||||
return GuiList.get(p.getUniqueId());
|
||||
}
|
||||
|
||||
public Job getJobBySlot(Player player, int slot) {
|
||||
GuiInfoList info = GuiList.get(player.getUniqueId());
|
||||
return info.getJobList().get(slot);
|
||||
@ -81,7 +85,7 @@ public class GuiManager {
|
||||
// Lets avoid oversized GUI
|
||||
GuiSize = GuiSize > 54 ? 54 : GuiSize;
|
||||
|
||||
Inventory GuiInv = Bukkit.createInventory(null, GuiSize, title);
|
||||
Inventory GuiInv = Bukkit.createInventory(new JobsInventoryHolder(player), GuiSize, title);
|
||||
|
||||
int i = 0;
|
||||
int pos = Jobs.getGCManager().getJobsGUIStartPosition() - 1;
|
||||
@ -179,7 +183,7 @@ public class GuiManager {
|
||||
|
||||
public Inventory CreateJobsSubGUI(Player player, Job job) {
|
||||
|
||||
Inventory tempInv = Bukkit.createInventory(null, 54, "");
|
||||
Inventory tempInv = Bukkit.createInventory(new JobsInventoryHolder(player), 54, "");
|
||||
|
||||
ItemStack GuiItem = job.getGuiItem();
|
||||
JobsPlayer JPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
|
||||
@ -282,7 +286,7 @@ public class GuiManager {
|
||||
String title = Jobs.getLanguage().getMessage("command.info.gui.jobinfo", "[jobname]", job.getName());
|
||||
if (title.length() > 32)
|
||||
title = title.substring(0, 30) + "..";
|
||||
Inventory GuiInv = Bukkit.createInventory(null, GuiSize, title);
|
||||
Inventory GuiInv = Bukkit.createInventory(new JobsInventoryHolder(player), GuiSize, title);
|
||||
|
||||
for (int i1 = 0; i1 < items.size(); i1++) {
|
||||
GuiInv.setItem(i1, items.get(i1));
|
||||
|
@ -0,0 +1,28 @@
|
||||
package com.gamingmesh.jobs.Gui;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
|
||||
public class JobsInventoryHolder implements InventoryHolder {
|
||||
|
||||
private Player player = null;
|
||||
|
||||
public JobsInventoryHolder(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Inventory getInventory() {
|
||||
return player.getOpenInventory().getTopInventory();
|
||||
}
|
||||
|
||||
public InventoryView getOpenInventory() {
|
||||
return player.getOpenInventory();
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
}
|
@ -473,11 +473,11 @@ public abstract class JobsDAO {
|
||||
}
|
||||
|
||||
public final synchronized void setUp() throws SQLException {
|
||||
setupConfig();
|
||||
|
||||
if (getConnection() == null)
|
||||
return;
|
||||
|
||||
setupConfig();
|
||||
|
||||
try {
|
||||
for (DBTables one : DBTables.values()) {
|
||||
createDefaultTable(one);
|
||||
|
@ -10,13 +10,10 @@ import com.gamingmesh.jobs.dao.JobsManager.DataBaseType;
|
||||
|
||||
public class JobsMySQL extends JobsDAO {
|
||||
private String database;
|
||||
@SuppressWarnings("unused")
|
||||
private Jobs plugin;
|
||||
|
||||
JobsMySQL(Jobs plugin, String hostname, String database, String username, String password, String prefix, boolean certificate, boolean ssl, boolean autoReconnect) {
|
||||
super(plugin, "com.mysql.jdbc.Driver", "jdbc:mysql://" + hostname + "/" + database + "?useUnicode=true&characterEncoding=UTF-8&autoReConnect=" + autoReconnect + "&useSSL=" + ssl
|
||||
super(plugin, "com.mysql.jdbc.Driver", "jdbc:mysql://" + hostname + "/" + database + "?useUnicode=true&characterEncoding=UTF-8&autoReconnect=" + autoReconnect + "&useSSL=" + ssl
|
||||
+ "&verifyServerCertificate=" + certificate, username, password, prefix);
|
||||
this.plugin = plugin;
|
||||
this.database = database;
|
||||
this.setDbType(DataBaseType.MySQL);
|
||||
}
|
||||
@ -30,7 +27,6 @@ public class JobsMySQL extends JobsDAO {
|
||||
}
|
||||
|
||||
public JobsMySQL initialize(Jobs plugin, String hostname, String database, String username, String password, String prefix, boolean certificate, boolean ssl, boolean autoReconnect) {
|
||||
this.plugin = plugin;
|
||||
JobsMySQL dao = new JobsMySQL(plugin, hostname, database, username, password, prefix, certificate, ssl, autoReconnect);
|
||||
try {
|
||||
dao.setUp();
|
||||
|
@ -75,6 +75,7 @@ import com.gamingmesh.jobs.Jobs;
|
||||
import com.gamingmesh.jobs.CMILib.ItemManager.CMIMaterial;
|
||||
import com.gamingmesh.jobs.CMILib.VersionChecker.Version;
|
||||
import com.gamingmesh.jobs.Gui.GuiInfoList;
|
||||
import com.gamingmesh.jobs.Gui.JobsInventoryHolder;
|
||||
import com.gamingmesh.jobs.Signs.SignTopType;
|
||||
import com.gamingmesh.jobs.Signs.SignUtil;
|
||||
import com.gamingmesh.jobs.Signs.jobsSign;
|
||||
@ -231,7 +232,7 @@ public class JobsListener implements Listener {
|
||||
@EventHandler
|
||||
public void onGuiDrag(InventoryDragEvent e) {
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
if (Jobs.getGUIManager().GuiList.containsKey(player.getUniqueId())) {
|
||||
if (Jobs.getGUIManager().isInGui(player) && e.getView().getTopInventory().getHolder() instanceof JobsInventoryHolder) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -239,36 +240,37 @@ public class JobsListener implements Listener {
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onGuiLeftClick(InventoryClickEvent event) {
|
||||
final Player player = (Player) event.getWhoClicked();
|
||||
if (!Jobs.getGUIManager().GuiList.containsKey(player.getUniqueId()))
|
||||
if (!Jobs.getGUIManager().isInGui(player))
|
||||
return;
|
||||
|
||||
event.setCancelled(true);
|
||||
//final ItemStack clicked = event.getCurrentItem();
|
||||
|
||||
GuiInfoList joblist = Jobs.getGUIManager().GuiList.get(player.getUniqueId());
|
||||
Inventory top = player.getOpenInventory().getTopInventory();
|
||||
if (!(top.getHolder() instanceof JobsInventoryHolder)) {
|
||||
return;
|
||||
}
|
||||
|
||||
int slot = event.getRawSlot();
|
||||
|
||||
if (slot >= 0) {
|
||||
GuiInfoList joblist = Jobs.getGUIManager().getGuiInfo(player);
|
||||
Job job = Jobs.getGUIManager().getJobBySlot(player, slot);
|
||||
|
||||
if (!joblist.isJobInfo() && (!Jobs.getGCManager().JobsGUISwitcheButtons && event.getClick() == ClickType.LEFT ||
|
||||
Jobs.getGCManager().JobsGUISwitcheButtons && event.getClick() == ClickType.RIGHT)) {
|
||||
Job job = Jobs.getGUIManager().getJobBySlot(player, slot);
|
||||
if (job != null) {
|
||||
Inventory inv = Jobs.getGUIManager().CreateJobsSubGUI(player, job);
|
||||
Inventory top = player.getOpenInventory().getTopInventory();
|
||||
// if (top.getSize() == Jobs.getGCManager().getJobsGUIRows() * 9)
|
||||
top.setContents(inv.getContents());
|
||||
top.setContents(inv.getContents());
|
||||
}
|
||||
} else if (joblist.isJobInfo()) {
|
||||
if (slot == joblist.getbackButton()) {
|
||||
Inventory inv = Jobs.getGUIManager().CreateJobsGUI(player);
|
||||
Inventory top = player.getOpenInventory().getTopInventory();
|
||||
// if (top.getSize() == Jobs.getGCManager().getJobsGUIRows() * 9)
|
||||
top.setContents(inv.getContents());
|
||||
}
|
||||
} else if (!Jobs.getGCManager().JobsGUISwitcheButtons && event.getClick() == ClickType.RIGHT ||
|
||||
Jobs.getGCManager().JobsGUISwitcheButtons && event.getClick() == ClickType.LEFT) {
|
||||
Job job = Jobs.getGUIManager().getJobBySlot(player, slot);
|
||||
if (job != null) {
|
||||
if (Jobs.getGCManager().UseInversedClickToLeave && Jobs.getPlayerManager().getJobsPlayer(player).isInJob(job)) {
|
||||
Bukkit.dispatchCommand(player, "jobs leave " + job.getName());
|
||||
|
Loading…
Reference in New Issue
Block a user