diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock index 4645d9d..6ddf630 100644 Binary files a/.gradle/7.4/checksums/checksums.lock and b/.gradle/7.4/checksums/checksums.lock differ diff --git a/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock index 2f7c6eb..5df4cc9 100644 Binary files a/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock and b/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin index 639d241..3757154 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.bin and b/.gradle/7.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock index 31e347d..4633a96 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.lock and b/.gradle/7.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.4/fileHashes/fileHashes.bin b/.gradle/7.4/fileHashes/fileHashes.bin index 8fd5436..fb693db 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.bin and b/.gradle/7.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.4/fileHashes/fileHashes.lock b/.gradle/7.4/fileHashes/fileHashes.lock index c7c2b5b..5fe7482 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.lock and b/.gradle/7.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.4/fileHashes/resourceHashesCache.bin b/.gradle/7.4/fileHashes/resourceHashesCache.bin index 65bba1d..89e03bc 100644 Binary files a/.gradle/7.4/fileHashes/resourceHashesCache.bin and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 549e54c..cb505e4 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index e84003e..20a597f 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java index ec38512..5b1ad89 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java @@ -14,6 +14,7 @@ import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.MinecraftServer; +import net.minestom.server.coordinate.Vec; import net.minestom.server.entity.Player; import net.minestom.server.event.instance.AddEntityToInstanceEvent; import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent; @@ -77,13 +78,12 @@ public class GameConfigurationInventory extends InteractableInventory { int offset = 18; InventoryItemAlignment itemAlignment = new InventoryItemAlignment(config.getAll().size(), 3); for(Option item : config.getAll()) { - Vec2d current = itemAlignment.next(); - System.out.println(current.x + " : " + current.y); - map.put((int) (offset + (current.y * 9) + current.x), item); + InventoryItemAlignment.ItemOffset current = itemAlignment.next(); + map.put(offset + current.get(), item); setDummyItem( item.getCurrent(), - (int) (offset + (current.y * 9) + current.x) + offset + current.get() ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java index c71907a..56105e2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java @@ -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)); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java index a09c026..2149adb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java @@ -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 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++; } } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java index 4a900e0..62b241e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java @@ -31,12 +31,12 @@ public class InventoryItemAlignment { if(x * y < size) throw new RuntimeException("Not enough space for Item alignment"); } - public Vec2d next() { + public ItemOffset next() { 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? - return new Vec2d(0,0); + return new ItemOffset(0,0); } @@ -132,4 +132,26 @@ public class InventoryItemAlignment { } }.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); + } + } } diff --git a/src/main/resources/lang/locales.map.csv b/src/main/resources/lang/locales.map.csv index 953d037..b5d7904 100644 --- a/src/main/resources/lang/locales.map.csv +++ b/src/main/resources/lang/locales.map.csv @@ -1,9 +1,10 @@ -map;en_us;de_de -localName;English;Deutsch -name;English;German -symbol;eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MTQ1Njg3N2Y1NGJmMWFjZTI1MWU0Y2VlNDBkYmE1OTdkMmNjNDAzNjJjYjhmNGVkNzExZTUwYjBiZTViMyJ9fX0=;eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWU3ODk5YjQ4MDY4NTg2OTdlMjgzZjA4NGQ5MTczZmU0ODc4ODY0NTM3NzQ2MjZiMjRiZDhjZmVjYzc3YjNmIn19fQ== -sample;The brown fox jumps over the white fence;Der braune Fuchs springt über den weißen Zaun -;; -ns:common#;; -select_language;Please select your prefered Language;Bitte wähle deine bevorzugte Sprache! -welcome;Welcome!;Willkommen! +map,en_us,de_de +localName,English,Deutsch +name,English,German +symbol,eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q5MTQ1Njg3N2Y1NGJmMWFjZTI1MWU0Y2VlNDBkYmE1OTdkMmNjNDAzNjJjYjhmNGVkNzExZTUwYjBiZTViMyJ9fX0=,eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWU3ODk5YjQ4MDY4NTg2OTdlMjgzZjA4NGQ5MTczZmU0ODc4ODY0NTM3NzQ2MjZiMjRiZDhjZmVjYzc3YjNmIn19fQ== +sample,The brown fox jumps over the white fence,Der braune Fuchs springt über den weißen Zaun +,, +ns:common#,, +select_language,Please select your prefered Language,Bitte wähle deine bevorzugte Sprache! +welcome,Welcome!,Willkommen! +asdasd,asd,ads