Skip to content
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
4c393c6
remove Placeholder to main code
saildrag Sep 5, 2025
0aa7850
remove placeholder part 2
saildrag Sep 5, 2025
a0ececc
first bedrock inventory commit
saildrag Sep 9, 2025
c7cf626
Merge branch 'Maxlego08:develop' into develop
saildrag Sep 9, 2025
dd3879f
fixs zmenu loader with bedrock
saildrag Sep 10, 2025
a55ef5b
fixs loading type and change config
saildrag Sep 10, 2025
31a0a23
change title to name
saildrag Sep 12, 2025
334fb59
refactor name and structure
saildrag Sep 12, 2025
1e87eef
Move + rename méthode and clickBedrockButton refactor + improve API u…
saildrag Sep 13, 2025
261c127
api button for bedrock and dialog
saildrag Sep 13, 2025
be6b9f8
improve api dialog and bedrock
saildrag Sep 14, 2025
9d0e422
fixs oldinventory + fixs dialog loader inputs
saildrag Sep 14, 2025
db54d9f
add support custom console commande
saildrag Sep 14, 2025
3ed8334
fixs dialog config
saildrag Sep 14, 2025
c160c21
fixs tragetPlayer and support bedrock player check
saildrag Sep 15, 2025
cda6def
add Bedrock player validator
saildrag Sep 15, 2025
46ca83f
remove unused import
saildrag Sep 15, 2025
34afa49
start bedrockReplacement
saildrag Sep 16, 2025
8fe4993
addOldInventory to dialog action
saildrag Sep 16, 2025
a25871d
add bedrock action
saildrag Sep 16, 2025
342234b
fixs inventoryReplacement
saildrag Sep 17, 2025
ca028c5
Merge branch 'Maxlego08:develop' into develop
saildrag Sep 18, 2025
c476fb7
fixs enum ImageType
saildrag Sep 18, 2025
ca170ea
fixs openBedrockOnly
saildrag Sep 18, 2025
a174869
image value (need to change)
saildrag Sep 18, 2025
571052e
Merge branch 'Maxlego08:develop' into develop
saildrag Sep 23, 2025
e017804
rename to targetPlayer
saildrag Sep 23, 2025
78c132e
improve loadAndReplaceConfiguration
saildrag Sep 23, 2025
37e57f7
Merge branch 'develop' into develop
Maxlego08 Oct 8, 2025
84858af
Fix formatting in Plugins.java
1robie Oct 10, 2025
acc1d4a
Merge pull request #1 from 1robie/patch-1
saildrag Oct 10, 2025
f27447c
drag button
saildrag Nov 20, 2025
b86b2bf
Merge branch 'develop' of https://github.com/saildrag/zMenu-Bedrock i…
saildrag Nov 20, 2025
b545d32
remove Placeholder to main code
saildrag Sep 5, 2025
2f2f144
remove placeholder part 2
saildrag Sep 5, 2025
f4a5fd6
first bedrock inventory commit
saildrag Sep 9, 2025
27f7b52
fixs zmenu loader with bedrock
saildrag Sep 10, 2025
908c80c
fixs loading type and change config
saildrag Sep 10, 2025
f2ded22
change title to name
saildrag Sep 12, 2025
49d2119
refactor name and structure
saildrag Sep 12, 2025
40c7cad
Move + rename méthode and clickBedrockButton refactor + improve API u…
saildrag Sep 13, 2025
bd7b5c3
api button for bedrock and dialog
saildrag Sep 13, 2025
fe67248
improve api dialog and bedrock
saildrag Sep 14, 2025
f87d2d5
fixs oldinventory + fixs dialog loader inputs
saildrag Sep 14, 2025
a07c509
add support custom console commande
saildrag Sep 14, 2025
a679051
fixs dialog config
saildrag Sep 14, 2025
5c0f05c
fixs tragetPlayer and support bedrock player check
saildrag Sep 15, 2025
400cf04
add Bedrock player validator
saildrag Sep 15, 2025
e7add0b
remove unused import
saildrag Sep 15, 2025
d953bc4
start bedrockReplacement
saildrag Sep 16, 2025
03bcf19
addOldInventory to dialog action
saildrag Sep 16, 2025
f38f8c5
add bedrock action
saildrag Sep 16, 2025
287252d
fixs inventoryReplacement
saildrag Sep 17, 2025
510fbdd
fixs enum ImageType
saildrag Sep 18, 2025
84a594e
fixs openBedrockOnly
saildrag Sep 18, 2025
dffa555
image value (need to change)
saildrag Sep 18, 2025
d86bab8
rename to targetPlayer
saildrag Sep 23, 2025
9a3d326
improve loadAndReplaceConfiguration
saildrag Sep 23, 2025
84df1de
drag button
saildrag Nov 20, 2025
bad9b63
Fix formatting in Plugins.java
1robie Oct 10, 2025
6997364
Merge branch 'develop' of https://github.com/saildrag/zMenu-Bedrock i…
saildrag Nov 20, 2025
031ad52
pr force
saildrag Nov 20, 2025
25ac7f9
Add floodgate plugin to the Plugins enum
Funasitien Jan 20, 2026
964285d
Add Floodgate support alongside Geyser detection
Funasitien Jan 20, 2026
015a3bb
Add floodgate and Geyser-Spigot to plugin.yml
Funasitien Jan 20, 2026
6df51a7
Add Funasitien to contributors :)
Funasitien Jan 20, 2026
405ebd5
Update src/main/java/fr/maxlego08/menu/ZMenuPlugin.java
1robie Jan 27, 2026
fbc6d29
Update src/main/java/fr/maxlego08/menu/zcore/utils/plugins/Plugins.java
1robie Jan 27, 2026
abb847a
Merge pull request #2 from Funasitien/develop
1robie Jan 27, 2026
c3f22c9
fix: update button label parsing in SliderInputBuilder
1robie Jan 27, 2026
2a8a689
Merge remote-tracking branch 'upstream/develop' into develop
1robie Jan 28, 2026
17b57ab
fix: update enum imports and refactor configuration access
1robie Feb 20, 2026
9fc9966
Merge upstream/develop into develop
1robie Feb 20, 2026
780cffd
fix: merge
1robie Feb 20, 2026
abe77a9
fix: enable ItemUpdaterListener in ZMenuPlugin
1robie Feb 20, 2026
d7a7905
feat: add open and close action handling in ZBedrockInventory
1robie Feb 20, 2026
2cf130b
fix: improve Bedrock player validation and inventory management
1robie Feb 20, 2026
eab9800
refactor: update Bedrock loaders to use @NonNull annotations and impr…
1robie Feb 20, 2026
0e40845
refactor: enhance button click handling and improve null safety with …
1robie Feb 20, 2026
88b49f0
refactor: standardize button display text and clarify click requireme…
1robie Feb 20, 2026
77c061e
refactor: enhance click handling in Button class and simplify click r…
1robie Feb 20, 2026
df36344
refactor: streamline item stack creation by consolidating special ite…
1robie Feb 20, 2026
ff50a89
refactor: improve null safety by adding @NonNull annotations to metho…
1robie Feb 20, 2026
13ac715
remove debug
1robie Feb 20, 2026
ebf99bc
Merge remote-tracking branch 'upstream/develop' into develop
1robie Feb 26, 2026
5007fa5
refactor: implement inventory replacement functionality in various cl…
1robie Mar 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 124 additions & 0 deletions API/src/main/java/fr/maxlego08/menu/api/BedrockInventory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package fr.maxlego08.menu.api;

