dev
jakub 2 years ago
parent 9bb87ca1ca
commit 339371125f
  1. 3
      src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java
  2. 61
      src/main/java/xyz/mineconomia/mineconomiacore/commands/gamble.java
  3. 37
      src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java
  4. 21
      src/main/java/xyz/mineconomia/mineconomiacore/commands/sell.java
  5. 97
      src/main/java/xyz/mineconomia/mineconomiacore/events/shopGuiInteract.java
  6. 25
      src/main/java/xyz/mineconomia/mineconomiacore/events/shopInteract.java
  7. 2
      src/main/resources/plugin.yml

@ -8,6 +8,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager;
import xyz.mineconomia.mineconomiacore.commands.*;
import xyz.mineconomia.mineconomiacore.events.playerAccount;
import xyz.mineconomia.mineconomiacore.events.shopGuiInteract;
import xyz.mineconomia.mineconomiacore.events.shopInteract;
import xyz.mineconomia.mineconomiacore.events.specialEvents;
import xyz.mineconomia.mineconomiacore.handlers.FHBHandler;
@ -50,6 +51,7 @@ public final class MineconomiaCore extends JavaPlugin {
pm.registerEvents(new playerAccount(), this);
pm.registerEvents(new specialEvents(), this);
pm.registerEvents(new shopInteract(), this);
pm.registerEvents(new shopGuiInteract(), this);
//BookCommand
Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand());
@ -57,6 +59,7 @@ public final class MineconomiaCore extends JavaPlugin {
Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall());
Objects.requireNonNull(getCommand("shop")).setExecutor(new shop());
Objects.requireNonNull(getCommand("sample")).setExecutor(new sample());
Objects.requireNonNull(getCommand("gamble")).setExecutor(new gamble());
//CustomItems
ItemManager.init();
}

@ -0,0 +1,61 @@
package xyz.mineconomia.mineconomiacore.commands;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import xyz.mineconomia.mineconomiacore.MineconomiaCore;
import xyz.mineconomia.mineconomiacore.events.shopInteract;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class gamble implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
Inventory gambleGui = Bukkit.createInventory(null, 27, "GAMBLE GAMBLE GAMBLE");
for (int i = 0; i<9; i++){
gambleGui.setItem( i,shopInteract.newItemStack(" ", Material.BLACK_STAINED_GLASS_PANE));
gambleGui.setItem( i + 18,shopInteract.newItemStack(" ", Material.BLACK_STAINED_GLASS_PANE));
}
gambleGui.setItem(4, shopInteract.newItemStack(" ", Material.LIME_STAINED_GLASS_PANE));
gambleGui.setItem(22, shopInteract.newItemStack(" ", Material.LIME_STAINED_GLASS_PANE));
Player p = (Player) commandSender;
List<ItemStack> itemStackList = new ArrayList<>();
for (Material m : Material.values()){
gambleGui.setItem(15, new ItemStack(m));
if (gambleGui.getItem(15) != null){
itemStackList.add(new ItemStack(m));
}
}
p.openInventory(gambleGui);
Collections.shuffle(itemStackList);
for(int i = 0; i < 100; i++){
Bukkit.getScheduler().scheduleSyncDelayedTask(MineconomiaCore.getPlugin(MineconomiaCore.class), new Runnable() {
public void run() {
ItemStack itemStackToEnd = itemStackList.get(0);
itemStackList.remove(0);
itemStackList.add(itemStackToEnd);
for (int i = 0; i<9; i++){
gambleGui.setItem(i+9, itemStackList.get(i));
if (gambleGui.getItem(i+9) == null){
gambleGui.setItem(i+9, new ItemStack(Material.STICK));
}
}
p.playSound(p, Sound.BLOCK_NOTE_BLOCK_BANJO, 100, 1);
}
}, Long.parseLong(String.valueOf(i+1)));
}
return true;
}
}

@ -2,27 +2,31 @@ package xyz.mineconomia.mineconomiacore.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.mineconomia.mineconomiacore.PDC;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static xyz.mineconomia.mineconomiacore.publicValues.config;
public class mcore implements CommandExecutor {
public class mcore implements TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, String[] args) {
Player player = (Player) commandSender;
PlayerInventory inventory= player.getInventory();
ItemStack item = inventory.getItemInMainHand();
if (Objects.equals(args[0], "setSpecial")){
Player player = (Player) commandSender;
PlayerInventory inventory= player.getInventory();
ItemStack item = inventory.getItemInMainHand();
ItemMeta meta = item.getItemMeta();
assert meta != null;
PDC.WriteItemMetaPDC(meta, "special", PersistentDataType.INTEGER,1);
@ -35,6 +39,29 @@ public class mcore implements CommandExecutor {
}
return true;
}
if (Objects.equals(args[0], "setSellItem")){
config.set("sellItems." + item.getType().name(), args[1]);
try {
config.save("config.yml");
} catch (IOException e) {
throw new RuntimeException(e);
}
player.sendMessage("Nastaveno");
return true;
}
return false;
}
@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
List<String> completetions = new ArrayList<>();
switch (strings.length){
case 0:
completetions.add("setSpecial");
completetions.add("setSellItem");
}
return List.of();
}
}

