Skip to content

Commit 1e8437f

Browse files
authored
Fix MMOITems lore duplication issue (#278)
1 parent 6fb069d commit 1e8437f

3 files changed

Lines changed: 41 additions & 34 deletions

File tree

.gitignore

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
.gradle
2-
.idea
3-
build
4-
test-server/
1+
.gradle/
2+
.idea/
3+
.vscode/
4+
5+
build/
6+
test-server/
7+
8+
.claude/
9+
CLAUDE.md

src/main/java/com/extendedclip/deluxemenus/hooks/MMOItemsHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public ItemStack getItem(@NotNull final String... arguments) {
5757

5858
cache.put(arguments[0], item);
5959

60-
return item;
60+
return item.clone();
6161
}).get();
6262
} catch (InterruptedException | ExecutionException e) {
6363
plugin.debug(DebugLevel.HIGHEST, Level.SEVERE, "Error getting MMOItem synchronously.");

src/main/java/com/extendedclip/deluxemenus/menu/command/RegistrableMenuCommand.java

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.extendedclip.deluxemenus.DeluxeMenus;
44
import com.extendedclip.deluxemenus.menu.Menu;
5-
import com.extendedclip.deluxemenus.scheduler.scheduling.schedulers.TaskScheduler;
65
import com.extendedclip.deluxemenus.utils.DebugLevel;
76
import com.extendedclip.deluxemenus.utils.StringUtils;
87
import me.clip.placeholderapi.util.Msg;
@@ -27,7 +26,6 @@ public class RegistrableMenuCommand extends Command {
2726
private static CommandMap commandMap = null;
2827

2928
private final DeluxeMenus plugin;
30-
private final TaskScheduler scheduler;
3129

3230
private Menu menu;
3331
private boolean registered = false;
@@ -37,7 +35,6 @@ public RegistrableMenuCommand(final @NotNull DeluxeMenus plugin,
3735
final @NotNull Menu menu) {
3836
super(menu.options().commands().isEmpty() ? menu.options().name() : menu.options().commands().get(0));
3937
this.plugin = plugin;
40-
this.scheduler = plugin.getScheduler();
4138
this.menu = menu;
4239

4340
if (menu.options().commands().size() > 1) {
@@ -89,36 +86,41 @@ public boolean execute(final @NotNull CommandSender sender, final @NotNull Strin
8986
}
9087

9188
public void register() {
92-
scheduler.runTask(() -> {
93-
if (registered) {
94-
throw new IllegalStateException("This command was already registered!");
95-
}
89+
if (registered) {
90+
throw new IllegalStateException("This command was already registered!");
91+
}
9692

97-
registered = true;
98-
99-
if (commandMap == null) {
100-
try {
101-
final Field f = Bukkit.getServer().getClass().getDeclaredField("commandMap");
102-
f.setAccessible(true);
103-
commandMap = (CommandMap) f.get(Bukkit.getServer());
104-
} catch (final @NotNull Exception exception) {
105-
plugin.printStacktrace(
106-
"Something went wrong while trying to register command: " + this.getName(),
107-
exception
108-
);
109-
return;
110-
}
111-
}
93+
registered = true;
11294

113-
boolean registered = commandMap.register(FALLBACK_PREFIX, this);
114-
if (registered) {
115-
plugin.debug(
116-
DebugLevel.LOW,
117-
Level.INFO,
118-
"Registered command: " + this.getName() + " for menu: " + menu.options().name()
95+
if (commandMap == null) {
96+
try {
97+
final Field f = Bukkit.getServer().getClass().getDeclaredField("commandMap");
98+
f.setAccessible(true);
99+
commandMap = (CommandMap) f.get(Bukkit.getServer());
100+
} catch (final @NotNull Exception exception) {
101+
plugin.printStacktrace(
102+
"Something went wrong while trying to register command: " + this.getName(),
103+
exception
119104
);
105+
return;
120106
}
121-
});
107+
}
108+
109+
boolean registered = commandMap.register(FALLBACK_PREFIX, this);
110+
if (registered) {
111+
plugin.debug(
112+
DebugLevel.LOW,
113+
Level.INFO,
114+
"Registered command: " + this.getName() + " for menu: " + menu.options().name()
115+
);
116+
} else {
117+
plugin.debug(
118+
DebugLevel.HIGHEST,
119+
Level.WARNING,
120+
"Failed to register command: " + this.getName() + " for menu: " + menu.options().name()
121+
+ ". A command with that name already exists. Use /deluxemenus:" + this.getName() + " instead."
122+
);
123+
}
122124
}
123125

124126
public void unregister() {

0 commit comments

Comments
 (0)