import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.bedrock.BedrockButton;
import fr.maxlego08.menu.api.button.dialogs.InputButton;
import fr.maxlego08.menu.api.engine.InventoryEngine;
import fr.maxlego08.menu.api.engine.InventoryResult;
import fr.maxlego08.menu.api.enums.bedrock.BedrockType;
import fr.maxlego08.menu.api.pattern.Pattern;
import fr.maxlego08.menu.api.requirement.Requirement;
import fr.maxlego08.menu.api.utils.InventoryReplacement;
import fr.maxlego08.menu.api.utils.OpenWithItem;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public interface BedrockInventory extends Inventory {
String getContent(Player player);

List<BedrockButton> getBedrockButtons();

List<BedrockButton> getBedrockButtons(Player player);

List<InputButton> getInputButtons();

List<InputButton> getInputButtons(Player player);

InventoryReplacement getInventoryReplacement();

List<Requirement> getRequirements();

BedrockType getBedrockType();

//TODO getOpenWithItem not implemented but need
@Override
default OpenWithItem getOpenWithItem() {
return null;
}

/**
* Set unUsed méthod of Inventory Interface, don't used in BedrockInventory
*
*/

@Override
default int size() {
return 9;
}

@Override
default InventoryType getType() {
return null;
}

@Override
default boolean shouldCancelItemPickup() {
return false;
}

@Override
default Collection<Button> getButtons() {
return Collections.emptyList();
}

@Override
default Collection<Pattern> getPatterns() {
return Collections.emptyList();
}

@Override
default <T extends Button> List<T> getButtons(Class<T> type) {
return Collections.emptyList();
}

@Override
default int getMaxPage(Collection<Pattern> patterns, Player player, Object... objects) {
return 1;
}

@Override
default List<Button> sortButtons(int page, Object... objects) {
return Collections.emptyList();
}

@Override
default List<Button> sortPatterns(Pattern pattern, int page, Object... objects) {
return Collections.emptyList();
}

@Override
default InventoryResult openInventory(Player player, InventoryEngine InventoryEngine) {
return null;
}

@Override
default void postOpenInventory(Player player, InventoryEngine InventoryEngine) {};

@Override
default void closeInventory(Player player, InventoryEngine InventoryEngine) {}

@Override
default MenuItemStack getFillItemStack() {
return null;
}

@Override
default int getUpdateInterval() {
return 0;
}

@Override
default boolean cleanInventory() {
return false;
}

@Override
default Map<String, String> getTranslatedNames() {
return null;
}
}
49 changes: 49 additions & 0 deletions API/src/main/java/fr/maxlego08/menu/api/BedrockManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package fr.maxlego08.menu.api;

