Skip to content

Commit 74774ab

Browse files
authored
Correctif des améliorations des homes (#1321)
fix upgrade home when limitHome in db isnt identify in enum
1 parent 2d0af7d commit 74774ab

5 files changed

Lines changed: 48 additions & 42 deletions

File tree

src/main/java/fr/openmc/core/features/homes/HomeUpgradeManager.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
public class HomeUpgradeManager {
1818

1919
public static HomeLimits getCurrentUpgrade(Player player) {
20-
int currentLimit = HomesManager.getHomeLimit(player.getUniqueId());
20+
int currentLimit = HomesManager.getHomeLimit(player.getUniqueId()).getLimit();
2121
for (HomeLimits upgrade : HomeLimits.values()) {
2222
if (upgrade.getLimit() == currentLimit) {
2323
return upgrade;
@@ -27,12 +27,20 @@ public static HomeLimits getCurrentUpgrade(Player player) {
2727
}
2828

2929
public static HomeLimits getNextUpgrade(HomeLimits current) {
30-
return HomeLimits.values()[current.ordinal() + 1];
30+
if (current == null)
31+
return null;
32+
33+
HomeLimits[] values = HomeLimits.values();
34+
int nextIndex = current.ordinal() + 1;
35+
if (nextIndex >= values.length)
36+
return null;
37+
38+
return values[nextIndex];
3139
}
3240

3341
public static void upgradeHome(Player player) {
3442
int currentHomes = HomesManager.getHomes(player.getUniqueId()).size();
35-
int currentUpgrade = HomesManager.getHomeLimit(player.getUniqueId());
43+
int currentUpgrade = HomesManager.getHomeLimit(player.getUniqueId()).getLimit();
3644
HomeLimits nextUpgrade = getNextUpgrade(getCurrentUpgrade(player));
3745
if(nextUpgrade != null) {
3846
int price = nextUpgrade.getPrice();
@@ -83,7 +91,7 @@ public static void upgradeHome(Player player) {
8391

8492
HomesManager.updateHomeLimit(player.getUniqueId());
8593

86-
int updatedHomesLimit = HomesManager.getHomeLimit(player.getUniqueId());
94+
int updatedHomesLimit = HomesManager.getHomeLimit(player.getUniqueId()).getLimit();
8795

8896
Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> {
8997
Bukkit.getPluginManager().callEvent(new HomeUpgradeEvent(player));

src/main/java/fr/openmc/core/features/homes/HomesManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public static List<String> getHomesNames(UUID playerUUID) {
8686
.toList();
8787
}
8888

89-
public static int getHomeLimit(UUID playerUUID) {
89+
public static HomeLimits getHomeLimit(UUID playerUUID) {
9090
HomeLimit homeLimit = homeLimits.stream()
9191
.filter(hl -> hl.getPlayerUUID().equals(playerUUID))
9292
.findFirst()
@@ -97,7 +97,7 @@ public static int getHomeLimit(UUID playerUUID) {
9797
homeLimits.add(homeLimit);
9898
}
9999

100-
return homeLimit.getLimit();
100+
return homeLimit.getHomeLimit();
101101
}
102102

103103
public static void updateHomeLimit(UUID playerUUID) {

src/main/java/fr/openmc/core/features/homes/command/SetHomeCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public void setHome(
104104
}
105105

106106
int currentHome = HomesManager.getHomes(player.getUniqueId()).size();
107-
int homesLimit = HomesManager.getHomeLimit(player.getUniqueId());
107+
int homesLimit = HomesManager.getHomeLimit(player.getUniqueId()).getLimit();
108108

109109
if(currentHome >= homesLimit) {
110110
MessagesManager.sendMessage(player, TranslationManager.translation("feature.homes.command.home_limit_reached"), Prefix.HOME, MessageType.ERROR, true);

src/main/java/fr/openmc/core/features/homes/menu/HomeUpgradeMenu.java

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import fr.openmc.core.features.homes.HomeLimits;
1010
import fr.openmc.core.features.homes.HomeUpgradeManager;
1111
import fr.openmc.core.features.homes.HomesManager;
12-
import fr.openmc.core.registry.items.CustomItemRegistry;
1312
import fr.openmc.core.utils.text.messages.TranslationManager;
1413
import net.kyori.adventure.text.Component;
1514
import net.kyori.adventure.text.format.NamedTextColor;
@@ -44,36 +43,31 @@ public String getTexture() {
4443
public @NotNull Map<Integer, ItemBuilder> getContent() {
4544
Map<Integer, ItemBuilder> items = new HashMap<>();
4645

47-
int currentHome = HomesManager.getHomeLimit(getOwner().getUniqueId());
48-
49-
int homeMaxLimit = HomeLimits.values().length - 1;
50-
51-
HomeLimits lastUpgrade = HomeLimits.valueOf("LIMIT_" + homeMaxLimit);
52-
HomeLimits nextUpgrade = HomeUpgradeManager.getNextUpgrade(HomeUpgradeManager.getCurrentUpgrade(getOwner())) != null
53-
? HomeUpgradeManager.getNextUpgrade(HomeUpgradeManager.getCurrentUpgrade(getOwner()))
54-
: lastUpgrade;
55-
56-
items.put(4, new ItemBuilder(this, Objects.requireNonNull(OMCRegistry.CUSTOM_ITEMS.get("omc_homes:omc_homes_icon_upgrade")).getBest(), itemMeta -> {
57-
itemMeta.displayName(TranslationManager.translation("feature.homes.upgrade.item.name"));
58-
if (nextUpgrade.getLimit() >= lastUpgrade.getLimit()) {
59-
itemMeta.lore(TranslationManager.translationLore(
60-
"feature.homes.upgrade.lore.max",
61-
Component.text(currentHome).color(NamedTextColor.YELLOW)
62-
));
63-
} else {
64-
itemMeta.lore(TranslationManager.translationLore(
65-
"feature.homes.upgrade.lore.available",
66-
Component.text(currentHome).color(NamedTextColor.YELLOW),
67-
Component.text(nextUpgrade.getPrice()).color(NamedTextColor.GREEN),
68-
Component.text(EconomyManager.getEconomyIcon()).decoration(TextDecoration.ITALIC, false),
69-
Component.text(nextUpgrade.getAyweniteCost()).color(NamedTextColor.LIGHT_PURPLE),
70-
Component.text(nextUpgrade.getLimit()).color(NamedTextColor.YELLOW)
71-
));
72-
}
73-
}).setOnClick(event -> {
74-
HomeUpgradeManager.upgradeHome(getOwner());
75-
getOwner().closeInventory();
76-
}));
46+
int currentHome = HomesManager.getHomeLimit(getOwner().getUniqueId()).getLimit();
47+
48+
HomeLimits nextUpgrade = HomeUpgradeManager.getNextUpgrade(HomeUpgradeManager.getCurrentUpgrade(getOwner()));
49+
50+
items.put(4, new ItemBuilder(this, Objects.requireNonNull(OMCRegistry.CUSTOM_ITEMS.get("omc_homes:omc_homes_icon_upgrade")).getBest(), itemMeta -> {
51+
itemMeta.displayName(TranslationManager.translation("feature.homes.upgrade.item.name"));
52+
if (nextUpgrade == null) {
53+
itemMeta.lore(TranslationManager.translationLore(
54+
"feature.homes.upgrade.lore.max",
55+
Component.text(currentHome).color(NamedTextColor.YELLOW)
56+
));
57+
} else {
58+
itemMeta.lore(TranslationManager.translationLore(
59+
"feature.homes.upgrade.lore.available",
60+
Component.text(currentHome).color(NamedTextColor.YELLOW),
61+
Component.text(nextUpgrade.getPrice()).color(NamedTextColor.GREEN),
62+
Component.text(EconomyManager.getEconomyIcon()).decoration(TextDecoration.ITALIC, false),
63+
Component.text(nextUpgrade.getAyweniteCost()).color(NamedTextColor.LIGHT_PURPLE),
64+
Component.text(nextUpgrade.getLimit()).color(NamedTextColor.YELLOW)
65+
));
66+
}
67+
}).setOnClick(event -> {
68+
HomeUpgradeManager.upgradeHome(getOwner());
69+
getOwner().closeInventory();
70+
}));
7771

7872
return items;
7973
}

src/main/java/fr/openmc/core/features/homes/models/HomeLimit.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package fr.openmc.core.features.homes.models;
22

3-
import java.util.UUID;
4-
53
import com.j256.ormlite.field.DatabaseField;
64
import com.j256.ormlite.table.DatabaseTable;
7-
85
import fr.openmc.core.features.homes.HomeLimits;
96
import lombok.Getter;
107
import lombok.Setter;
118

9+
import java.util.UUID;
10+
1211
@Getter
1312
@DatabaseTable(tableName = "home_limits")
1413
public class HomeLimit {
@@ -34,11 +33,16 @@ public HomeLimit(UUID playerUUID, HomeLimits limit) {
3433
}
3534

3635
public HomeLimits getHomeLimit() {
36+
HomeLimits minHomeLimit = HomeLimits.LIMIT_0;
3737
for (HomeLimits value : HomeLimits.values()) {
3838
if (value.getLimit() == this.limit) {
3939
return value;
4040
}
41+
if (value.getLimit() < this.limit) {
42+
minHomeLimit = value;
43+
}
4144
}
42-
return null;
45+
46+
return minHomeLimit;
4347
}
4448
}

0 commit comments

Comments
 (0)