Skip to content

Commit e1998b6

Browse files
committed
feat: added advance command
1 parent 0d43747 commit e1998b6

10 files changed

Lines changed: 104 additions & 101 deletions

File tree

src/main/java/org/matrixnetwork/matrixlifesystem/MatrixLifeSystem.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
import lombok.experimental.Accessors;
1010
import net.kyori.adventure.text.Component;
1111
import net.milkbowl.vault.economy.Economy;
12-
import org.matrixnetwork.matrixlifesystem.commands.LifeSystemCommands;
13-
import org.matrixnetwork.matrixlifesystem.entity.PlayerData;
14-
import org.matrixnetwork.matrixlifesystem.vault.VaultProvider;
1512
import org.bukkit.Bukkit;
1613
import org.bukkit.configuration.InvalidConfigurationException;
1714
import org.bukkit.event.EventHandler;
@@ -20,22 +17,25 @@
2017
import org.bukkit.plugin.PluginDescriptionFile;
2118
import org.bukkit.plugin.java.JavaPlugin;
2219
import org.bukkit.plugin.java.JavaPluginLoader;
20+
import org.matrixnetwork.matrixlifesystem.commands.LifeSystemCommands;
21+
import org.matrixnetwork.matrixlifesystem.entity.PlayerData;
2322

2423
import java.io.File;
2524
import java.io.IOException;
2625
import java.util.Locale;
2726
import java.util.Objects;
27+
import java.util.logging.Logger;
2828

