InventoryItemAlignment
This commit is contained in:
parent
4bdb3f94d5
commit
18db3514e3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,6 +14,7 @@ import net.kyori.adventure.sound.Sound;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
|
import net.minestom.server.coordinate.Vec;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
||||||
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
||||||
@ -77,13 +78,12 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
int offset = 18;
|
int offset = 18;
|
||||||
InventoryItemAlignment itemAlignment = new InventoryItemAlignment(config.getAll().size(), 3);
|
InventoryItemAlignment itemAlignment = new InventoryItemAlignment(config.getAll().size(), 3);
|
||||||
for(Option<?> item : config.getAll()) {
|
for(Option<?> item : config.getAll()) {
|
||||||
Vec2d current = itemAlignment.next();
|
InventoryItemAlignment.ItemOffset current = itemAlignment.next();
|
||||||
System.out.println(current.x + " : " + current.y);
|
map.put(offset + current.get(), item);
|
||||||
map.put((int) (offset + (current.y * 9) + current.x), item);
|
|
||||||
|
|
||||||
setDummyItem(
|
setDummyItem(
|
||||||
item.getCurrent(),
|
item.getCurrent(),
|
||||||
(int) (offset + (current.y * 9) + current.x)
|
offset + current.get()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,8 @@ public class Room extends MineNetInstance implements Spawnable {
|
|||||||
|
|
||||||
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
|
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
|
||||||
|
|
||||||
|
eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> unsetRoom(playerDisconnectEvent.getPlayer()));
|
||||||
|
|
||||||
setOwner(owner);
|
setOwner(owner);
|
||||||
|
|
||||||
new GameSelector().setInstance(this, new Pos(0.5, 16, 9.5));
|
new GameSelector().setInstance(this, new Pos(0.5, 16, 9.5));
|
||||||
|
@ -1,17 +1,23 @@
|
|||||||
package eu.mhsl.minenet.minigames.instance.room.inventory;
|
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.GameList;
|
||||||
import eu.mhsl.minenet.minigames.instance.game.GameType;
|
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.GameConfigurationInventory;
|
||||||
import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory;
|
import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory;
|
||||||
import eu.mhsl.minenet.minigames.instance.room.Room;
|
import eu.mhsl.minenet.minigames.instance.room.Room;
|
||||||
import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory;
|
import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory;
|
||||||
|
import eu.mhsl.minenet.minigames.util.InventoryItemAlignment;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.minestom.server.inventory.InventoryType;
|
import net.minestom.server.inventory.InventoryType;
|
||||||
import net.minestom.server.item.ItemHideFlag;
|
import net.minestom.server.item.ItemHideFlag;
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class MinigameTypeSelectInventory extends InteractableInventory {
|
public class MinigameTypeSelectInventory extends InteractableInventory {
|
||||||
final private Room room;
|
final private Room room;
|
||||||
public MinigameTypeSelectInventory(Room room) {
|
public MinigameTypeSelectInventory(Room room) {
|
||||||
@ -19,13 +25,14 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
|
|||||||
this.room = room;
|
this.room = room;
|
||||||
|
|
||||||
int typeCount = 0;
|
int typeCount = 0;
|
||||||
|
InventoryItemAlignment itemAlignment = new InventoryItemAlignment(GameType.values().length, 1);
|
||||||
for (GameType type : GameType.values()) {
|
for (GameType type : GameType.values()) {
|
||||||
setClickableItem(
|
setClickableItem(
|
||||||
ItemStack.builder(type.getIcon())
|
ItemStack.builder(type.getIcon())
|
||||||
.displayName(type.getTitle().asComponent())
|
.displayName(type.getTitle().asComponent())
|
||||||
.lore(type.getDescription().asComponent())
|
.lore(type.getDescription().asComponent())
|
||||||
.build(),
|
.build(),
|
||||||
typeCount,
|
itemAlignment.next().get(),
|
||||||
itemClick -> {
|
itemClick -> {
|
||||||
drawGames(type);
|
drawGames(type);
|
||||||
}
|
}
|
||||||
@ -44,11 +51,13 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
|
|||||||
for(int i = 18; i <= 53; i++) {
|
for(int i = 18; i <= 53; i++) {
|
||||||
setDummyItem(Material.AIR, i);
|
setDummyItem(Material.AIR, i);
|
||||||
}
|
}
|
||||||
int gameCount = 18;
|
int offset = 18;
|
||||||
for (GameList gameList : GameList.values()) {
|
|
||||||
if(!gameList.getType().equals(type)) continue;
|
|
||||||
|
|
||||||
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(
|
setClickableItem(
|
||||||
ItemStack.builder(gameFactory.symbol())
|
ItemStack.builder(gameFactory.symbol())
|
||||||
@ -56,10 +65,9 @@ public class MinigameTypeSelectInventory extends InteractableInventory {
|
|||||||
.lore(gameFactory.description())
|
.lore(gameFactory.description())
|
||||||
.meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES))
|
.meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES))
|
||||||
.build(),
|
.build(),
|
||||||
gameCount,
|
offset + itemAlignment.next().get(),
|
||||||
itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, gameFactory))
|
itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, gameFactory))
|
||||||
);
|
);
|
||||||
gameCount++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,12 +31,12 @@ public class InventoryItemAlignment {
|
|||||||
if(x * y < size) throw new RuntimeException("Not enough space for Item alignment");
|
if(x * y < size) throw new RuntimeException("Not enough space for Item alignment");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vec2d next() {
|
public ItemOffset next() {
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
if(this.size < 9) return new Vec2d(this.row(this.size).get(counter), y/2);
|
if(this.size < 9) return new ItemOffset(this.row(this.size).get(counter), y > 1 ? 1 : 0);
|
||||||
//TODO more items?
|
//TODO more items?
|
||||||
return new Vec2d(0,0);
|
return new ItemOffset(0,0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,4 +132,26 @@ public class InventoryItemAlignment {
|
|||||||
}
|
}
|
||||||
}.get(count);
|
}.get(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ItemOffset {
|
||||||
|
private int x;
|
||||||
|
private int z;
|
||||||
|
|
||||||
|
public ItemOffset(int x, int z) {
|
||||||
|
this.x = x;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int get() {
|
||||||
|
return x + (z * 9);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
map;en_us;de_de
|
map,en_us,de_de
|
||||||
localName;English;Deutsch
|
localName,English,Deutsch
|
||||||
name;English;German
|
name,English,German
|
||||||
symbol;eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MTQ1Njg3N2Y1NGJmMWFjZTI1MWU0Y2VlNDBkYmE1OTdkMmNjNDAzNjJjYjhmNGVkNzExZTUwYjBiZTViMyJ9fX0=;eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWU3ODk5YjQ4MDY4NTg2OTdlMjgzZjA4NGQ5MTczZmU0ODc4ODY0NTM3NzQ2MjZiMjRiZDhjZmVjYzc3YjNmIn19fQ==
|
symbol,eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MTQ1Njg3N2Y1NGJmMWFjZTI1MWU0Y2VlNDBkYmE1OTdkMmNjNDAzNjJjYjhmNGVkNzExZTUwYjBiZTViMyJ9fX0=,eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWU3ODk5YjQ4MDY4NTg2OTdlMjgzZjA4NGQ5MTczZmU0ODc4ODY0NTM3NzQ2MjZiMjRiZDhjZmVjYzc3YjNmIn19fQ==
|
||||||
sample;The brown fox jumps over the white fence;Der braune Fuchs springt über den weißen Zaun
|
sample,The brown fox jumps over the white fence,Der braune Fuchs springt über den weißen Zaun
|
||||||
;;
|
,,
|
||||||
ns:common#;;
|
ns:common#,,
|
||||||
select_language;Please select your prefered Language;Bitte wähle deine bevorzugte Sprache!
|
select_language,Please select your prefered Language,Bitte wähle deine bevorzugte Sprache!
|
||||||
welcome;Welcome!;Willkommen!
|
welcome,Welcome!,Willkommen!
|
||||||
|
asdasd,asd,ads
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user