AuctionGUI.java recode finished

This commit is contained in:
Kiran Hart 2019-08-05 22:06:24 -04:00
parent 9ea4986092
commit 23c87bf305
4 changed files with 135 additions and 8 deletions

View File

@ -4,12 +4,15 @@ import com.kiranhart.auctionhouse.api.statics.AuctionSettings;
import com.kiranhart.auctionhouse.api.version.ServerVersion; import com.kiranhart.auctionhouse.api.version.ServerVersion;
import com.kiranhart.auctionhouse.auction.AuctionItem; import com.kiranhart.auctionhouse.auction.AuctionItem;
import com.kiranhart.auctionhouse.cmds.CommandManager; import com.kiranhart.auctionhouse.cmds.CommandManager;
import com.kiranhart.auctionhouse.util.economy.Economy;
import com.kiranhart.auctionhouse.util.economy.VaultEconomy;
import com.kiranhart.auctionhouse.util.locale.Locale; import com.kiranhart.auctionhouse.util.locale.Locale;
import com.kiranhart.auctionhouse.util.storage.ConfigWrapper; import com.kiranhart.auctionhouse.util.storage.ConfigWrapper;
import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ArrayUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.ConsoleCommandSender; import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.io.File; import java.io.File;
@ -24,6 +27,7 @@ public final class Core extends JavaPlugin {
private CommandManager commandManager; private CommandManager commandManager;
private Locale locale; private Locale locale;
private Economy economy;
private AuctionSettings auctionSettings; private AuctionSettings auctionSettings;
private CopyOnWriteArrayList<AuctionItem> auctionItems; private CopyOnWriteArrayList<AuctionItem> auctionItems;
@ -35,6 +39,7 @@ public final class Core extends JavaPlugin {
public void onEnable() { public void onEnable() {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
PluginManager pm = Bukkit.getPluginManager();
console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6=========================================")); console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6========================================="));
console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bLoading Auction House 1.10 - Multiversion")); console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bLoading Auction House 1.10 - Multiversion"));
@ -62,6 +67,11 @@ public final class Core extends JavaPlugin {
new Locale(this, "en_US"); new Locale(this, "en_US");
this.locale = Locale.getLocale(getConfig().getString("lang")); this.locale = Locale.getLocale(getConfig().getString("lang"));
//Economy
if (pm.isPluginEnabled("Vault")) {
this.economy = new VaultEconomy();
}
console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Loading data files")); console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&6AuctionHouse&8]&a Loading data files"));
initDataFiles(); initDataFiles();
@ -128,6 +138,10 @@ public final class Core extends JavaPlugin {
return commandManager; return commandManager;
} }
public Economy getEconomy() {
return economy;
}
public ServerVersion getServerVersion() { public ServerVersion getServerVersion() {
return serverVersion; return serverVersion;
} }

View File