@ -0,0 +1,21 @@
package xyz.mineconomia.mineconomiacore.commands;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import xyz.mineconomia.mineconomiacore.PDC;
public class sell implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
Player p = (Player) commandSender;
PDC.WritePlayerPDC(p, "sellGUIOpen", PersistentDataType.INTEGER, 1);
p.openInventory(Bukkit.createInventory(null, 36, ChatColor.GREEN + "" + ChatColor.BOLD + "Vlož itemy, které chceš prodat"));
return false;
}
}

@ -1,26 +1,117 @@
package xyz.mineconomia.mineconomiacore.events;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import xyz.mineconomia.mineconomiacore.MineconomiaCore;
import xyz.mineconomia.mineconomiacore.invTools;
import xyz.mineconomia.mineconomiacore.serialization;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class shopGuiInteract implements Listener {
public static HashMap<Player, Map<String, Object>> storeDatas = new HashMap<>();
@EventHandler
public void clickEvent(InventoryClickEvent event){
public void clickEvent(InventoryClickEvent event) throws IOException, ClassNotFoundException {
Player player = (Player) event.getWhoClicked();
Map<String, Object> storeData = storeDatas.get(player);
if (storeData == null) return;
event.setCancelled(true);
if (!event.getAction().equals(InventoryAction.PICKUP_ALL)) return;
String noSpaceMessage;
String noMoneyMessage;
String successUserMessage;
String successUserMessageEight;
String successOwnerMessage;
String successOwnerMessageEight;
String noItemsMessage;
String count = (String) storeData.get("count");
String price = (String) storeData.get("price");
String countEight = (String) storeData.get("countEight");
String priceEight = (String) storeData.get("priceEight");
String itemType = ((String) storeData.get("itemType")).toLowerCase();
ItemStack item = (ItemStack) serialization.stringToBukkitObject((String) storeData.get("item"));
Inventory buyerInventory = (Inventory) storeData.get("buyerInventory");
Inventory sellerInventory = (Inventory) storeData.get("sellerInventory");
OfflinePlayer buyer = (OfflinePlayer) storeData.get("buyer");
OfflinePlayer seller = (OfflinePlayer) storeData.get("seller");
OfflinePlayer owner = Bukkit.getOfflinePlayer((String) storeData.get("owner"));
Economy eco = MineconomiaCore.getEconomy();
if (storeData.get("regime").equals("buy")){
noSpaceMessage = ChatColor.RED + "Nemáš dost místa v inventáři";
noMoneyMessage = ChatColor.RED + "Nemáš dost peněz";
noItemsMessage = ChatColor.RED + "Prodejce nemá dost itemů ve skladišti";
successUserMessage = ChatColor.GREEN + "Koupil jsi" + count + "x " + itemType + "za" + price;
successUserMessageEight = ChatColor.GREEN + "Koupil jsi" + countEight + "x " + itemType + " za " + priceEight + "$";
successOwnerMessage = ChatColor.GREEN + "Hráč " + player.getDisplayName() + "si koupil " + count + "x " + itemType + " za " + price + "%";
successOwnerMessageEight = ChatColor.GREEN + "Hráč " + player.getDisplayName() + "si koupil " + countEight + "x " + itemType + " za " + priceEight + "%";
}else{
noSpaceMessage = ChatColor.RED + "Prodejce nemá dost místa ve skladišti";
noMoneyMessage = ChatColor.RED + "Prodejce nemá dost peněz";
noItemsMessage = ChatColor.RED + "Nemáš dost itemů";
successUserMessage = ChatColor.GREEN + "Prodal jsi" + count + "x " + itemType + "za" + price;
successUserMessageEight = ChatColor.GREEN + "Prodal jsi" + countEight + "x " + itemType + " za " + priceEight + "$";
successOwnerMessage = ChatColor.GREEN + "Hráč " + player.getDisplayName() + "ti prodal " + count + "x " + itemType + " za " + price + "%";
successOwnerMessageEight = ChatColor.GREEN + "Hráč " + player.getDisplayName() + "ti prodal " + countEight + "x " + itemType + " za " + priceEight + "%";
}
double finalPrice = Double.parseDouble(price);
int finalCount = Integer.parseInt(count);
int slot = event.getSlot();
if (slot == 1){
finalCount = Integer.parseInt(countEight);
finalPrice = Double.parseDouble(priceEight);
}
if (slot == 0 || slot == 1){
if (seller.equals(buyer)){
player.sendMessage(ChatColor.RED + "Sám sobě nic prodat nemůžeš");
return;
}
if(invTools.getFreeSpaceForItem(buyerInventory, item) < finalCount){
player.sendMessage(noSpaceMessage);
return;
}
if (finalPrice > eco.getBalance(buyer)){
player.sendMessage(noMoneyMessage);
return;
}
if (invTools.itemAmount(sellerInventory, item) < finalCount){
player.sendMessage(noItemsMessage);
return;
}
item.setAmount(finalCount);
sellerInventory.removeItem(item);
buyerInventory.addItem(item);
eco.withdrawPlayer(buyer, finalPrice);
eco.depositPlayer(seller, finalPrice);
if (slot == 0){
player.sendMessage(successUserMessage);
sendIfOnline(owner, successOwnerMessage);
}else{
player.sendMessage(successUserMessageEight);
sendIfOnline(owner, successOwnerMessageEight);
}
}
}
@EventHandler
@ -29,4 +120,8 @@ public class shopGuiInteract implements Listener {
storeDatas.remove(player);
}
public static void sendIfOnline(OfflinePlayer player, String message){
if (player.isOnline()) Objects.requireNonNull(player.getPlayer()).sendMessage(message);
}
}

@ -41,7 +41,6 @@ public class shopInteract implements Listener {
if (collection.documentExists(shopid)){
BaseDocument baseDocument = collection.getDocument(shopid, BaseDocument.class);
Map<String, Object> shopData = baseDocument.getProperties();
List<List<String>> placeholders = new ArrayList<>();
NumberFormat formatInteger = new DecimalFormat("0");
NumberFormat formatter = new DecimalFormat("0.00");
String regime = (String) shopData.get("regime");
@ -49,24 +48,24 @@ public class shopInteract implements Listener {
if (((String) shopData.get("type")).contains("group")){
ownerPrefix = "Skupina ";
}
placeholders.add(new ArrayList<>(List.of("%%owner%%", ownerPrefix + shopData.get("owner"))));
String count = (String) formatInteger.format(shopData.get("count"));
String price = formatter.format( shopData.get("price"));
String countEight = formatInteger.format(Math.multiplyExact((Long) shopData.get("count"), 8));
String priceEight = formatter.format(Math.multiplyExact((Long) shopData.get("price"),8));
Inventory inventory;
Inventory invetoryToCheck;
Inventory inventoryToAddTo;
Inventory sellerInventory;
Inventory buyerInventory;
String shopPrefix;
OfflinePlayer buyer;
OfflinePlayer seller;
String shopErrorMoney;
String shopErrorProduct;
Material shopMaterial;
Material shopErrorMaterial;
if (shopData.get("regime").equals("buy")) {
invetoryToCheck = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory();
inventoryToAddTo = player.getInventory();
sellerInventory = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory();
buyerInventory = player.getInventory();
shopPrefix = "&aKoupit ";
shopMaterial = Material.LIME_WOOL;
shopErrorMaterial = Material.LIME_STAINED_GLASS;
@ -77,8 +76,8 @@ public class shopInteract implements Listener {
seller = Bukkit.getOfflinePlayer((String) shopData.get("owner"));
}else{
invetoryToCheck = player.getInventory();;
inventoryToAddTo = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory();
sellerInventory = player.getInventory();;
buyerInventory = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory();
shopPrefix = "&eProdat ";
shopMaterial = Material.YELLOW_WOOL;
shopErrorMaterial = Material.YELLOW_STAINED_GLASS;
@ -92,11 +91,15 @@ public class shopInteract implements Listener {
inventory.setItem(0, newItemStack(shopPrefix + count + "ks za " + price + "$", shopMaterial));
inventory.setItem(1, newItemStack(shopPrefix + countEight + "ks za " + priceEight + "$", shopMaterial));
inventory.setItem(7, (ItemStack) serialization.stringToBukkitObject((String) shopData.get("item")));
inventory.setItem(8, newItemStack("&l&bInformace o obchodu:", Material.PLAYER_HEAD, List.of("&eMajitel: " + shopData.get("owner"))));
shopData.put("inventoryToAddTo", inventoryToAddTo);
shopData.put("inventoryToCheck", invetoryToCheck);
inventory.setItem(8, newItemStack("&l&bInformace o obchodu:", Material.PLAYER_HEAD, List.of("&eMajitel: " + ownerPrefix + shopData.get("owner"))));
shopData.put("buyerInventory", buyerInventory);
shopData.put("sellerInventory", sellerInventory);
shopData.put("seller", seller);
shopData.put("buyer", buyer);
shopData.put("price", price);
shopData.put("priceEight", priceEight);
shopData.put("count", count);
shopData.put("countEight", countEight);
shopGuiInteract.storeDatas.put(player, shopData);
player.openInventory(inventory);

@ -21,3 +21,5 @@ commands:
sample:
description: will unfuck things
permission: mcore.unfuck
gamble:
description: "dd"
Loading…
Cancel
Save