Skip to content

Commit 9d22fd1

Browse files
committed
Merge branch 'release/1.0.2.6'
2 parents 3c1c247 + 70eb506 commit 9d22fd1

35 files changed

Lines changed: 727 additions & 98 deletions

changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@
3434

3535
# Unreleased
3636

37+
# 1.0.2.6
38+
39+
- Add BlockPlaceEvent for Anti Dupe
40+
- Add placeholder %zmenu_test% for testing
41+
- Fix sound action, pitch and volume was reversed
42+
- Add ``job`` requirement. Check if the player has a job with JobsReborn plugins
43+
- Added a cache on placeholders. By default, the cache is 500ms. That corresponds to opening a menu. So if you have several times the same placeholder used, it will only be called once.
44+
3745
# 1.0.2.5
3846

3947
- Add new lore as string support

dependency-reduced-pom.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,19 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>fr.maxlego08</groupId>
55
<artifactId>zmenu</artifactId>
6-
<version>1.0.2.5</version>
6+
<version>1.0.2.6</version>
77
<build>
88
<sourceDirectory>src</sourceDirectory>
9+
<resources>
10+
<resource>
11+
<targetPath>.</targetPath>
12+
<filtering>true</filtering>
13+
<directory>src/main/resources/</directory>
14+
<includes>
15+
<include>*.yml</include>
16+
</includes>
17+
</resource>
18+
</resources>
919
<plugins>
1020
<plugin>
1121
<artifactId>maven-compiler-plugin</artifactId>
@@ -210,6 +220,13 @@
210220
<version>2.19.0</version>
211221
<scope>provided</scope>
212222
</dependency>
223+
<dependency>
224+
<groupId>com.github.Zrips</groupId>
225+
<artifactId>Jobs</artifactId>
226+
<version>5.2.2.3</version>
227+
<scope>system</scope>
228+
<systemPath>${basedir}/libs/Jobs5.2.2.3.jar</systemPath>
229+
</dependency>
213230
</dependencies>
214231
<properties>
215232
<xseries.version>9.4.0</xseries.version>

libs/Jobs5.2.2.3.jar

957 KB
Binary file not shown.

pom.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>fr.maxlego08</groupId>
55
<artifactId>zmenu</artifactId>
6-
<version>1.0.2.5</version>
6+
<version>1.0.2.6</version>
77
<properties>
88
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
99
<maven.compiler.source>8</maven.compiler.source>
@@ -14,6 +14,16 @@
1414
</properties>
1515
<build>
1616
<sourceDirectory>src</sourceDirectory>
17+
<resources>
18+
<resource>
19+
<targetPath>.</targetPath>
20+
<filtering>true</filtering>
21+
<directory>src/main/resources/</directory>
22+
<includes>
23+
<include>*.yml</include>
24+
</includes>
25+
</resource>
26+
</resources>
1727
<plugins>
1828
<plugin>
1929
<artifactId>maven-compiler-plugin</artifactId>
@@ -238,5 +248,12 @@
238248
<version>2.19.0</version>
239249
<scope>provided</scope>
240250
</dependency>
251+
<dependency>
252+
<groupId>com.github.Zrips</groupId>
253+
<artifactId>Jobs</artifactId>
254+
<version>5.2.2.3</version> <!-- Change the LATEST to the current version of jobs -->
255+
<scope>system</scope>
256+
<systemPath>${basedir}/libs/Jobs5.2.2.3.jar</systemPath>
257+
</dependency>
241258
</dependencies>
242259
</project>

src/fr/maxlego08/menu/MenuItemStack.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package fr.maxlego08.menu;
22

33
import fr.maxlego08.menu.api.InventoryManager;
4+
import fr.maxlego08.menu.api.attribute.IAttribute;
45
import fr.maxlego08.menu.api.loader.MaterialLoader;
6+
import fr.maxlego08.menu.api.utils.Placeholders;
57
import fr.maxlego08.menu.save.Config;
68
import fr.maxlego08.menu.zcore.logger.Logger;
79
import fr.maxlego08.menu.zcore.utils.Banner;
@@ -10,7 +12,6 @@
1012
import fr.maxlego08.menu.zcore.utils.Potion;
1113
import fr.maxlego08.menu.zcore.utils.ZUtils;
1214
import fr.maxlego08.menu.zcore.utils.attribute.AttributeApplier;
13-
import fr.maxlego08.menu.api.attribute.IAttribute;
1415
import fr.maxlego08.menu.zcore.utils.meta.Meta;
1516
import fr.maxlego08.menu.zcore.utils.nms.NMSUtils;
1617
import fr.maxlego08.menu.zcore.utils.nms.NmsVersion;
@@ -24,7 +25,12 @@
2425
import org.bukkit.inventory.meta.SkullMeta;
2526

