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
5 changes: 1 addition & 4 deletions game/src/main/java/net/theevilreaper/tamias/game/Tamias.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ public class Tamias implements ListenerHandling {
private final TeamService teamService;
private final StaminaService staminaService;
private final GameConfig gameConfig;
private final Items items;
private final IntConsumer timeUpdater;
private final Scoreboard scoreboard;
private final MapProvider mapProvider;
Expand All @@ -100,7 +99,6 @@ public Tamias() {
this.mapProvider = new GameMapProvider(path);
TeamHelper.loadTeams(this.gameConfig.teamSize(), this.teamService);
this.staminaService = new StaminaService();
this.items = new Items();
this.scoreboard = new LobbyScoreboard(GameMessages.getTitleTime(this.gameConfig.lobbyTime()));
this.timeUpdater = value -> {
Component time = Component.text("Time:", NamedTextColor.GOLD).append(Component.space())
Expand Down Expand Up @@ -143,7 +141,6 @@ private void createPhaseStructure() {

gameSeries.add(new PrePlayingPhase(
this.teamService,
this.items::setItemToPlayer,
() -> staminaService.createStaminaObjects(this.teamService)
));

Expand Down Expand Up @@ -182,7 +179,7 @@ private void createPhaseStructure() {

Supplier<Pos> randomPos = () -> Pos.ZERO;//gameMapProvider.getGameArea()::getRandomPosition;
listenerMap.put(PlayerUseItemEvent.class, new PlayerInteractItemListener(staminaService::getStaminaBar));
listenerMap.put(BomberRequireSpawnEvent.class, new BomberReviveListener(this.staminaService::getStaminaBar, randomPos, items::setBombItem));
listenerMap.put(BomberRequireSpawnEvent.class, new BomberReviveListener(this.staminaService::getStaminaBar, randomPos));
listenerMap.put(BomberExplodeEvent.class, new BomberExplodeListener());
listenerMap.put(ProjectileCollideWithBlockEvent.class, new ProjectileBlockListener());
PlayerConsumer teamUpdater = player -> TeamHelper.switchToTNTTeam(this.teamService.getTeams()::get, player);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,12 @@ public class TestCommand extends Command {

private final ArgumentWord argumentWord;

private final Items items;

private StaminaBar staminaBar;

public TestCommand() {
super("test", "t");
this.argumentWord = ArgumentType.Word("test").from("A", "B");
this.items = new Items();
addSyntax(this::onCommand, argumentWord);
MinecraftServer.getGlobalEventHandler().addListener(PlayerUseItemEvent.class, new PlayerInteractItemListener(unused -> this.staminaBar));
}
Expand All @@ -41,11 +39,11 @@ private void onCommand(@NotNull CommandSender sender, @NotNull CommandContext co
var argument = context.get(argumentWord);

if ("A".equals(argument)) {
this.items.setBombItem(player);
Items.setBombItem(player);
player.sendMessage("Test A");
this.staminaBar = StaminaFactory.createExplodeBar(player);
} else {
this.items.setShootItem(player);
Items.setShootItem(player);
player.sendMessage("Test B");
this.staminaBar = StaminaFactory.createShootBar(player);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package net.theevilreaper.tamias.game.listener.game;

import net.theevilreaper.aves.util.functional.PlayerConsumer;
import net.kyori.adventure.sound.Sound;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player;
Expand All @@ -14,6 +13,7 @@
import net.theevilreaper.tamias.game.event.BomberRequireSpawnEvent;
import net.theevilreaper.tamias.game.stamina.ExplodeBar;
import net.theevilreaper.tamias.game.stamina.StaminaBar;
import net.theevilreaper.tamias.game.util.Items;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
Expand All @@ -29,16 +29,13 @@ public final class BomberReviveListener implements Consumer<BomberRequireSpawnEv

private final Function<Player, StaminaBar> barGetter;
private final Supplier<Pos> spawnPos;
private final PlayerConsumer itemSetter;

public BomberReviveListener(
@NotNull Function<Player, StaminaBar> barGetter,
@NotNull Supplier<Pos> spawnPos,
@NotNull PlayerConsumer itemSetter
@NotNull Supplier<Pos> spawnPos
) {
this.barGetter = barGetter;
this.spawnPos = spawnPos;
this.itemSetter = itemSetter;
}

@Override
Expand Down Expand Up @@ -72,6 +69,6 @@ public void accept(@NotNull BomberRequireSpawnEvent event) {
player.teleport(newSpawnPos.add(0.5, 1, 0.5));
player.playSound(RESPAWN);
AttributeHelper.enableMovement(player);
this.itemSetter.accept(player);
Items.setBombItem(player);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.theevilreaper.tamias.game.phase.playing;

import net.theevilreaper.aves.util.functional.VoidConsumer;
import net.theevilreaper.tamias.game.util.Items;
import net.theevilreaper.xerus.api.phase.TickDirection;
import net.theevilreaper.xerus.api.phase.TimedPhase;
import net.theevilreaper.xerus.api.team.Team;
Expand All @@ -26,25 +27,21 @@
public final class PrePlayingPhase extends TimedPhase {

private final TeamService teamService;
private final BiConsumer<Player, Integer> itemConsumer;
private final VoidConsumer staminaCreation;

/**
* Creates a new instance from the phase
*
* @param teamService the service which provides access to the teams
* @param itemConsumer the consumer which triggers the item set logic
*/
public PrePlayingPhase(
@NotNull TeamService teamService,
@NotNull BiConsumer<Player, Integer> itemConsumer,
@NotNull VoidConsumer staminaCreation
) {
super("Pre-Playing", ChronoUnit.SECONDS, 1);
this.setCurrentTicks(5);
this.setTickDirection(TickDirection.DOWN);
this.teamService = teamService;
this.itemConsumer = itemConsumer;
this.staminaCreation = staminaCreation;
}

Expand Down Expand Up @@ -75,7 +72,7 @@ public void onUpdate() {
private void updatePlayer(@NotNull Player player) {
byte id = player.getTag(Tags.TEAM_ID);

this.itemConsumer.accept(player, ((int) id));
Items.setItemToPlayer(player, id);

Team team = this.teamService.getTeams().get(id);

Expand Down
35 changes: 21 additions & 14 deletions game/src/main/java/net/theevilreaper/tamias/game/util/Items.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,14 @@
@SuppressWarnings("java:S3252")
public final class Items {

private final ItemStack shootItem;
private final ItemStack bombItem;
private static final ItemStack SHOOT_ITEM;
private static final ItemStack BOMB_ITEM;

/**
* Constructs a new instance from this class.
*/
public Items() {
this.shootItem = ItemStack.builder(Material.IRON_HOE)
static {
SHOOT_ITEM = ItemStack.builder(Material.IRON_HOE)
.set(Tags.ITEM_TAG, (byte) 0)
.build();
this.bombItem = ItemStack.builder(Material.TNT)
BOMB_ITEM = ItemStack.builder(Material.TNT)
.set(Tags.ITEM_TAG, (byte) 1).build();
}

Expand All @@ -35,26 +32,36 @@ public Items() {
*
* @param player the player to set the item
*/
public void setShootItem(Player player) {
public static void setShootItem(Player player) {
player.getInventory().clear();
player.getInventory().addItemStack(shootItem);
player.getInventory().addItemStack(SHOOT_ITEM);
}

/**
* Sets the bomb item for the given player
*
* @param player the player to set the item
*/
public void setBombItem(Player player) {
public static void setBombItem(Player player) {
player.getInventory().clear();
player.getInventory().addItemStack(this.bombItem);
player.getInventory().addItemStack(BOMB_ITEM);
}

public void setItemToPlayer(Player player, int teamId) {
/**
* Sets the item to the player based on the team id.
*
* @param player who should get the item
* @param teamId the team id
*/
public static void setItemToPlayer(Player player, int teamId) {
if (teamId == GameConfig.SURVIVOR_ID) {
setShootItem(player);
} else {
setBombItem(player);
setBombItem(player);
}
}

private Items() {
throw new UnsupportedOperationException("Utility class");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import net.minestom.testing.extension.MicrotusExtension;
import net.theevilreaper.tamias.common.util.Tags;
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 ItemsTest {

private static Items items;

@BeforeAll
static void setUp() {
items = new Items();
}

@AfterAll
static void tearDown() {
items = null;
}

@Test
void testShootItemSet(@NotNull Env env) {
Instance instance = env.createFlatInstance();
Player player = env.createPlayer(instance);
assertNotNull(player);

items.setShootItem(player);
Items.setShootItem(player);
ItemStack eye = player.getInventory().getItemStack(0x00);
assertNotNull(eye);
assertNotEquals(Material.AIR, eye.material());
Expand All @@ -52,7 +38,7 @@ void testBombItemSet(@NotNull Env env) {
Player player = env.createPlayer(instance);
assertNotNull(player);

items.setBombItem(player);
Items.setBombItem(player);
ItemStack bomb = player.getInventory().getItemStack(0x00);
assertNotNull(bomb);
assertNotEquals(Material.AIR, bomb.material());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,12 @@ public final class TamiasSetup implements ListenerHandling {
private final SetupDataService setupDataService;
private final FileHandler fileHandler;
private final MapProvider mapProvider;
private final SetupItems setupItems;
private final MapSetupInventory mapSetupInventory;

public TamiasSetup() {
this.fileHandler = new GsonFileHandler(GsonUtil.GSON);
this.mapProvider = new SetupMapProvider(Paths.get(""), this.fileHandler);
this.setupDataService = SetupDataService.create();
this.setupItems = new SetupItems();
this.mapSetupInventory = new MapSetupInventory(this.mapProvider::getEntries);
MinecraftServer.getSchedulerManager().buildShutdownTask(this::terminate);
}
Expand All @@ -74,16 +72,16 @@ private void registerListener() {
SetupMapProvider setupMapProvider = (SetupMapProvider) mapProvider;
PlayerConsumer initialSpawnSupplier = player -> {
setupMapProvider.teleportToSpawn(player, false);
setupItems.setOverViewItem(player);
SetupItems.setOverViewItem(player);
};
PlayerConsumer instanceSwitcher = player -> {
setupMapProvider.teleportToSpawn(player, true);
setupItems.setOverViewItem(player);
SetupItems.setOverViewItem(player);
};
manager.addListener(PlayerDisconnectEvent.class, new PlayerDisconnectListener(setupDataService::remove));
manager.addListener(AsyncPlayerConfigurationEvent.class, new PlayerConfigurationListener(instanceSupplier));
manager.addListener(PlayerSpawnEvent.class, new PlayerSpawnListener(initialSpawnSupplier));
manager.addListener(AddEntityToInstanceEvent.class, new EntityAddToInstanceListener(instanceSupplier, setupItems));
manager.addListener(AddEntityToInstanceEvent.class, new EntityAddToInstanceListener(instanceSupplier));
manager.addListener(MapSetupSelectEvent.class, new MapSetupSelectListener(this.fileHandler, this.setupDataService));
manager.addListener(SetupFinishEvent.class, new SetupFinishListener(instanceSwitcher));
manager.addListener(PlayerChatEvent.class, new PlayerChatListener(this.setupDataService));
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.setSaveItem(player);
SetupItems.setSaveItem(player);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import net.theevilreaper.tamias.common.util.Tags;

/**
* 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,20 +26,20 @@ public final class SetupItems {
.customName(Component.empty())
.build();

private final ItemStack overview;
private final ItemStack save;
private final ItemStack viewItem;
private static final ItemStack OVERVIEW;
private static final ItemStack SAVE;
private static final ItemStack VIEW_ITEM;

public SetupItems() {
this.overview = ItemStack.builder(Material.CHEST)
static {
OVERVIEW = ItemStack.builder(Material.CHEST)
.customName(Component.text("Maps", NamedTextColor.GREEN))
.set(Tags.ITEM_TAG, (byte) 0x00)
.build();
this.save = ItemStack.builder(Material.BELL)
SAVE = ItemStack.builder(Material.BELL)
.customName(Component.text("Save map", NamedTextColor.RED))
.set(Tags.ITEM_TAG, (byte) 0x01)
.build();
this.viewItem = ItemStack.builder(Material.COMPASS)
VIEW_ITEM = ItemStack.builder(Material.COMPASS)
.customName(Component.text("View data", NamedTextColor.AQUA))
.set(Tags.ITEM_TAG, OVERVIEW_FLAG)
.build();
Expand All @@ -50,9 +50,9 @@ public SetupItems() {
*
* @param player the player to set the item
*/
public void setOverViewItem(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 @@ -61,10 +61,14 @@ public void setOverViewItem(Player player) {
*
* @param player the player to set the item
*/
public void setSaveItem(Player player) {
public static void setSaveItem(Player player) {
player.getInventory().clear();
player.getInventory().setItemStack(0x06, this.save);
player.getInventory().setItemStack(0x02, this.viewItem);
player.getInventory().setItemStack(0x06, SAVE);
player.getInventory().setItemStack(0x02, VIEW_ITEM);
player.setHeldItemSlot((byte) 0);
}

private SetupItems() {

}
}
Loading