import fr.maxlego08.menu.api.configuration.ConfigManagerInt;
import fr.maxlego08.menu.api.exceptions.DialogException;
import fr.maxlego08.menu.api.exceptions.InventoryException;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

public interface BedrockManager {

BedrockInventory loadBedrockInventory(Plugin plugin, String fileName) throws DialogException;

Optional<BedrockInventory> getBedrockInventory(String name);

Optional<BedrockInventory> getBedrockInventory(String pluginName, String fileName);

Optional<BedrockInventory> getBedrockInventory(Plugin plugin, String fileName);

void deleteBedrockInventory(String name);

void deleteBedrockInventory(Plugin plugin);

void loadBedrockInventory();

BedrockInventory loadInventory(Plugin plugin, String fileName) throws DialogException, InventoryException;

BedrockInventory loadInventory(Plugin plugin, File file) throws DialogException, InventoryException;

BedrockInventory loadInventory(Plugin plugin, String fileName, Class<? extends BedrockInventory> dialogClass) throws DialogException, InventoryException;

BedrockInventory loadInventory(Plugin plugin, File file, Class<? extends BedrockInventory> dialogClass) throws DialogException, InventoryException;

void openBedrockInventory(Player player, BedrockInventory bedrockInventory);

void openBedrockInventory(Player player, BedrockInventory bedrockInventory, List<Inventory> oldInventories);

Collection<BedrockInventory> getBedrockInventory();

void reloadBedrockInventory();

boolean isBedrockPlayer(Player player);

boolean isBedrockPlayer(String value);
}
110 changes: 95 additions & 15 deletions API/src/main/java/fr/maxlego08/menu/api/DialogInventory.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
package fr.maxlego08.menu.api;

import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.dialogs.BodyButton;
import fr.maxlego08.menu.api.button.dialogs.InputButton;
import fr.maxlego08.menu.api.enums.DialogType;
import fr.maxlego08.menu.api.engine.InventoryEngine;
import fr.maxlego08.menu.api.engine.InventoryResult;
import fr.maxlego08.menu.api.enums.dialog.DialogType;
import fr.maxlego08.menu.api.pattern.Pattern;
import fr.maxlego08.menu.api.requirement.Requirement;
import fr.maxlego08.menu.api.utils.OpenWithItem;
import fr.maxlego08.menu.api.utils.dialogs.record.ActionButtonRecord;
import fr.maxlego08.menu.api.utils.dialogs.record.ZDialogInventoryBuild;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;