@ -9,12 +9,14 @@ package com.kiranhart.auctionhouse.inventory.inventories;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.kiranhart.auctionhouse.Core; import com.kiranhart.auctionhouse.Core;
import com.kiranhart.auctionhouse.api.statics.AuctionLang;
import com.kiranhart.auctionhouse.api.statics.AuctionSettings; import com.kiranhart.auctionhouse.api.statics.AuctionSettings;
import com.kiranhart.auctionhouse.api.version.NBTEditor; import com.kiranhart.auctionhouse.api.version.NBTEditor;
import com.kiranhart.auctionhouse.api.version.XMaterial; import com.kiranhart.auctionhouse.api.version.XMaterial;
import com.kiranhart.auctionhouse.auction.AuctionItem; import com.kiranhart.auctionhouse.auction.AuctionItem;
import com.kiranhart.auctionhouse.inventory.AGUI; import com.kiranhart.auctionhouse.inventory.AGUI;
import com.kiranhart.auctionhouse.util.Debugger; import com.kiranhart.auctionhouse.util.Debugger;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
@ -86,13 +88,9 @@ public class AuctionGUI implements AGUI {
AuctionItem possibleAuctionItem = null; AuctionItem possibleAuctionItem = null;
/* /*
Perform the proper steps if the user left-clicks (not using bid system) Perform the proper steps if the user left-clicks (using bid system)
*/ */
if (e.getClick() == ClickType.LEFT) { if (e.getClick() == ClickType.LEFT && AuctionSettings.USE_BIDDING_SYSTEM) {
//Check if the bid system is set to false
if (!AuctionSettings.USE_BIDDING_SYSTEM) {
return;
}
//Get the key of the auction item //Get the key of the auction item
String auctionItemKey = NBTEditor.getString(clicked, "AuctionItemKey"); String auctionItemKey = NBTEditor.getString(clicked, "AuctionItemKey");
@ -100,10 +98,80 @@ public class AuctionGUI implements AGUI {
if (auctionItem.getKey().equalsIgnoreCase(auctionItemKey)) possibleAuctionItem = auctionItem; if (auctionItem.getKey().equalsIgnoreCase(auctionItemKey)) possibleAuctionItem = auctionItem;
} }
//Check if player has enough money to bid
if (Core.getInstance().getEconomy().hasBalance(p, possibleAuctionItem.getCurrentPrice() + possibleAuctionItem.getBidIncrement())) {
//Check if the person who clicked is the owner
if (possibleAuctionItem.getOwner().equals(p.getUniqueId())) {
//can the owner bid on their own item?
if (AuctionSettings.OWNER_CAN_BID_ON_OWN) {
//Update the price
possibleAuctionItem.setCurrentPrice(possibleAuctionItem.getCurrentPrice() + possibleAuctionItem.getBidIncrement());
//Alert the previous bidder someone has a higher bid than them
if (!possibleAuctionItem.getHighestBidder().equals(p.getUniqueId())) {
Core.getInstance().getLocale().getMessage(AuctionLang.OUT_BIDDED).processPlaceholder("player", p.getName()).sendPrefixedMessage(Bukkit.getOfflinePlayer(possibleAuctionItem.getHighestBidder()).getPlayer());
}
//Set the highest bidder
possibleAuctionItem.setHighestBidder(p.getUniqueId());
} else {
//Owner cannot bid on own item.
Core.getInstance().getLocale().getMessage(AuctionLang.CANT_BID_ON_OWN).sendPrefixedMessage(p);
}
} else {
//Clicked user is not the original owner
//Update the price
possibleAuctionItem.setCurrentPrice(possibleAuctionItem.getCurrentPrice() + possibleAuctionItem.getBidIncrement());
//Alert the previous bidder someone has a higher bid than them
if (!possibleAuctionItem.getHighestBidder().equals(p.getUniqueId())) {
Core.getInstance().getLocale().getMessage(AuctionLang.OUT_BIDDED).processPlaceholder("player", p.getName()).sendPrefixedMessage(Bukkit.getOfflinePlayer(possibleAuctionItem.getHighestBidder()).getPlayer());
}
//Set the highest bidder
possibleAuctionItem.setHighestBidder(p.getUniqueId());
}
//Increase time on bid?
if (AuctionSettings.INCREASE_AUCTION_TIME_ON_BID) {
possibleAuctionItem.setTime(possibleAuctionItem.getTime() + AuctionSettings.TIME_TO_INCREASE_BY_BID);
}
} else {
//Not enough money to bid
}
p.closeInventory();
p.openInventory(new AuctionGUI(p).getInventory());
return; return;
} }
/*
Perform the proper steps if the user right-clicks (using bid system)
*/
if (e.getClick() == ClickType.RIGHT && AuctionSettings.USE_BIDDING_SYSTEM) {
//Get the key of the auction item
String auctionItemKey = NBTEditor.getString(clicked, "AuctionItemKey");
for (AuctionItem auctionItem : Core.getInstance().getAuctionItems()) {
if (auctionItem.getKey().equalsIgnoreCase(auctionItemKey)) possibleAuctionItem = auctionItem;
}
if (Core.getInstance().getEconomy().hasBalance(p, possibleAuctionItem.getBuyNowPrice())) {
if (AuctionSettings.OWNER_CAN_PURCHASE_OWN) {
p.closeInventory();
p.openInventory(new ConfirmationGUI().getInventory());
} else {
Core.getInstance().getLocale().getMessage(AuctionLang.CANT_BUY_OWN).sendPrefixedMessage(p);
}
} else {
//Not enough money to purchase
}
p.closeInventory();
p.openInventory(new AuctionGUI(p).getInventory());
return;
}
/*
Perform the proper steps if the user left clicks (Without the bid system)
*/
} }
@Override @Override

View File

@ -7,5 +7,26 @@ package com.kiranhart.auctionhouse.inventory.inventories;
Code within this class is not to be redistributed without proper permission. Code within this class is not to be redistributed without proper permission.
*/ */
public class ConfirmationGUI { import com.kiranhart.auctionhouse.inventory.AGUI;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class ConfirmationGUI implements AGUI {
@Override
public void click(InventoryClickEvent e, ItemStack clicked, int slot) {
}
@Override
public void close(InventoryCloseEvent e) {
}
@Override
public Inventory getInventory() {
return null;
}
} }

View File

@ -7,5 +7,29 @@ package com.kiranhart.auctionhouse.util.economy;
Code within this class is not to be redistributed without proper permission. Code within this class is not to be redistributed without proper permission.
*/ */
public class VaultEconomy { import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
public class VaultEconomy implements Economy {
private net.milkbowl.vault.economy.Economy vault;
public VaultEconomy() {
this.vault = Bukkit.getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class).getProvider();
}
@Override
public boolean hasBalance(OfflinePlayer p, double cost) {
return vault.has(p, cost);
}
@Override
public boolean withdrawBalance(OfflinePlayer p, double cost) {
return vault.withdrawPlayer(p, cost).transactionSuccess();
}
@Override
public boolean deposit(OfflinePlayer p, double amount) {
return vault.depositPlayer(p, amount).transactionSuccess();
}
} }