mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 10:22:29 +00:00
Fixed Bugs & Added Hologram Format Configuration
This commit is contained in:
parent
1e5a6f3731
commit
66750cd570
13
config.yml
13
config.yml
@ -155,6 +155,9 @@ messages:
|
|||||||
# Set the message when the player doesn't have enough items to sell.
|
# Set the message when the player doesn't have enough items to sell.
|
||||||
not-enough-items: "&cNot enough items."
|
not-enough-items: "&cNot enough items."
|
||||||
|
|
||||||
|
# Set the message when the vendor doesn't have enough money to buy something from the player
|
||||||
|
vendor-not-enough-money: "&cVendor has not enough money."
|
||||||
|
|
||||||
# Set the message when the shop is out of stock.
|
# Set the message when the shop is out of stock.
|
||||||
out-of-stock: "&cShop out of stock."
|
out-of-stock: "&cShop out of stock."
|
||||||
|
|
||||||
@ -231,15 +234,19 @@ messages:
|
|||||||
|
|
||||||
hologram:
|
hologram:
|
||||||
|
|
||||||
# Set the message in the second row of the shops' hologram when the player can buy and sell an item.
|
# Set the text in the first row of the shops' hologram
|
||||||
|
# Usable regex: %ITEMNAME%, %AMOUNT%
|
||||||
|
format: "%AMOUNT% * %ITEMNAME%"
|
||||||
|
|
||||||
|
# Set the text in the second row of the shops' hologram when the player can buy and sell an item.
|
||||||
# Usable regex: %BUY-PRICE%, %SELL-PRICE%, %CURRENCY-SYMBOL%
|
# Usable regex: %BUY-PRICE%, %SELL-PRICE%, %CURRENCY-SYMBOL%
|
||||||
buy-and-sell: "Buy %BUY-PRICE%%CURRENCY-SYMBOL% | %SELL-PRICE%%CURRENCY-SYMBOL% Sell"
|
buy-and-sell: "Buy %BUY-PRICE%%CURRENCY-SYMBOL% | %SELL-PRICE%%CURRENCY-SYMBOL% Sell"
|
||||||
|
|
||||||
# Set the message in the second row of the shops' hologram when the player can only buy an item.
|
# Set the text in the second row of the shops' hologram when the player can only buy an item.
|
||||||
# Usable regex: %BUY-PRICE%, %CURRENCY-SYMBOL%
|
# Usable regex: %BUY-PRICE%, %CURRENCY-SYMBOL%
|
||||||
only-buy: "Buy %BUY-PRICE%%CURRENCY-SYMBOL%"
|
only-buy: "Buy %BUY-PRICE%%CURRENCY-SYMBOL%"
|
||||||
|
|
||||||
# Set the message in the second row of the shops' hologram when the player can only sell an item.
|
# Set the text in the second row of the shops' hologram when the player can only sell an item.
|
||||||
# Usable regex: %SELL-PRICE%, %CURRENCY-SYMBOL%
|
# Usable regex: %SELL-PRICE%, %CURRENCY-SYMBOL%
|
||||||
only-sell: "Sell %SELL-PRICE%%CURRENCY-SYMBOL%"
|
only-sell: "Sell %SELL-PRICE%%CURRENCY-SYMBOL%"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
name: ShopChest
|
name: ShopChest
|
||||||
main: de.epiceric.shopchest.ShopChest
|
main: de.epiceric.shopchest.ShopChest
|
||||||
version: 1.5.6
|
version: 1.5.7
|
||||||
author: EpicEric
|
author: EpicEric
|
||||||
website: https://www.spigotmc.org/resources/shopchest.11431/
|
website: https://www.spigotmc.org/resources/shopchest.11431/
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
|
@ -86,6 +86,10 @@ public class Config {
|
|||||||
return plugin.getConfig().getString("messages.update.update-available").replace(Regex.version, version);
|
return plugin.getConfig().getString("messages.update.update-available").replace(Regex.version, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String hologram_format(int amount, String itemName) {
|
||||||
|
return plugin.getConfig().getString("messages.hologram.format").replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
|
}
|
||||||
|
|
||||||
public static String hologram_buy_sell(double buyPrice, double sellPrice) {
|
public static String hologram_buy_sell(double buyPrice, double sellPrice) {
|
||||||
return plugin.getConfig().getString("messages.hologram.buy-and-sell").replace(Regex.currencySymbol, currency_symbol()).replace(Regex.buyPrice, String.valueOf(buyPrice)).replace(Regex.sellPrice, String.valueOf(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
return plugin.getConfig().getString("messages.hologram.buy-and-sell").replace(Regex.currencySymbol, currency_symbol()).replace(Regex.buyPrice, String.valueOf(buyPrice)).replace(Regex.sellPrice, String.valueOf(sellPrice)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||||
import org.yi.acru.bukkit.Lockette.Lockette;
|
import org.yi.acru.bukkit.Lockette.Lockette;
|
||||||
|
|
||||||
import com.griefcraft.model.Protection;
|
import com.griefcraft.model.Protection;
|
||||||
@ -123,7 +124,7 @@ public class InteractShop implements Listener{
|
|||||||
|
|
||||||
Shop shop = ShopUtils.getShop(b.getLocation());
|
Shop shop = ShopUtils.getShop(b.getLocation());
|
||||||
|
|
||||||
if (shop.getVendor().equals(p) || perm.has(p, "shopchest.removeOther")) {
|
if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || perm.has(p, "shopchest.removeOther")) {
|
||||||
remove(p, shop);
|
remove(p, shop);
|
||||||
} else {
|
} else {
|
||||||
p.sendMessage(Config.noPermission_removeOthers());
|
p.sendMessage(Config.noPermission_removeOthers());
|
||||||
@ -144,7 +145,7 @@ public class InteractShop implements Listener{
|
|||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
Shop shop = ShopUtils.getShop(b.getLocation());
|
Shop shop = ShopUtils.getShop(b.getLocation());
|
||||||
|
|
||||||
if (p.equals(shop.getVendor())) {
|
if (p.getUniqueId().equals(shop.getVendor().getUniqueId())) {
|
||||||
e.setCancelled(false);
|
e.setCancelled(false);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -195,7 +196,7 @@ public class InteractShop implements Listener{
|
|||||||
if (ShopUtils.isShop(b.getLocation())) {
|
if (ShopUtils.isShop(b.getLocation())) {
|
||||||
Shop shop = ShopUtils.getShop(b.getLocation());
|
Shop shop = ShopUtils.getShop(b.getLocation());
|
||||||
|
|
||||||
if (!p.equals(shop.getVendor())) {
|
if (!p.getUniqueId().equals(shop.getVendor().getUniqueId())) {
|
||||||
if (shop.getSellPrice() > 0) {
|
if (shop.getSellPrice() > 0) {
|
||||||
if (perm.has(p, "shopchest.sell")) {
|
if (perm.has(p, "shopchest.sell")) {
|
||||||
if (Utils.getAmount(p.getInventory(), shop.getProduct().getType(), shop.getProduct().getDurability(), shop.getProduct().getItemMeta()) >= shop.getProduct().getAmount()) {
|
if (Utils.getAmount(p.getInventory(), shop.getProduct().getType(), shop.getProduct().getDurability(), shop.getProduct().getItemMeta()) >= shop.getProduct().getAmount()) {
|
||||||
@ -262,8 +263,15 @@ public class InteractShop implements Listener{
|
|||||||
String price = Config.shopInfo_price(shop.getBuyPrice(), shop.getSellPrice());
|
String price = Config.shopInfo_price(shop.getBuyPrice(), shop.getSellPrice());
|
||||||
String infinite = (shop.isInfinite() ? Config.shopInfo_isInfinite() : Config.shopInfo_isNormal());
|
String infinite = (shop.isInfinite() ? Config.shopInfo_isInfinite() : Config.shopInfo_isNormal());
|
||||||
|
|
||||||
|
Map<Enchantment, Integer> enchantmentMap;
|
||||||
|
|
||||||
|
if (shop.getProduct().getItemMeta() instanceof EnchantmentStorageMeta) {
|
||||||
|
EnchantmentStorageMeta esm = (EnchantmentStorageMeta) shop.getProduct().getItemMeta();
|
||||||
|
enchantmentMap = esm.getStoredEnchants();
|
||||||
|
} else {
|
||||||
|
enchantmentMap = shop.getProduct().getEnchantments();
|
||||||
|
}
|
||||||
|
|
||||||
Map<Enchantment, Integer> enchantmentMap = shop.getProduct().getItemMeta().getEnchants();
|
|
||||||
Enchantment[] enchantments = enchantmentMap.keySet().toArray(new Enchantment[enchantmentMap.size()]);
|
Enchantment[] enchantments = enchantmentMap.keySet().toArray(new Enchantment[enchantmentMap.size()]);
|
||||||
|
|
||||||
for (int i = 0; i < enchantments.length; i++) {
|
for (int i = 0; i < enchantments.length; i++) {
|
||||||
|
@ -7,7 +7,7 @@ import org.bukkit.event.entity.ItemSpawnEvent;
|
|||||||
|
|
||||||
public class ItemCustomNameListener implements Listener {
|
public class ItemCustomNameListener implements Listener {
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.HIGH)
|
@EventHandler(priority=EventPriority.MONITOR)
|
||||||
public void onItemSpawn(ItemSpawnEvent e) {
|
public void onItemSpawn(ItemSpawnEvent e) {
|
||||||
if (e.getEntity().hasMetadata("shopItem")) {
|
if (e.getEntity().hasMetadata("shopItem")) {
|
||||||
e.getEntity().setCustomNameVisible(false);
|
e.getEntity().setCustomNameVisible(false);
|
||||||
|
@ -20,27 +20,30 @@ public class UpdateHolograms implements Listener{
|
|||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
Location playerLocation = p.getLocation();
|
Location playerLocation = p.getLocation();
|
||||||
|
|
||||||
for (Shop shop : ShopUtils.getShops()) {
|
for (Shop shop : ShopUtils.getShops()) {
|
||||||
|
|
||||||
Location shopLocation = shop.getLocation();
|
if (shop.getHologram() != null) {
|
||||||
|
|
||||||
if (playerLocation.getWorld().equals(shopLocation.getWorld())) {
|
|
||||||
|
|
||||||
if (playerLocation.distance(shop.getHologram().getLocation()) <= Config.maximal_distance()) {
|
Location shopLocation = shop.getLocation();
|
||||||
|
|
||||||
|
if (playerLocation.getWorld().equals(shopLocation.getWorld())) {
|
||||||
|
|
||||||
if (!shop.getHologram().isVisible(p)) {
|
if (playerLocation.distance(shop.getHologram().getLocation()) <= Config.maximal_distance()) {
|
||||||
shop.getHologram().showPlayer(p);
|
|
||||||
}
|
if (!shop.getHologram().isVisible(p)) {
|
||||||
|
shop.getHologram().showPlayer(p);
|
||||||
} else {
|
}
|
||||||
|
|
||||||
if (shop.getHologram().isVisible(p)) {
|
} else {
|
||||||
shop.getHologram().hidePlayer(p);
|
|
||||||
|
if (shop.getHologram().isVisible(p)) {
|
||||||
|
shop.getHologram().hidePlayer(p);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,9 +64,9 @@ public class Shop {
|
|||||||
itemStack.setItemMeta(itemMeta);
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
|
||||||
item = location.getWorld().dropItem(itemLocation, itemStack);
|
item = location.getWorld().dropItem(itemLocation, itemStack);
|
||||||
item.getItemStack().getItemMeta().setDisplayName(UUID.randomUUID().toString());
|
|
||||||
item.setVelocity(new Vector(0, 0, 0));
|
item.setVelocity(new Vector(0, 0, 0));
|
||||||
item.setMetadata("shopItem", new FixedMetadataValue(plugin, true));
|
item.setMetadata("shopItem", new FixedMetadataValue(plugin, true));
|
||||||
|
item.setCustomNameVisible(false);
|
||||||
|
|
||||||
this.item = item;
|
this.item = item;
|
||||||
}
|
}
|
||||||
@ -131,10 +131,9 @@ public class Shop {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5);
|
} else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5);
|
||||||
|
|
||||||
|
holoText[0] = Config.hologram_format(product.getAmount(), ItemNames.lookup(product));
|
||||||
holoText[0] = String.valueOf(product.getAmount()) + " x " + ItemNames.lookup(product);
|
|
||||||
|
|
||||||
if ((buyPrice <= 0) && (sellPrice > 0)) holoText[1] = Config.hologram_sell(sellPrice);
|
if ((buyPrice <= 0) && (sellPrice > 0)) holoText[1] = Config.hologram_sell(sellPrice);
|
||||||
else if ((buyPrice > 0) && (sellPrice <= 0)) holoText[1] = Config.hologram_buy(buyPrice);
|
else if ((buyPrice > 0) && (sellPrice <= 0)) holoText[1] = Config.hologram_buy(buyPrice);
|
||||||
|
@ -182,7 +182,6 @@ public abstract class Database {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public OfflinePlayer getVendor(int id) {
|
public OfflinePlayer getVendor(int id) {
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
PreparedStatement ps = null;
|
PreparedStatement ps = null;
|
||||||
@ -194,7 +193,7 @@ public abstract class Database {
|
|||||||
rs = ps.executeQuery();
|
rs = ps.executeQuery();
|
||||||
while(rs.next()){
|
while(rs.next()){
|
||||||
if(rs.getInt("id") == id){
|
if(rs.getInt("id") == id){
|
||||||
return (Utils.isUUID(rs.getString("vendor"))) ? Bukkit.getOfflinePlayer(UUID.fromString(rs.getString("vendor"))) : Bukkit.getOfflinePlayer(rs.getString("vendor"));
|
return Bukkit.getOfflinePlayer(UUID.fromString(rs.getString("vendor")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
|
Loading…
Reference in New Issue
Block a user