Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70e294501a | ||
|
|
65a0a0ecc7 | ||
|
|
d4431e7569 | ||
|
|
a6191b0870 | ||
|
|
5eecef83ee | ||
|
|
82a02f3738 | ||
|
|
804142799b | ||
|
|
e1de9b9ab3 | ||
|
|
cc56343041 |
@@ -158,8 +158,12 @@ Here's a list of some (not all) of the features of eco:
|
|||||||
|
|
||||||
<h1 align="center">
|
<h1 align="center">
|
||||||
<br>
|
<br>
|
||||||
|
<a href="http://gamersupps.gg/discount/Auxilor?afmc=Auxilor" target="_blank">
|
||||||
|
<img src="https://i.imgur.com/uFDpBAC.png" alt="supps banner">
|
||||||
|
</a>
|
||||||
<a href="https://dedimc.promo/Auxilor" target="_blank">
|
<a href="https://dedimc.promo/Auxilor" target="_blank">
|
||||||
<img src="https://i.imgur.com/zdDLhFA.png" alt="dedimc banner">
|
<img src="https://i.imgur.com/zdDLhFA.png" alt="dedimc banner">
|
||||||
</a>
|
</a>
|
||||||
<br>
|
<br>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
*
|
*
|
||||||
* @see ArmorChangeEvent
|
* @see ArmorChangeEvent
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public class ArmorEquipEvent extends PlayerEvent {
|
public class ArmorEquipEvent extends PlayerEvent {
|
||||||
/**
|
/**
|
||||||
* Bukkit parity.
|
* Bukkit parity.
|
||||||
|
|||||||
@@ -2,12 +2,16 @@ package com.willfp.eco.core.gui.menu;
|
|||||||
|
|
||||||
import com.willfp.eco.core.Eco;
|
import com.willfp.eco.core.Eco;
|
||||||
import com.willfp.eco.core.gui.slot.Slot;
|
import com.willfp.eco.core.gui.slot.Slot;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GUI version of {@link Inventory}.
|
* GUI version of {@link Inventory}.
|
||||||
@@ -55,6 +59,43 @@ public interface Menu {
|
|||||||
*/
|
*/
|
||||||
List<ItemStack> getCaptiveItems(@NotNull Player player);
|
List<ItemStack> getCaptiveItems(@NotNull Player player);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write data.
|
||||||
|
*
|
||||||
|
* @param player The player.
|
||||||
|
* @param key The key.
|
||||||
|
* @param type The type.
|
||||||
|
* @param value The value.
|
||||||
|
* @param <T> The type.
|
||||||
|
* @param <Z> The type.
|
||||||
|
*/
|
||||||
|
<T, Z> void writeData(@NotNull Player player,
|
||||||
|
@NotNull NamespacedKey key,
|
||||||
|
@NotNull PersistentDataType<T, Z> type,
|
||||||
|
@NotNull Z value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read data.
|
||||||
|
*
|
||||||
|
* @param player The player.
|
||||||
|
* @param key The key.
|
||||||
|
* @param type The type.
|
||||||
|
* @param <T> The type.
|
||||||
|
* @param <Z> The type.
|
||||||
|
* @return The data.
|
||||||
|
*/
|
||||||
|
@Nullable <T, Z> T readData(@NotNull Player player,
|
||||||
|
@NotNull NamespacedKey key,
|
||||||
|
@NotNull PersistentDataType<T, Z> type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all data keys for a player.
|
||||||
|
*
|
||||||
|
* @param player The player.
|
||||||
|
* @return The keys.
|
||||||
|
*/
|
||||||
|
Set<NamespacedKey> getKeys(@NotNull Player player);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a builder with a given amount of rows.
|
* Create a builder with a given amount of rows.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.willfp.eco.core.items;
|
package com.willfp.eco.core.items;
|
||||||
|
|
||||||
|
import com.willfp.eco.core.items.builder.EnchantedBookBuilder;
|
||||||
import com.willfp.eco.core.items.builder.ItemBuilder;
|
import com.willfp.eco.core.items.builder.ItemBuilder;
|
||||||
import com.willfp.eco.core.items.builder.ItemStackBuilder;
|
import com.willfp.eco.core.items.builder.ItemStackBuilder;
|
||||||
import com.willfp.eco.core.recipe.parts.EmptyTestableItem;
|
import com.willfp.eco.core.recipe.parts.EmptyTestableItem;
|
||||||
@@ -12,6 +13,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@@ -129,9 +131,17 @@ public final class Items {
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemBuilder builder = new ItemStackBuilder(item.getItem());
|
ItemStack example = item.getItem();
|
||||||
requiredEnchantments.forEach(builder::addEnchantment);
|
|
||||||
ItemStack example = builder.build();
|
if (example.getItemMeta() instanceof EnchantmentStorageMeta storageMeta) {
|
||||||
|
requiredEnchantments.forEach((enchantment, integer) -> storageMeta.addStoredEnchant(enchantment, integer, true));
|
||||||
|
example.setItemMeta(storageMeta);
|
||||||
|
} else {
|
||||||
|
ItemMeta meta = example.getItemMeta();
|
||||||
|
assert meta != null;
|
||||||
|
requiredEnchantments.forEach((enchantment, integer) -> meta.addEnchant(enchantment, integer, true));
|
||||||
|
example.setItemMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
return new ModifiedTestableItem(
|
return new ModifiedTestableItem(
|
||||||
item,
|
item,
|
||||||
@@ -144,12 +154,23 @@ public final class Items {
|
|||||||
|
|
||||||
assert meta != null;
|
assert meta != null;
|
||||||
|
|
||||||
for (Map.Entry<Enchantment, Integer> entry : requiredEnchantments.entrySet()) {
|
if (meta instanceof EnchantmentStorageMeta storageMeta) {
|
||||||
if (!meta.hasEnchant(entry.getKey())) {
|
for (Map.Entry<Enchantment, Integer> entry : requiredEnchantments.entrySet()) {
|
||||||
return false;
|
if (!storageMeta.hasStoredEnchant(entry.getKey())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (storageMeta.getStoredEnchantLevel(entry.getKey()) < entry.getValue()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (meta.getEnchantLevel(entry.getKey()) < entry.getValue()) {
|
} else {
|
||||||
return false;
|
for (Map.Entry<Enchantment, Integer> entry : requiredEnchantments.entrySet()) {
|
||||||
|
if (!meta.hasEnchant(entry.getKey())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (meta.getEnchantLevel(entry.getKey()) < entry.getValue()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,14 @@ import com.willfp.eco.core.gui.slot.Slot
|
|||||||
import com.willfp.eco.internal.gui.slot.EcoSlot
|
import com.willfp.eco.internal.gui.slot.EcoSlot
|
||||||
import com.willfp.eco.util.StringUtils
|
import com.willfp.eco.util.StringUtils
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.NamespacedKey
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.event.inventory.InventoryCloseEvent
|
import org.bukkit.event.inventory.InventoryCloseEvent
|
||||||
import org.bukkit.inventory.Inventory
|
import org.bukkit.inventory.Inventory
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
import org.bukkit.persistence.PersistentDataType
|
||||||
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
class EcoMenu(
|
class EcoMenu(
|
||||||
private val rows: Int,
|
private val rows: Int,
|
||||||
val slots: List<MutableList<EcoSlot>>,
|
val slots: List<MutableList<EcoSlot>>,
|
||||||
@@ -75,4 +78,28 @@ class EcoMenu(
|
|||||||
inventory ?: return ArrayList()
|
inventory ?: return ArrayList()
|
||||||
return inventory.captiveItems
|
return inventory.captiveItems
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun <T : Any, Z : Any> writeData(
|
||||||
|
player: Player,
|
||||||
|
key: NamespacedKey,
|
||||||
|
type: PersistentDataType<T, Z>,
|
||||||
|
value: Z
|
||||||
|
) {
|
||||||
|
val inventory = MenuHandler.getExtendedInventory(player.openInventory.topInventory)
|
||||||
|
inventory ?: return
|
||||||
|
inventory.data[key] = value
|
||||||
|
inventory.refresh(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <T : Any, Z : Any> readData(player: Player, key: NamespacedKey, type: PersistentDataType<T, Z>): T? {
|
||||||
|
val inventory = MenuHandler.getExtendedInventory(player.openInventory.topInventory)
|
||||||
|
inventory ?: return null
|
||||||
|
return inventory.data[key] as T?
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getKeys(player: Player): MutableSet<NamespacedKey> {
|
||||||
|
val inventory = MenuHandler.getExtendedInventory(player.openInventory.topInventory)
|
||||||
|
inventory ?: return HashSet()
|
||||||
|
return inventory.data.keys
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.willfp.eco.internal.gui.menu
|
|||||||
import com.willfp.eco.internal.gui.slot.EcoCaptivatorSlot
|
import com.willfp.eco.internal.gui.slot.EcoCaptivatorSlot
|
||||||
import com.willfp.eco.util.MenuUtils
|
import com.willfp.eco.util.MenuUtils
|
||||||
import com.willfp.eco.util.StringUtils
|
import com.willfp.eco.util.StringUtils
|
||||||
|
import org.bukkit.NamespacedKey
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.inventory.Inventory
|
import org.bukkit.inventory.Inventory
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
@@ -12,6 +13,7 @@ class ExtendedInventory(
|
|||||||
private val menu: EcoMenu
|
private val menu: EcoMenu
|
||||||
) {
|
) {
|
||||||
val captiveItems: MutableList<ItemStack> = ArrayList()
|
val captiveItems: MutableList<ItemStack> = ArrayList()
|
||||||
|
val data: MutableMap<NamespacedKey, Any> = HashMap()
|
||||||
|
|
||||||
fun refresh(player: Player) {
|
fun refresh(player: Player) {
|
||||||
captiveItems.clear()
|
captiveItems.clear()
|
||||||
|
|||||||
@@ -33,7 +33,13 @@ class GUIListener(plugin: EcoPlugin) : PluginDependent<EcoPlugin>(plugin), Liste
|
|||||||
event.isCancelled = true
|
event.isCancelled = true
|
||||||
ecoSlot.handleInventoryClick(event, menu)
|
ecoSlot.handleInventoryClick(event, menu)
|
||||||
|
|
||||||
plugin.scheduler.run{ MenuHandler.getExtendedInventory(event.clickedInventory!!)!!.refresh(player) }
|
if (event.clickedInventory == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val extendedInventory = MenuHandler.getExtendedInventory(event.clickedInventory!!) ?: return
|
||||||
|
|
||||||
|
plugin.scheduler.run{ extendedInventory.refresh(player) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
version = 6.4.1
|
version = 6.5.0
|
||||||
plugin-name = eco
|
plugin-name = eco
|
||||||
Reference in New Issue
Block a user