Add teleporting player

This commit is contained in:
SemvdH
2026-02-03 18:08:48 +01:00
parent 98fe1a696a
commit a07108e141
10 changed files with 178 additions and 8 deletions

View File

@@ -3,6 +3,8 @@ package nl.interestingcorner.core;
import org.bukkit.plugin.java.JavaPlugin;
import nl.interestingcorner.core.db.DatabaseManager;
import nl.interestingcorner.core.gui.GUIInventoryClickListener;
import nl.interestingcorner.core.logging.Logger;
/**
* Core plugin class for the Interesting Corner plugin
@@ -11,6 +13,8 @@ public class App extends JavaPlugin {
@Override
public void onEnable() {
DatabaseManager.INSTANCE.initialize(this);
Logger.INSTANCE.initialize(this);
getServer().getPluginManager().registerEvents(GUIInventoryClickListener.INSTANCE, this);
getLogger().info("Core plugin loaded!");
}

View File

@@ -124,6 +124,20 @@ public enum MinecraftColor {
return materialsMap.get(this);
}
/**
* Finds a MinecraftColor from a Material.
* @param material the material to find the color from
* @return the MinecraftColor corresponding to the material. White if not found.
*/
public static MinecraftColor fromMaterial(Material material) {
for (MinecraftColor color : MinecraftColor.values()) {
if (materialsMap.get(color) == material) {
return color;
}
}
return WHITE;
}
/**
* Converts this MinecraftColor to a corresponding Minecraft color code.
* @return

View File

@@ -5,11 +5,12 @@ import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
public class GUI implements InventoryHolder {
public class GUI implements InventoryHolder, Listener {
public static final int MAX_INVENTORY_SIZE = 54; // max size of inventory before pages are needed
public static final int DEFAULT_PAGE_SIZE = 45; // default items per page (excluding navigation row)
@@ -60,12 +61,17 @@ public void onInventoryClick(InventoryClickEvent event) {
/**
* Title of the GUI
*/
private String title;
private final String title;
/**
* Number of items per page
*/
private int pageSize;
private final int pageSize;
/**
* Listener for item click events
*/
private GUIItemClickListener itemClickListener;
public GUI(String title, int pageSize) {
this.title = title;
@@ -81,6 +87,14 @@ public void onInventoryClick(InventoryClickEvent event) {
updateInventory();
}
public void setItemClickListener(GUIItemClickListener listener) {
this.itemClickListener = listener;
}
public GUIItemClickListener getItemClickListener() {
return this.itemClickListener;
}
public void addItem(ItemStack item) {
this.items.add(item);
updateInventory();

View File

@@ -0,0 +1,28 @@
package nl.interestingcorner.core.gui;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import nl.interestingcorner.core.logging.Logger;
public enum GUIInventoryClickListener implements Listener{
INSTANCE;
private final String TAG = this.getClass().getSimpleName();
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getInventory().getHolder() instanceof GUI gui) {
Logger.INSTANCE.info(TAG, "Inventory click event detected");
GUIItemClickListener itemClickListener = gui.getItemClickListener();
if (itemClickListener!= null) {
event.setCancelled(true);
Logger.INSTANCE.info(TAG, "Sending click event to listener");
itemClickListener.onItemClick((Player) event.getWhoClicked(), gui, event.getCurrentItem(), event.getSlot());
}
}
}
}

View File

@@ -0,0 +1,8 @@
package nl.interestingcorner.core.gui;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public interface GUIItemClickListener {
void onItemClick(Player player, GUI gui, ItemStack item, int slot);
}

View File

@@ -0,0 +1,19 @@
package nl.interestingcorner.core.logging;
import org.bukkit.plugin.java.JavaPlugin;
public enum Logger {
INSTANCE;
private JavaPlugin plugin;
public void initialize(JavaPlugin plugin) {
this.plugin = plugin;
}
public void info(String tag, String message) {
if (this.plugin != null) {
this.plugin.getLogger().info("[" + tag + "] " + message);
}
}
}