import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public interface DialogInventory {
String getName(Player player);

public interface DialogInventory extends Inventory{
String getExternalTitle();

String getFileName();

MenuPlugin getPlugin();

File getFile();

void setFile(File file);

boolean canCloseWithEscape();

void setCanCloseWithEscape(boolean canCloseWithEscape);
Expand Down Expand Up @@ -139,9 +138,90 @@ public interface DialogInventory {

ActionButtonRecord getActionButtonServerLink();

void setOpenRequirement(Requirement openRequirement);
//TODO getOpenWithItem not implemented but need
@Override
default OpenWithItem getOpenWithItem() {
return null;
}

Requirement getOpenRequirement();
/**
* Set unUsed méthod of Inventory Interface, don't used in BedrockInventory
*
*/

boolean hasOpenRequirement(Player player);
@Override
default int size() {
return 9;
}

@Override
default InventoryType getType() {
return null;
}

@Override
default boolean shouldCancelItemPickup() {
return false;
}

@Override
default Collection<Button> getButtons() {
return Collections.emptyList();
}

@Override
default Collection<Pattern> getPatterns() {
return Collections.emptyList();
}

@Override
default <T extends Button> List<T> getButtons(Class<T> type) {
return Collections.emptyList();
}

@Override
default int getMaxPage(Collection<Pattern> patterns, Player player, Object... objects) {
return 1;
}

@Override
default List<Button> sortButtons(int page, Object... objects) {
return Collections.emptyList();
}

@Override
default List<Button> sortPatterns(Pattern pattern, int page, Object... objects) {
return Collections.emptyList();
}

@Override
default InventoryResult openInventory(Player player, InventoryEngine InventoryEngine) {
return null;
}

@Override
default void postOpenInventory(Player player, InventoryEngine InventoryEngine) {};

@Override
default void closeInventory(Player player, InventoryEngine InventoryEngine) {}

@Override
default MenuItemStack getFillItemStack() {
return null;
}

@Override
default int getUpdateInterval() {
return 0;
}

@Override
default boolean cleanInventory() {
return false;
}

@Override
default Map<String, String> getTranslatedNames() {
return null;
}
}
5 changes: 3 additions & 2 deletions API/src/main/java/fr/maxlego08/menu/api/DialogManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

public interface DialogManager {
Expand Down Expand Up @@ -40,9 +41,9 @@ public interface DialogManager {

//Optional<DialogBuilder> getDialogBuilder(DialogBodyType type);

Collection<DialogInventory> getDialogs();
void openDialog(Player player, DialogInventory dialogInventory, List<Inventory> oldInventories);

InventoryManager getInventoryManager();
Collection<DialogInventory> getDialogs();

void reloadDialogs();

Expand Down
2 changes: 2 additions & 0 deletions API/src/main/java/fr/maxlego08/menu/api/MenuPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ public interface MenuPlugin extends Plugin {
*/
CommandManager getCommandManager();

BedrockManager getBedrockManager();

/**
* Returns the storage manager.
* This method returns the storage manager, which is used for storing and retrieving data.
Expand Down
10 changes: 5 additions & 5 deletions API/src/main/java/fr/maxlego08/menu/api/button/Button.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
import fr.maxlego08.menu.api.utils.Placeholders;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.inventory.*;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -166,7 +166,7 @@ public void onMiddleClick(Player player, InventoryClickEvent event, InventoryEng
public void onInventoryClose(Player player, InventoryEngine inventory) {
}

public void onClick(Player player, InventoryClickEvent event, InventoryEngine inventory, int slot, Placeholders placeholders) {
public void onClick(Player player, @Nullable InventoryClickEvent event, InventoryEngine inventory, int slot, Placeholders placeholders) {
if (this.closeInventory()) {
player.closeInventory();
}
Expand Down Expand Up @@ -194,15 +194,15 @@ public void onClick(Player player, InventoryClickEvent event, InventoryEngine in
AtomicBoolean isSuccess = new AtomicBoolean(true);

this.clickRequirements.forEach(requirement -> {
if (requirement.getClickTypes().contains(event.getClick())) {
if (event == null || requirement.getClickTypes().contains(event.getClick())) {
isSuccess.set(requirement.execute(player, this, inventory, placeholders));
}
});

this.actions.forEach(action -> action.preExecute(player, this, inventory, placeholders));
this.options.forEach(option -> option.onClick(this, player, event, inventory, slot, isSuccess.get()));

this.execute(this.plugin, event.getClick(), placeholders, player);
this.execute(this.plugin, event == null ? ClickType.LEFT : event.getClick(), placeholders, player);
}

public void onInventoryOpen(Player player, InventoryEngine inventory, Placeholders placeholders) {
Expand Down
Loading
Loading