diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/ActionItemManager.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/ActionItemManager.java index a555963..1503836 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/ActionItemManager.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/ActionItemManager.java @@ -16,7 +16,6 @@ public class ActionItemManager { List actionItems = List.of( new WorldSelector(), new LeaveItem(), - new FlightChanger(), new SpawnTeleport(), new SpeedChanger() ); diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/FlightChanger.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/FlightChanger.java deleted file mode 100644 index cf9760f..0000000 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/FlightChanger.java +++ /dev/null @@ -1,35 +0,0 @@ -package eu.mhsl.minecraft.WorldMuseum.items.actionItems; - -import net.kyori.adventure.text.Component; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.jetbrains.annotations.NotNull; - -public class FlightChanger implements IActionItem { - private final ItemStack item = generateItem(); - - private ItemStack generateItem() { - ItemStack item = new ItemStack(Material.ELYTRA); - ItemMeta meta = item.getItemMeta(); - meta.displayName(Component.text("Aktiviere/Deaktiviere Fliegen")); - item.setItemMeta(meta); - return item; - } - - @Override - public void action(@NotNull Player player) { - player.setFlying(!player.isFlying()); - } - - @Override - public ItemStack getItem() { - return item; - } - - @Override - public int getItemLocation() { - return 1; - } -} diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/SpeedChanger.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/SpeedChanger.java index cd0975c..6bc9c93 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/SpeedChanger.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/SpeedChanger.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.stream.IntStream; public class SpeedChanger implements IActionItem { - List flySpeeds = List.of(0.2f, 0.4f, 0.6f, 0.8f); + List flySpeeds = List.of(0.1f, 0.3f, 0.5f, 0.7f); @Override public void action(@NotNull Player player) { @@ -42,6 +42,6 @@ public class SpeedChanger implements IActionItem { @Override public int getItemLocation() { - return 2; + return 1; } } diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/WorldSelector.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/WorldSelector.java index a13677c..1fc5d58 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/WorldSelector.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/items/actionItems/WorldSelector.java @@ -4,6 +4,7 @@ import eu.mhsl.minecraft.WorldMuseum.Main; import eu.mhsl.minecraft.WorldMuseum.viewableWorld.ViewableWorld; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -15,6 +16,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.util.List; +import java.util.Objects; public class WorldSelector implements IActionItem { private Inventory generateWorldSelectorInventory() { @@ -26,8 +28,13 @@ public class WorldSelector implements IActionItem { Inventory inventory = Bukkit.createInventory(null, inventorySize, Component.text("Weltenmuseum")); worlds.stream() - .filter(ViewableWorld::isEnabled) - .forEach(viewableWorld -> inventory.addItem(viewableWorld.getItem())); + .filter(ViewableWorld::isEnabled) + .sorted((o1, o2) -> { + String name1 = PlainTextComponentSerializer.plainText().serialize(o1.getItem().displayName()); + String name2 = PlainTextComponentSerializer.plainText().serialize(o2.getItem().displayName()); + return name1.compareTo(name2); + }) + .forEach(viewableWorld -> inventory.addItem(viewableWorld.getItem())); boolean canExit = Main.instance().getConfig().getBoolean("bungee.enabled"); if(canExit) inventory.setItem(inventorySize - 1, exitItem()); @@ -51,6 +58,12 @@ public class WorldSelector implements IActionItem { @EventHandler public void onInteract(InventoryClickEvent event) { + if(Objects.equals(event.getCurrentItem(), exitItem())) { + LeaveItem item = new LeaveItem(); + item.action((Player) event.getWhoClicked()); + return; + } + List worldItems = Main.instance().getWorlds().stream().map(ViewableWorld::getItem).toList(); if(!worldItems.contains(event.getCurrentItem())) return; event.setCancelled(true); @@ -63,7 +76,7 @@ public class WorldSelector implements IActionItem { @Override public ItemStack getItem() { - ItemStack item = new ItemStack(Material.GRASS_BLOCK); + ItemStack item = new ItemStack(Material.COMPASS); ItemMeta meta = item.getItemMeta(); meta.displayName(Component.text("Weltenliste", NamedTextColor.GOLD)); item.setItemMeta(meta); diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/listener/PlayerListener.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/listener/PlayerListener.java index 513b1b0..d477b89 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/listener/PlayerListener.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/listener/PlayerListener.java @@ -28,13 +28,16 @@ public class PlayerListener implements Listener { @EventHandler public void onJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); + player.getInventory().clear(); + player.getActivePotionEffects().clear(); + player.clearTitle(); player.setGameMode(GameMode.SURVIVAL); - player.setAllowFlight(true); player.setInvulnerable(true); player.setFoodLevel(20); player.setHealth(20); player.setAllowFlight(true); + player.setFlying(true); Main.instance().getWorlds().stream() .filter(ViewableWorld::isDefaultWorld) diff --git a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java index f18151a..71e0d41 100644 --- a/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java +++ b/src/main/java/eu/mhsl/minecraft/WorldMuseum/viewableWorld/ViewableWorld.java @@ -61,6 +61,7 @@ public class ViewableWorld { this.world = worldCreator.createWorld(); Objects.requireNonNull(this.world); this.world.setAutoSave(false); + this.world.setClearWeatherDuration(Integer.MAX_VALUE); } public void unloadWorld() {