diff --git a/src/main/java/com/alttd/GUI/windows/BuyGUI.java b/src/main/java/com/alttd/GUI/windows/BuyGUI.java index 3ddc4df..c8205c0 100644 --- a/src/main/java/com/alttd/GUI/windows/BuyGUI.java +++ b/src/main/java/com/alttd/GUI/windows/BuyGUI.java @@ -4,6 +4,7 @@ import com.alttd.GUI.GUIMerchant; import com.alttd.VillagerUI; import com.alttd.config.Config; import com.alttd.config.WorthConfig; +import com.alttd.database.Queries; import com.alttd.events.SpawnShopEvent; import com.alttd.objects.EconUser; import com.alttd.objects.Price; @@ -17,6 +18,9 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Objects; + public class BuyGUI extends GUIMerchant { private static final MiniMessage miniMessage = MiniMessage.get(); @@ -41,8 +45,8 @@ public class BuyGUI extends GUIMerchant { Economy econ = VillagerUI.getInstance().getEconomy(); double balance = econ.getBalance(player); int trans_pts = (int) (Math.floor(price.getPrice(amount)/ WorthConfig.POINT_MOD) * amount); - EconUser econUser = EconUser.users.get(player.getUniqueId()); - int oldPoints = econUser.getPointsMap().get(villagerType.getName()); + EconUser econUser = EconUser.getUser(player.getUniqueId()); + int oldPoints = Objects.requireNonNullElse(econUser.getPointsMap().get(villagerType.getName()), 0); double cost = price.calculatePriceThing(oldPoints, trans_pts); if (balance < cost) { diff --git a/src/main/java/com/alttd/GUI/windows/SellGUI.java b/src/main/java/com/alttd/GUI/windows/SellGUI.java index 714756e..02b7cc6 100644 --- a/src/main/java/com/alttd/GUI/windows/SellGUI.java +++ b/src/main/java/com/alttd/GUI/windows/SellGUI.java @@ -40,7 +40,7 @@ public class SellGUI extends GUIMerchant { private void sell(VillagerType villagerType, Player player, Material material, int amount, Price price) { Economy econ = VillagerUI.getInstance().getEconomy(); - EconUser econUser = EconUser.users.get(player.getUniqueId()); + EconUser econUser = EconUser.getUser(player.getUniqueId()); int oldPoints = econUser.getPointsMap().get(villagerType.getName()); int trans_pts = (int) (Math.floor(price.getPrice(amount)/ WorthConfig.POINT_MOD) * amount); double cost = price.calculatePriceThing(oldPoints, trans_pts); diff --git a/src/main/java/com/alttd/VillagerUI.java b/src/main/java/com/alttd/VillagerUI.java index 2480a6a..17b1d3e 100644 --- a/src/main/java/com/alttd/VillagerUI.java +++ b/src/main/java/com/alttd/VillagerUI.java @@ -2,7 +2,7 @@ package com.alttd; import com.alttd.GUI.GUIListener; import com.alttd.commands.CommandManager; -import com.alttd.commands.database.Database; +import com.alttd.database.Database; import com.alttd.config.Config; import com.alttd.config.VillagerConfig; import com.alttd.config.WorthConfig; diff --git a/src/main/java/com/alttd/database/Queries.java b/src/main/java/com/alttd/database/Queries.java index bb34bf7..36793f8 100644 --- a/src/main/java/com/alttd/database/Queries.java +++ b/src/main/java/com/alttd/database/Queries.java @@ -81,7 +81,7 @@ public class Queries { * @return success */ public static boolean createUserPointsEntry(UUID uuid, String villagerType, int points) { - String sql = "INSERT INTO Points " + + String sql = "INSERT INTO user_points " + "(uuid, villager_type, points) " + "(?, ?, ?)"; @@ -101,7 +101,7 @@ public class Queries { } public static EconUser getEconUser(UUID uuid) { - String sql = "SELECT * FROM POINTS WHERE uuid = ?"; + String sql = "SELECT * FROM user_points WHERE uuid = ?"; try { PreparedStatement preparedStatement = Database.connection.prepareStatement(sql); diff --git a/src/main/java/com/alttd/objects/EconUser.java b/src/main/java/com/alttd/objects/EconUser.java index 94ec1fa..c3328ce 100644 --- a/src/main/java/com/alttd/objects/EconUser.java +++ b/src/main/java/com/alttd/objects/EconUser.java @@ -1,7 +1,7 @@ package com.alttd.objects; import com.alttd.VillagerUI; -import com.alttd.commands.database.Queries; +import com.alttd.database.Queries; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import org.bukkit.scheduler.BukkitRunnable; @@ -9,7 +9,7 @@ import java.util.UUID; public class EconUser { - public static Object2ObjectArrayMap users = new Object2ObjectArrayMap<>(); + private final static Object2ObjectArrayMap users = new Object2ObjectArrayMap<>(); private final UUID uuid; private final Object2ObjectArrayMap pointsMap; @@ -40,4 +40,9 @@ public class EconUser { } }.runTaskAsynchronously(VillagerUI.getInstance()); } + + public static EconUser getUser(UUID uuid) { + EconUser user = users.get(uuid); + return (user == null ? Queries.getEconUser(uuid) : user); + } }