Skip to content

Commit 16acf3e

Browse files
committed
Added .item:serializer module to automatically load and save item objects.
Added parsers: - [EnchantmentParser](item/serializer/src/main/java/it/angrybear/serializers/EnchantmentParser.java); - [ItemParser](item/serializer/src/main/java/it/angrybear/serializers/ItemParser.java); - [ShapeParser](item/serializer/src/main/java/it/angrybear/serializers/ShapeParser.java); - [ShapedRecipeParser](item/serializer/src/main/java/it/angrybear/serializers/ShapedRecipeParser.java); - [ShapelessRecipeParser](item/serializer/src/main/java/it/angrybear/serializers/ShapelessRecipeParser.java); - [FurnaceRecipeParser](item/serializer/src/main/java/it/angrybear/serializers/FurnaceRecipeParser.java). Added [YAGLParser](item/serializer/src/main/java/it/angrybear/serializers/YAGLParser.java) to automatically load parsers. Added **MovablePersistentItem** to allow moving inside the player inventory. Moved everything to package `it.angrybear.yagl`. Reworked `Item#copy()` method: it will try to get a default empty constructor from the current class. If it fails, it defaults to `ItemImpl`. Fixed `Item#copy(Class)` with automatic resolution of interfaces: passing `Item` or `BukkitItem` will convert them into `ItemImpl` and `BukkitItemImpl`. Fixed `Item#copy(Class)` not checking if current item has field of receiving class. Fixed various bugs in **ShapedRecipe**. Fixed recipes not copying items in their most default state (Item). Fixed invalid casts to `BukkitItem` in `ItemUtils`. Fixed `ItemUtils`: now it will apply model data only for values higher than 0. Fixed visibility issues in `PersistentListener`: every event method is now protected. Fixed PersistentListener with delay system. Updated FulmiCollection to version 1.4.1.
1 parent b2526fc commit 16acf3e

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = 'it.angrybear'
9-
version = '2.0'
9+
version = '2.1'
1010

1111
allprojects {
1212
apply plugin: 'java-library'
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package it.angrybear.yagl.items;
2+
3+
/**
4+
* An implementation of {@link PersistentItem} that allows to be moved inside the player's inventory.
5+
*/
6+
public class MovablePersistentItem extends PersistentItem {
7+
}

item/bukkit/src/main/java/it/angrybear/yagl/listeners/PersistentListener.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package it.angrybear.yagl.listeners;
22

3+
import it.angrybear.yagl.items.MovablePersistentItem;
34
import it.angrybear.yagl.items.PersistentItem;
45
import it.angrybear.yagl.persistent.DeathAction;
56
import org.bukkit.entity.Player;
@@ -16,6 +17,7 @@
1617
import org.bukkit.event.player.PlayerInteractEvent;
1718
import org.bukkit.event.player.PlayerItemConsumeEvent;
1819
import org.bukkit.event.player.PlayerItemDamageEvent;
20+
import org.bukkit.inventory.Inventory;
1921
import org.bukkit.inventory.ItemStack;
2022
import org.bukkit.inventory.PlayerInventory;
2123
import org.jetbrains.annotations.NotNull;
@@ -102,8 +104,17 @@ protected void on(PlayerDropItemEvent event) {
102104
protected void on(InventoryClickEvent event) {
103105
Player player = (Player) event.getWhoClicked();
104106
ClickType type = event.getClick();
105-
if (clickPersistentItem(event.getCurrentItem(), player, type, cancelled(event))) return;
106-
clickPersistentItem(event.getCursor(), player, type, cancelled(event));
107+
ItemStack itemStack = event.getCurrentItem();
108+
Inventory clicked = event.getClickedInventory();
109+
Inventory playerInventory = player.getInventory();
110+
111+
Consumer<PersistentItem> ifPresent = e -> {
112+
if (!(e instanceof MovablePersistentItem) || !playerInventory.equals(clicked))
113+
cancelled(event).accept(e);
114+
};
115+
116+
if (clickPersistentItem(itemStack, player, type, ifPresent)) return;
117+
clickPersistentItem(event.getCursor(), player, type, ifPresent);
107118
}
108119

109120
@EventHandler

0 commit comments

Comments
 (0)