2929
@PluginMain
3030
public class MatrixLifeSystem extends JavaPlugin implements Listener {
3131

3232
@Getter
3333
@Accessors(fluent = true)
3434
private static MatrixLifeSystem instance;
35+
private PaperCommandManager commandManager;
3536
@Getter
3637
@Setter(AccessLevel.PACKAGE)
37-
private VaultProvider vault;
38-
private PaperCommandManager commandManager;
38+
private Economy econ;
3939

4040
public MatrixLifeSystem() {
4141
instance = this;
@@ -66,7 +66,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
6666
return;
6767
}
6868

69-
if (pd.getLifes() < this.getConfig().getInt("min-lifes")) {
69+
if (pd.getLives() < this.getConfig().getInt("min-lives")) {
7070
event.getPlayer()
7171
.kick(Component.text(commandManager
7272
.getLocales()
@@ -78,12 +78,13 @@ public void onPlayerJoin(PlayerJoinEvent event) {
7878

7979
private void setupVaultIntegration() {
8080
if (Bukkit.getPluginManager().isPluginEnabled("Vault")) {
81-
vault = new VaultProvider(Objects.requireNonNull(getServer().getServicesManager().getRegistration(Economy.class)).getProvider());
81+
econ = Objects.requireNonNull(getServer().getServicesManager().getRegistration(Economy.class)).getProvider();
8282
} else {
83-
vault = new VaultProvider();
83+
8484
}
8585
}
8686

87+
8788
private void setupCommands() {
8889
commandManager = new PaperCommandManager(this);
8990
commandManager.enableUnstableAPI("help");

src/main/java/org/matrixnetwork/matrixlifesystem/commands/LifeSystemCommands.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
import co.aikar.locales.MessageKey;
88
import org.bukkit.command.CommandSender;
99
import org.bukkit.entity.Player;
10+
import org.matrixnetwork.matrixlifesystem.MatrixLifeSystem;
1011
import org.matrixnetwork.matrixlifesystem.entity.PlayerData;
1112

1213
import static org.matrixnetwork.matrixlifesystem.Constants.ACF_BASE_KEY;
1314

14-
@CommandAlias("lifesystem")
15+
@CommandAlias("livesystem")
1516
public class LifeSystemCommands extends BaseCommand {
17+
private final MatrixLifeSystem plugin = MatrixLifeSystem.instance();
1618

1719
// see https://github.com/aikar/commands/wiki/Locales
1820
static MessageKey key(String key) {
@@ -31,11 +33,36 @@ public void showHelp(CommandSender sender, CommandHelp help) {
3133
@Description("{@@commands.descriptions.info}")
3234
public void info(@Flags("self") Player player) {
3335
success("info",
34-
"{lifes}", String.valueOf(PlayerData.getPlayerData(player
35-
.getUniqueId().toString()).getLifes())
36+
"{lives}", String.valueOf(PlayerData.getPlayerData(player
37+
.getUniqueId().toString()).getLives())
3638
);
3739
}
3840

41+
@Subcommand("advance|a")
42+
@CommandAlias("advance")
43+
@Description("{@@commands.descriptions.info}")
44+
public void advance(@Flags("self") Player player) {
45+
if(plugin.getEcon().getBalance(player) > getAdvanceCosts()) {
46+
plugin.getEcon().withdrawPlayer(player, getAdvanceCosts());
47+
48+
PlayerData.advance(PlayerData.getPlayerData(player.getUniqueId().toString()));
49+
50+
success("advance.success",
51+
"{lives}", String.valueOf(PlayerData.getPlayerData(player
52+
.getUniqueId().toString()).getLives())
53+
);
54+
}
55+
else {
56+
error("advance.ne-money",
57+
"{cost}", String.valueOf(getAdvanceCosts())
58+
);
59+
}
60+
}
61+
62+
private double getAdvanceCosts() {
63+
return plugin.getConfig().getDouble("advance-cost");
64+
}
65+
3966
private void success(String key, String... replacements) {
4067
getCurrentCommandIssuer().sendMessage(MessageType.INFO, key(key), replacements);
4168
}

src/main/java/org/matrixnetwork/matrixlifesystem/entity/PlayerData.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ public class PlayerData {
2222
private String uuid;
2323

2424
@Getter
25-
private int lifes;
25+
private int lives;
2626

27-
public PlayerData(String uuid, int lifes) {
27+
public PlayerData(String uuid, int lives) {
2828
this.uuid = uuid;
29-
this.lifes = lifes;
29+
this.lives = lives;
3030
}
3131

3232
public PlayerData() {
@@ -46,19 +46,33 @@ public static PlayerData getPlayerData(String uuid) {
4646
session.merge(pd);
4747
tx.commit();
4848
}
49-
} catch (Exception ignored) {
50-
ignored.printStackTrace();
49+
} catch (Exception e) {
50+
e.printStackTrace();
5151
pd = null;
5252
}
5353

5454
return pd;
5555
}
5656

57+
public static void advance(PlayerData playerData) {
58+
SessionFactory sessionFactory = SessionFactoryMaker.getFactory();
59+
60+
try (Session session = sessionFactory.openSession()) {
61+
Transaction tx = session.beginTransaction();
62+
playerData.addLife();
63+
session.merge(playerData);
64+
tx.commit();
65+
66+
} catch (Exception e) {
67+
e.printStackTrace();
68+
}
69+
}
70+
5771
public void addLife() {
58-
this.lifes++;
72+
this.lives++;
5973
}
6074

6175
public void removeLife() {
62-
this.lifes--;
76+
this.lives--;
6377
}
6478
}

src/main/java/org/matrixnetwork/matrixlifesystem/vault/VaultProvider.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/main/resources/config.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
min-lifes: 1
1+
# Minimum amount of lives to be able to join server
2+
min-lives: 1
3+
4+
# Cost for a new life
5+
advance-cost: 200

src/main/resources/lang_en.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
commands:
33
descriptions:
44
info: 'Shows your actual life count.'
5-
info: 'You have {lifes} lifes.'
5+
advance: 'Buy a new life.'
6+
info: 'You have {lives} lives.'
7+
advance:
8+
success: 'Nice! You have {lives} lives.'
9+
ne-money: 'Sorry! You do not have {cost} \$.'
610

711
kick:
8-
message: 'You cannot join! You do not have enough lifes!'
12+
message: 'You cannot join! You do not have enough lives!'

src/test/java/org/matrixnetwork/matrixlifesystem/TemplatePluginTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ public void testExactLifes() {
5151
}
5252

5353

54-
public static PlayerData addPlayerdData(String uuid, int lifes) {
54+
public static PlayerData addPlayerdData(String uuid, int lives) {
5555
PlayerData pd;
5656

5757
SessionFactory sessionFactory = SessionFactoryMaker.getFactory();
5858
try (Session session = sessionFactory.openSession()) {
5959
Transaction tx = session.beginTransaction();
60-
pd = new PlayerData(uuid, lifes);
60+
pd = new PlayerData(uuid, lives);
6161
session.merge(pd);
6262
tx.commit();
6363
} catch (Exception ignored) {

src/test/java/org/matrixnetwork/matrixlifesystem/TestBase.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import be.seeseemelk.mockbukkit.MockBukkit;
44
import be.seeseemelk.mockbukkit.ServerMock;
55
import net.milkbowl.vault.economy.Economy;
6-
import org.matrixnetwork.matrixlifesystem.vault.VaultProvider;
76
import org.junit.jupiter.api.AfterEach;
87
import org.junit.jupiter.api.BeforeEach;
98

@@ -24,7 +23,7 @@ public void setUp() {
2423

2524
private void mockVaultEconomy() {
2625
economy = mock(Economy.class);
27-
plugin.setVault(new VaultProvider(economy));
26+
plugin.setEcon(economy);
2827
}
2928

3029
@AfterEach

src/test/java/org/matrixnetwork/matrixlifesystem/commands/LifeSystemCommandsTests.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package org.matrixnetwork.matrixlifesystem.commands;
22

33
import be.seeseemelk.mockbukkit.entity.PlayerMock;
4-
import org.matrixnetwork.matrixlifesystem.Constants;
5-
import org.bukkit.Statistic;
64
import org.junit.jupiter.api.BeforeEach;
75
import org.junit.jupiter.api.Test;
6+
import org.matrixnetwork.matrixlifesystem.MatrixLifeSystem;
87
import org.matrixnetwork.matrixlifesystem.TestBase;
98
import org.matrixnetwork.matrixlifesystem.entity.PlayerData;
109

1110
import static org.assertj.core.api.Assertions.assertThat;
11+
import static org.mockito.Mockito.when;
1212

1313
public class LifeSystemCommandsTests extends TestBase {
1414

@@ -23,10 +23,34 @@ public void setUp() {
2323
}
2424

2525
@Test
26-
void info_forSelf_printsOwnPlayerName() {
27-
player.performCommand("lifesystem info");
26+
void test_default() {
27+
player.performCommand("livesystem info");
2828

29-
int lifes = PlayerData.getPlayerData(player.getUniqueId().toString()).getLifes();
30-
assertThat(player.nextMessage()).contains(lifes + " lifes");
29+
int lives = PlayerData.getPlayerData(player.getUniqueId().toString()).getLives();
30+
assertThat(player.nextMessage()).contains(lives + " lives");
31+
}
32+
33+
@Test
34+
void test_buy_life_ok() {
35+
when(economy.getBalance(player)).thenReturn(400D);
36+
int lives = PlayerData.getPlayerData(player.getUniqueId().toString()).getLives();
37+
38+
player.performCommand("livesystem advance");
39+
lives++;
40+
41+
assertThat(player.nextMessage()).contains(lives + " lives");
42+
43+
player.performCommand("livesystem info");
44+
assertThat(player.nextMessage()).contains("You have " + lives + " lives.");
45+
}
46+
47+
@Test
48+
void test_buy_life_no_money() {
49+
when(economy.getBalance(player)).thenReturn(100D);
50+
51+
player.performCommand("livesystem advance");
52+
53+
assertThat(player.nextMessage()).contains("Sorry! You do not have " +
54+
"" + MatrixLifeSystem.instance().getConfig().getDouble("advance-cost") + " $.");
3155
}
3256
}

src/test/java/org/matrixnetwork/matrixlifesystem/vault/VaultProviderTest.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)