2627
import javax.annotation.Nullable;
27-
import java.util.*;
28+
import java.util.ArrayList;
29+
import java.util.HashMap;
30+
import java.util.List;
31+
import java.util.Map;
32+
import java.util.Objects;
33+
import java.util.Optional;
2834

2935
public class MenuItemStack extends ZUtils {
3036

@@ -117,6 +123,10 @@ public ItemStack build(Player player) {
117123
}
118124

119125
public ItemStack build(Player player, boolean useCache) {
126+
return build(player, useCache, new Placeholders());
127+
}
128+
129+
public ItemStack build(Player player, boolean useCache, Placeholders placeholders) {
120130

121131
// If we don’t need PlaceHolderApi, then we use the cache
122132
if (!this.needPlaceholderAPI && this.cacheItemStack != null && Config.enableCacheItemStack && useCache) {
@@ -211,15 +221,15 @@ public ItemStack build(Player player, boolean useCache) {
211221

212222
if (this.displayName != null) {
213223
try {
214-
Meta.meta.updateDisplayName(itemMeta, this.displayName, player);
224+
Meta.meta.updateDisplayName(itemMeta, placeholders.parse(this.displayName), player);
215225
} catch (Exception exception) {
216226
Logger.info("Error with update display name for item " + path + " in file " + filePath + " (" + player + ", " + this.displayName + ")", Logger.LogType.ERROR);
217227
exception.printStackTrace();
218228
}
219229
}
220230

221231
if (!this.lore.isEmpty()) {
222-
Meta.meta.updateLore(itemMeta, this.lore, player);
232+
Meta.meta.updateLore(itemMeta, placeholders.parse(this.lore), player);
223233
}
224234

225235
if (this.isGlowing && NMSUtils.getNMSVersion() != 1.7) {
@@ -242,7 +252,7 @@ public ItemStack build(Player player, boolean useCache) {
242252
}
243253
});
244254

245-
this.flags.forEach(itemMeta::addItemFlags);
255+
this.flags.forEach(itemMeta::addItemFlags);
246256

247257
itemStack.setItemMeta(itemMeta);
248258

src/fr/maxlego08/menu/MenuPlugin.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@
1818
import fr.maxlego08.menu.inventory.inventories.InventoryDefault;
1919
import fr.maxlego08.menu.listener.AdapterListener;
2020
import fr.maxlego08.menu.listener.SwapKeyListener;
21-
import fr.maxlego08.menu.loader.materials.*;
21+
import fr.maxlego08.menu.loader.materials.Base64Loader;
22+
import fr.maxlego08.menu.loader.materials.EcoLoader;
23+
import fr.maxlego08.menu.loader.materials.HeadDatabaseLoader;
24+
import fr.maxlego08.menu.loader.materials.ItemsAdderLoader;
25+
import fr.maxlego08.menu.loader.materials.NovaLoader;
26+
import fr.maxlego08.menu.loader.materials.OraxenLoader;
27+
import fr.maxlego08.menu.loader.materials.SlimeFunLoader;
2228
import fr.maxlego08.menu.pattern.ZPatternManager;
2329
import fr.maxlego08.menu.placeholder.LocalPlaceholder;
2430
import fr.maxlego08.menu.players.ZDataManager;
@@ -65,7 +71,7 @@ public class MenuPlugin extends ZPlugin {
6571
private final CommandManager commandManager = new ZCommandManager(this);
6672
private final MessageLoader messageLoader = new MessageLoader(this);
6773
private final DataManager dataManager = new ZDataManager(this);
68-
private final WebsiteManager websiteManager = new ZWebsiteManager(this);
74+
private final ZWebsiteManager websiteManager = new ZWebsiteManager(this);
6975
private final InventoriesPlayer inventoriesPlayer = new ZInventoriesPlayer(this);
7076
private final PatternManager patternManager = new ZPatternManager(this);
7177
private CommandMenu commandMenu;
@@ -106,6 +112,8 @@ public void onEnable() {
106112
files.add("inventories/pro_inventory.yml");
107113
files.add("inventories/example_punish.yml");
108114

115+
// files.add("website/marketplace.yml");
116+
109117
files.add("commands/commands.yml");
110118
files.add("commands/punish/punish.yml");
111119

@@ -114,21 +122,19 @@ public void onEnable() {
114122

115123
File folder = new File(this.getDataFolder(), "inventories");
116124

117-
if (!folder.exists()) {
118-
folder.mkdirs();
125+
if (!folder.exists()) folder.mkdirs();
119126

120-
if (Config.generateDefaultFile) {
121-
files.forEach(filePath -> {
122-
if (!new File(this.getDataFolder(), filePath).exists()) {
127+
if (Config.generateDefaultFile) {
128+
files.forEach(filePath -> {
129+
if (!new File(this.getDataFolder(), filePath).exists()) {
123130

124-
if (NMSUtils.isNewVersion()) {
125-
saveResource(filePath.replace("inventories/", "inventories/1_13/"), filePath, false);
126-
} else {
127-
saveResource(filePath, false);
128-
}
131+
if (NMSUtils.isNewVersion()) {
132+
saveResource(filePath.replace("inventories/", "inventories/1_13/").replace("website/", "website/1_13/"), filePath, false);
133+
} else {
134+
saveResource(filePath, false);
129135
}
130-
});
131-
}
136+
}
137+
});
132138
}
133139

134140
this.zCommandManager = new VCommandManager(this);
@@ -192,6 +198,9 @@ public void onEnable() {
192198
return optional.orElse(null);
193199
});
194200

201+
this.websiteManager.registerPlaceholders();
202+
localPlaceholder.register("test", (a, b) -> "&ctest");
203+
195204
((ZDataManager) this.dataManager).registerPlaceholder(localPlaceholder);
196205

197206
new Metrics(this, 14951);
@@ -211,7 +220,7 @@ public void onEnable() {
211220
this.addListener(new DupeListener(this.scheduler, this.dupeManager));
212221
}
213222

214-
if (Config.enableDebug){
223+
if (Config.enableDebug) {
215224
Logger.info("Scheduler: " + this.scheduler);
216225
Logger.info("DupeManager: " + this.dupeManager);
217226
}
@@ -221,6 +230,7 @@ public void onEnable() {
221230
Logger.info("zMenu’s site includes an inventory editor (under development), a marketplace (already available) is a forum (under development)");
222231
Logger.info("");
223232

233+
224234
this.postEnable();
225235
}
226236

@@ -282,7 +292,7 @@ public CommandManager getCommandManager() {
282292
*
283293
* @return the websitemanager
284294
*/
285-
public WebsiteManager getWebsiteManager() {
295+
public ZWebsiteManager getWebsiteManager() {
286296
return websiteManager;
287297
}
288298

src/fr/maxlego08/menu/ZInventory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import fr.maxlego08.menu.api.requirement.Requirement;
88
import fr.maxlego08.menu.api.utils.OpenWithItem;
99
import fr.maxlego08.menu.inventory.inventories.InventoryDefault;
10+
import fr.maxlego08.menu.zcore.utils.ZUtils;
1011
import fr.maxlego08.menu.zcore.utils.inventory.InventoryResult;
1112
import org.bukkit.entity.Player;
1213
import org.bukkit.inventory.InventoryHolder;
@@ -20,7 +21,7 @@
2021
import java.util.Optional;
2122
import java.util.stream.Collectors;
2223

23-
public class ZInventory implements Inventory {
24+
public class ZInventory extends ZUtils implements Inventory {
2425

2526
private final Plugin plugin;
2627
private final String name;

src/fr/maxlego08/menu/ZInventoryManager.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import fr.maxlego08.menu.api.event.events.PlayerOpenInventoryEvent;
1010
import fr.maxlego08.menu.api.itemstack.ItemStackSimilar;
1111
import fr.maxlego08.menu.api.loader.MaterialLoader;
12+
import fr.maxlego08.menu.api.scheduler.ZScheduler;
1213
import fr.maxlego08.menu.api.utils.MetaUpdater;
1314
import fr.maxlego08.menu.api.utils.OpenWithItem;
1415
import fr.maxlego08.menu.button.buttons.ZNoneButton;
@@ -42,6 +43,7 @@
4243
import fr.maxlego08.menu.loader.actions.SoundLoader;
4344
import fr.maxlego08.menu.loader.actions.TitleLoader;
4445
import fr.maxlego08.menu.loader.permissible.ItemPermissibleLoader;
46+
import fr.maxlego08.menu.loader.permissible.JobPermissibleLoader;
4547
import fr.maxlego08.menu.loader.permissible.PermissionPermissibleLoader;
4648
import fr.maxlego08.menu.loader.permissible.PlaceholderPermissibleLoader;
4749
import fr.maxlego08.menu.loader.permissible.RegexPermissibleLoader;
@@ -54,6 +56,7 @@
5456
import fr.maxlego08.menu.zcore.utils.loader.Loader;
5557
import fr.maxlego08.menu.zcore.utils.meta.Meta;
5658
import fr.maxlego08.menu.zcore.utils.nms.ItemStackUtils;
59+
import fr.maxlego08.menu.zcore.utils.plugins.Plugins;
5760
import fr.maxlego08.menu.zcore.utils.storage.Persist;
5861
import org.bukkit.Bukkit;
5962
import org.bukkit.command.CommandSender;
@@ -255,6 +258,9 @@ public void loadButtons() {
255258
buttonManager.registerPermissible(new PermissionPermissibleLoader(buttonManager));
256259
buttonManager.registerPermissible(new ItemPermissibleLoader(buttonManager));
257260
buttonManager.registerPermissible(new RegexPermissibleLoader(buttonManager));
261+
if (this.plugin.isEnable(Plugins.JOBS)) {
262+
buttonManager.registerPermissible(new JobPermissibleLoader(buttonManager));
263+
}
258264

259265
// Load actions
260266
buttonManager.registerAction(new BroadcastLoader());
@@ -296,6 +302,8 @@ public void loadButtons() {
296302

297303
ButtonLoaderRegisterEvent event = new ButtonLoaderRegisterEvent(buttonManager);
298304
event.call();
305+
306+
plugin.getWebsiteManager().loadButtons(buttonManager);
299307
}
300308

301309
@Override
@@ -334,6 +342,8 @@ public void loadInventories() {
334342
}
335343
}
336344
}
345+
346+
this.plugin.getWebsiteManager().loadInventories(this);
337347
}
338348

339349
@Override
@@ -527,6 +537,17 @@ public void updateInventory(Player player) {
527537
}
528538
}
529539

540+
@Override
541+
public void updateInventory(Player player, Plugin plugin) {
542+
InventoryHolder holder = player.getOpenInventory().getTopInventory().getHolder();
543+
if (holder instanceof InventoryDefault) {
544+
InventoryDefault inventoryDefault = (InventoryDefault) holder;
545+
if (inventoryDefault.getMenuInventory().getPlugin() == plugin) {
546+
this.openInventory(player, inventoryDefault.getMenuInventory(), inventoryDefault.getPage(), inventoryDefault.getOldInventories());
547+
}
548+
}
549+
}
550+
530551
@Override
531552
public void saveItem(CommandSender sender, ItemStack itemStack, String name, String type) {
532553

@@ -620,4 +641,9 @@ public Optional<ItemStackSimilar> getItemStackVerification(String name) {
620641
public Collection<ItemStackSimilar> getItemStackVerifications() {
621642
return this.itemStackSimilarMap.values();
622643
}
644+
645+
@Override
646+
public ZScheduler getScheduler() {
647+
return this.plugin.getScheduler();
648+
}
623649
}

src/fr/maxlego08/menu/api/InventoryManager.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import fr.maxlego08.menu.api.event.events.ButtonLoaderRegisterEvent;
55
import fr.maxlego08.menu.api.itemstack.ItemStackSimilar;
66
import fr.maxlego08.menu.api.loader.MaterialLoader;
7+
import fr.maxlego08.menu.api.scheduler.ZScheduler;
78
import fr.maxlego08.menu.api.utils.MetaUpdater;
89
import fr.maxlego08.menu.exceptions.InventoryException;
910
import fr.maxlego08.menu.zcore.utils.storage.Savable;
@@ -339,6 +340,14 @@ public interface InventoryManager extends Savable, Listener {
339340
*/
340341
void updateInventory(Player player);
341342

343+
/**
344+
* Opens the player’s current inventory again if the plugin is the same.
345+
*
346+
* @param player The player.
347+
* @param plugin The plugin.
348+
*/
349+
void updateInventory(Player player, Plugin plugin);
350+
342351
/**
343352
* Save item in config file
344353
*
@@ -384,4 +393,6 @@ public interface InventoryManager extends Savable, Listener {
384393
* @return A Collection of ItemStackSimilar instances representing all registered verification strategies.
385394
*/
386395
Collection<ItemStackSimilar> getItemStackVerifications();
396+
397+
ZScheduler getScheduler();
387398
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package fr.maxlego08.menu.api.requirement.permissible;
2+
3+
import fr.maxlego08.menu.api.requirement.Permissible;
4+
5+
public interface JobPermissible extends Permissible {
6+
7+
String getJobName();
8+
9+
}

0 commit comments

Comments
 (0)