diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java index 32517c6..8578dba 100755 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java +++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java @@ -1,7 +1,7 @@ package eu.mhsl.craftattack.worldmuseum; import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand; -import eu.mhsl.craftattack.worldmuseum.items.BedManager; +import eu.mhsl.craftattack.worldmuseum.items.ItemManager; import eu.mhsl.craftattack.worldmuseum.temp.GcCommand; import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand; import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand; @@ -13,7 +13,6 @@ import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; import eu.mhsl.craftattack.worldmuseum.util.SignHandler; import eu.mhsl.craftattack.worldmuseum.worlds.World; import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; -import eu.mhsl.craftattack.worldmuseum.items.CompassManager; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.GameMode; import net.minestom.server.event.GlobalEventHandler; @@ -46,10 +45,6 @@ public class Main { config.loadConfig(); World startworld = config.getStart_world(); - //CompassManager & GamemodeChanger - CompassManager compassManager = CompassManager.getInstance(); - compassManager.loadCommpassManager(); - // Add an event callback to specify the spawning instance (and the spawn position) GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler(); @@ -87,13 +82,10 @@ public class Main { player.setRespawnPoint(startworld.getSpawn()); player.setGameMode(GameMode.SURVIVAL); player.setAllowFlying(true); - player.getInventory().setItemStack(0, compassManager.getCompass()); - player.getInventory().setItemStack(8, BedManager.getBedItem()); + player.getInventory().setItemStack(0, ItemManager.getCompassItem()); + player.getInventory().setItemStack(8, ItemManager.getBedItem()); }); - - - try { PORT = Integer.parseInt(args[0]); } catch (Exception e) { diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/items/CompassManager.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/items/CompassManager.java deleted file mode 100644 index 79701ca..0000000 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/items/CompassManager.java +++ /dev/null @@ -1,34 +0,0 @@ -package eu.mhsl.craftattack.worldmuseum.items; - -import eu.mhsl.craftattack.worldmuseum.worlds.World; -import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; -import net.kyori.adventure.text.Component; -import net.minestom.server.inventory.Inventory; -import net.minestom.server.inventory.InventoryType; -import net.minestom.server.item.ItemStack; -import net.minestom.server.item.Material; -public class CompassManager { - static CompassManager instance; - ItemStack compass; - Inventory inventory; - public static CompassManager getInstance() { - if (instance == null) instance = new CompassManager(); - return instance; - } - public void loadCommpassManager() { - compass = ItemStack.builder(Material.COMPASS).displayName(Component.text("World-changer")).build(); - inventory = new Inventory(InventoryType.CHEST_1_ROW, Component.text("World-changer")); - - for (World w : WorldManager.getInstance().getWorlds()) { - inventory.addItemStack(w.getItem()); - } - } - - public ItemStack getCompass() { - return compass; - } - - public Inventory getInventory() { - return inventory; - } -} diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/items/ItemManager.java similarity index 64% rename from src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java rename to src/main/java/eu/mhsl/craftattack/worldmuseum/items/ItemManager.java index 474be5b..5c73862 100644 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java +++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/items/ItemManager.java @@ -4,8 +4,11 @@ import net.kyori.adventure.text.Component; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; -public class BedManager { +public class ItemManager { public static ItemStack getBedItem() { return ItemStack.builder(Material.RED_BED).displayName(Component.text("Spawn-Teleporter")).build(); } + public static ItemStack getCompassItem() { + return ItemStack.builder(Material.COMPASS).displayName(Component.text("World-changer")).build(); + } } diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java index 09f447b..171ac76 100755 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java +++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java @@ -1,12 +1,12 @@ package eu.mhsl.craftattack.worldmuseum.listener; -import eu.mhsl.craftattack.worldmuseum.items.BedManager; +import eu.mhsl.craftattack.worldmuseum.items.ItemManager; import eu.mhsl.craftattack.worldmuseum.util.NewPlayer; -import eu.mhsl.craftattack.worldmuseum.items.CompassManager; import eu.mhsl.craftattack.worldmuseum.worlds.World; import net.kyori.adventure.text.Component; import net.minestom.server.event.player.PlayerUseItemEvent; import net.minestom.server.item.ItemStack; + import java.util.function.Consumer; public class ItemUseListener implements Consumer { @@ -15,22 +15,21 @@ public class ItemUseListener implements Consumer { public void accept(PlayerUseItemEvent playerUseItemEvent) { NewPlayer p = (NewPlayer) playerUseItemEvent.getPlayer(); ItemStack usedItem = playerUseItemEvent.getItemStack(); - CompassManager compassManager = CompassManager.getInstance(); - if (usedItem.equals(compassManager.getCompass())) compassUse(p); - else if (usedItem.equals(BedManager.getBedItem())) bedUse(p); + if (usedItem.equals(ItemManager.getCompassItem())) compassUse(p); + else if (usedItem.equals(ItemManager.getBedItem())) bedUse(p); playerUseItemEvent.setCancelled(true); } private void compassUse(NewPlayer p) { - CompassManager compassManager = CompassManager.getInstance(); if (!p.isAllowCompassUsage()) { long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000; p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (15 - lastUsed) + " Sekunden wieder benutzen.")); return; } - p.openInventory(compassManager.getInventory()); + p.openInventory(p.getCompassInventory()); } + private void bedUse(NewPlayer player) { World world = (World) player.getInstance(); assert world != null; diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/util/NewPlayer.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/NewPlayer.java index d094265..d144061 100644 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/util/NewPlayer.java +++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/NewPlayer.java @@ -1,10 +1,17 @@ package eu.mhsl.craftattack.worldmuseum.util; +import eu.mhsl.craftattack.worldmuseum.worlds.World; +import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager; +import net.kyori.adventure.text.Component; import net.minestom.server.entity.Player; +import net.minestom.server.inventory.Inventory; +import net.minestom.server.inventory.InventoryType; +import net.minestom.server.item.Enchantment; +import net.minestom.server.item.ItemHideFlag; +import net.minestom.server.item.ItemStack; import net.minestom.server.network.player.PlayerConnection; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - import java.time.Duration; import java.util.UUID; @@ -32,7 +39,6 @@ public class NewPlayer extends Player { long difference = 15000; //in Milisec return UsageDifference >= difference && allowCompassUsage; } - public void setAllowMovement(boolean allowMovement) { this.allowMovement = allowMovement; } @@ -42,5 +48,23 @@ public class NewPlayer extends Player { public long getLastCompassUsage() { return lastCompassUsage; } + public Inventory getCompassInventory() { + Inventory inventory = new Inventory(InventoryType.CHEST_1_ROW, Component.text("World-changer")); + for (World w : WorldManager.getInstance().getWorlds()) { + if (!w.equals(this.getInstance())) { + inventory.addItemStack(w.getItem()); + continue; + } + ItemStack itemStack = ItemStack.builder(w.getItem().material()) + .displayName(w.getItem().getDisplayName()) + .meta(metaBuilder -> + metaBuilder + .enchantment(Enchantment.MENDING, (short) 10) + .hideFlag(ItemHideFlag.HIDE_ENCHANTS)) + .build(); + inventory.addItemStack(itemStack); + } + return inventory; + } }