mirror of
https://github.com/songoda/EpicBuckets.git
synced 2024-11-22 02:07:40 +01:00
Added 1.14 Support.
This commit is contained in:
parent
ea7aac0284
commit
e2511d69d8
@ -24,7 +24,14 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
@ -68,6 +75,8 @@ public class EpicBuckets extends JavaPlugin {
|
||||
Locale.saveDefaultLocale("en_US");
|
||||
this.locale = Locale.getLocale(getConfig().getString("Locale", "en_US"));
|
||||
|
||||
this.update();
|
||||
|
||||
this.references = new References();
|
||||
|
||||
debugger = new Debugger();
|
||||
@ -128,6 +137,36 @@ public class EpicBuckets extends JavaPlugin {
|
||||
this.getShopManager().reload();
|
||||
}
|
||||
|
||||
private void update() {
|
||||
try {
|
||||
URL url = new URL("http://update.songoda.com/index.php?plugin=" + getDescription().getName() + "&version=" + getDescription().getVersion());
|
||||
URLConnection urlConnection = url.openConnection();
|
||||
InputStream is = urlConnection.getInputStream();
|
||||
InputStreamReader isr = new InputStreamReader(is);
|
||||
|
||||
int numCharsRead;
|
||||
char[] charArray = new char[1024];
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while ((numCharsRead = isr.read(charArray)) > 0) {
|
||||
sb.append(charArray, 0, numCharsRead);
|
||||
}
|
||||
String jsonString = sb.toString();
|
||||
JSONObject json = (JSONObject) new JSONParser().parse(jsonString);
|
||||
|
||||
JSONArray files = (JSONArray) json.get("neededFiles");
|
||||
for (Object o : files) {
|
||||
JSONObject file = (JSONObject) o;
|
||||
|
||||
if ("locale".equals(file.get("type"))) {
|
||||
InputStream in = new URL((String) file.get("link")).openStream();
|
||||
Locale.saveDefaultLocale(in, (String) file.get("name"));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Bukkit.getLogger().warning("Failed to update.");
|
||||
}
|
||||
}
|
||||
|
||||
private ProtectionPluginHook register(Supplier<ProtectionPluginHook> hookSupplier) {
|
||||
return this.registerProtectionHook(hookSupplier.get());
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package com.songoda.epicbuckets;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
@ -24,7 +24,7 @@ import java.util.stream.Collectors;
|
||||
public class Locale {
|
||||
|
||||
private static final List<Locale> LOCALES = Lists.newArrayList();
|
||||
private static final Pattern NODE_PATTERN = Pattern.compile("(\\w+(?:\\.{1}\\w+)*)\\s*=\\s*\"(.*)\"");
|
||||
private static final Pattern NODE_PATTERN = Pattern.compile("(\\w+(?:\\.\\w+)*)\\s*=\\s*\"(.*)\"");
|
||||
private static final String FILE_EXTENSION = ".lang";
|
||||
private static JavaPlugin plugin;
|
||||
private static File localeFolder;
|
||||
@ -48,7 +48,7 @@ public class Locale {
|
||||
|
||||
if (this.reloadMessages()) return;
|
||||
|
||||
plugin.getLogger().info("Loaded locale " + fileName);
|
||||
Bukkit.getConsoleSender().sendMessage("Loaded locale " + fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -74,7 +74,9 @@ public class Locale {
|
||||
* Find all .lang file locales under the "locales" folder
|
||||
*/
|
||||
public static void searchForLocales() {
|
||||
if (!localeFolder.exists()) localeFolder.mkdirs();
|
||||
if (!localeFolder.exists()) {
|
||||
localeFolder.mkdirs();
|
||||
}
|
||||
|
||||
for (File file : localeFolder.listFiles()) {
|
||||
String name = file.getName();
|
||||
@ -87,7 +89,7 @@ public class Locale {
|
||||
if (localeExists(localeValues[0] + "_" + localeValues[1])) continue;
|
||||
|
||||
LOCALES.add(new Locale(localeValues[0], localeValues[1]));
|
||||
plugin.getLogger().info("Found and loaded locale \"" + fileName + "\"");
|
||||
Bukkit.getConsoleSender().sendMessage("Found and loaded locale \"" + fileName + "\"");
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,11 +153,11 @@ public class Locale {
|
||||
/**
|
||||
* Save a default locale file from the project source directory, to the locale folder
|
||||
*
|
||||
* @param path the path to the file to save
|
||||
* @param in file to save
|
||||
* @param fileName the name of the file to save
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
public static boolean saveDefaultLocale(String path, String fileName) {
|
||||
public static boolean saveDefaultLocale(InputStream in, String fileName) {
|
||||
if (!localeFolder.exists()) localeFolder.mkdirs();
|
||||
|
||||
if (!fileName.endsWith(FILE_EXTENSION))
|
||||
@ -167,7 +169,7 @@ public class Locale {
|
||||
}
|
||||
|
||||
try (OutputStream outputStream = new FileOutputStream(destinationFile)) {
|
||||
IOUtils.copy(plugin.getResource(fileName), outputStream);
|
||||
copy(in == null ? plugin.getResource(fileName) : in, outputStream);
|
||||
|
||||
fileName = fileName.substring(0, fileName.lastIndexOf('.'));
|
||||
String[] localeValues = fileName.split("_");
|
||||
@ -190,7 +192,7 @@ public class Locale {
|
||||
* @return true if the operation was successful, false otherwise
|
||||
*/
|
||||
public static boolean saveDefaultLocale(String fileName) {
|
||||
return saveDefaultLocale("", fileName);
|
||||
return saveDefaultLocale(null, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -244,6 +246,19 @@ public class Locale {
|
||||
return changed;
|
||||
}
|
||||
|
||||
private static void copy(InputStream input, OutputStream output) {
|
||||
int n;
|
||||
byte[] buffer = new byte[1024 * 4];
|
||||
|
||||
try {
|
||||
while ((n = input.read(buffer)) != -1) {
|
||||
output.write(buffer, 0, n);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the language that this locale is based on.
|
||||
* (i.e. "en" for English, or "fr" for French)
|
||||
@ -302,7 +317,7 @@ public class Locale {
|
||||
public String getMessage(String node, Object... args) {
|
||||
String message = getMessage(node);
|
||||
for (Object arg : args) {
|
||||
message = message.replaceFirst("\\%.*?\\%", arg.toString());
|
||||
message = message.replaceFirst("%.*?%", arg.toString());
|
||||
}
|
||||
return message;
|
||||
}
|
||||
@ -360,4 +375,7 @@ public class Locale {
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return getMessage("general.nametag.prefix") + " ";
|
||||
}
|
||||
}
|
@ -3,8 +3,8 @@ package com.songoda.epicbuckets.file;
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import com.songoda.epicbuckets.genbucket.GenbucketType;
|
||||
import com.songoda.epicbuckets.utils.InventoryHelper;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import com.songoda.epicbuckets.utils.Validator;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -34,8 +34,8 @@ public class ConfigManager {
|
||||
private String bulkShopPurchasePath = "BULK-SHOP-INVENTORY.purchase-item";
|
||||
private String menuItemsPath = "MENU-ITEMS";
|
||||
|
||||
private List<XMaterial> ignoredMaterials;
|
||||
private List<XMaterial> psuedoMaterials;
|
||||
private List<Materials> ignoredMaterials;
|
||||
private List<Materials> psuedoMaterials;
|
||||
|
||||
private LinkedHashMap<String, Integer> genbucketGroups;
|
||||
|
||||
@ -181,7 +181,7 @@ public class ConfigManager {
|
||||
HashMap<ItemStack, Double> chargingCostsPerItem = new HashMap<>();
|
||||
|
||||
epicBuckets.getConfig().getConfigurationSection("COST-FOR-INFINITE-USE." + bucket).getKeys(false)
|
||||
.forEach(item -> chargingCostsPerItem.put(XMaterial.valueOf(item).parseItem(),
|
||||
.forEach(item -> chargingCostsPerItem.put(Materials.valueOf(item).parseItem(),
|
||||
epicBuckets.getConfig().getDouble("COST-FOR-INFINITE-USE." + bucket + "." + item)));
|
||||
|
||||
infiniteUseCost.put(GenbucketType.valueOf(bucket), chargingCostsPerItem);
|
||||
@ -219,14 +219,14 @@ public class ConfigManager {
|
||||
private void setupFillItem() {
|
||||
boolean m = Validator.isMaterial(epicBuckets.getConfig().getString(getFillItemPath() + ".material"));
|
||||
|
||||
fillItem = ((!m) ? XMaterial.BLACK_STAINED_GLASS_PANE.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(getFillItemPath() + ".material")).parseItem());
|
||||
fillItem = ((!m) ? Materials.BLACK_STAINED_GLASS_PANE.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(getFillItemPath() + ".material")).parseItem());
|
||||
fillItem = InventoryHelper.setDisplayName(fillItem, epicBuckets.getConfig().getString(getFillItemPath() + ".name"));
|
||||
}
|
||||
|
||||
private void setupBackButton() {
|
||||
boolean m = Validator.isMaterial(epicBuckets.getConfig().getString(getBackButtonPath() + ".material"));
|
||||
|
||||
backButton = ((!m) ? XMaterial.BARRIER.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(getBackButtonPath() + ".material")).parseItem());
|
||||
backButton = ((!m) ? Materials.BARRIER.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(getBackButtonPath() + ".material")).parseItem());
|
||||
backButton = InventoryHelper.setDisplayName(backButton, epicBuckets.getConfig().getString(getBackButtonPath() + ".name"));
|
||||
}
|
||||
|
||||
@ -282,11 +282,11 @@ public class ConfigManager {
|
||||
return bulkShopPurchasePath;
|
||||
}
|
||||
|
||||
public List<XMaterial> getIgnoredMaterials() {
|
||||
public List<Materials> getIgnoredMaterials() {
|
||||
return ignoredMaterials;
|
||||
}
|
||||
|
||||
public List<XMaterial> getPsuedoMaterials() {
|
||||
public List<Materials> getPsuedoMaterials() {
|
||||
return psuedoMaterials;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ package com.songoda.epicbuckets.genbucket;
|
||||
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import com.songoda.epicbuckets.shop.SubShop;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -100,12 +100,12 @@ public abstract class Genbucket {
|
||||
Block b = getNextBlock();
|
||||
if (isBelowVoid(moved + 1)) return false;
|
||||
if (b.getRelative(getBlockFace()).getType() != Material.AIR) {
|
||||
if (b.getRelative(getBlockFace()).getType() != XMaterial.COBBLESTONE.parseMaterial()) {
|
||||
if (b.getRelative(getBlockFace()).getType() != Materials.COBBLESTONE.parseMaterial()) {
|
||||
b.setType(getGenItem().getType());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
b.getRelative(getBlockFace()).setType(XMaterial.COBBLESTONE.parseMaterial());
|
||||
b.getRelative(getBlockFace()).setType(Materials.COBBLESTONE.parseMaterial());
|
||||
b.setType(getGenItem().getType());
|
||||
return true;
|
||||
}
|
||||
@ -114,12 +114,12 @@ public abstract class Genbucket {
|
||||
Block b = getNextBlock(moved, blockFace);
|
||||
if (isBelowVoid(moved + 1)) return false;
|
||||
if (b.getRelative(BlockFace.DOWN).getType() != Material.AIR) {
|
||||
if (b.getRelative(BlockFace.DOWN).getType() != XMaterial.COBBLESTONE.parseMaterial()) {
|
||||
if (b.getRelative(BlockFace.DOWN).getType() != Materials.COBBLESTONE.parseMaterial()) {
|
||||
b.setType(getGenItem().getType());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
b.getRelative(BlockFace.DOWN).setType(XMaterial.COBBLESTONE.parseMaterial());
|
||||
b.getRelative(BlockFace.DOWN).setType(Materials.COBBLESTONE.parseMaterial());
|
||||
b.setType(getGenItem().getType());
|
||||
return true;
|
||||
}
|
||||
@ -134,7 +134,7 @@ public abstract class Genbucket {
|
||||
}
|
||||
|
||||
protected void fixHole(Block block) {
|
||||
if (block.getType() == XMaterial.AIR.parseMaterial()) block.setType(getGenItem().getType());
|
||||
if (block.getType() == Materials.AIR.parseMaterial()) block.setType(getGenItem().getType());
|
||||
}
|
||||
|
||||
protected boolean spongeInRange(Block block) {
|
||||
@ -145,7 +145,7 @@ public abstract class Genbucket {
|
||||
|
||||
for (int x = -radius; x <= radius; x++) {
|
||||
for (int z = -radius; z <= radius; z++) {
|
||||
if (block.getRelative(x, 0, z).getType() == XMaterial.SPONGE.parseMaterial()) return true;
|
||||
if (block.getRelative(x, 0, z).getType() == Materials.SPONGE.parseMaterial()) return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,12 +154,12 @@ public abstract class Genbucket {
|
||||
|
||||
protected boolean placeGen(Block block) {
|
||||
|
||||
List<XMaterial> materials = epicBuckets.getConfigManager().getIgnoredMaterials();
|
||||
List<Materials> materials = epicBuckets.getConfigManager().getIgnoredMaterials();
|
||||
|
||||
if (!materials.contains(XMaterial.requestXMaterial(block.getType().name(), block.getData())))
|
||||
if (!materials.contains(Materials.requestMaterials(block.getType().name(), block.getData())))
|
||||
return false;
|
||||
|
||||
if ((materials.contains(XMaterial.WATER) || materials.contains(XMaterial.LAVA)) && block.isLiquid())
|
||||
if ((materials.contains(Materials.WATER) || materials.contains(Materials.LAVA)) && block.isLiquid())
|
||||
return false;
|
||||
|
||||
if (!epicBuckets.canBuild(owner, block.getLocation())) return false;
|
||||
|
@ -33,7 +33,7 @@ public class GUIBulk extends AbstractGUI {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void constructGUI() {
|
||||
public void constructGUI() {
|
||||
if (shopManager.isBulkFillInventory()) {
|
||||
int num = 0;
|
||||
while (num != size) {
|
||||
|
@ -27,7 +27,7 @@ public class GUIMain extends AbstractGUI {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void constructGUI() {
|
||||
public void constructGUI() {
|
||||
if (configManager.isFillInventory()) {
|
||||
int num = 0;
|
||||
while (num != size) {
|
||||
|
@ -3,7 +3,7 @@ package com.songoda.epicbuckets.gui;
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import com.songoda.epicbuckets.genbucket.Genbucket;
|
||||
import com.songoda.epicbuckets.utils.ChatUtil;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import com.songoda.epicbuckets.utils.gui.AbstractGUI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -32,7 +32,7 @@ public class GUIPanel extends AbstractGUI {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void constructGUI() {
|
||||
public void constructGUI() {
|
||||
|
||||
inventory.clear();
|
||||
resetClickables();
|
||||
@ -88,7 +88,7 @@ public class GUIPanel extends AbstractGUI {
|
||||
private void registerExtraButtons() {
|
||||
|
||||
if (page > 0) {
|
||||
inventory.setItem(27, createItem(XMaterial.ARROW.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.previous")));
|
||||
inventory.setItem(27, createItem(Materials.ARROW.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.previous")));
|
||||
registerClickable(27, (player, inventory, cursor, slot, type) -> {
|
||||
page--;
|
||||
constructGUI();
|
||||
@ -96,9 +96,9 @@ public class GUIPanel extends AbstractGUI {
|
||||
});
|
||||
}
|
||||
|
||||
ItemStack deactiveButton = createItem(XMaterial.RED_WOOL.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.deactivateall"));
|
||||
ItemStack pageButton = createItem(XMaterial.SIGN.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.page").replace("%page%", String.valueOf(page + 1)));
|
||||
ItemStack nextButton = createItem(XMaterial.ARROW.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.next"));
|
||||
ItemStack deactiveButton = createItem(Materials.RED_WOOL.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.deactivateall"));
|
||||
ItemStack pageButton = createItem(Materials.OAK_SIGN.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.page").replace("%page%", String.valueOf(page + 1)));
|
||||
ItemStack nextButton = createItem(Materials.ARROW.parseItem(), epicBuckets.getLocale().getMessage("interface.admin.panel.next"));
|
||||
|
||||
inventory.setItem(30, deactiveButton);
|
||||
inventory.setItem(32, pageButton);
|
||||
@ -134,7 +134,7 @@ public class GUIPanel extends AbstractGUI {
|
||||
|
||||
private ItemStack createGenbucketItem(Genbucket genbucket) {
|
||||
|
||||
ItemStack skull = new ItemStack(XMaterial.PLAYER_HEAD.parseMaterial(), 1, (short) 3);
|
||||
ItemStack skull = new ItemStack(Materials.PLAYER_HEAD.parseMaterial(), 1, (short) 3);
|
||||
SkullMeta meta = (SkullMeta) (skull.getItemMeta() != null ? skull.getItemMeta() : Bukkit.getItemFactory().getItemMeta(skull.getType()));
|
||||
meta.setOwner(genbucket.getOwner().getName());
|
||||
meta.setDisplayName(ChatUtil.colorString(epicBuckets.getLocale().getMessage("interface.admin.panel.player").replace("%player%", genbucket.getOwner().getName())));
|
||||
|
@ -32,7 +32,7 @@ public class GUIShop extends AbstractGUI {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void constructGUI() {
|
||||
public void constructGUI() {
|
||||
if (shop.isFillInventory()) {
|
||||
int num = 0;
|
||||
while (num != size) {
|
||||
|
@ -9,7 +9,7 @@ import com.songoda.epicbuckets.genbucket.types.Horizontal;
|
||||
import com.songoda.epicbuckets.genbucket.types.Infused;
|
||||
import com.songoda.epicbuckets.genbucket.types.PsuedoVertical;
|
||||
import com.songoda.epicbuckets.genbucket.types.Vertical;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import com.songoda.epicbuckets.utils.itemnbtapi.NBTItem;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
@ -91,7 +91,7 @@ public class GenbucketPlaceListener implements Listener {
|
||||
e.getPlayer().sendMessage(instance.getLocale().getMessage("event.genbucket.placedwrong").replace("%genbucket%", genbucket.getGenbucketType().formatName() + " Genbucket"));
|
||||
return;
|
||||
}
|
||||
if (genbucket.getGenbucketType() == GenbucketType.PSUEDO && !instance.getConfigManager().getPsuedoMaterials().contains(XMaterial.requestXMaterial(e.getClickedBlock().getType().name(), e.getClickedBlock().getData()))) {
|
||||
if (genbucket.getGenbucketType() == GenbucketType.PSUEDO && !instance.getConfigManager().getPsuedoMaterials().contains(Materials.requestMaterials(e.getClickedBlock().getType().name(), e.getClickedBlock().getData()))) {
|
||||
e.getPlayer().sendMessage(instance.getLocale().getMessage("event.genbucket.wrongmaterialpsuedo"));
|
||||
return;
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ package com.songoda.epicbuckets.shop;
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import com.songoda.epicbuckets.genbucket.GenbucketType;
|
||||
import com.songoda.epicbuckets.utils.InventoryHelper;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import com.songoda.epicbuckets.utils.Validator;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -94,7 +94,7 @@ public class Shop {
|
||||
setEnabled(false);
|
||||
}
|
||||
|
||||
shopItem = ((!m) ? XMaterial.WATER_BUCKET.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(itemPath + ".material")).parseItem());
|
||||
shopItem = ((!m) ? Materials.WATER_BUCKET.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(itemPath + ".material")).parseItem());
|
||||
shopItem = InventoryHelper.setLore(InventoryHelper.setDisplayName(shopItem, epicBuckets.getConfig().getString(itemPath + ".name")), epicBuckets.getConfig().getStringList(itemPath + ".lore"));
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ public class Shop {
|
||||
return subShops.get(shop);
|
||||
}
|
||||
|
||||
public SubShop getSubShop(XMaterial mat) {
|
||||
public SubShop getSubShop(Materials mat) {
|
||||
for (SubShop subShop : subShops.values()) {
|
||||
if (subShop.getGenItem().getType() == mat.parseMaterial() &&
|
||||
subShop.getGenItem().getDurability() == mat.parseItem().getDurability()) {
|
||||
|
@ -65,9 +65,9 @@ public class ShopManager {
|
||||
purchaseSlot = 40;
|
||||
}
|
||||
|
||||
increaseItem = ((!i) ? XMaterial.GREEN_STAINED_GLASS_PANE.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopIncreasePath() + ".material")).parseItem());
|
||||
decreaseItem = ((!d) ? XMaterial.RED_STAINED_GLASS_PANE.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopDecreasePath() + ".material")).parseItem());
|
||||
purchaseItem = ((!p) ? XMaterial.YELLOW_STAINED_GLASS.parseItem() : XMaterial.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopPurchasePath() + ".material")).parseItem());
|
||||
increaseItem = ((!i) ? Materials.GREEN_STAINED_GLASS_PANE.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopIncreasePath() + ".material")).parseItem());
|
||||
decreaseItem = ((!d) ? Materials.RED_STAINED_GLASS_PANE.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopDecreasePath() + ".material")).parseItem());
|
||||
purchaseItem = ((!p) ? Materials.YELLOW_STAINED_GLASS.parseItem() : Materials.valueOf(epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopPurchasePath() + ".material")).parseItem());
|
||||
purchaseItem = InventoryHelper.setDisplayName(purchaseItem, epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopPurchasePath() + ".name"));
|
||||
|
||||
for (String s : epicBuckets.getConfig().getString(epicBuckets.getConfigManager().getBulkShopIncreasePath() + ".slots").split(",")) {
|
||||
|
@ -2,8 +2,8 @@ package com.songoda.epicbuckets.shop;
|
||||
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import com.songoda.epicbuckets.utils.InventoryHelper;
|
||||
import com.songoda.epicbuckets.utils.Materials;
|
||||
import com.songoda.epicbuckets.utils.Validator;
|
||||
import com.songoda.epicbuckets.utils.XMaterial;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -20,7 +20,7 @@ public class SubShop {
|
||||
private ItemStack shopItem;
|
||||
private ItemStack genItem;
|
||||
private ItemStack genShopItem;
|
||||
private XMaterial type;
|
||||
private Materials type;
|
||||
|
||||
private Shop parent;
|
||||
private String item;
|
||||
@ -60,7 +60,7 @@ public class SubShop {
|
||||
setEnabled(false);
|
||||
}
|
||||
|
||||
this.type = XMaterial.valueOf(shops.getString(subShopPath + ".type"));
|
||||
this.type = Materials.valueOf(shops.getString(subShopPath + ".type"));
|
||||
this.shopName = shops.getString(subShopPath + ".name");
|
||||
this.description = shops.getStringList(subShopPath + ".description");
|
||||
this.genItemLore = shops.getStringList(subShopPath + ".item-lore");
|
||||
@ -76,12 +76,12 @@ public class SubShop {
|
||||
setEnabled(false);
|
||||
}
|
||||
|
||||
shopItem = ((!m) ? XMaterial.WATER_BUCKET.parseItem() : XMaterial.valueOf(shops.getString(subShopPath + ".icon")).parseItem());
|
||||
shopItem = ((!m) ? Materials.WATER_BUCKET.parseItem() : Materials.valueOf(shops.getString(subShopPath + ".icon")).parseItem());
|
||||
shopItem = InventoryHelper.setDisplayName(InventoryHelper.setSubShopLore(shopItem, getDescription(), this), getShopName());
|
||||
|
||||
genItem = ((!t) ? XMaterial.WATER_BUCKET.parseItem() : XMaterial.valueOf(shops.getString(subShopPath + ".type")).parseItem());
|
||||
genItem = ((!t) ? Materials.WATER_BUCKET.parseItem() : Materials.valueOf(shops.getString(subShopPath + ".type")).parseItem());
|
||||
|
||||
genShopItem = ((!m) ? XMaterial.WATER_BUCKET.parseItem() : XMaterial.valueOf(shops.getString(subShopPath + ".icon")).parseItem());
|
||||
genShopItem = ((!m) ? Materials.WATER_BUCKET.parseItem() : Materials.valueOf(shops.getString(subShopPath + ".icon")).parseItem());
|
||||
genShopItem = InventoryHelper.setDisplayName(InventoryHelper.setLore(genShopItem, getGenItemLore()), getShopName());
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ public class SubShop {
|
||||
return item;
|
||||
}
|
||||
|
||||
public XMaterial getType() {
|
||||
public Materials getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
@ -12,14 +12,14 @@ import java.util.stream.IntStream;
|
||||
|
||||
public class InventoryHelper {
|
||||
|
||||
public static List<XMaterial> convertMaterialList(List<String> toConvert, String item) {
|
||||
List<XMaterial> converted = new ArrayList<>();
|
||||
public static List<Materials> convertMaterialList(List<String> toConvert, String item) {
|
||||
List<Materials> converted = new ArrayList<>();
|
||||
for (String s : toConvert) {
|
||||
if (!Validator.isMaterial(s.toUpperCase())) {
|
||||
EpicBuckets.getInstance().getDebugger().sendConsole("Invalid material " + s.toUpperCase() + " in " + item + ", skipping..");
|
||||
continue;
|
||||
}
|
||||
converted.add(XMaterial.valueOf(s.toUpperCase()));
|
||||
converted.add(Materials.valueOf(s.toUpperCase()));
|
||||
}
|
||||
return converted;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -46,7 +46,7 @@ public class Validator {
|
||||
|
||||
public static boolean isMaterial(String mat) {
|
||||
try {
|
||||
XMaterial.valueOf(mat);
|
||||
Materials.valueOf(mat);
|
||||
return true;
|
||||
} catch (IllegalArgumentException e) {
|
||||
return false;
|
||||
|
@ -28,6 +28,7 @@ public abstract class AbstractGUI implements Listener {
|
||||
private static boolean listenersInitialized = false;
|
||||
protected Player player;
|
||||
protected Inventory inventory = null;
|
||||
protected String setTitle = null;
|
||||
protected boolean cancelBottom = false;
|
||||
private Map<Range, Clickable> clickables = new HashMap<>();
|
||||
private List<OnClose> onCloses = new ArrayList<>();
|
||||
@ -84,8 +85,7 @@ public abstract class AbstractGUI implements Listener {
|
||||
continue;
|
||||
if (event.getSlot() >= range.getMin() && event.getSlot() <= range.getMax()) {
|
||||
entry.getValue().Clickable(player, inventory, event.getCursor(), event.getSlot(), event.getClick());
|
||||
if (EpicBuckets.getInstance().isServerVersionAtLeast(ServerVersion.V1_12))
|
||||
player.playSound(player.getLocation(), entry.getKey().getOnClickSound(), 1F, 1F);
|
||||
player.playSound(player.getLocation(), entry.getKey().getOnClickSound(), 1F, 1F);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -116,8 +116,9 @@ public abstract class AbstractGUI implements Listener {
|
||||
public void init(String title, int slots) {
|
||||
if (inventory == null
|
||||
|| inventory.getSize() != slots
|
||||
|| ChatColor.translateAlternateColorCodes('&', title) != inventory.getTitle()) {
|
||||
this.inventory = Bukkit.getServer().createInventory(new GUIHolder(), slots, title);
|
||||
|| ChatColor.translateAlternateColorCodes('&', title) != player.getOpenInventory().getTitle()) {
|
||||
this.inventory = Bukkit.getServer().createInventory(new GUIHolder(), slots, ChatColor.translateAlternateColorCodes('&', title));
|
||||
this.setTitle = ChatColor.translateAlternateColorCodes('&', title);
|
||||
if (this.clickables.size() == 0)
|
||||
registerClickables();
|
||||
if (this.onCloses.size() == 0)
|
||||
@ -128,7 +129,7 @@ public abstract class AbstractGUI implements Listener {
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
protected abstract void constructGUI();
|
||||
public abstract void constructGUI();
|
||||
|
||||
protected void addDraggable(Range range, boolean option) {
|
||||
this.draggableRanges.put(range, option);
|
||||
@ -171,10 +172,6 @@ public abstract class AbstractGUI implements Listener {
|
||||
return createButton(slot, material, name, lore.toArray(new String[0]));
|
||||
}
|
||||
|
||||
protected ItemStack createButton(int slot, ItemStack item, String name, ArrayList<String> lore) {
|
||||
return createButton(slot, item, name, lore.toArray(new String[0]));
|
||||
}
|
||||
|
||||
protected void registerClickable(int min, int max, ClickType clickType, boolean bottom, Clickable clickable) {
|
||||
clickables.put(new Range(min, max, clickType, bottom), clickable);
|
||||
}
|
||||
@ -222,4 +219,8 @@ public abstract class AbstractGUI implements Listener {
|
||||
return AbstractGUI.this;
|
||||
}
|
||||
}
|
||||
|
||||
public String getSetTitle() {
|
||||
return setTitle;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.songoda.epicbuckets.utils.itemnbtapi;
|
||||
|
||||
import com.songoda.epicbuckets.utils.itemnbtapi.utils.MinecraftVersion;
|
||||
|
||||
public class NBTList {
|
||||
|
||||
private String listName;
|
||||
@ -28,7 +30,11 @@ public class NBTList {
|
||||
}
|
||||
try {
|
||||
Object compound = ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz().newInstance();
|
||||
ReflectionMethod.LIST_ADD.run(listObject, compound);
|
||||
if (MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_14_R1.getVersionId()) {
|
||||
ReflectionMethod.LIST_ADD.run(listObject, 0, compound);
|
||||
} else {
|
||||
ReflectionMethod.LEGACY_LIST_ADD.run(listObject, compound);
|
||||
}
|
||||
return new NBTListCompound(this, compound);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
@ -69,7 +75,13 @@ public class NBTList {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ReflectionMethod.LIST_ADD.run(listObject, ClassWrapper.NMS_NBTTAGSTRING.getClazz().getConstructor(String.class).newInstance(s));
|
||||
if (MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_14_R1.getVersionId()) {
|
||||
ReflectionMethod.LIST_ADD.run(listObject, 0,
|
||||
ClassWrapper.NMS_NBTTAGSTRING.getClazz().getConstructor(String.class).newInstance(s));
|
||||
} else {
|
||||
ReflectionMethod.LEGACY_LIST_ADD.run(listObject,
|
||||
ClassWrapper.NMS_NBTTAGSTRING.getClazz().getConstructor(String.class).newInstance(s));
|
||||
}
|
||||
save();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
@ -82,7 +94,8 @@ public class NBTList {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ReflectionMethod.LIST_SET.run(listObject, i, ClassWrapper.NMS_NBTTAGSTRING.getClazz().getConstructor(String.class).newInstance(s));
|
||||
ReflectionMethod.LIST_SET.run(listObject, i,
|
||||
ClassWrapper.NMS_NBTTAGSTRING.getClazz().getConstructor(String.class).newInstance(s));
|
||||
save();
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
@ -111,4 +124,4 @@ public class NBTList {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -41,7 +41,8 @@ public enum ReflectionMethod {
|
||||
LIST_REMOVE_KEY(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{int.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "a"), new Since(MinecraftVersion.MC1_9_R1, "remove")),
|
||||
LIST_SIZE(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "size")),
|
||||
LIST_SET(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{int.class, ClassWrapper.NMS_NBTBASE.getClazz()}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "a"), new Since(MinecraftVersion.MC1_13_R1, "set")),
|
||||
LIST_ADD(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{ClassWrapper.NMS_NBTBASE.getClazz()}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "add")),
|
||||
LEGACY_LIST_ADD(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{ClassWrapper.NMS_NBTBASE.getClazz()}, MinecraftVersion.MC1_7_R4, MinecraftVersion.MC1_13_R2, new Since(MinecraftVersion.MC1_7_R4, "add")),
|
||||
LIST_ADD(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{int.class, ClassWrapper.NMS_NBTBASE.getClazz()}, MinecraftVersion.MC1_14_R1, new Since(MinecraftVersion.MC1_14_R1, "add")),
|
||||
LIST_GET_STRING(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{int.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "getString")),
|
||||
LIST_GET(ClassWrapper.NMS_NBTTAGLIST.getClazz(), new Class[]{int.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "get")),
|
||||
|
||||
@ -63,16 +64,21 @@ public enum ReflectionMethod {
|
||||
NBTFILE_WRITE(ClassWrapper.NMS_NBTCOMPRESSEDSTREAMTOOLS.getClazz(), new Class[]{ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz(), OutputStream.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "a")), //FIXME: No Spigot mapping!
|
||||
|
||||
|
||||
PARSE_NBT(ClassWrapper.NMS_MOJANGSONPARSER.getClazz(), new Class[]{String.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "parse")),;
|
||||
PARSE_NBT(ClassWrapper.NMS_MOJANGSONPARSER.getClazz(), new Class[]{String.class}, MinecraftVersion.MC1_7_R4, new Since(MinecraftVersion.MC1_7_R4, "parse")),
|
||||
|
||||
;
|
||||
|
||||
private MinecraftVersion removedAfter;
|
||||
private Since targetVersion;
|
||||
private Method method;
|
||||
private boolean loaded = false;
|
||||
private boolean compatible = false;
|
||||
|
||||
ReflectionMethod(Class<?> targetClass, Class<?>[] args, MinecraftVersion addedSince, Since... methodnames) {
|
||||
ReflectionMethod(Class<?> targetClass, Class<?>[] args, MinecraftVersion addedSince, MinecraftVersion removedAfter, Since... methodnames) {
|
||||
this.removedAfter = removedAfter;
|
||||
MinecraftVersion server = MinecraftVersion.getVersion();
|
||||
if (server.compareTo(addedSince) < 0) return;
|
||||
if (server.compareTo(addedSince) < 0 || (this.removedAfter != null && server.getVersionId() > this.removedAfter.getVersionId()))
|
||||
return;
|
||||
compatible = true;
|
||||
Since target = methodnames[0];
|
||||
for (Since s : methodnames) {
|
||||
@ -89,6 +95,10 @@ public enum ReflectionMethod {
|
||||
}
|
||||
}
|
||||
|
||||
ReflectionMethod(Class<?> targetClass, Class<?>[] args, MinecraftVersion addedSince, Since... methodnames) {
|
||||
this(targetClass, args, addedSince, null, methodnames);
|
||||
}
|
||||
|
||||
public Object run(Object target, Object... args) {
|
||||
try {
|
||||
return method.invoke(target, args);
|
||||
@ -115,5 +125,4 @@ public enum ReflectionMethod {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -12,7 +12,8 @@ public enum MinecraftVersion {
|
||||
MC1_11_R1(1111),
|
||||
MC1_12_R1(1121),
|
||||
MC1_13_R1(1131),
|
||||
MC1_13_R2(1132);
|
||||
MC1_13_R2(1132),
|
||||
MC1_14_R1(1141);
|
||||
|
||||
private static MinecraftVersion version;
|
||||
private static Boolean hasGsonSupport;
|
||||
@ -23,6 +24,10 @@ public enum MinecraftVersion {
|
||||
this.versionId = versionId;
|
||||
}
|
||||
|
||||
public int getVersionId() {
|
||||
return versionId;
|
||||
}
|
||||
|
||||
public static MinecraftVersion getVersion() {
|
||||
if (version != null) {
|
||||
return version;
|
||||
@ -55,8 +60,4 @@ public enum MinecraftVersion {
|
||||
return hasGsonSupport;
|
||||
}
|
||||
|
||||
public int getVersionId() {
|
||||
return versionId;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user