1
0
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:
montlikadani 2019-10-18 17:01:18 +02:00
parent c2e0dcd366
commit e2629b4ea6
5 changed files with 49 additions and 19 deletions

View File

@ -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));

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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();

View File

@ -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());