mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 02:12:25 +00:00
Bungee sync vendor messages (#320)
This commit is contained in:
parent
a402423b4b
commit
3669cf73be
@ -214,6 +214,8 @@ public class ShopChest extends JavaPlugin {
|
|||||||
registerExternalListeners();
|
registerExternalListeners();
|
||||||
initializeShops();
|
initializeShops();
|
||||||
|
|
||||||
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
|
||||||
updater = new ShopUpdater(this);
|
updater = new ShopUpdater(this);
|
||||||
updater.start();
|
updater.start();
|
||||||
}
|
}
|
||||||
|
@ -219,6 +219,11 @@ public class Config {
|
|||||||
**/
|
**/
|
||||||
public static boolean enableVendorMessages;
|
public static boolean enableVendorMessages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the vendor of the shop should get messages on all servers about buys and sells
|
||||||
|
**/
|
||||||
|
public static boolean enableVendorBungeeMessages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the extension of a potion or tipped arrow (if available) should be appended to the item name.
|
* Whether the extension of a potion or tipped arrow (if available) should be appended to the item name.
|
||||||
**/
|
**/
|
||||||
@ -486,6 +491,7 @@ public class Config {
|
|||||||
enableGriefPreventionIntegration = plugin.getConfig().getBoolean("enable-griefprevention-integration");
|
enableGriefPreventionIntegration = plugin.getConfig().getBoolean("enable-griefprevention-integration");
|
||||||
enableAreaShopIntegration = plugin.getConfig().getBoolean("enable-areashop-integration");
|
enableAreaShopIntegration = plugin.getConfig().getBoolean("enable-areashop-integration");
|
||||||
enableVendorMessages = plugin.getConfig().getBoolean("enable-vendor-messages");
|
enableVendorMessages = plugin.getConfig().getBoolean("enable-vendor-messages");
|
||||||
|
enableVendorBungeeMessages = plugin.getConfig().getBoolean("enable-vendor-bungee-messages");
|
||||||
onlyShowShopsInSight = plugin.getConfig().getBoolean("only-show-shops-in-sight");
|
onlyShowShopsInSight = plugin.getConfig().getBoolean("only-show-shops-in-sight");
|
||||||
appendPotionLevelToItemName = plugin.getConfig().getBoolean("append-potion-level-to-item-name");
|
appendPotionLevelToItemName = plugin.getConfig().getBoolean("append-potion-level-to-item-name");
|
||||||
removeShopOnError = plugin.getConfig().getBoolean("remove-shop-on-error");
|
removeShopOnError = plugin.getConfig().getBoolean("remove-shop-on-error");
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package de.epiceric.shopchest.listeners;
|
package de.epiceric.shopchest.listeners;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -343,6 +345,11 @@ public class ShopInteractListener implements Listener {
|
|||||||
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.VENDOR_OUT_OF_STOCK,
|
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.VENDOR_OUT_OF_STOCK,
|
||||||
new Replacement(Placeholder.AMOUNT, String.valueOf(shop.getProduct().getAmount())),
|
new Replacement(Placeholder.AMOUNT, String.valueOf(shop.getProduct().getAmount())),
|
||||||
new Replacement(Placeholder.ITEM_NAME, shop.getProduct().getLocalizedName())));
|
new Replacement(Placeholder.ITEM_NAME, shop.getProduct().getLocalizedName())));
|
||||||
|
} else if(!shop.getVendor().isOnline() && Config.enableVendorBungeeMessages){
|
||||||
|
String message = LanguageUtils.getMessage(Message.VENDOR_OUT_OF_STOCK,
|
||||||
|
new Replacement(Placeholder.AMOUNT, String.valueOf(shop.getProduct().getAmount())),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, shop.getProduct().getLocalizedName()));
|
||||||
|
sendBungeeMessage(shop.getVendor().getName(), message);
|
||||||
}
|
}
|
||||||
plugin.debug("Shop is out of stock");
|
plugin.debug("Shop is out of stock");
|
||||||
}
|
}
|
||||||
@ -827,6 +834,11 @@ public class ShopInteractListener implements Listener {
|
|||||||
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_BOUGHT, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_BOUGHT, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
||||||
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
||||||
new Replacement(Placeholder.PLAYER, executor.getName())));
|
new Replacement(Placeholder.PLAYER, executor.getName())));
|
||||||
|
} else if(!shop.getVendor().isOnline() && Config.enableVendorBungeeMessages){
|
||||||
|
String message = LanguageUtils.getMessage( Message.SOMEONE_BOUGHT, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.BUY_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName()));
|
||||||
|
sendBungeeMessage(shop.getVendor().getName(),message);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -990,6 +1002,11 @@ public class ShopInteractListener implements Listener {
|
|||||||
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_SOLD, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
shop.getVendor().getPlayer().sendMessage(LanguageUtils.getMessage(Message.SOMEONE_SOLD, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
||||||
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
||||||
new Replacement(Placeholder.PLAYER, executor.getName())));
|
new Replacement(Placeholder.PLAYER, executor.getName())));
|
||||||
|
} else if(!shop.getVendor().isOnline() && Config.enableVendorBungeeMessages){
|
||||||
|
String message = LanguageUtils.getMessage( Message.SOMEONE_SOLD, new Replacement(Placeholder.AMOUNT, String.valueOf(newAmount)),
|
||||||
|
new Replacement(Placeholder.ITEM_NAME, newProduct.getLocalizedName()), new Replacement(Placeholder.SELL_PRICE, String.valueOf(newPrice)),
|
||||||
|
new Replacement(Placeholder.PLAYER, executor.getName()));
|
||||||
|
sendBungeeMessage(shop.getVendor().getName(),message);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -1167,4 +1184,25 @@ public class ShopInteractListener implements Listener {
|
|||||||
return (removed == amount);
|
return (removed == amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendBungeeMessage(String player, String message) {
|
||||||
|
try {
|
||||||
|
ByteArrayOutputStream b = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream out = new DataOutputStream(b);
|
||||||
|
|
||||||
|
out.writeUTF("Message");
|
||||||
|
out.writeUTF(player);
|
||||||
|
out.writeUTF(message);
|
||||||
|
|
||||||
|
if (!plugin.getServer().getOnlinePlayers().isEmpty()) {
|
||||||
|
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||||
|
Player p = plugin.getServer().getOnlinePlayers().iterator().next();
|
||||||
|
p.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
plugin.debug("Failed to send bungee message");
|
||||||
|
plugin.debug(e);
|
||||||
|
plugin.getLogger().warning("Failed to send BungeeCord message");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,10 @@ enable-areashop-integration: true
|
|||||||
# or sell something from/to his shop or when his shop is out of stock.
|
# or sell something from/to his shop or when his shop is out of stock.
|
||||||
enable-vendor-messages: true
|
enable-vendor-messages: true
|
||||||
|
|
||||||
|
# Set whether the vendor of a shop should get messages on all servers when players
|
||||||
|
# buy or sell something from/to his shop or when his shop is out of stock.
|
||||||
|
enable-vendor-bungee-messages: false
|
||||||
|
|
||||||
# Set whether only the shop a player is pointing at should be shown.
|
# Set whether only the shop a player is pointing at should be shown.
|
||||||
# If set to false, every shop near the player (with the specified
|
# If set to false, every shop near the player (with the specified
|
||||||
# distance) will be shown to him.
|
# distance) will be shown to him.
|
||||||
|
Loading…
Reference in New Issue
Block a user