mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2024-06-23 04:44:50 +02:00
d426492561
This basically blocks any text on the backside of a sign if the front is a valid shop and with that also fixes an issue where valid shop sign syntax was detected on back side sign changes.
235 lines
9.5 KiB
Java
235 lines
9.5 KiB
Java
package com.Acrobot.ChestShop.Configuration;
|
|
|
|
import com.Acrobot.Breeze.Configuration.Configuration;
|
|
import com.Acrobot.ChestShop.ChestShop;
|
|
import de.themoep.minedown.adventure.MineDown;
|
|
import de.themoep.utils.lang.bukkit.BukkitLanguageConfig;
|
|
import de.themoep.utils.lang.bukkit.LanguageManager;
|
|
import net.kyori.adventure.text.Component;
|
|
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
|
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
|
import net.md_5.bungee.api.chat.BaseComponent;
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
import java.io.File;
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Modifier;
|
|
import java.util.Collections;
|
|
import java.util.Map;
|
|
import java.util.logging.Level;
|
|
|
|
/**
|
|
* @author Acrobot
|
|
*/
|
|
public class Messages {
|
|
public static Message prefix;
|
|
|
|
public static Message shopinfo;
|
|
public static Message shopinfo_buy;
|
|
public static Message shopinfo_sell;
|
|
|
|
public static Message iteminfo;
|
|
public static Message iteminfo_fullname;
|
|
public static Message iteminfo_shopname;
|
|
public static Message iteminfo_repaircost;
|
|
public static Message iteminfo_book;
|
|
public static Message iteminfo_book_generation;
|
|
public static Message iteminfo_leather_color;
|
|
public static Message iteminfo_bundle_items;
|
|
public static Message iteminfo_axolotl_variant;
|
|
public static Message iteminfo_recipes;
|
|
public static Message iteminfo_map_view;
|
|
public static Message iteminfo_map_location;
|
|
public static Message iteminfo_tropical_fish;
|
|
public static Message iteminfo_crossbow_projectiles;
|
|
public static Message iteminfo_crossbow_projectile;
|
|
public static Message iteminfo_lore;
|
|
|
|
public static Message METRICS;
|
|
|
|
public static Message ACCESS_DENIED;
|
|
public static Message TRADE_DENIED;
|
|
public static Message TRADE_DENIED_ACCESS_PERMS;
|
|
public static Message TRADE_DENIED_CREATIVE_MODE;
|
|
|
|
public static Message NOT_ENOUGH_MONEY;
|
|
public static Message NOT_ENOUGH_MONEY_SHOP;
|
|
|
|
public static Message CLIENT_DEPOSIT_FAILED;
|
|
public static Message SHOP_DEPOSIT_FAILED;
|
|
public static Message NO_ECONOMY_ACCOUNT;
|
|
|
|
public static Message NO_BUYING_HERE;
|
|
public static Message NO_SELLING_HERE;
|
|
|
|
public static Message NOT_ENOUGH_SPACE_IN_INVENTORY;
|
|
public static Message NOT_ENOUGH_SPACE_IN_CHEST;
|
|
public static Message NOT_ENOUGH_ITEMS_TO_SELL;
|
|
public static Message NOT_ENOUGH_SPACE_IN_YOUR_SHOP;
|
|
|
|
public static Message NOT_ENOUGH_STOCK;
|
|
public static Message NOT_ENOUGH_STOCK_IN_YOUR_SHOP;
|
|
|
|
public static Message YOU_BOUGHT_FROM_SHOP;
|
|
public static Message SOMEBODY_BOUGHT_FROM_YOUR_SHOP;
|
|
|
|
public static Message YOU_SOLD_TO_SHOP;
|
|
public static Message SOMEBODY_SOLD_TO_YOUR_SHOP;
|
|
|
|
public static Message YOU_CANNOT_CREATE_SHOP;
|
|
public static Message NO_CHEST_DETECTED;
|
|
public static Message INVALID_SHOP_DETECTED;
|
|
public static Message INVALID_SHOP_PRICE;
|
|
public static Message INVALID_SHOP_QUANTITY;
|
|
public static Message CANNOT_ACCESS_THE_CHEST;
|
|
public static Message CANNOT_CHANGE_SIGN_BACKSIDE;
|
|
|
|
public static Message SELL_PRICE_HIGHER_THAN_BUY_PRICE;
|
|
public static Message SELL_PRICE_ABOVE_MAX;
|
|
public static Message SELL_PRICE_BELOW_MIN;
|
|
public static Message BUY_PRICE_ABOVE_MAX;
|
|
public static Message BUY_PRICE_BELOW_MIN;
|
|
|
|
public static Message CLICK_TO_AUTOFILL_ITEM;
|
|
public static Message NO_ITEM_IN_HAND;
|
|
|
|
public static Message PROTECTED_SHOP;
|
|
public static Message PROTECTED_SHOP_SIGN;
|
|
public static Message SHOP_CREATED;
|
|
public static Message SHOP_FEE_PAID;
|
|
public static Message SHOP_REFUNDED;
|
|
public static Message ITEM_GIVEN;
|
|
|
|
public static Message RESTRICTED_SIGN_CREATED;
|
|
|
|
public static Message PLAYER_NOT_FOUND;
|
|
public static Message NO_PERMISSION;
|
|
public static Message INCORRECT_ITEM_ID;
|
|
public static Message INVALID_CLIENT_NAME;
|
|
public static Message NOT_ENOUGH_PROTECTIONS;
|
|
public static Message NO_SHOP_FOUND;
|
|
|
|
public static Message CANNOT_CREATE_SHOP_HERE;
|
|
|
|
public static Message TOGGLE_MESSAGES_OFF;
|
|
public static Message TOGGLE_MESSAGES_ON;
|
|
|
|
public static Message TOGGLE_ACCESS_ON;
|
|
public static Message TOGGLE_ACCESS_OFF;
|
|
|
|
@Deprecated
|
|
public static String prefix(String message) {
|
|
return Configuration.getColoured(prefix.getLang(null) + message);
|
|
}
|
|
|
|
@Deprecated
|
|
public static String replace(String message, String... replacements) {
|
|
for (int i = 0; i + 1 < replacements.length; i+=2) {
|
|
message = message.replace("%" + replacements[i], replacements[i+1]);
|
|
}
|
|
return Configuration.getColoured(message);
|
|
}
|
|
|
|
private static LanguageManager manager;
|
|
|
|
public static void load() {
|
|
for (Field field : Messages.class.getFields()) {
|
|
if (!Modifier.isStatic(field.getModifiers())) {
|
|
continue;
|
|
}
|
|
try {
|
|
field.set(null, new Message(field.getName()));
|
|
} catch (IllegalAccessException e) {
|
|
ChestShop.getBukkitLogger().log(Level.SEVERE, "Error while setting Message " + field.getName() + "!", e);
|
|
}
|
|
}
|
|
manager = new LanguageManager(ChestShop.getPlugin(), Properties.DEFAULT_LANGUAGE);
|
|
|
|
if (manager.getDefaultConfig() == null) {
|
|
manager.setDefaultLocale("en");
|
|
ChestShop.getBukkitLogger().log(Level.WARNING, "There is no language file for your DEFAULT_LANGUAGE config setting of '" + Properties.DEFAULT_LANGUAGE + "' in your languages folder! Using default English as default until you have created one or changed the config option to another, existing language file.");
|
|
}
|
|
|
|
// Legacy locale.yml file
|
|
File legacyFile = new File(ChestShop.getPlugin().getDataFolder(), "local.yml");
|
|
if (legacyFile.exists()) {
|
|
ChestShop.getBukkitLogger().log(Level.INFO, "Found legacy local.yml. Loading it as 'legacy' language and using that for all messages.");
|
|
ChestShop.getBukkitLogger().log(Level.INFO, "As long as the legacy file is used automatic language switching based on the client settings will not be supported!");
|
|
ChestShop.getBukkitLogger().log(Level.INFO, "Import it into the corresponding language file and remove/rename the file if you don't want it anymore!");
|
|
manager.addConfig(new BukkitLanguageConfig(ChestShop.getPlugin(), "", legacyFile, "legacy", false));
|
|
manager.setDefaultLocale("legacy");
|
|
Properties.USE_CLIENT_LOCALE = false;
|
|
}
|
|
|
|
if (!Properties.USE_CLIENT_LOCALE) {
|
|
manager.setProvider(sender -> null);
|
|
}
|
|
}
|
|
|
|
public static class Message {
|
|
private String key;
|
|
|
|
public Message(String key) {
|
|
this.key = key;
|
|
}
|
|
|
|
public void sendWithPrefix(CommandSender sender, Map<String, String> replacementMap, String... replacements) {
|
|
ChestShop.getAudiences().sender(sender).sendMessage(getComponent(sender, true, replacementMap, replacements));
|
|
}
|
|
|
|
public void sendWithPrefix(CommandSender sender, Map<String, String> replacements) {
|
|
ChestShop.getAudiences().sender(sender).sendMessage(getComponent(sender, true, replacements));
|
|
}
|
|
|
|
public void sendWithPrefix(CommandSender sender, String... replacements) {
|
|
ChestShop.getAudiences().sender(sender).sendMessage(getComponent(sender, true, Collections.emptyMap(), replacements));
|
|
}
|
|
|
|
public void send(CommandSender sender, String... replacements) {
|
|
ChestShop.getAudiences().sender(sender).sendMessage(getComponent(sender, false, Collections.emptyMap(), replacements));
|
|
}
|
|
|
|
public void send(CommandSender sender, Map<String, String> replacements) {
|
|
ChestShop.getAudiences().sender(sender).sendMessage(getComponent(sender, false, replacements));
|
|
}
|
|
|
|
@Deprecated
|
|
public BaseComponent[] getComponents(CommandSender sender, boolean prefixSuffix, Map<String, String> replacementMap, String... replacements) {
|
|
return BungeeComponentSerializer.get().serialize(getComponent(sender, prefixSuffix, replacementMap, replacements));
|
|
}
|
|
|
|
public Component getComponent(CommandSender sender, boolean prefixSuffix, Map<String, String> replacementMap, String... replacements) {
|
|
MineDown mineDown = new MineDown("%prefix" + getLang(sender));
|
|
mineDown.placeholderSuffix("");
|
|
if (prefixSuffix) {
|
|
mineDown.replace("prefix", MineDown.parse(prefix.getLang(sender)));
|
|
} else {
|
|
mineDown.replace("prefix", "");
|
|
}
|
|
mineDown.replace(replacementMap);
|
|
mineDown.replace(replacements);
|
|
return mineDown.toComponent();
|
|
}
|
|
|
|
private String getLang(CommandSender sender) {
|
|
return manager.getConfig(sender).get(key);
|
|
}
|
|
|
|
public String getTextWithPrefix(CommandSender sender, Map<String, String> replacementMap, String... replacements) {
|
|
return LegacyComponentSerializer.legacySection().serialize(getComponent(sender, true, replacementMap, replacements));
|
|
}
|
|
|
|
public String getTextWithPrefix(CommandSender sender, String... replacements) {
|
|
return getTextWithPrefix(sender, Collections.emptyMap(), replacements);
|
|
}
|
|
|
|
public String getTextWithPrefix(CommandSender sender, Map<String, String> replacements) {
|
|
return getTextWithPrefix(sender, replacements, new String[0]);
|
|
}
|
|
|
|
public String getKey() {
|
|
return key;
|
|
}
|
|
}
|
|
}
|