241 lines
8.3 KiB
Java
241 lines
8.3 KiB
Java
package org.maxgamer.QuickShop.Config;
|
|
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.configuration.ConfigurationSection;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.maxgamer.QuickShop.QuickShop;
|
|
import org.maxgamer.QuickShop.Shop.Item.FakeItem_17_18;
|
|
import org.maxgamer.QuickShop.Shop.Item.FakeItem_19_111;
|
|
|
|
import pw.yumc.YumCore.bukkit.Log;
|
|
import pw.yumc.YumCore.config.FileConfig;
|
|
import pw.yumc.YumCore.tellraw.Tellraw;
|
|
|
|
public class ConfigManager {
|
|
private boolean enableMagicLib = false;
|
|
/** Whether debug info should be shown in the console */
|
|
private final boolean debug = false;
|
|
|
|
/** Whether we should use display items or not */
|
|
private boolean display = true;
|
|
private double feeForPriceChange = 0.0;
|
|
private int findDistance = 30;
|
|
private String guiTitle = "§6[§b快捷商店§6]§r";
|
|
/** Whether or not to limit players shop amounts */
|
|
private boolean limit = false;
|
|
|
|
private int limitdefault = 0;
|
|
private final HashMap<String, Integer> limits = new HashMap<>();
|
|
private boolean logAction = true;
|
|
private boolean preventhopper = false;
|
|
/**
|
|
* Whether we players are charged a fee to change the price on their shop
|
|
* (To help deter endless undercutting
|
|
*/
|
|
private boolean priceChangeRequiresFee = false;
|
|
private boolean shopLock = true;
|
|
private boolean showTax = false;
|
|
/** Whether players are required to sneak to create/buy from a shop */
|
|
private boolean sneak = false;
|
|
/** Whether players are required to sneak to create a shop */
|
|
private boolean sneakCreate = false;
|
|
/** Whether players are required to sneak to trade with a shop */
|
|
private boolean sneakTrade = false;
|
|
private Material superItem = Material.GOLD_AXE;
|
|
private double tax = 0;
|
|
private final String taxAccount;
|
|
private boolean fakeItem = false;
|
|
private List<String> prevent;
|
|
/**
|
|
* A set of players who have been warned
|
|
* ("Your shop isn't automatically locked")
|
|
*/
|
|
private Set<String> warnings = new HashSet<>();
|
|
|
|
public ConfigManager(final QuickShop plugin) {
|
|
final FileConfig config = (FileConfig) plugin.getConfig();
|
|
ConfigurationSection limitCfg = config.getConfigurationSection("limits");
|
|
if (limitCfg != null) {
|
|
this.limit = limitCfg.getBoolean("use", false);
|
|
this.limitdefault = config.getInt("limits.default");
|
|
limitCfg = limitCfg.getConfigurationSection("ranks");
|
|
for (final String key : limitCfg.getKeys(true)) {
|
|
limits.put(key, limitCfg.getInt(key));
|
|
}
|
|
}
|
|
try {
|
|
this.superItem = Material.valueOf(config.getString("superitem"));
|
|
} catch (final Exception ignored) {
|
|
}
|
|
this.tax = config.getDouble("tax");
|
|
this.showTax = config.getBoolean("show-tax");
|
|
this.taxAccount = config.getString("tax-account");
|
|
this.logAction = config.getBoolean("log-actions");
|
|
this.shopLock = config.getBoolean("shop.lock");
|
|
this.display = config.getBoolean("shop.display-items");
|
|
this.sneak = config.getBoolean("shop.sneak-only");
|
|
this.sneakCreate = config.getBoolean("shop.sneak-to-create");
|
|
this.sneakTrade = config.getBoolean("shop.sneak-to-trade");
|
|
this.priceChangeRequiresFee = config.getBoolean("shop.price-change-requires-fee");
|
|
this.findDistance = config.getInt("shop.find-distance");
|
|
this.feeForPriceChange = config.getDouble("shop.fee-for-price-change");
|
|
this.preventhopper = config.getBoolean("preventhopper");
|
|
this.guiTitle = config.getMessage("guititle", guiTitle);
|
|
this.warnings = Collections.emptySet();
|
|
this.prevent = config.getStringList("prevent");
|
|
if (config.getBoolean("fakeitem", true)) {
|
|
try {
|
|
plugin.getLogger().info("启用虚拟悬浮物 尝试启动中...");
|
|
FakeItem_19_111.register(plugin);
|
|
new FakeItem_19_111(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), new ItemStack(Material.STONE)).spawn();
|
|
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.9-1.11.2)...");
|
|
fakeItem = true;
|
|
} catch (final Throwable e) {
|
|
Log.d(e);
|
|
try {
|
|
FakeItem_17_18.register(plugin);
|
|
new FakeItem_17_18(new Location(Bukkit.getWorlds().get(0), 0, 0, 0), new ItemStack(Material.STONE)).spawn();
|
|
plugin.getLogger().info("虚拟悬浮物功能测试正常(1.7-1.8)...");
|
|
fakeItem = true;
|
|
} catch (final Throwable e2) {
|
|
plugin.getLogger().warning("+=========================================");
|
|
plugin.getLogger().warning("| 警告: 启动虚拟物品失败 使用原版悬浮物品...");
|
|
plugin.getLogger().warning("+=========================================");
|
|
Log.d(e2);
|
|
}
|
|
}
|
|
}
|
|
if (Bukkit.getVersion().contains("Paper") || Bukkit.getVersion().contains("Torch")) {
|
|
Log.d("辣鸡 Paper 毁我异步命令!");
|
|
}
|
|
if (config.getBoolean("usemagiclib", true)) {
|
|
try {
|
|
plugin.getLogger().info("启用魔改库 尝试启动中...");
|
|
final Tellraw fm = Tellraw.create("test");
|
|
fm.then("item").item(new ItemStack(Material.DIAMOND_SWORD));
|
|
fm.then("link").link("yumc.pw");
|
|
fm.then("suggest").suggest("qs help");
|
|
fm.toJsonString();
|
|
plugin.getLogger().info("魔改库功能测试正常...");
|
|
this.enableMagicLib = true;
|
|
} catch (final Error | Exception e) {
|
|
plugin.getLogger().warning("+=========================================");
|
|
plugin.getLogger().warning("| 警告: 启动魔改库失败 将使用GUI商店界面...");
|
|
plugin.getLogger().warning("+=========================================");
|
|
}
|
|
}
|
|
}
|
|
|
|
public double getFeeForPriceChange() {
|
|
return feeForPriceChange;
|
|
}
|
|
|
|
public int getFindDistance() {
|
|
return findDistance;
|
|
}
|
|
|
|
public String getGuiTitle() {
|
|
return guiTitle;
|
|
}
|
|
|
|
public int getLimitdefault() {
|
|
return limitdefault;
|
|
}
|
|
|
|
public HashMap<String, Integer> getLimits() {
|
|
return limits;
|
|
}
|
|
|
|
public Material getSuperItem() {
|
|
return superItem;
|
|
}
|
|
|
|
public double getTax() {
|
|
return tax;
|
|
}
|
|
|
|
public String getTaxAccount() {
|
|
return taxAccount;
|
|
}
|
|
|
|
public Set<String> getWarnings() {
|
|
return warnings;
|
|
}
|
|
|
|
public boolean isDebug() {
|
|
return debug;
|
|
}
|
|
|
|
public boolean isDisplay() {
|
|
return display;
|
|
}
|
|
|
|
public boolean isEnableMagicLib() {
|
|
return enableMagicLib;
|
|
}
|
|
|
|
public boolean isFakeItem() {
|
|
return fakeItem;
|
|
}
|
|
|
|
public boolean isLimit() {
|
|
return limit;
|
|
}
|
|
|
|
public boolean isLogAction() {
|
|
return logAction;
|
|
}
|
|
|
|
public boolean isPreventHopper() {
|
|
return preventhopper;
|
|
}
|
|
|
|
public boolean isPriceChangeRequiresFee() {
|
|
return priceChangeRequiresFee;
|
|
}
|
|
|
|
public boolean isShopLock() {
|
|
return shopLock;
|
|
}
|
|
|
|
public boolean isShowTax() {
|
|
return showTax;
|
|
}
|
|
|
|
public boolean isSneak() {
|
|
return sneak;
|
|
}
|
|
|
|
public boolean isSneakCreate() {
|
|
return sneakCreate;
|
|
}
|
|
|
|
public boolean isSneakTrade() {
|
|
return sneakTrade;
|
|
}
|
|
|
|
public void setEnableMagicLib(final boolean enableMagicLib) {
|
|
this.enableMagicLib = enableMagicLib;
|
|
}
|
|
|
|
public void setFakeItem(final boolean fakeItem) {
|
|
this.fakeItem = fakeItem;
|
|
}
|
|
|
|
public List<String> getPrevent() {
|
|
return prevent;
|
|
}
|
|
|
|
public void setPrevent(List<String> prevent) {
|
|
this.prevent = prevent;
|
|
}
|
|
}
|