Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
}
Expand All @@ -89,15 +87,14 @@ private void registerListener(@NotNull EventNode<Event> 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));
node.addListener(MapSetupSelectEvent.class, new MapSetupSelectListener(this.fileHandler, this.setupDataService));

PlayerConsumer instanceSwitcher = player -> {
mapProvider.teleportToSpawn(player, true);
setupItems.setOverViewItem(player);
SetupItems.setOverViewItem(player);
};

node.addListener(SetupFinishEvent.class, new SetupFinishListener(instanceSwitcher));
Expand All @@ -109,7 +106,7 @@ private void registerListener(@NotNull EventNode<Event> 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));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<PlayerSpawnEvent> {

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;
}

Expand All @@ -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);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,19 @@
public class EntityAddToInstanceListener implements Consumer<AddEntityToInstanceEvent> {

private final Supplier<Instance> instanceSupplier;
private final SetupItems items;

public EntityAddToInstanceListener(@NotNull Supplier<Instance> instanceSupplier, @NotNull SetupItems items) {
public EntityAddToInstanceListener(@NotNull Supplier<Instance> instanceSupplier) {
this.instanceSupplier = instanceSupplier;
this.items = items;
}

@Override
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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Byte>} 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.
*
Expand All @@ -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();
Expand All @@ -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);
}

Expand All @@ -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
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@NotNullByDefault
package net.theevilreaper.bounce.setup.util;

import org.jetbrains.annotations.NotNullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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());
Expand All @@ -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());
Expand Down
8 changes: 1 addition & 7 deletions src/main/java/net/theevilreaper/bounce/Bounce.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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<Phase> phaseSeries;
private final PlayerUtil playerUtil;
Expand All @@ -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());
Expand Down Expand Up @@ -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);
}));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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);
}
Expand Down
17 changes: 11 additions & 6 deletions src/main/java/net/theevilreaper/bounce/util/ItemUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -57,5 +55,4 @@ void testItemStackSet(@NotNull Env env) {

env.destroyInstance(instance, true);
}

}
}