Rework compass inventory to highlight current world items
This commit is contained in:
parent
93d48712b5
commit
310b1034ae
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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<PlayerUseItemEvent> {
|
||||
@ -15,22 +15,21 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
|
||||
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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user