diff --git a/setup/src/main/java/net/theevilreaper/bounce/setup/BounceSetup.java b/setup/src/main/java/net/theevilreaper/bounce/setup/BounceSetup.java index 106c050..e503ea8 100644 --- a/setup/src/main/java/net/theevilreaper/bounce/setup/BounceSetup.java +++ b/setup/src/main/java/net/theevilreaper/bounce/setup/BounceSetup.java @@ -56,7 +56,6 @@ public final class BounceSetup implements ListenerHandling { private final MapProvider mapProvider; private final SetupDataService setupDataService; private final InventoryService inventoryService; - private final SetupItems setupItems; private final FileHandler fileHandler; private final DialogRegistry dialogRegistry; @@ -66,7 +65,6 @@ public BounceSetup() { this.mapProvider = new BounceSetupMapProvider(this.fileHandler, path); this.setupDataService = SetupDataService.create(); this.inventoryService = new InventoryService(this.mapProvider::getEntries); - this.setupItems = new SetupItems(); this.dialogRegistry = new SetupDialogRegistry(); MinecraftServer.getSchedulerManager().buildShutdownTask(this::onShutdown); } @@ -89,7 +87,6 @@ private void registerListener(@NotNull EventNode node) { node.addListener(AsyncPlayerConfigurationEvent.class, new PlayerConfigurationListener(instanceSupplier)); node.addListener(PlayerUseItemEvent.class, new PlayerItemListener(this.inventoryService::openMapSetupInventory, this.setupDataService::get)); node.addListener(PlayerSpawnEvent.class, new PlayerSpawnListener( - this.setupItems::setOverViewItem, player -> this.mapProvider.teleportToSpawn(player, false)) ); node.addListener(PlayerDisconnectEvent.class, new PlayerDisconnectListener(this.setupDataService::remove)); @@ -97,7 +94,7 @@ private void registerListener(@NotNull EventNode node) { PlayerConsumer instanceSwitcher = player -> { mapProvider.teleportToSpawn(player, true); - setupItems.setOverViewItem(player); + SetupItems.setOverViewItem(player); }; node.addListener(SetupFinishEvent.class, new SetupFinishListener(instanceSwitcher)); @@ -109,7 +106,7 @@ private void registerListener(@NotNull EventNode node) { node.addListener(PlayerDeletePromptEvent.class, new PlayerDeletePromptListener(dialogRegistry)); node.addListener(PlayerCustomClickEvent.class, new PlayerCustomClickEventListener(this.dialogRegistry, this.setupDataService::get)); node.addListener(PlayerDialogRequestEvent.class, new PlayerDialogRequestListener(this.dialogRegistry)); - node.addListener(AddEntityToInstanceEvent.class, new EntityAddToInstanceListener(instanceSupplier, setupItems)); + node.addListener(AddEntityToInstanceEvent.class, new EntityAddToInstanceListener(instanceSupplier)); } } diff --git a/setup/src/main/java/net/theevilreaper/bounce/setup/listener/PlayerSpawnListener.java b/setup/src/main/java/net/theevilreaper/bounce/setup/listener/PlayerSpawnListener.java index 2feaa38..0efb519 100644 --- a/setup/src/main/java/net/theevilreaper/bounce/setup/listener/PlayerSpawnListener.java +++ b/setup/src/main/java/net/theevilreaper/bounce/setup/listener/PlayerSpawnListener.java @@ -8,17 +8,16 @@ import net.minestom.server.event.player.PlayerSpawnEvent; import net.theevilreaper.aves.util.functional.PlayerConsumer; import net.theevilreaper.bounce.common.util.Messages; +import net.theevilreaper.bounce.setup.util.SetupItems; import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; public class PlayerSpawnListener implements Consumer { - private final PlayerConsumer itemConsumer; private final PlayerConsumer teleportConsumer; - public PlayerSpawnListener(@NotNull PlayerConsumer itemConsumer, @NotNull PlayerConsumer teleportConsumer) { - this.itemConsumer = itemConsumer; + public PlayerSpawnListener(@NotNull PlayerConsumer teleportConsumer) { this.teleportConsumer = teleportConsumer; } @@ -32,7 +31,7 @@ public void accept(@NotNull PlayerSpawnEvent event) { .append(Component.text("joined the server", NamedTextColor.GRAY)); Audience.audience(MinecraftServer.getConnectionManager().getOnlinePlayers()) .sendMessage(joinMessage); - this.itemConsumer.accept(player); + SetupItems.setOverViewItem(player); this.teleportConsumer.accept(player); } } diff --git a/setup/src/main/java/net/theevilreaper/bounce/setup/listener/entity/EntityAddToInstanceListener.java b/setup/src/main/java/net/theevilreaper/bounce/setup/listener/entity/EntityAddToInstanceListener.java index 2d300b6..38b0dfe 100644 --- a/setup/src/main/java/net/theevilreaper/bounce/setup/listener/entity/EntityAddToInstanceListener.java +++ b/setup/src/main/java/net/theevilreaper/bounce/setup/listener/entity/EntityAddToInstanceListener.java @@ -12,11 +12,9 @@ public class EntityAddToInstanceListener implements Consumer { private final Supplier instanceSupplier; - private final SetupItems items; - public EntityAddToInstanceListener(@NotNull Supplier instanceSupplier, @NotNull SetupItems items) { + public EntityAddToInstanceListener(@NotNull Supplier instanceSupplier) { this.instanceSupplier = instanceSupplier; - this.items = items; } @Override @@ -24,9 +22,9 @@ public void accept(@NotNull AddEntityToInstanceEvent event) { if (!(event.getEntity() instanceof Player player)) return; Instance mainInstance = this.instanceSupplier.get(); if (event.getInstance().getUuid().equals(mainInstance.getUuid())) { - items.setOverViewItem(player); + SetupItems.setOverViewItem(player); return; } - items.setSetupItems(player); + SetupItems.setSetupItems(player); } } diff --git a/setup/src/main/java/net/theevilreaper/bounce/setup/util/SetupItems.java b/setup/src/main/java/net/theevilreaper/bounce/setup/util/SetupItems.java index fed5378..00d2eb4 100644 --- a/setup/src/main/java/net/theevilreaper/bounce/setup/util/SetupItems.java +++ b/setup/src/main/java/net/theevilreaper/bounce/setup/util/SetupItems.java @@ -6,10 +6,9 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.tag.Tag; -import org.jetbrains.annotations.NotNull; /** - * The class holds all item reference which are required in the setup process of a map. + * The class holds all item references that are required in the setup process of a map. * Each item uses a {@link Tag} to identify which functionality the item has. * This behaviour is easier to use because it doesn't require additional references in the event class to check the item. * @@ -26,25 +25,25 @@ public final class SetupItems { .customName(Component.empty()) .build(); - private final ItemStack overview; - private final ItemStack save; - private final ItemStack viewItem; - private final ItemStack groundItem; + private static final ItemStack OVERVIEW; + private static final ItemStack SAVE; + private static final ItemStack VIEW_ITEM; + private static final ItemStack GROUND_ITEM; - public SetupItems() { - this.overview = ItemStack.builder(Material.CHEST) + static { + OVERVIEW = ItemStack.builder(Material.CHEST) .customName(Component.text("Maps", NamedTextColor.GREEN)) .set(ITEM_TAG, 0x00) .build(); - this.save = ItemStack.builder(Material.BELL) + SAVE = ItemStack.builder(Material.BELL) .customName(Component.text("Save map", NamedTextColor.RED)) .set(ITEM_TAG, 0x01) .build(); - this.viewItem = ItemStack.builder(Material.COMPASS) + VIEW_ITEM = ItemStack.builder(Material.COMPASS) .customName(Component.text("View data", NamedTextColor.AQUA)) .set(ITEM_TAG, OVERVIEW_FLAG) .build(); - this.groundItem = ItemStack.builder(Material.CARTOGRAPHY_TABLE) + GROUND_ITEM = ItemStack.builder(Material.CARTOGRAPHY_TABLE) .customName(Component.text("Ground Layer", NamedTextColor.GREEN)) .set(ITEM_TAG, 0x04) .build(); @@ -55,9 +54,9 @@ public SetupItems() { * * @param player the player to set the item */ - public void setOverViewItem(@NotNull Player player) { + public static void setOverViewItem(Player player) { player.getInventory().clear(); - player.getInventory().setItemStack(0x00, this.overview); + player.getInventory().setItemStack(0x00, OVERVIEW); player.setHeldItemSlot((byte) 0); } @@ -66,11 +65,15 @@ public void setOverViewItem(@NotNull Player player) { * * @param player the player to set the item */ - public void setSetupItems(@NotNull Player player) { + public static void setSetupItems(Player player) { player.getInventory().clear(); - player.getInventory().setItemStack(0x06, this.save); - player.getInventory().setItemStack(0x04, this.groundItem); - player.getInventory().setItemStack(0x02, this.viewItem); + player.getInventory().setItemStack(0x06, SAVE); + player.getInventory().setItemStack(0x04, GROUND_ITEM); + player.getInventory().setItemStack(0x02, VIEW_ITEM); player.setHeldItemSlot((byte) 0); } + + private SetupItems() { + // Nothing do to here + } } diff --git a/setup/src/main/java/net/theevilreaper/bounce/setup/util/package-info.java b/setup/src/main/java/net/theevilreaper/bounce/setup/util/package-info.java new file mode 100644 index 0000000..bc3c43c --- /dev/null +++ b/setup/src/main/java/net/theevilreaper/bounce/setup/util/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package net.theevilreaper.bounce.setup.util; + +import org.jetbrains.annotations.NotNullByDefault; \ No newline at end of file diff --git a/setup/src/test/java/net/theevilreaper/bounce/setup/item/GroundSetupItemTest.java b/setup/src/test/java/net/theevilreaper/bounce/setup/item/GroundSetupItemTest.java index eb5dfb7..ef25d3d 100644 --- a/setup/src/test/java/net/theevilreaper/bounce/setup/item/GroundSetupItemTest.java +++ b/setup/src/test/java/net/theevilreaper/bounce/setup/item/GroundSetupItemTest.java @@ -12,6 +12,7 @@ import net.onelitefeather.guira.data.SetupData; import net.theevilreaper.bounce.setup.data.BounceData; import net.theevilreaper.bounce.setup.listener.PlayerItemListener; +import net.theevilreaper.bounce.setup.util.SetupItems; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; @@ -33,7 +34,7 @@ void testGroundItemLogic(@NotNull Env env) { env.process().eventHandler().addListener(PlayerUseItemEvent.class, playerItemListener); - setupItems.setSetupItems(player); + SetupItems.setSetupItems(player); player.setTag(SETUP_TAG, 1); ItemStack stack = player.getInventory().getItemStack(0x04); assertNotEquals(ItemStack.AIR, stack); diff --git a/setup/src/test/java/net/theevilreaper/bounce/setup/item/SetupItemTestBase.java b/setup/src/test/java/net/theevilreaper/bounce/setup/item/SetupItemTestBase.java index 44ca4c3..f554aee 100644 --- a/setup/src/test/java/net/theevilreaper/bounce/setup/item/SetupItemTestBase.java +++ b/setup/src/test/java/net/theevilreaper/bounce/setup/item/SetupItemTestBase.java @@ -7,7 +7,6 @@ import net.theevilreaper.aves.util.functional.PlayerConsumer; import net.theevilreaper.bounce.common.util.GsonUtil; import net.theevilreaper.bounce.setup.inventory.MapDataTestBase; -import net.theevilreaper.bounce.setup.util.SetupItems; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; @@ -23,7 +22,6 @@ public abstract class SetupItemTestBase extends MapDataTestBase { protected static FileHandler fileHandler; - protected static SetupItems setupItems; protected static SetupDataService setupDataService; protected static PlayerConsumer nopFunction = player -> { // No operation function for player @@ -32,7 +30,6 @@ public abstract class SetupItemTestBase extends MapDataTestBase { @BeforeAll static void setUp() { fileHandler = new GsonFileHandler(GsonUtil.GSON); - setupItems = new SetupItems(); setupDataService = SetupDataService.create(); } } diff --git a/setup/src/test/java/net/theevilreaper/bounce/setup/util/SetupItemsIntegrationTest.java b/setup/src/test/java/net/theevilreaper/bounce/setup/util/SetupItemsIntegrationTest.java index 112b9f6..8467488 100644 --- a/setup/src/test/java/net/theevilreaper/bounce/setup/util/SetupItemsIntegrationTest.java +++ b/setup/src/test/java/net/theevilreaper/bounce/setup/util/SetupItemsIntegrationTest.java @@ -7,8 +7,6 @@ import net.minestom.testing.Env; import net.minestom.testing.extension.MicrotusExtension; import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -18,25 +16,13 @@ @ExtendWith(MicrotusExtension.class) class SetupItemsIntegrationTest { - private static SetupItems setupItems; - - @BeforeAll - static void setUp() { - setupItems = new SetupItems(); - } - - @AfterAll - static void tearDown() { - setupItems = null; - } - @Test void testOverViewItem(@NotNull Env env) { Instance instance = env.createFlatInstance(); Player player = env.createPlayer(instance); assertNotNull(player); - setupItems.setOverViewItem(player); + SetupItems.setOverViewItem(player); ItemStack overViewItem = player.getInventory().getItemStack(0x00); assertNotNull(overViewItem); assertNotEquals(Material.AIR, overViewItem.material()); @@ -54,7 +40,7 @@ void testSetupItems(@NotNull Env env) { Player player = env.createPlayer(instance); assertNotNull(player); - setupItems.setSetupItems(player); + SetupItems.setSetupItems(player); ItemStack saveItem = player.getInventory().getItemStack(0x06); assertNotNull(saveItem); assertNotEquals(Material.AIR, saveItem.material()); diff --git a/src/main/java/net/theevilreaper/bounce/Bounce.java b/src/main/java/net/theevilreaper/bounce/Bounce.java index c040f9c..561b3e0 100644 --- a/src/main/java/net/theevilreaper/bounce/Bounce.java +++ b/src/main/java/net/theevilreaper/bounce/Bounce.java @@ -14,12 +14,9 @@ import net.minestom.server.event.player.PlayerChatEvent; import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerSpawnEvent; -import net.minestom.server.instance.block.Block; -import net.minestom.server.instance.block.BlockHandler; import net.minestom.server.instance.block.BlockManager; import net.theevilreaper.aves.map.provider.MapProvider; import net.theevilreaper.bounce.block.BlockLoader; -import net.theevilreaper.bounce.block.BlockLoaderBuilder; import net.theevilreaper.bounce.block.type.lantern.LanternBlockFactory; import net.theevilreaper.bounce.commands.StartCommand; import net.theevilreaper.bounce.common.ListenerHandling; @@ -47,7 +44,6 @@ import net.theevilreaper.bounce.timer.LobbyPhase; import net.theevilreaper.bounce.timer.RestartPhase; import net.theevilreaper.bounce.timer.TeleportPhase; -import net.theevilreaper.bounce.util.ItemUtil; import net.theevilreaper.bounce.util.PlayerUtil; import net.theevilreaper.bounce.util.BounceScoreboard; import net.theevilreaper.xerus.api.phase.LinearPhaseSeries; @@ -62,7 +58,6 @@ public class Bounce implements ListenerHandling { private ProfileService profileService; private final GameConfig gameConfig; private final BounceScoreboard scoreboard; - private final ItemUtil itemUtil; private final MapProvider mapProvider; private final LinearPhaseSeries phaseSeries; private final PlayerUtil playerUtil; @@ -71,7 +66,6 @@ public Bounce() { Path path = Paths.get(""); this.gameConfig = new GameConfigReader(path.resolve("config")).getConfig(); this.mapProvider = new BounceMapProvider(path); - this.itemUtil = new ItemUtil(); this.phaseSeries = new LinearPhaseSeries<>("Game"); this.profileService = new ProfileService(); this.playerUtil = new PlayerUtil(this.profileService, ((BounceMapProvider) this.mapProvider).getActiveMap().getPushData()); @@ -108,7 +102,7 @@ public void unload() { private void registerPhases() { this.phaseSeries.add(new LobbyPhase(this.gameConfig.minPlayers(), this.gameConfig.lobbyTime())); - this.phaseSeries.add(new TeleportPhase(this.itemUtil, ((BounceMapProvider) this.mapProvider)::teleportToGameSpawn, this.scoreboard::initGameScoreboard)); + this.phaseSeries.add(new TeleportPhase(((BounceMapProvider) this.mapProvider)::teleportToGameSpawn, this.scoreboard::initGameScoreboard)); this.phaseSeries.add(new PlayingPhase(this.scoreboard::updateGameScoreboardDisplayName, () -> { this.profileService.start(((BounceMapProvider) this.mapProvider).getActiveMap(), scoreboard::createPlayerLine); })); diff --git a/src/main/java/net/theevilreaper/bounce/timer/TeleportPhase.java b/src/main/java/net/theevilreaper/bounce/timer/TeleportPhase.java index f26d111..d33ea70 100644 --- a/src/main/java/net/theevilreaper/bounce/timer/TeleportPhase.java +++ b/src/main/java/net/theevilreaper/bounce/timer/TeleportPhase.java @@ -14,14 +14,12 @@ public class TeleportPhase extends TimedPhase { - private final ItemUtil itemUtil; private final PlayerConsumer teleport; private final VoidConsumer startTrigger; - public TeleportPhase(@NotNull ItemUtil itemUtil, @NotNull PlayerConsumer teleport, @NotNull VoidConsumer startTrigger) { + public TeleportPhase(@NotNull PlayerConsumer teleport, @NotNull VoidConsumer startTrigger) { super("Teleport", ChronoUnit.SECONDS, 1); this.setCurrentTicks(3); - this.itemUtil = itemUtil; this.teleport = teleport; this.startTrigger = startTrigger; } @@ -40,7 +38,7 @@ public void onUpdate() { protected void onFinish() { Collection<@NotNull Player> onlinePlayers = MinecraftServer.getConnectionManager().getOnlinePlayers(); for (Player onlinePlayer : onlinePlayers) { - itemUtil.setItem(onlinePlayer); + ItemUtil.setItem(onlinePlayer); teleport.accept(onlinePlayer); AttributeHelper.disableJumpStrength(onlinePlayer); } diff --git a/src/main/java/net/theevilreaper/bounce/util/ItemUtil.java b/src/main/java/net/theevilreaper/bounce/util/ItemUtil.java index 95c0d7a..61c57bb 100644 --- a/src/main/java/net/theevilreaper/bounce/util/ItemUtil.java +++ b/src/main/java/net/theevilreaper/bounce/util/ItemUtil.java @@ -4,6 +4,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.component.DataComponents; import net.minestom.server.entity.Player; +import net.minestom.server.inventory.Inventory; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.item.component.EnchantmentList; @@ -19,21 +20,25 @@ */ public final class ItemUtil { - private final ItemStack feather; + private static final ItemStack FEATHER; - public ItemUtil() { - this.feather = ItemStack.builder(Material.FEATHER) + static { + FEATHER = ItemStack.builder(Material.FEATHER) .customName(Component.text("Recoil-pushing recoil pusher", NamedTextColor.LIGHT_PURPLE)) .set(DataComponents.ENCHANTMENTS, new EnchantmentList(Enchantment.KNOCKBACK, 3)) .build(); } /** - * Set's the {@link ItemStack} which is required for the game into the {@link net.minestom.server.inventory.Inventory} of a player + * Set's the {@link ItemStack} which is required for the game into the {@link Inventory} of a player * * @param paramPlayer the player who should get the {@link ItemStack} */ - public void setItem(@NotNull Player paramPlayer) { - paramPlayer.getInventory().addItemStack(feather); + public static void setItem(@NotNull Player paramPlayer) { + paramPlayer.getInventory().addItemStack(FEATHER); + } + + private ItemUtil() { + // Nothing to do here } } diff --git a/src/test/java/net/theevilreaper/bounce/util/ItemUtilIntegrationTest.java b/src/test/java/net/theevilreaper/bounce/util/ItemUtilIntegrationTest.java index 0773760..9cfaeb0 100644 --- a/src/test/java/net/theevilreaper/bounce/util/ItemUtilIntegrationTest.java +++ b/src/test/java/net/theevilreaper/bounce/util/ItemUtilIntegrationTest.java @@ -27,10 +27,8 @@ void testItemStackSet(@NotNull Env env) { assertEquals(ItemStack.AIR, player.getInventory().getItemStack(0)); - ItemUtil itemUtil = new ItemUtil(); - // Test setting an item stack - itemUtil.setItem(player); + ItemUtil.setItem(player); ItemStack itemStack = player.getInventory().getItemStack(0); @@ -57,5 +55,4 @@ void testItemStackSet(@NotNull Env env) { env.destroyInstance(instance, true); } - -} \ No newline at end of file +}