Skip to content

Commit 62179ec

Browse files
committed
Merge branch 'release/1.1.1.1'
2 parents c417327 + c6d6cdf commit 62179ec

52 files changed

Lines changed: 268 additions & 100 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

API/src/main/java/fr/maxlego08/menu/api/MenuItemStack.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import fr.maxlego08.menu.api.itemstack.*;
99
import fr.maxlego08.menu.api.utils.LoreType;
1010
import fr.maxlego08.menu.api.utils.Placeholders;
11+
import org.bukkit.NamespacedKey;
1112
import org.bukkit.OfflinePlayer;
1213
import org.bukkit.enchantments.Enchantment;
1314
import org.bukkit.entity.Player;
@@ -380,7 +381,7 @@ public interface MenuItemStack extends MenuItemStackContext {
380381
*
381382
* @param itemModel the item model identifier to set.
382383
*/
383-
void setItemModel(String itemModel);
384+
void setItemModel(NamespacedKey itemModel);
384385

385386
/**
386387
* Sets the equipped model identifier used for wearable items.

API/src/main/java/fr/maxlego08/menu/api/animation/PlayerTitleAnimation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void start(@NotNull Player player, @NotNull List<ItemStack> inventoryCont
6060
}
6161
}
6262
String title = this.settings.titles().get(this.currentIndex++);
63-
this.sendTitle(player, title);
63+
this.sendTitle(player, this.plugin.parse(player, title));
6464
if (!this.settings.showItemsAfterAnimation()) {
6565
if (this.settings.itemUpdateInterval() > 0 && this.currentIndex % this.settings.itemUpdateInterval() == 0) {
6666
this.sendInventoryContent(player, inventoryContents);

API/src/main/java/fr/maxlego08/menu/api/button/Button.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import fr.maxlego08.menu.api.utils.OpenLink;
1515
import fr.maxlego08.menu.api.utils.Placeholders;
1616
import fr.maxlego08.menu.zcore.utils.PerformanceDebug;
17+
import org.bukkit.Material;
1718
import org.bukkit.OfflinePlayer;
1819
import org.bukkit.entity.Player;
1920
import org.bukkit.event.inventory.InventoryClickEvent;
@@ -78,14 +79,9 @@ public Button setItemStack(@Nullable MenuItemStack itemStack) {
7879
}
7980

8081
@Contract(pure = true)
81-
@Nullable
82+
@NotNull
8283
public ItemStack getCustomItemStack(@NotNull Player player, boolean useCache, @NotNull Placeholders placeholders) {
83-
if (this.itemStack == null) return null;
84-
ItemStack itemStack = this.itemStack.build(player, useCache, placeholders);
85-
if (this.playerHead != null && itemStack.getItemMeta() instanceof SkullMeta) {
86-
return this.plugin.getInventoryManager().postProcessSkullItemStack(itemStack, this, player, placeholders);
87-
}
88-
return itemStack;
84+
return itemStack == null ? new ItemStack(Material.STONE) : this.itemStack.build(player, useCache, placeholders);
8985
}
9086

9187
public int getSlot() {

API/src/main/java/fr/maxlego08/menu/api/context/MenuItemStackContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import fr.maxlego08.menu.api.enums.MenuItemRarity;
77
import fr.maxlego08.menu.api.itemstack.*;
88
import fr.maxlego08.menu.api.utils.LoreType;
9+
import org.bukkit.NamespacedKey;
910
import org.bukkit.enchantments.Enchantment;
1011
import org.bukkit.inventory.ItemFlag;
1112
import org.bukkit.inventory.ItemStack;
@@ -326,7 +327,7 @@ public interface MenuItemStackContext {
326327
*
327328
* @return the item model identifier.
328329
*/
329-
String getItemModel();
330+
NamespacedKey getItemModel();
330331

331332
/**
332333
* Retrieves the equipped model identifier used for wearable items.

API/src/main/java/fr/maxlego08/menu/api/engine/BaseInventory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ public interface BaseInventory extends InventoryHolder {
2727
@Contract(pure = true)
2828
boolean isClose();
2929

30-
@Contract("_, null -> null")
30+
@Contract("_, null -> null; _, !null -> !null")
3131
@Nullable
3232
ItemButton addItem(int slot, @Nullable ItemStack itemStack);
3333

34-
@Contract("_, null,_ -> null")
34+
@Contract("_, null, _ -> null; _, !null, _ -> !null")
3535
@Nullable
3636
ItemButton addItem(int slot, @Nullable ItemStack itemStack, boolean enableAntiDupe);
3737

38-
@Contract("_, _, null -> null")
38+
@Contract("_, _, null -> null; _, _, !null -> !null")
3939
@Nullable
4040
ItemButton addItem(boolean inPlayerInventory, int slot, @Nullable ItemStack itemStack);
4141

42-
@Contract("_, _, null, _ -> null")
42+
@Contract("_, _, null, _ -> null; _, _, !null, _ -> !null")
4343
@Nullable
4444
ItemButton addItem(boolean inPlayerInventory, int slot, @Nullable ItemStack itemStack, boolean enableAntiDupe);
4545

API/src/main/java/fr/maxlego08/menu/api/itemstack/components/ItemNameComponent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fr.maxlego08.menu.api.context.BuildContext;
44
import fr.maxlego08.menu.api.itemstack.ItemComponent;
5+
import fr.maxlego08.menu.api.placeholder.Placeholder;
56
import org.bukkit.entity.Player;
67
import org.bukkit.inventory.ItemStack;
78
import org.bukkit.inventory.meta.ItemMeta;
@@ -25,7 +26,7 @@ public void apply(@NotNull BuildContext context, @NotNull ItemStack itemStack, @
2526
ItemMeta itemMeta = itemStack.getItemMeta();
2627
if (itemMeta != null) {
2728

28-
itemMeta.setItemName(this.itemName);
29+
itemMeta.setItemName(this.itemName == null ? null : Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.itemName)));
2930

3031
itemStack.setItemMeta(itemMeta);
3132
}

API/src/main/java/fr/maxlego08/menu/api/itemstack/components/LoreComponent.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fr.maxlego08.menu.api.context.BuildContext;
44
import fr.maxlego08.menu.api.itemstack.ItemComponent;
5+
import fr.maxlego08.menu.api.placeholder.Placeholder;
56
import org.bukkit.entity.Player;
67
import org.bukkit.inventory.ItemStack;
78
import org.bukkit.inventory.meta.ItemMeta;
@@ -27,7 +28,9 @@ public LoreComponent(List<@NotNull String> lore) {
2728
public void apply(@NotNull BuildContext context, @NotNull ItemStack itemStack, @Nullable Player player) {
2829
ItemMeta itemMeta = itemStack.getItemMeta();
2930
if (itemMeta != null) {
30-
itemMeta.setLore(this.lore);
31+
32+
itemMeta.setLore(Placeholder.Placeholders.getPlaceholder().setPlaceholders(player,context.getPlaceholders().parse(this.lore)));
33+
3134
itemStack.setItemMeta(itemMeta);
3235
}
3336
}

API/src/main/java/fr/maxlego08/menu/api/itemstack/components/WritableBookContentComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import fr.maxlego08.menu.api.configuration.Configuration;
44
import fr.maxlego08.menu.api.context.BuildContext;
55
import fr.maxlego08.menu.api.itemstack.ItemComponent;
6+
import fr.maxlego08.menu.api.placeholder.Placeholder;
67
import fr.maxlego08.menu.api.utils.ItemUtil;
78
import fr.maxlego08.menu.zcore.logger.Logger;
89
import org.bukkit.entity.Player;
@@ -34,8 +35,8 @@ public WritableBookContentComponent(@Nullable String title, @NotNull List<@NotNu
3435
@Override
3536
public void apply(@NotNull BuildContext context, @NotNull ItemStack itemStack, @Nullable Player player) {
3637
boolean apply = ItemUtil.editMeta(itemStack, BookMeta.class, bookMeta -> {
37-
bookMeta.setTitle(this.title);
38-
bookMeta.setPages(this.pages);
38+
bookMeta.setTitle(this.title != null ? Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.title)) : null);
39+
bookMeta.setPages(Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.pages)));
3940
});
4041
if (!apply && Configuration.enableDebug)
4142
Logger.info("Could not apply WritableBookContentComponent to item: " + itemStack.getType().name());

API/src/main/java/fr/maxlego08/menu/api/itemstack/components/WrittenBookContentComponent.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import fr.maxlego08.menu.api.configuration.Configuration;
44
import fr.maxlego08.menu.api.context.BuildContext;
55
import fr.maxlego08.menu.api.itemstack.ItemComponent;
6+
import fr.maxlego08.menu.api.placeholder.Placeholder;
67
import fr.maxlego08.menu.api.utils.ItemUtil;
78
import fr.maxlego08.menu.zcore.logger.Logger;
89
import org.bukkit.entity.Player;
@@ -46,10 +47,10 @@ public WrittenBookContentComponent(@Nullable String title, @Nullable String auth
4647
@Override
4748
public void apply(@NotNull BuildContext context, @NotNull ItemStack itemStack, @Nullable Player player) {
4849
boolean apply = ItemUtil.editMeta(itemStack, BookMeta.class, bookMeta -> {
49-
bookMeta.setTitle(this.title);
50-
bookMeta.setAuthor(this.author);
50+
bookMeta.setTitle(this.title == null ? null : Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.title)));
51+
bookMeta.setAuthor(this.author == null ? null : Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.author)));
5152
bookMeta.setGeneration(this.generation);
52-
bookMeta.setPages(this.pages);
53+
bookMeta.setPages(Placeholder.Placeholders.getPlaceholder().setPlaceholders(player, context.getPlaceholders().parse(this.pages)));
5354
});
5455
if (!apply && Configuration.enableDebug)
5556
Logger.info("Could not apply WritableBookContentComponent to item: " + itemStack.getType().name());

API/src/main/java/fr/maxlego08/menu/api/loader/NoneLoader.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ public NoneLoader(@NotNull Plugin plugin,@NotNull Class<? extends Button> clazz,
2121
@Nullable
2222
public Button load(@NonNull YamlConfiguration configuration, @NonNull String path, @NonNull DefaultButtonValue defaultButtonValue) {
2323
try {
24-
return this.clazz.getConstructor(Plugin.class).newInstance(this.plugin);
25-
} catch (Exception exception) {
26-
try {
27-
return this.clazz.getDeclaredConstructor().newInstance();
28-
} catch (Exception exception2) {
29-
exception.printStackTrace();
24+
for (var constructor : this.clazz.getConstructors()) {
25+
var params = constructor.getParameterTypes();
26+
if (params.length == 1 && params[0].isInstance(this.plugin)) {
27+
return (Button) constructor.newInstance(this.plugin);
28+
}
3029
}
30+
return this.clazz.getDeclaredConstructor().newInstance();
31+
} catch (Exception exception) {
32+
exception.printStackTrace();
3133
}
3234
return null;
3335
}

0 commit comments

Comments
 (0)