Skip to content

Commit

Permalink
Added .item:serializer module to automatically load and save item o…
Browse files Browse the repository at this point in the history
…bjects.

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.
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).
  • Loading branch information
fulminazzo committed Mar 5, 2024
1 parent 869a407 commit 64ba6a2
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions item/src/main/java/it/angrybear/yagl/items/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -428,10 +428,13 @@ default <I extends Item> I copy(@NotNull Class<I> clazz) {
for (final Field field : item.getNonStaticFields())
try {
field.setAccessible(true);
ReflectionUtils.getField(this, field.getName());
Object obj1 = field.get(this);
item.setFieldObject(field, obj1);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (IllegalArgumentException ignored) {

}
return item.getObject();
}
Expand Down

0 comments on commit 64ba6a2

Please sign in to comment.