Fixed Shops not taking items :D
This commit is contained in:
parent
5cf80c903f
commit
b14b37540b
@ -18,10 +18,8 @@ import rip.tilly.bedwars.game.arena.CopiedArena;
|
|||||||
import rip.tilly.bedwars.generators.Generator;
|
import rip.tilly.bedwars.generators.Generator;
|
||||||
import rip.tilly.bedwars.generators.GeneratorTier;
|
import rip.tilly.bedwars.generators.GeneratorTier;
|
||||||
import rip.tilly.bedwars.generators.GeneratorType;
|
import rip.tilly.bedwars.generators.GeneratorType;
|
||||||
import rip.tilly.bedwars.playerdata.PlayerData;
|
|
||||||
import rip.tilly.bedwars.utils.CC;
|
import rip.tilly.bedwars.utils.CC;
|
||||||
import rip.tilly.bedwars.utils.CustomLocation;
|
import rip.tilly.bedwars.utils.CustomLocation;
|
||||||
import rip.tilly.bedwars.utils.LocationUtils;
|
|
||||||
import rip.tilly.bedwars.utils.TimeUtils;
|
import rip.tilly.bedwars.utils.TimeUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -121,10 +119,6 @@ public class Game {
|
|||||||
++this.durationTimer;
|
++this.durationTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPartyMatch() {
|
|
||||||
return (this.teams.get(0).getAllPlayers().size() >= 2 || this.teams.get(1).getAllPlayers().size() >= 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addSpectator(UUID uuid) {
|
public void addSpectator(UUID uuid) {
|
||||||
this.spectators.add(uuid);
|
this.spectators.add(uuid);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import rip.tilly.bedwars.BedWars;
|
|||||||
import rip.tilly.bedwars.playerdata.PlayerData;
|
import rip.tilly.bedwars.playerdata.PlayerData;
|
||||||
import rip.tilly.bedwars.utils.CC;
|
import rip.tilly.bedwars.utils.CC;
|
||||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||||
|
import rip.tilly.bedwars.utils.PlayerUtil;
|
||||||
import rip.tilly.bedwars.utils.menu.Button;
|
import rip.tilly.bedwars.utils.menu.Button;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -83,36 +84,46 @@ public class ShopButton extends Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerData playerData = BedWars.getInstance().getPlayerDataManager().getPlayerData(player.getUniqueId());
|
if (costItems < cost) {
|
||||||
if (costItems >= cost) {
|
|
||||||
for (ItemStack contents : player.getInventory().getContents()) {
|
|
||||||
if (contents != null) {
|
|
||||||
if (contents.getType() == costType) {
|
|
||||||
if (contents.getAmount() == cost) {
|
|
||||||
player.getInventory().removeItem(contents);
|
|
||||||
} else {
|
|
||||||
contents.setAmount(contents.getAmount() - cost);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (color) {
|
|
||||||
player.getInventory().addItem(new ItemBuilder(material)
|
|
||||||
.amount(amount)
|
|
||||||
.durability(playerData.getPlayerTeam().getColorData())
|
|
||||||
.hideFlags()
|
|
||||||
.build());
|
|
||||||
} else {
|
|
||||||
player.getInventory().addItem(new ItemBuilder(material)
|
|
||||||
.amount(amount)
|
|
||||||
.durability(data)
|
|
||||||
.hideFlags()
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
playNeutral(player);
|
|
||||||
} else {
|
|
||||||
player.sendMessage(CC.translate("&cYou don't have enough " + costTypeName + "!"));
|
player.sendMessage(CC.translate("&cYou don't have enough " + costTypeName + "!"));
|
||||||
playFail(player);
|
playFail(player);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerData playerData = BedWars.getInstance().getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||||
|
|
||||||
|
int finalCost = cost;
|
||||||
|
for (ItemStack i : player.getInventory().getContents()) {
|
||||||
|
if (i == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (i.getType() == costType) {
|
||||||
|
if (i.getAmount() < finalCost) {
|
||||||
|
finalCost -= i.getAmount();
|
||||||
|
PlayerUtil.minusAmount(player, i, i.getAmount());
|
||||||
|
player.updateInventory();
|
||||||
|
} else {
|
||||||
|
PlayerUtil.minusAmount(player, i, finalCost);
|
||||||
|
player.updateInventory();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color) {
|
||||||
|
player.getInventory().addItem(new ItemBuilder(material)
|
||||||
|
.amount(amount)
|
||||||
|
.durability(playerData.getPlayerTeam().getColorData())
|
||||||
|
.hideFlags()
|
||||||
|
.build());
|
||||||
|
} else {
|
||||||
|
player.getInventory().addItem(new ItemBuilder(material)
|
||||||
|
.amount(amount)
|
||||||
|
.durability(data)
|
||||||
|
.hideFlags()
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
playNeutral(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,10 @@ import rip.tilly.bedwars.game.GameTeam;
|
|||||||
import rip.tilly.bedwars.playerdata.currentgame.TeamUpgrades;
|
import rip.tilly.bedwars.playerdata.currentgame.TeamUpgrades;
|
||||||
import rip.tilly.bedwars.utils.CC;
|
import rip.tilly.bedwars.utils.CC;
|
||||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||||
|
import rip.tilly.bedwars.utils.PlayerUtil;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class UpgradeItem {
|
public class UpgradeItem {
|
||||||
@ -54,8 +54,18 @@ public class UpgradeItem {
|
|||||||
|
|
||||||
lore.add(CC.translate(""));
|
lore.add(CC.translate(""));
|
||||||
|
|
||||||
|
int costItems = 0;
|
||||||
|
for (ItemStack contents : player.getInventory().getContents()) {
|
||||||
|
if (contents != null) {
|
||||||
|
if (contents.getType() == Material.DIAMOND) {
|
||||||
|
costItems += contents.getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int cost = this.upgrade.getCostForLevel(level);
|
||||||
|
|
||||||
if (teamUpgrades.getCostToUpgrade(this.upgrade) != -1) {
|
if (teamUpgrades.getCostToUpgrade(this.upgrade) != -1) {
|
||||||
if (this.canBuy(player, level + 1)) {
|
if (costItems >= cost) {
|
||||||
lore.add(CC.translate("&aClick to purchase"));
|
lore.add(CC.translate("&aClick to purchase"));
|
||||||
} else {
|
} else {
|
||||||
lore.add(CC.translate("&cNot enough diamonds"));
|
lore.add(CC.translate("&cNot enough diamonds"));
|
||||||
@ -70,28 +80,34 @@ public class UpgradeItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void buy(Player player, int level, Game game, GameTeam gameTeam, TeamUpgrades teamUpgrades) {
|
public void buy(Player player, int level, Game game, GameTeam gameTeam, TeamUpgrades teamUpgrades) {
|
||||||
if (!this.canBuy(player, level)) {
|
int costItems = 0;
|
||||||
|
for (ItemStack contents : player.getInventory().getContents()) {
|
||||||
|
if (contents != null) {
|
||||||
|
if (contents.getType() == Material.DIAMOND) {
|
||||||
|
costItems += contents.getAmount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int cost = this.upgrade.getCostForLevel(level);
|
||||||
|
if (costItems < cost) {
|
||||||
|
player.sendMessage(CC.translate("&cYou don't have enough Diamonds!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int price = this.upgrade.getCostForLevel(level);
|
int finalCost = cost;
|
||||||
int removed = 0;
|
for (ItemStack i : player.getInventory().getContents()) {
|
||||||
|
if (i == null) {
|
||||||
for (ListIterator<ItemStack> listIterator = player.getInventory().iterator(); listIterator.hasNext();) {
|
continue;
|
||||||
ItemStack itemStack = listIterator.next();
|
}
|
||||||
|
if (i.getType() == Material.DIAMOND) {
|
||||||
if (itemStack != null && itemStack.getType() == Material.DIAMOND) {
|
if (i.getAmount() < finalCost) {
|
||||||
if (itemStack.getAmount() >= price) {
|
finalCost -= i.getAmount();
|
||||||
removed += itemStack.getAmount() - price;
|
PlayerUtil.minusAmount(player, i, i.getAmount());
|
||||||
|
player.updateInventory();
|
||||||
itemStack.setAmount(itemStack.getAmount() - price);
|
|
||||||
} else {
|
} else {
|
||||||
removed += itemStack.getAmount();
|
PlayerUtil.minusAmount(player, i, finalCost);
|
||||||
|
player.updateInventory();
|
||||||
itemStack.setAmount(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (price <= removed) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,20 +116,6 @@ public class UpgradeItem {
|
|||||||
teamUpgrades.upgrade(player, game, gameTeam, this.upgrade);
|
teamUpgrades.upgrade(player, game, gameTeam, this.upgrade);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canBuy(Player player, int level) {
|
|
||||||
int amount = 0;
|
|
||||||
|
|
||||||
for (ListIterator<ItemStack> listIterator = player.getInventory().iterator(); listIterator.hasNext();) {
|
|
||||||
ItemStack itemStack = listIterator.next();
|
|
||||||
|
|
||||||
if (itemStack != null && itemStack.getType() == Material.DIAMOND) {
|
|
||||||
amount += itemStack.getAmount();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return amount >= this.upgrade.getCostForLevel(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Upgrade getUpgrade() {
|
public Upgrade getUpgrade() {
|
||||||
return this.upgrade;
|
return this.upgrade;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package rip.tilly.bedwars.utils;
|
|||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
public class PlayerUtil {
|
public class PlayerUtil {
|
||||||
@ -28,4 +29,17 @@ public class PlayerUtil {
|
|||||||
((CraftPlayer) player).getHandle().getDataWatcher().watch(9, (byte) 0);
|
((CraftPlayer) player).getHandle().getDataWatcher().watch(9, (byte) 0);
|
||||||
player.updateInventory();
|
player.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void minusAmount(Player p, ItemStack i, int amount) {
|
||||||
|
if (i.getAmount() - amount <= 0) {
|
||||||
|
if (p.getInventory().getItemInHand().equals(i)) {
|
||||||
|
p.getInventory().setItemInHand(null);
|
||||||
|
} else {
|
||||||
|
p.getInventory().removeItem(i);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
i.setAmount(i.getAmount() - amount);
|
||||||
|
p.updateInventory();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,15 +71,9 @@ public class UpgradesMenu extends Menu {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (upgradeItem.canBuy(player, teamUpgrades.getLevelForUpgrade(upgradeItem.getUpgrade()) + 1)) {
|
upgradeItem.buy(player, teamUpgrades.getLevelForUpgrade(upgradeItem.getUpgrade()) + 1, game, gameTeam, teamUpgrades);
|
||||||
upgradeItem.buy(player, teamUpgrades.getLevelForUpgrade(upgradeItem.getUpgrade()) + 1, game, gameTeam, teamUpgrades);
|
|
||||||
|
|
||||||
new UpgradesMenu(this.main.getPlayerMenuUtil(player)).open(player);
|
new UpgradesMenu(this.main.getPlayerMenuUtil(player)).open(player);
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
player.sendMessage(CC.translate("&cYou do not have enough diamonds for &c&l" + upgradeItem.getUpgrade().getFormattedName() + " " + upgradeItem.getUpgrade().getNumberToRomanNumeral(teamUpgrades.getLevelForUpgrade(upgradeItem.getUpgrade()) + 1)));
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user