parent
339371125f
commit
7f356e882a
6 changed files with 136 additions and 16 deletions
@ -0,0 +1,83 @@ |
||||
package xyz.mineconomia.mineconomiacore.events; |
||||
|
||||
import net.md_5.bungee.api.chat.ClickEvent; |
||||
import net.md_5.bungee.api.chat.ComponentBuilder; |
||||
import net.md_5.bungee.api.chat.HoverEvent; |
||||
import net.md_5.bungee.api.chat.TextComponent; |
||||
import org.bukkit.Bukkit; |
||||
import org.bukkit.ChatColor; |
||||
import org.bukkit.entity.Player; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.inventory.InventoryCloseEvent; |
||||
import org.bukkit.inventory.Inventory; |
||||
import org.bukkit.inventory.ItemStack; |
||||
import org.bukkit.persistence.PersistentDataType; |
||||
import xyz.mineconomia.mineconomiacore.MineconomiaCore; |
||||
import xyz.mineconomia.mineconomiacore.PDC; |
||||
|
||||
import java.text.DecimalFormat; |
||||
import java.text.NumberFormat; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
import static xyz.mineconomia.mineconomiacore.publicValues.config; |
||||
|
||||
public class sellClose implements Listener { |
||||
public static HashMap<Player, Map<String, List<Object>>> sellItems = new HashMap<>(); |
||||
@EventHandler |
||||
public void sellItemsPrep(InventoryCloseEvent event){ |
||||
Player player = (Player) event.getPlayer(); |
||||
if (PDC.GetPlayerPDC(player, "sellGUIOpen", PersistentDataType.INTEGER) == null){ |
||||
return; |
||||
} |
||||
|
||||
Inventory inventory = event.getInventory(); |
||||
ItemStack[] itemStacks = inventory.getContents(); |
||||
PDC.DeletePlayerPDC(player, "sellGUIOpen"); |
||||
HashMap<String, List<Object>> MapOfSellable = new HashMap<>(); |
||||
for (ItemStack itemStack: itemStacks){ |
||||
if (itemStack != null){ |
||||
String type = itemStack.getType().toString(); |
||||
double price = config.getDouble("sellItems." + type); |
||||
if (price != 0){ |
||||
MapOfSellable.computeIfAbsent(type, k -> List.of(0, 0D)); |
||||
Integer finalCount = (Integer) MapOfSellable.get(type).get(0); |
||||
Double finalPrice = (Double) MapOfSellable.get(type).get(1); |
||||
int count = itemStack.getAmount(); |
||||
MapOfSellable.put(type, List.of(count+finalCount, price*count + finalPrice)); |
||||
}else { |
||||
player.getInventory().addItem(itemStack); |
||||
} |
||||
} |
||||
|
||||
} |
||||
if(MapOfSellable.isEmpty()){ |
||||
player.sendMessage(ChatColor.YELLOW + "Nic jsi neprodal"); |
||||
return; |
||||
} |
||||
sellItems.put(player, MapOfSellable); |
||||
player.sendMessage(""); |
||||
player.sendMessage(ChatColor.GREEN + "Prodal následující itemy:"); |
||||
NumberFormat formatter = new DecimalFormat("0.00"); |
||||
Double finalPrice = 0D; |
||||
for (String key: MapOfSellable.keySet()){ |
||||
Integer count = (Integer) MapOfSellable.get(key).get(0); |
||||
Double itemPrice = (Double) MapOfSellable.get(key).get(1); |
||||
finalPrice += itemPrice; |
||||
player.sendMessage(ChatColor.YELLOW + "" + count + "x " + key.toLowerCase() + " za " + formatter.format(itemPrice) + "$"); |
||||
} |
||||
TextComponent succesMessage = new TextComponent(ChatColor.GREEN + "Celkový zisk: " + formatter.format(finalPrice) + "$ "); |
||||
TextComponent cancelMessage = new TextComponent(ChatColor.RED + "" + ChatColor.BOLD + "ZRUŠIT"); |
||||
cancelMessage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(ChatColor.YELLOW + "Kliknutím se ti navratí itemy a odečtou peníze").create())); |
||||
cancelMessage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/sell cancel")); |
||||
succesMessage.addExtra(cancelMessage); |
||||
player.spigot().sendMessage(succesMessage); |
||||
player.sendMessage(""); |
||||
MineconomiaCore.getEconomy().depositPlayer(player, finalPrice); |
||||
|
||||
|
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue