Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion src/main/java/dev/pozzoo/quickwaystones/data/WaystoneData.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import dev.pozzoo.quickwaystones.QuickWaystones;
import org.bukkit.Location;
import org.bukkit.Material;

import java.util.UUID;

Expand All @@ -11,19 +12,21 @@ public class WaystoneData {
private final UUID owner;
private final Location location;
private int direction = 0;
private Material icon = Material.ENDER_PEARL;

public WaystoneData(Location location, UUID owner) {
id = QuickWaystones.getAndIncrementLastWaystoneID();
name = "Waystone " + id ;
this.location = location;
this.owner = owner;
}
public WaystoneData(Integer id, String name, Location location, UUID owner, int direction) {
public WaystoneData(Integer id, String name, Location location, UUID owner, int direction, Material icon) {
this.id = id;
this.name = name;
this.location = location;
this.owner = owner;
this.direction = direction;
this.icon = icon;
}

public int getId() {
Expand Down Expand Up @@ -54,6 +57,14 @@ public void setDirection(int direction) {
this.direction = direction;
}

public Material getIcon() {
return icon;
}

public void setIcon(Material icon) {
this.icon = icon;
}

@Override
public String toString() {
return "WaystoneData{" +
Expand Down
30 changes: 28 additions & 2 deletions src/main/java/dev/pozzoo/quickwaystones/gui/WaystoneGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
Expand Down Expand Up @@ -71,7 +72,7 @@ private static void openPage(Player player, int page, WaystoneData waystoneData)
int slot = 0;
for (int i = startIndex; i < endIndex; i++) {
WaystoneData ws = waystones.get(i);
ItemStack item = new ItemStack(Material.ENDER_PEARL);
ItemStack item = new ItemStack(ws.getIcon());
ItemMeta meta = item.getItemMeta();
if (meta != null) {
meta.displayName(StringUtils.formatItemName(ws.getName()));
Expand Down Expand Up @@ -133,7 +134,6 @@ public void onInventoryClick(InventoryClickEvent event) {
if (!(event.getInventory().getHolder() instanceof WaystoneHolder holder)) {
return;
}
event.setCancelled(true);

if (!(event.getWhoClicked() instanceof Player player)) {
return;
Expand All @@ -142,8 +142,12 @@ public void onInventoryClick(InventoryClickEvent event) {
int slot = event.getRawSlot();
// Only handle clicks inside the top inventory
if (slot < 0 || slot >= INVENTORY_SIZE) {
if (event.isShiftClick()) {
event.setCancelled(true);
}
return;
}
event.setCancelled(true);

// Pagination
if (slot == PREV_SLOT && holder.page > 0) {
Expand All @@ -158,6 +162,17 @@ public void onInventoryClick(InventoryClickEvent event) {
// Waystone teleport
WaystoneData ws = holder.slotToWaystone.get(slot);
if (ws != null) {
ItemStack cursor = event.getCursor();
if (cursor != null && cursor.getType() != Material.AIR) {
ws.setIcon(cursor.getType());
QuickWaystones.saveData();
String message = QuickWaystones.getInstance().getConfig().getString("Messages.WaystoneIconChanged", "Waystone icon changed!");
player.sendMessage(StringUtils.formatString("<green>" + message));
player.playSound(player, Sound.BLOCK_NOTE_BLOCK_PLING, 0.5f, 1.5f);
openPage(player, holder.page, holder.waystoneData);
return;
}

if (ws.getId() == holder.waystoneData.getId()) {
String message = QuickWaystones.getInstance().getConfig().getString("Messages.SameWaystone", "You cannot teleport to the same waystone!");
player.sendMessage(StringUtils.formatString("<red>" + message));
Expand Down Expand Up @@ -188,4 +203,15 @@ public void onInventoryClick(InventoryClickEvent event) {
player.closeInventory();
}
}

@EventHandler
public void onInventoryDrag(InventoryDragEvent event) {
if (!(event.getInventory().getHolder() instanceof WaystoneHolder)) {
return;
}
boolean affectsGui = event.getRawSlots().stream().anyMatch(slot -> slot < INVENTORY_SIZE);
if (affectsGui) {
event.setCancelled(true);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import dev.pozzoo.quickwaystones.QuickWaystones;
import dev.pozzoo.quickwaystones.data.WaystoneData;
import java.io.File;
import org.bukkit.Material;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
Expand Down Expand Up @@ -81,12 +82,20 @@ public int loadData() {
}

int id = Integer.parseInt(key);
String iconName = config.getString(basePath + ".icon", "ENDER_PEARL");
Material icon;
try {
icon = Material.valueOf(iconName);
} catch (IllegalArgumentException e) {
icon = Material.ENDER_PEARL;
}
WaystoneData waystoneData = new WaystoneData(
id,
config.getString(basePath + ".name", "Waystone " + id),
location,
UUID.fromString(ownerValue),
config.getInt(basePath + ".direction", 0)
config.getInt(basePath + ".direction", 0),
icon
);
QuickWaystones.getWaystonesMap().put(
waystoneData.getLocation(),
Expand Down Expand Up @@ -142,6 +151,7 @@ public void saveData(
config.set(basePath + ".location", waystone.getLocation());
config.set(basePath + ".owner", waystone.getOwner().toString());
config.set(basePath + ".direction", waystone.getDirection());
config.set(basePath + ".icon", waystone.getIcon().name());
}

playerAccess
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ Messages:
SetWaystoneNorth: "Set To Spawn North"
SetWaystoneSouth: "Set To Spawn South"
SetWaystoneEast: "Set To Spawn East"
SetWaystoneWest: "Set To Spawn West"
SetWaystoneWest: "Set To Spawn West"
WaystoneIconChanged: "Waystone icon changed!"