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