InventoryItemAlignment

This commit is contained in:
2022-10-02 16:58:52 +02:00
parent 4bdb3f94d5
commit 18db3514e3
14 changed files with 56 additions and 23 deletions

View File

@@ -74,6 +74,8 @@ public class Room extends MineNetInstance implements Spawnable {
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> unsetRoom(playerDisconnectEvent.getPlayer()));
setOwner(owner);
new GameSelector().setInstance(this, new Pos(0.5, 16, 9.5));

View File

@@ -1,17 +1,23 @@
package eu.mhsl.minenet.minigames.instance.room.inventory;
import eu.mhsl.minenet.minigames.instance.game.Game;
import eu.mhsl.minenet.minigames.instance.game.GameList;
import eu.mhsl.minenet.minigames.instance.game.GameType;
import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameConfigurationInventory;
import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory;
import eu.mhsl.minenet.minigames.instance.room.Room;
import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory;
import eu.mhsl.minenet.minigames.util.InventoryItemAlignment;
import net.kyori.adventure.text.Component;
import net.minestom.server.inventory.InventoryType;
import net.minestom.server.item.ItemHideFlag;
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class MinigameTypeSelectInventory extends InteractableInventory {
final private Room room;
public MinigameTypeSelectInventory(Room room) {
@@ -19,13 +25,14 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
this.room = room;
int typeCount = 0;
InventoryItemAlignment itemAlignment = new InventoryItemAlignment(GameType.values().length, 1);
for (GameType type : GameType.values()) {
setClickableItem(
ItemStack.builder(type.getIcon())
.displayName(type.getTitle().asComponent())
.lore(type.getDescription().asComponent())
.build(),
typeCount,
itemAlignment.next().get(),
itemClick -> {
drawGames(type);
}
@@ -44,11 +51,13 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
for(int i = 18; i <= 53; i++) {
setDummyItem(Material.AIR, i);
}
int gameCount = 18;
for (GameList gameList : GameList.values()) {
if(!gameList.getType().equals(type)) continue;
int offset = 18;
GameFactory gameFactory = gameList.getFactory();
List<GameList> games = Arrays.stream(GameList.values()).filter(gameList -> gameList.getType().equals(type)).toList();
InventoryItemAlignment itemAlignment = new InventoryItemAlignment(games.size(), 4);
for (GameList game : games) {
GameFactory gameFactory = game.getFactory();
setClickableItem(
ItemStack.builder(gameFactory.symbol())
@@ -56,10 +65,9 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
.lore(gameFactory.description())
.meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES))
.build(),
gameCount,
offset + itemAlignment.next().get(),
itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, gameFactory))
);
gameCount++;
}
}
}