Skip to content

Commit 330d669

Browse files
committed
Merge branch 'release/1.0.2.9'
2 parents 37a9d35 + 027036a commit 330d669

32 files changed

+444
-76
lines changed

changelog.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,26 @@
3434
- [ ] Can split a file into several and thus avoid having too large files
3535
- [ ] Add open link with a book
3636
- [ ] Add slot type for create pattern (Allows to fill slot areas as do the outline of the inventory)
37+
- [ ] Be able to set default values for player data
3738

3839
# Unreleased
3940

41+
# 1.0.2.9
42+
43+
- Added support for [zHead](https://www.spigotmc.org/resources/zhead-database-plugin-for-heads.115717/). A free and open source head database plugin (with more than 72.000 heads)
44+
- Create new placeholder ``%zmenu_player_page%``, return player page
45+
- Create new placeholder ``%zmenu_player_max_page%&``, return player max page
46+
- Change NEXT and PREVIOUS button. If you click right you will go directly to the first or last page.
47+
- Improve MiniMessage format with italic text
48+
- Create new file: `default_values.yml`, it will contain all the default values for the placeholders of the player data.
49+
- Create pattern for Button. You can create a pattern file for a button with placeholders. And in your inventory, just call the pattern with a placeholder list. The placeholders will be replaced by your values and the button will be loaded with the new values. Thus, you can have dozens of similar buttons while reducing your configurations by several hundred lines. More information [here](https://docs.zmenu.dev/configurations/patterns#button).
50+
- Creation of 5 configurations for zMenu:
51+
1. PLAYTIME LEVELS - zMenu Configurations: https://minecraft-inventory-builder.com/resources/9
52+
2. VOTE MENU - zMenu Configurations: https://minecraft-inventory-builder.com/resources/8
53+
3. DONUTSMP HOME - zMenu Configurations: https://minecraft-inventory-builder.com/resources/7
54+
4. zAuctionHouse - Hypixel AuctionHouse: https://minecraft-inventory-builder.com/resources/6
55+
5. zAuctionHouse - DonutSMP AuctionHouse: https://minecraft-inventory-builder.com/resources/5
56+
4057
# 1.0.2.8
4158

4259
- Add /zm inventories - Allows access to the inventories of the online inventory editor

dependency-reduced-pom.xml

Lines changed: 7 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.8</version>
6+
<version>1.0.2.9</version>
77
<build>
88
<sourceDirectory>src</sourceDirectory>
99
<resources>
@@ -227,6 +227,12 @@
227227
<version>2.19.0</version>
228228
<scope>provided</scope>
229229
</dependency>
230+
<dependency>
231+
<groupId>com.github.Maxlego08</groupId>
232+
<artifactId>zHead</artifactId>
233+
<version>1.1</version>
234+
<scope>provided</scope>
235+
</dependency>
230236
<dependency>
231237
<groupId>net.luckperms</groupId>
232238
<artifactId>api</artifactId>

pom.xml

Lines changed: 7 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.8</version>
6+
<version>1.0.2.9</version>
77
<properties>
88
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
99
<maven.compiler.source>8</maven.compiler.source>
@@ -262,6 +262,12 @@
262262
<scope>system</scope>
263263
<systemPath>${basedir}/libs/Jobs5.2.2.3.jar</systemPath>
264264
</dependency>
265+
<dependency>
266+
<groupId>com.github.Maxlego08</groupId>
267+
<artifactId>zHead</artifactId>
268+
<version>1.1</version>
269+
<scope>provided</scope>
270+
</dependency>
265271
<dependency>
266272
<groupId>net.luckperms</groupId>
267273
<artifactId>api</artifactId>

src/fr/maxlego08/menu/MenuPlugin.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import fr.maxlego08.menu.loader.materials.NovaLoader;
2626
import fr.maxlego08.menu.loader.materials.OraxenLoader;
2727
import fr.maxlego08.menu.loader.materials.SlimeFunLoader;
28+
import fr.maxlego08.menu.loader.materials.ZHeadLoader;
2829
import fr.maxlego08.menu.pattern.ZPatternManager;
2930
import fr.maxlego08.menu.placeholder.LocalPlaceholder;
3031
import fr.maxlego08.menu.players.ZDataManager;
@@ -172,6 +173,9 @@ public void onEnable() {
172173
if (this.isEnable(Plugins.HEADDATABASE)) {
173174
this.inventoryManager.registerMaterialLoader(new HeadDatabaseLoader());
174175
}
176+
if (this.isEnable(Plugins.ZHEAD)) {
177+
this.inventoryManager.registerMaterialLoader(new ZHeadLoader(this));
178+
}
175179
if (this.isEnable(Plugins.ORAXEN)) {
176180
this.inventoryManager.registerMaterialLoader(new OraxenLoader());
177181
}
@@ -198,6 +202,8 @@ public void onEnable() {
198202

199203
this.websiteManager.registerPlaceholders();
200204
localPlaceholder.register("test", (a, b) -> "&ctest");
205+
localPlaceholder.register("player_page", (player, s) -> String.valueOf(this.inventoryManager.getPage(player)));
206+
localPlaceholder.register("player_max_page", (player, s) -> String.valueOf(this.inventoryManager.getMaxPage(player)));
201207

202208
((ZDataManager) this.dataManager).registerPlaceholder(localPlaceholder);
203209

@@ -229,7 +235,8 @@ public void onEnable() {
229235
Logger.info("");
230236

231237

232-
websiteManager.loadPlaceholders();
238+
this.websiteManager.loadPlaceholders();
239+
this.dataManager.loadDefaultValues();
233240

234241
this.postEnable();
235242
}

src/fr/maxlego08/menu/ZInventoryManager.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import fr.maxlego08.menu.zcore.utils.plugins.Plugins;
6262
import fr.maxlego08.menu.zcore.utils.storage.Persist;
6363
import org.bukkit.Bukkit;
64+
import org.bukkit.OfflinePlayer;
6465
import org.bukkit.command.CommandSender;
6566
import org.bukkit.configuration.ConfigurationSection;
6667
import org.bukkit.configuration.file.YamlConfiguration;
@@ -102,6 +103,9 @@ public class ZInventoryManager extends ZUtils implements InventoryManager {
102103
private final Map<Plugin, FastEvent> fastEventMap = new HashMap<>();
103104
private final Map<String, ItemStackSimilar> itemStackSimilarMap = new HashMap<>();
104105

106+
private final Map<UUID, Integer> playerPages = new HashMap<>();
107+
private final Map<UUID, Integer> playerMaxPages = new HashMap<>();
108+
105109
public ZInventoryManager(MenuPlugin plugin) {
106110
super();
107111
this.plugin = plugin;
@@ -315,6 +319,9 @@ public void loadButtons() {
315319
@Override
316320
public void loadInventories() {
317321

322+
this.playerMaxPages.clear();
323+
this.playerPages.clear();
324+
318325
// Check if file exist
319326
File folder = new File(this.plugin.getDataFolder(), "inventories");
320327
if (!folder.exists()) {
@@ -675,4 +682,20 @@ public void unregisterOptions(Plugin plugin) {
675682
public Map<Plugin, List<Class<? extends ButtonOption>>> getOptions() {
676683
return this.buttonOptions;
677684
}
685+
686+
@Override
687+
public void setPlayerPage(OfflinePlayer player, int page, int maxPage) {
688+
this.playerPages.put(player.getUniqueId(), page);
689+
this.playerMaxPages.put(player.getUniqueId(), maxPage);
690+
}
691+
692+
@Override
693+
public int getPage(OfflinePlayer player) {
694+
return this.playerPages.getOrDefault(player.getUniqueId(), 0);
695+
}
696+
697+
@Override
698+
public int getMaxPage(OfflinePlayer player) {
699+
return this.playerMaxPages.getOrDefault(player.getUniqueId(), 0);
700+
}
678701
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import fr.maxlego08.menu.api.utils.MetaUpdater;
1010
import fr.maxlego08.menu.exceptions.InventoryException;
1111
import fr.maxlego08.menu.zcore.utils.storage.Savable;
12+
import org.bukkit.OfflinePlayer;
1213
import org.bukkit.command.CommandSender;
1314
import org.bukkit.entity.Player;
1415
import org.bukkit.event.Listener;
@@ -432,4 +433,10 @@ public interface InventoryManager extends Savable, Listener {
432433
* @return An Optional containing the button option class if found, or an empty Optional if not found.
433434
*/
434435
Optional<Class<? extends ButtonOption>> getOption(String name);
436+
437+
void setPlayerPage(OfflinePlayer player, int page, int maxPage);
438+
439+
int getPage(OfflinePlayer player);
440+
441+
int getMaxPage(OfflinePlayer player);
435442
}

src/fr/maxlego08/menu/api/players/Data.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,8 @@ public interface Data {
3333
*/
3434
boolean isExpired();
3535

36+
void add(int amount);
37+
38+
void remove(int amount);
39+
3640
}

src/fr/maxlego08/menu/api/players/DataManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,6 @@ public interface DataManager extends Savable {
5252
*/
5353
void clearPlayer(UUID uniqueId);
5454

55+
void loadDefaultValues();
56+
5557
}

src/fr/maxlego08/menu/api/requirement/data/ActionPlayerDataType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ public enum ActionPlayerDataType {
55
SET,
66
REMOVE,
77

8+
ADD,
9+
10+
SUBTRACT,
11+
812
}

src/fr/maxlego08/menu/api/utils/Placeholders.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@
99

1010
public class Placeholders {
1111

12-
private final Map<String, String> placeholders = new HashMap<>();
12+
private final Map<String, String> placeholders;
13+
14+
public Placeholders(Map<String, String> placeholders) {
15+
this.placeholders = placeholders;
16+
}
17+
18+
public Placeholders() {
19+
this(new HashMap<>());
20+
}
1321

1422
public void register(String key, String value) {
1523
this.placeholders.put(key, value);
@@ -43,4 +51,36 @@ public String parse(String string) {
4351
return string;
4452
}
4553

54+
public String parse(String string, String key, String value) {
55+
try {
56+
57+
string = string.replace("%" + key + "%", value);
58+
string = string.replace("%upper_" + key + "%", value.toUpperCase());
59+
string = string.replace("%lower_" + key + "%", value.toLowerCase());
60+
String capitalize = value;
61+
if (capitalize.length() > 1) {
62+
capitalize = capitalize.substring(0, 1).toUpperCase() + capitalize.substring(1);
63+
}
64+
string = string.replace("%capitalize_" + key + "%", capitalize);
65+
66+
if (string.contains("%add_one_" + key + "%")) {
67+
try {
68+
string = string.replace("%add_one_" + key + "%", String.valueOf(Integer.parseInt(value) + 1));
69+
} catch (NumberFormatException ignored) {
70+
}
71+
}
72+
73+
if (string.contains("%remove_one_" + key + "%")) {
74+
try {
75+
string = string.replace("%remove_one_" + key + "%", String.valueOf(Integer.parseInt(value) - 1));
76+
} catch (NumberFormatException ignored) {
77+
}
78+
}
79+
} catch (Exception exception) {
80+
exception.printStackTrace();
81+
Logger.info("Error with placeholder key " + key + " !", Logger.LogType.ERROR);
82+
}
83+
return string;
84+
}
85+
4686
}

0 commit comments

Comments
 (0)