dev
jakub 2 years ago
parent 339371125f
commit 7f356e882a
  1. 2
      .gitignore
  2. 13
      src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java
  3. 8
      src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java
  4. 37
      src/main/java/xyz/mineconomia/mineconomiacore/commands/sell.java
  5. 83
      src/main/java/xyz/mineconomia/mineconomiacore/events/sellClose.java
  6. 7
      src/main/resources/plugin.yml

2
.gitignore vendored

@ -112,3 +112,5 @@ buildNumber.properties
# Common working directory # Common working directory
run/ run/
!/src/main/java/xyz/mineconomia/mineconomiacore/commands/bed.java
!/src/main/resources/config.yml

@ -7,10 +7,7 @@ import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager; import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager;
import xyz.mineconomia.mineconomiacore.commands.*; import xyz.mineconomia.mineconomiacore.commands.*;
import xyz.mineconomia.mineconomiacore.events.playerAccount; import xyz.mineconomia.mineconomiacore.events.*;
import xyz.mineconomia.mineconomiacore.events.shopGuiInteract;
import xyz.mineconomia.mineconomiacore.events.shopInteract;
import xyz.mineconomia.mineconomiacore.events.specialEvents;
import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; import xyz.mineconomia.mineconomiacore.handlers.FHBHandler;
import java.util.Objects; import java.util.Objects;
@ -45,21 +42,25 @@ public final class MineconomiaCore extends JavaPlugin {
logger.info("║ ║"); logger.info("║ ║");
logger.info("╚═══════════════════════════════╝"); logger.info("╚═══════════════════════════════╝");
logger.info(""); logger.info("");
Objects.requireNonNull(plugin.getCommand("mcore")).setExecutor(new mcore());
PluginManager pm = getServer().getPluginManager(); PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new FHBHandler(), this); pm.registerEvents(new FHBHandler(), this);
pm.registerEvents(new playerAccount(), this); pm.registerEvents(new playerAccount(), this);
pm.registerEvents(new specialEvents(), this); pm.registerEvents(new specialEvents(), this);
pm.registerEvents(new shopInteract(), this); pm.registerEvents(new shopInteract(), this);
pm.registerEvents(new shopGuiInteract(), this); pm.registerEvents(new shopGuiInteract(), this);
pm.registerEvents(new sellClose(), this);
//BookCommand Objects.requireNonNull(plugin.getCommand("mcore")).setExecutor(new mcore());
Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand());
Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw()); Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw());
Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall()); Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall());
Objects.requireNonNull(getCommand("shop")).setExecutor(new shop()); Objects.requireNonNull(getCommand("shop")).setExecutor(new shop());
Objects.requireNonNull(getCommand("sample")).setExecutor(new sample()); Objects.requireNonNull(getCommand("sample")).setExecutor(new sample());
Objects.requireNonNull(getCommand("gamble")).setExecutor(new gamble()); Objects.requireNonNull(getCommand("gamble")).setExecutor(new gamble());
Objects.requireNonNull(getCommand("sell")).setExecutor(new sell());
Objects.requireNonNull(getCommand("mcore")).setTabCompleter(new mcore());
//CustomItems //CustomItems
ItemManager.init(); ItemManager.init();
} }

@ -40,7 +40,7 @@ public class mcore implements TabExecutor {
return true; return true;
} }
if (Objects.equals(args[0], "setSellItem")){ if (Objects.equals(args[0], "setSellItem")){
config.set("sellItems." + item.getType().name(), args[1]); config.set("sellItems." + item.getType().name(), Double.parseDouble(args[1]));
try { try {
config.save("config.yml"); config.save("config.yml");
} catch (IOException e) { } catch (IOException e) {
@ -56,12 +56,10 @@ public class mcore implements TabExecutor {
@Override @Override
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
List<String> completetions = new ArrayList<>(); List<String> completetions = new ArrayList<>();
switch (strings.length){
case 0:
completetions.add("setSpecial"); completetions.add("setSpecial");
completetions.add("setSellItem"); completetions.add("setSellItem");
} return completetions;
return List.of();
} }
} }

@ -2,20 +2,49 @@ package xyz.mineconomia.mineconomiacore.commands;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType; import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import xyz.mineconomia.mineconomiacore.MineconomiaCore;
import xyz.mineconomia.mineconomiacore.PDC; import xyz.mineconomia.mineconomiacore.PDC;
import xyz.mineconomia.mineconomiacore.events.sellClose;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class sell implements CommandExecutor { public class sell implements CommandExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
Player p = (Player) commandSender; Player player = (Player) commandSender;
PDC.WritePlayerPDC(p, "sellGUIOpen", PersistentDataType.INTEGER, 1); if (strings.length > 0){
p.openInventory(Bukkit.createInventory(null, 36, ChatColor.GREEN + "" + ChatColor.BOLD + "Vlož itemy, které chceš prodat")); Map<String, List<Object>> MapOfSellable = sellClose.sellItems.get(player);
return false; if (strings[0].equals("cancel") && !(MapOfSellable == null)){
NumberFormat formatter = new DecimalFormat("0.00");
Double finalPrice = 0d;
for (String key: sellClose.sellItems.get(player).keySet()){
Integer count = (Integer) MapOfSellable.get(key).get(0);
Double itemPrice = (Double) MapOfSellable.get(key).get(1);
player.getInventory().addItem(new ItemStack( Objects.requireNonNull(Material.getMaterial(key.toUpperCase())), count));
finalPrice += itemPrice;
}
sellClose.sellItems.remove(player);
MineconomiaCore.getEconomy().withdrawPlayer(player,finalPrice);
player.sendMessage(ChatColor.YELLOW +"Věci ti byli navráceny");
return true;
}
}
PDC.WritePlayerPDC(player, "sellGUIOpen", PersistentDataType.INTEGER, 1);
sellClose.sellItems.remove(player);
player.openInventory(Bukkit.createInventory(null, 36, ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "Vlož itemy k prodeji"));
return true;
} }
} }

@ -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);
}
}

@ -23,3 +23,10 @@ commands:
permission: mcore.unfuck permission: mcore.unfuck
gamble: gamble:
description: "dd" description: "dd"
permission: mcore.gamble
sell:
description: "ff"
spawn:
description: "na spawn s tebou"
bed:
description: "do postele s tebou"
Loading…
Cancel
Save