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;
|
package eu.mhsl.craftattack.worldmuseum;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
|
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.temp.GcCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
|
import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
|
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.util.SignHandler;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||||
import eu.mhsl.craftattack.worldmuseum.items.CompassManager;
|
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.entity.GameMode;
|
import net.minestom.server.entity.GameMode;
|
||||||
import net.minestom.server.event.GlobalEventHandler;
|
import net.minestom.server.event.GlobalEventHandler;
|
||||||
@ -46,10 +45,6 @@ public class Main {
|
|||||||
config.loadConfig();
|
config.loadConfig();
|
||||||
World startworld = config.getStart_world();
|
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)
|
// Add an event callback to specify the spawning instance (and the spawn position)
|
||||||
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
||||||
|
|
||||||
@ -87,13 +82,10 @@ public class Main {
|
|||||||
player.setRespawnPoint(startworld.getSpawn());
|
player.setRespawnPoint(startworld.getSpawn());
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
player.setAllowFlying(true);
|
player.setAllowFlying(true);
|
||||||
player.getInventory().setItemStack(0, compassManager.getCompass());
|
player.getInventory().setItemStack(0, ItemManager.getCompassItem());
|
||||||
player.getInventory().setItemStack(8, BedManager.getBedItem());
|
player.getInventory().setItemStack(8, ItemManager.getBedItem());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PORT = Integer.parseInt(args[0]);
|
PORT = Integer.parseInt(args[0]);
|
||||||
} catch (Exception e) {
|
} 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.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
|
|
||||||
public class BedManager {
|
public class ItemManager {
|
||||||
public static ItemStack getBedItem() {
|
public static ItemStack getBedItem() {
|
||||||
return ItemStack.builder(Material.RED_BED).displayName(Component.text("Spawn-Teleporter")).build();
|
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;
|
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.util.NewPlayer;
|
||||||
import eu.mhsl.craftattack.worldmuseum.items.CompassManager;
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
|
public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
|
||||||
@ -15,22 +15,21 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
|
|||||||
public void accept(PlayerUseItemEvent playerUseItemEvent) {
|
public void accept(PlayerUseItemEvent playerUseItemEvent) {
|
||||||
NewPlayer p = (NewPlayer) playerUseItemEvent.getPlayer();
|
NewPlayer p = (NewPlayer) playerUseItemEvent.getPlayer();
|
||||||
ItemStack usedItem = playerUseItemEvent.getItemStack();
|
ItemStack usedItem = playerUseItemEvent.getItemStack();
|
||||||
CompassManager compassManager = CompassManager.getInstance();
|
|
||||||
|
|
||||||
if (usedItem.equals(compassManager.getCompass())) compassUse(p);
|
if (usedItem.equals(ItemManager.getCompassItem())) compassUse(p);
|
||||||
else if (usedItem.equals(BedManager.getBedItem())) bedUse(p);
|
else if (usedItem.equals(ItemManager.getBedItem())) bedUse(p);
|
||||||
|
|
||||||
playerUseItemEvent.setCancelled(true);
|
playerUseItemEvent.setCancelled(true);
|
||||||
}
|
}
|
||||||
private void compassUse(NewPlayer p) {
|
private void compassUse(NewPlayer p) {
|
||||||
CompassManager compassManager = CompassManager.getInstance();
|
|
||||||
if (!p.isAllowCompassUsage()) {
|
if (!p.isAllowCompassUsage()) {
|
||||||
long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
|
long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
|
||||||
p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (15 - lastUsed) + " Sekunden wieder benutzen."));
|
p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (15 - lastUsed) + " Sekunden wieder benutzen."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p.openInventory(compassManager.getInventory());
|
p.openInventory(p.getCompassInventory());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bedUse(NewPlayer player) {
|
private void bedUse(NewPlayer player) {
|
||||||
World world = (World) player.getInstance();
|
World world = (World) player.getInstance();
|
||||||
assert world != null;
|
assert world != null;
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.util;
|
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.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 net.minestom.server.network.player.PlayerConnection;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -32,7 +39,6 @@ public class NewPlayer extends Player {
|
|||||||
long difference = 15000; //in Milisec
|
long difference = 15000; //in Milisec
|
||||||
return UsageDifference >= difference && allowCompassUsage;
|
return UsageDifference >= difference && allowCompassUsage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAllowMovement(boolean allowMovement) {
|
public void setAllowMovement(boolean allowMovement) {
|
||||||
this.allowMovement = allowMovement;
|
this.allowMovement = allowMovement;
|
||||||
}
|
}
|
||||||
@ -42,5 +48,23 @@ public class NewPlayer extends Player {
|
|||||||
public long getLastCompassUsage() {
|
public long getLastCompassUsage() {
|
||||||
return lastCompassUsage;
|
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