diff --git a/pom.xml b/pom.xml
index 6da78c1..312b12e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
de.fanta.challenges
ChallengesJoinEntities
- 1.19
+ 1.19.2
UTF-8
UTF-8
@@ -27,7 +27,7 @@
io.papermc.paper
paper-api
- 1.19-R0.1-SNAPSHOT
+ 1.19.2-R0.1-SNAPSHOT
provided
@@ -45,7 +45,7 @@
de.fanta.challenges
Challenges
- 1.18.2
+ 1.19
provided
diff --git a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java
index 0d310e9..b83624f 100644
--- a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java
+++ b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java
@@ -126,11 +126,12 @@
adventurerouter.addCommandMapping(new AdventureTestMapCommand(this), "testmap");
adventurerouter.addCommandMapping(new ChallengesRemovePlayerServer(this), "removeplayerfromserver");
adventurerouter.addCommandMapping(new AdventureConvertMapCommand(this), "convertmap");
+
+ Bukkit.getPluginManager().registerEvents(new EntityListener(this), this);
+ Bukkit.getPluginManager().registerEvents(new PlayerListener(this), this);
+ Bukkit.getPluginManager().registerEvents(new AdventureLoadGUI(), this);
+ Bukkit.getPluginManager().registerEvents(new ChallengeLoadGUI(), this);
}
- Bukkit.getPluginManager().registerEvents(new EntityListener(this), this);
- Bukkit.getPluginManager().registerEvents(new PlayerListener(this), this);
- Bukkit.getPluginManager().registerEvents(new AdventureLoadGUI(), this);
- Bukkit.getPluginManager().registerEvents(new ChallengeLoadGUI(), this);
Bukkit.getPluginManager().registerEvents(globalDataHelper, this);
}
diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/CategoriesConfig.java b/src/main/java/de/fanta/challengesjoinentities/adventure/CategoriesConfig.java
index e0b1d03..454e0c3 100644
--- a/src/main/java/de/fanta/challengesjoinentities/adventure/CategoriesConfig.java
+++ b/src/main/java/de/fanta/challengesjoinentities/adventure/CategoriesConfig.java
@@ -7,6 +7,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -76,4 +77,16 @@
public Category getCategory(String name) {
return this.categories.get(name);
}
+
+ public Category getCategorybyMap(AdventureMap adventureMap) {
+ for (Category category : plugin.getCategoriesConfig().getCategories().values()) {
+ for (AdventureMap adventureMapTemp : category.getMaps()) {
+ if (Objects.equals(adventureMap.getName(), adventureMapTemp.getName())) {
+ return category;
+ }
+ }
+ }
+ return null;
+ }
+
}
diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java
index 6e8d824..dd4c2dc 100644
--- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java
+++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureMapsUI.java
@@ -57,13 +57,13 @@
ItemStack[] content = new ItemStack[WINDOW_SIZE];
// build scroll buttons
- ItemStack scrollUpHead = this.scrollAmount <= 0 ? CustomHeads.QUARTZ_BLOCK_BLANK.getHead() : CustomHeads.QUARTZ_ARROW_UP.getHead();
+ ItemStack scrollUpHead = this.scrollAmount <= 0 ? CustomHeads.RAINBOW_BLANK.getHead() : CustomHeads.RAINBOW_ARROW_UP.getHead();
ItemMeta scrollUpMeta = scrollUpHead.getItemMeta();
scrollUpMeta.setDisplayName((this.scrollAmount <= 0 ? ChatColor.GRAY : ChatColor.WHITE) + "Nach oben scrollen");
scrollUpHead.setItemMeta(scrollUpMeta);
content[NUM_OF_COLUMNS - 1] = scrollUpHead;
- ItemStack scrollDownHead = this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? CustomHeads.QUARTZ_BLOCK_BLANK.getHead() : CustomHeads.QUARTZ_ARROW_DOWN.getHead();
+ ItemStack scrollDownHead = this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? CustomHeads.RAINBOW_BLANK.getHead() : CustomHeads.RAINBOW_ARROW_DOWN.getHead();
ItemMeta scrollDownMeta = scrollDownHead.getItemMeta();
scrollDownMeta.setDisplayName((this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? ChatColor.GRAY : ChatColor.WHITE) + "Nach unten scrollen");
scrollDownHead.setItemMeta(scrollDownMeta);
diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java
index 66a2767..a9877dc 100644
--- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java
+++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/AdventureSearchGUI.java
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.TreeMap;
import java.util.UUID;
public class AdventureSearchGUI extends AbstractWindow {
@@ -33,15 +34,17 @@
private static final int END_OF_FIRST_ROW_INDEX = NUM_OF_COLUMNS - 1;
private static final int END_OF_LAST_ROW_INDEX = WINDOW_SIZE - 1;
- private static final HashMap> mapsByPlayer = new HashMap<>();
+ private static final int BACK_INDEX = 0;
+
+ private static final HashMap> mapsByPlayer = new HashMap<>();
private final int numOfItemRows;
private int scrollAmount;
- public AdventureSearchGUI(ChallengesJoinEntities plugin, HashMap mapList, String seachEntry, Player player) {
+ public AdventureSearchGUI(ChallengesJoinEntities plugin, TreeMap mapList, String seachEntry, Player player) {
super(player, Bukkit.createInventory(player, WINDOW_SIZE, ChatUtil.GREEN + "Suche: " + ChatUtil.BLUE + seachEntry));
this.plugin = plugin;
- HashMap maps = new HashMap<>(mapList);
+ HashMap maps = new HashMap<>(mapList);
mapsByPlayer.put(player.getUniqueId(), maps);
this.numOfItemRows = (int) (Math.ceil(maps.size() / (double) NUM_OF_ITEM_COLUMNS));
this.scrollAmount = 0;
@@ -51,13 +54,13 @@
ItemStack[] content = new ItemStack[WINDOW_SIZE];
// build scroll buttons
- ItemStack scrollUpHead = this.scrollAmount <= 0 ? CustomHeads.QUARTZ_BLOCK_BLANK.getHead() : CustomHeads.QUARTZ_ARROW_UP.getHead();
+ ItemStack scrollUpHead = this.scrollAmount <= 0 ? CustomHeads.RAINBOW_BLANK.getHead() : CustomHeads.RAINBOW_ARROW_UP.getHead();
ItemMeta scrollUpMeta = scrollUpHead.getItemMeta();
scrollUpMeta.setDisplayName((this.scrollAmount <= 0 ? ChatColor.GRAY : ChatColor.WHITE) + "Nach oben scrollen");
scrollUpHead.setItemMeta(scrollUpMeta);
content[NUM_OF_COLUMNS - 1] = scrollUpHead;
- ItemStack scrollDownHead = this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? CustomHeads.QUARTZ_BLOCK_BLANK.getHead() : CustomHeads.QUARTZ_ARROW_DOWN.getHead();
+ ItemStack scrollDownHead = this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? CustomHeads.RAINBOW_BLANK.getHead() : CustomHeads.RAINBOW_ARROW_DOWN.getHead();
ItemMeta scrollDownMeta = scrollDownHead.getItemMeta();
scrollDownMeta.setDisplayName((this.scrollAmount >= this.numOfItemRows - NUM_OF_ROWS ? ChatColor.GRAY : ChatColor.WHITE) + "Nach unten scrollen");
scrollDownHead.setItemMeta(scrollDownMeta);
@@ -74,20 +77,21 @@
// fill in items
int index = this.scrollAmount * NUM_OF_ITEM_COLUMNS;
- HashMap maps = mapsByPlayer.get(getPlayer().getUniqueId());
- for (int row = 0; row < NUM_OF_ROWS && index < maps.size(); row++) {
+ HashMap maps = mapsByPlayer.get(getPlayer().getUniqueId());
+ for (int row = 1; row < NUM_OF_ROWS && index < maps.size(); row++) {
for (int column = 0; column < NUM_OF_ITEM_COLUMNS && index < maps.size(); column++) {
- AdventureMap adventureMap = new ArrayList<>(maps.keySet()).get(index++);
+ AdventureMap adventureMap = new ArrayList<>(maps.values()).get(index++);
ItemStack stack = adventureMap.getItem().clone();
ItemMeta meta = stack.getItemMeta();
List lore = meta.getLore();
- lore.add(ChatUtil.GREEN + "Kategorie: " + ChatUtil.BLUE + maps.get(adventureMap).getName());
+ lore.add(ChatUtil.GREEN + "Kategorie: " + ChatUtil.BLUE + plugin.getCategoriesConfig().getCategorybyMap(adventureMap).getName());
meta.setLore(lore);
stack.setItemMeta(meta);
content[row * NUM_OF_COLUMNS + column] = adventureMap == null ? null : stack;
}
}
+ content[BACK_INDEX] = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück");
getInventory().setContents(content);
}
@@ -103,6 +107,12 @@
}
int slot = event.getSlot();
+
+ if (slot == BACK_INDEX) {
+ new CategoryUI(this.plugin, this.plugin.getCategoriesConfig(), getPlayer()).open();
+ return;
+ }
+
if (slot == END_OF_FIRST_ROW_INDEX) {
attempScrollUp();
return;
@@ -121,17 +131,17 @@
return;
}
- int adventureMapIndex = (slot - (slot / NUM_OF_COLUMNS)) + this.scrollAmount * NUM_OF_ITEM_COLUMNS;
- HashMap maps = mapsByPlayer.get(getPlayer().getUniqueId());
+ int adventureMapIndex = ((slot - (slot / NUM_OF_COLUMNS)) + this.scrollAmount * NUM_OF_ITEM_COLUMNS) - NUM_OF_COLUMNS + 1;
+ HashMap maps = mapsByPlayer.get(getPlayer().getUniqueId());
if (adventureMapIndex >= maps.size()) {
return;
}
- AdventureMap map = new ArrayList<>(maps.keySet()).get(adventureMapIndex);
+ AdventureMap map = new ArrayList<>(maps.values()).get(adventureMapIndex);
Player p = getPlayer();
if (map != null) {
- Category category = maps.get(map);
+ Category category = plugin.getCategoriesConfig().getCategorybyMap(map);
if (event.isRightClick()) {
getPlayer().sendMessage(ChallengesJoinEntities.PREFIX_COMPONENT.append(Component.text("MapLink: klick mich :)", TextColor.color(Color.YELLOW.asRGB())).clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, map.getWebLink()))));
} else if (!Server.serverPlayers.containsValue(p.getUniqueId())) {
diff --git a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java
index b4c0029..1fcb744 100644
--- a/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java
+++ b/src/main/java/de/fanta/challengesjoinentities/adventure/ui/CategoryUI.java
@@ -21,6 +21,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
public class CategoryUI extends AbstractWindow {
private final ChallengesJoinEntities plugin;
@@ -80,12 +81,12 @@
@Override
public void run() {
String line1 = signEvent.getLines()[0];
- if (line1 != null && !line1.equals("") && !line1.equals(" ")) {
- HashMap maps = new HashMap<>();
+ if (line1 != null && !line1.equals("")) {
+ HashMap maps = new HashMap<>();
for (Category category : plugin.getCategoriesConfig().getCategories().values()) {
for (AdventureMap adventureMap : category.getMaps()) {
- if (adventureMap.getName().toLowerCase().contains(line1.toLowerCase())) {
- maps.put(adventureMap, category);
+ if (adventureMap.getName().toLowerCase().replace("_" , " ").contains(line1.toLowerCase())) {
+ maps.put(adventureMap.getName(), adventureMap);
}
}
}
@@ -93,7 +94,8 @@
if (maps.isEmpty()) {
ChatUtil.sendErrorMessage(signEvent.getPlayer(), "Kein Ergebnis mit deinem Suchbegriff.");
} else {
- new AdventureSearchGUI(plugin, maps, line1, getPlayer()).open();
+ TreeMap sortedMaps = new TreeMap<>(maps);
+ new AdventureSearchGUI(plugin, sortedMaps, line1, getPlayer()).open();
}
} else {
diff --git a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureAddMapCommand.java b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureAddMapCommand.java
index 8d44f84..83b6485 100644
--- a/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureAddMapCommand.java
+++ b/src/main/java/de/fanta/challengesjoinentities/commands/AdventureCommand/AdventureAddMapCommand.java
@@ -13,9 +13,9 @@
import org.bukkit.entity.Player;
public class AdventureAddMapCommand extends SubCommand {
- private ChallengesJoinEntities plugin;
+ private final ChallengesJoinEntities plugin;
- private AdventureMapsConfig config;
+ private final AdventureMapsConfig config;
public AdventureAddMapCommand(ChallengesJoinEntities plugin) {
this.plugin = plugin;
diff --git a/src/main/java/de/fanta/challengesjoinentities/listeners/PlayerListener.java b/src/main/java/de/fanta/challengesjoinentities/listeners/PlayerListener.java
index c3ac83b..db6f1ff 100644
--- a/src/main/java/de/fanta/challengesjoinentities/listeners/PlayerListener.java
+++ b/src/main/java/de/fanta/challengesjoinentities/listeners/PlayerListener.java
@@ -1,11 +1,26 @@
package de.fanta.challengesjoinentities.listeners;
import de.fanta.challengesjoinentities.ChallengesJoinEntities;
+import de.fanta.challengesjoinentities.ChatUtil;
+import de.speedy64.globalport.GlobalApi;
+import org.bukkit.GameMode;
+import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.bukkit.event.block.Action;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.player.PlayerDropItemEvent;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
+import org.bukkit.event.player.PlayerSwapHandItemsEvent;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.persistence.PersistentDataType;
import org.bukkit.util.Vector;
import java.util.Collection;
@@ -13,9 +28,11 @@
public class PlayerListener implements Listener {
private final ChallengesJoinEntities plugin;
+ private final NamespacedKey namespacedKey;
public PlayerListener(ChallengesJoinEntities plugin) {
this.plugin = plugin;
+ this.namespacedKey = new NamespacedKey(plugin, "backitem");
}
@EventHandler
@@ -30,4 +47,73 @@
}
}
}
+
+ @EventHandler
+ public void onPlayerJoin(PlayerJoinEvent e) {
+ ItemStack itemStack = new ItemStack(Material.LIME_BED, 1);
+ ItemMeta meta = itemStack.getItemMeta();
+ meta.setDisplayName(ChatUtil.GREEN + "Zurück zum Spawn");
+ meta.getPersistentDataContainer().set(namespacedKey, PersistentDataType.STRING, "backitem");
+ itemStack.setItemMeta(meta);
+ e.getPlayer().getInventory().setItem(8, itemStack);
+ }
+
+ @EventHandler
+ public void onItemClick(InventoryClickEvent e) {
+ ItemStack stack = e.getCurrentItem();
+ if (stack != null) {
+ ItemMeta meta = stack.getItemMeta();
+ if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getWhoClicked().getGameMode() != GameMode.CREATIVE) {
+ e.setCancelled(true);
+ }
+ }
+
+ if (e.getClick() == ClickType.NUMBER_KEY) {
+ int slot = e.getHotbarButton();
+ if (slot >= 0 && slot < 9) {
+ if (!e.getWhoClicked().getInventory().equals(e.getInventory())) {
+ ItemStack swap = e.getWhoClicked().getInventory().getItem(slot);
+ if (swap != null) {
+ ItemMeta swapItemMeta = swap.getItemMeta();
+ if (swapItemMeta != null && swapItemMeta.getPersistentDataContainer().has(namespacedKey) && e.getWhoClicked().getGameMode() != GameMode.CREATIVE) {
+ e.setCancelled(true);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @EventHandler
+ public void onItemDrop(PlayerDropItemEvent e) {
+ ItemStack stack = e.getItemDrop().getItemStack();
+ ItemMeta meta = stack.getItemMeta();
+ if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) {
+ e.setCancelled(true);
+ }
+ }
+
+ @EventHandler
+ public void onItemSwitchHand(PlayerSwapHandItemsEvent e) {
+ ItemStack stack = e.getMainHandItem();
+ if (stack != null) {
+ ItemMeta meta = stack.getItemMeta();
+ if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) {
+ e.setCancelled(true);
+ }
+ }
+ }
+
+ @EventHandler
+ public void onInteractItem(PlayerInteractEvent e) {
+ if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
+ ItemStack stack = e.getItem();
+ if (stack != null) {
+ ItemMeta meta = stack.getItemMeta();
+ if (meta != null && meta.getPersistentDataContainer().has(namespacedKey)) {
+ GlobalApi.portOnlinePlayerToLocation(e.getPlayer().getName(), "spawn");
+ }
+ }
+ }
+ }
}