Skip to content

Commit 5e355c7

Browse files
committed
bump to latest & bump invui to 2.0
1 parent e3bbcbd commit 5e355c7

14 files changed

Lines changed: 139 additions & 100 deletions

File tree

build.gradle.kts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
22
id("java")
3-
id("com.mineplex.sdk.plugin") version "1.21.9"
43
id("maven-publish")
4+
id("com.gradleup.shadow") version "9.1.0"
55
}
66

77
group = "net.plexverse"
@@ -39,12 +39,15 @@ repositories {
3939
}
4040

4141
dependencies {
42-
implementation("xyz.xenondevs.invui:invui:1.46")
42+
compileOnly("io.papermc.paper:paper-api:1.21.8-R0.1-SNAPSHOT")
43+
implementation("xyz.xenondevs.invui:invui:2.0.0-alpha.15")
4344
implementation("com.google.code.gson:gson:2.10.1")
4445
compileOnly("org.projectlombok:lombok:1.18.30")
46+
annotationProcessor("org.projectlombok:lombok:1.18.30")
4547
implementation("com.oop:memory-store:4.0")
4648
implementation("com.fasterxml.jackson.core:jackson-core:2.15.2")
4749
implementation("com.fasterxml.jackson.core:jackson-databind:2.15.2")
50+
implementation("commons-io:commons-io:2.15.1")
4851
}
4952

5053
tasks.withType<JavaCompile> {
@@ -59,15 +62,29 @@ sourceSets {
5962
}
6063
}
6164

62-
tasks.register<Jar>("shadowJar") {
63-
archiveBaseName.set("MapParser")
64-
archiveVersion.set("1.2-SNAPSHOT")
65-
from(sourceSets.main.get().output)
65+
tasks.named<Copy>("processResources") {
6666
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
67+
filesMatching("plugin.yml") {
68+
filter { line ->
69+
line.replace("@version@", project.version.toString())
70+
}
71+
}
6772
}
6873

69-
tasks.named<Copy>("processResources") {
74+
tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>("shadowJar") {
75+
archiveBaseName.set("MapParser")
76+
archiveVersion.set("${project.version}-SNAPSHOT")
77+
archiveClassifier.set("")
78+
mergeServiceFiles()
7079
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
80+
81+
// Include all dependencies - Paper's reflection rewriter will handle NMS access
82+
configurations = listOf(project.configurations.getByName("runtimeClasspath"))
83+
}
84+
85+
// Make shadowJar the default jar
86+
tasks.named<Jar>("jar") {
87+
enabled = false
7188
}
7289

7390
tasks.build {

src/main/java/net/plexverse/mapparser/command/MapSettingsCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
4343
}
4444

4545
final MapMeta mapSettings = mapSettingsOptional.orElseGet(MapMeta::new);
46-
Window.single().setGui(new MapSettingsMenu(player.getWorld(), mapSettings)).setTitle("Settings: " + player.getWorld().getName()).build(player).open();
46+
Window.builder().setUpperGui(new MapSettingsMenu(player.getWorld(), mapSettings).getGui()).setTitle("Settings: " + player.getWorld().getName()).build(player).open();
4747

4848
return true;
4949
}

src/main/java/net/plexverse/mapparser/enums/GameType.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ public static void loadGameTypes(final JavaPlugin plugin) {
177177
}
178178

179179
final List<DataPointType> dataPointTypeList = new ArrayList<>();
180-
final List<String> dataPoints = gameTypeSection.getStringList("dataPointTypeList");
180+
// Check both "dataPointTypes" (new) and "dataPointTypeList" (old) for backwards compatibility
181+
List<String> dataPoints = gameTypeSection.getStringList("dataPointTypes");
182+
if (dataPoints.isEmpty()) {
183+
dataPoints = gameTypeSection.getStringList("dataPointTypeList");
184+
}
181185
for (final String dp : dataPoints) {
182186
dataPointTypeList.add(DataPointType.valueOf(dp.toUpperCase()));
183187
}

src/main/java/net/plexverse/mapparser/listener/ArmorStandListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ private static void onArmorStandClick(final PlayerInteractAtEntityEvent event) t
6161

6262
if (clickedEntity.getPersistentDataContainer().has(Keys.DATAPOINT_KEY)) {
6363
final DataPointType dataPointType = DataPointType.valueOf(clickedEntity.getPersistentDataContainer().get(Keys.DATAPOINT_KEY, PersistentDataType.STRING));
64-
Window.single().setViewer(event.getPlayer()).setGui(new ModifyMenu(clickedEntity, dataPointType)).build().open();
64+
Window.builder().setViewer(event.getPlayer()).setUpperGui(new ModifyMenu(clickedEntity, dataPointType).getGui()).build().open();
6565
return;
6666
}
6767

68-
Window.single().setGui(new DataPointMenu(clickedEntity)).setTitle("Datapoint Menu").build(event.getPlayer()).open();
68+
Window.builder().setUpperGui(new DataPointMenu(clickedEntity).getGui()).setTitle("Datapoint Menu").build(event.getPlayer()).open();
6969
}
7070
}

src/main/java/net/plexverse/mapparser/menu/DataPointMenu.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.bukkit.persistence.PersistentDataType;
1313
import org.bukkit.scheduler.BukkitRunnable;
1414
import xyz.xenondevs.invui.item.Item;
15-
import xyz.xenondevs.invui.item.builder.ItemBuilder;
15+
import xyz.xenondevs.invui.item.ItemBuilder;
1616
import xyz.xenondevs.invui.window.Window;
1717

1818
import java.io.IOException;
@@ -29,8 +29,8 @@ public static List<Item> itemList(final LivingEntity armorStandEntity, final Gam
2929
final List<Item> items = new ArrayList<>();
3030
DataPointType.values().stream().filter(dataPointType -> gameType.getDataPointTypeList().contains(dataPointType)).toList().forEach(dataPointType -> {
3131
final ItemBuilder itemBuilder = new ItemBuilder(dataPointType.getMaterial());
32-
itemBuilder.setDisplayName("§d§l" + dataPointType.getMenuName());
33-
itemBuilder.addLoreLines("§7", "§7Click to set this datapoints as a §f" + dataPointType.getMenuName());
32+
itemBuilder.setLegacyName("§d§l" + dataPointType.getMenuName());
33+
itemBuilder.addLegacyLoreLines("§7", "§7Click to set this datapoints as a §f" + dataPointType.getMenuName());
3434
final ClickableItem simpleItem = new ClickableItem(itemBuilder, (player) -> {
3535
DataPointMenu.defineEntity(armorStandEntity, player, dataPointType, true);
3636
return null;
@@ -53,8 +53,8 @@ public static void defineEntity(final LivingEntity armorStandEntity, final Playe
5353
new BukkitRunnable() {
5454
@Override
5555
public void run() {
56-
Window.single()
57-
.setGui(new ModifyMenu(armorStandEntity, dataPointType))
56+
Window.builder()
57+
.setUpperGui(new ModifyMenu(armorStandEntity, dataPointType).getGui())
5858
.setViewer(player)
5959
.build()
6060
.open();

src/main/java/net/plexverse/mapparser/menu/MapSettingsMenu.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.bukkit.inventory.ItemStack;
1919
import org.bukkit.inventory.meta.ItemMeta;
2020
import xyz.xenondevs.invui.item.Item;
21-
import xyz.xenondevs.invui.item.impl.SimpleItem;
21+
import xyz.xenondevs.invui.item.ItemWrapper;
2222

2323
import java.io.IOException;
2424
import java.util.ArrayList;
@@ -82,7 +82,7 @@ public Item getAuthorsItem() {
8282
if(!offlinePlayer.hasPlayedBefore()) return ChatColor.YELLOW + uuid.toString();
8383
return ChatColor.YELLOW + offlinePlayer.getName();
8484
}).toList()));
85-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
85+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
8686
AUTHOR_ASKER.ask(player, (response) -> {
8787
player.getInventory().close();
8888

@@ -112,7 +112,7 @@ public Item getAuthorsItem() {
112112
public Item getMapNameItem() {
113113
final ItemStack itemStack = new ItemStack(Material.NAME_TAG);
114114
itemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Name: " + mapSettings.getMapName()));
115-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
115+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
116116
NAME_ASKER.ask(player, (response) -> {
117117
player.getInventory().close();
118118
mapSettings.setMapName(response);

src/main/java/net/plexverse/mapparser/menu/ModifyMenu.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.bukkit.persistence.PersistentDataContainer;
2424
import org.bukkit.persistence.PersistentDataType;
2525
import xyz.xenondevs.invui.item.Item;
26-
import xyz.xenondevs.invui.item.impl.SimpleItem;
26+
import xyz.xenondevs.invui.item.ItemWrapper;
2727

2828
import java.util.ArrayList;
2929
import java.util.Arrays;
@@ -107,7 +107,7 @@ public List<Item> getItems(final DataPointType dataPointType) {
107107
public Item getCloneItem(final DataPointType dataPointType) {
108108
final ItemStack piston = new ItemStack(Material.STICKY_PISTON);
109109
piston.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Clone Datapoint"));
110-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(piston).getItemProvider(), player -> {
110+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(piston), player -> {
111111
final ItemStack itemStack = ItemBuilder.create(Material.ARMOR_STAND)
112112
.persistentData(Keys.DATAPOINT_KEY, dataPointType.name())
113113
.persistentData(Keys.TEAM_KEY, getDataContainer().get(Keys.TEAM_KEY, PersistentDataType.STRING))
@@ -122,7 +122,7 @@ public Item getCloneItem(final DataPointType dataPointType) {
122122
public Item getYawItem() {
123123
final ItemStack itemStack = new ItemStack(Material.ENDER_PEARL);
124124
itemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Set Yaw"));
125-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
125+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
126126
YAW_ASKER.ask(player, (response) -> changeDirection(response, (location, direction) -> {
127127
location.setYaw(direction);
128128
player.sendMessage(this.miniMessage.deserialize("<green>You have set the Yaw to " + direction));
@@ -135,7 +135,7 @@ public Item getYawItem() {
135135
public Item getPitchItem() {
136136
final ItemStack itemStack = new ItemStack(Material.ARROW);
137137
itemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Set Pitch"));
138-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
138+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
139139
PITCH_ASKER.ask(player, (response) -> changeDirection(response, (location, direction) -> {
140140
location.setPitch(direction);
141141
player.sendMessage(this.miniMessage.deserialize("<green>You have set the pitch to " + direction));
@@ -149,7 +149,7 @@ public List<Item> getMinibuildItems(final MinibuildDifficulty currentDifficulty,
149149

150150
final ItemStack nameItemStack = new ItemStack(Material.NAME_TAG);
151151
nameItemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Name: " + name));
152-
final ClickableItem nameItem = new ClickableItem(new SimpleItem(nameItemStack).getItemProvider(), player -> {
152+
final ClickableItem nameItem = new ClickableItem(new ItemWrapper(nameItemStack), player -> {
153153
NAME_ASKER.ask(player, (response) -> {
154154
player.getInventory().close();
155155
getDataContainer().set(Keys.MINIBUILD_NAME_KEY, PersistentDataType.STRING, response);
@@ -161,7 +161,7 @@ public List<Item> getMinibuildItems(final MinibuildDifficulty currentDifficulty,
161161

162162
final ItemStack categoryItemStack = new ItemStack(Material.HOPPER);
163163
categoryItemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Category: " + category));
164-
final ClickableItem categoryItem = new ClickableItem(new SimpleItem(categoryItemStack).getItemProvider(), player -> {
164+
final ClickableItem categoryItem = new ClickableItem(new ItemWrapper(categoryItemStack), player -> {
165165
CATEGORY_ASKER.ask(player, (response) -> {
166166
player.getInventory().close();
167167
getDataContainer().set(Keys.MINIBUILD_CATEGORY_KEY, PersistentDataType.STRING, response);
@@ -198,7 +198,7 @@ public Item getMobItem(final DataPointType dataPointType) {
198198
}
199199
});
200200
itemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setLore(List.of(ChatColor.GRAY + "Click to change!")));
201-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
201+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
202202
MOB_ASKER.ask(player, (response) -> {
203203

204204
try {
@@ -224,7 +224,7 @@ public Item getMobItem(final DataPointType dataPointType) {
224224
public Item getCustomTeamItem(final DataPointType dataPointType) {
225225
final ItemStack itemStack = new ItemStack(Material.BLACK_BED);
226226
itemStack.editMeta(ItemMeta.class, itemMeta -> itemMeta.setDisplayName("Set Custom Team"));
227-
final ClickableItem clickableItem = new ClickableItem(new SimpleItem(itemStack).getItemProvider(), player -> {
227+
final ClickableItem clickableItem = new ClickableItem(new ItemWrapper(itemStack), player -> {
228228
CUSTOM_TEAM_ASKER.ask(player, (response) -> {
229229
player.getInventory().close();
230230
getDataContainer().set(Keys.TEAM_KEY, PersistentDataType.STRING, response);

src/main/java/net/plexverse/mapparser/menu/PagedMenu.java

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,44 @@
44
import net.plexverse.mapparser.menu.buttons.ForwardButton;
55
import net.plexverse.mapparser.menu.buttons.PreviousButton;
66
import org.jetbrains.annotations.NotNull;
7-
import xyz.xenondevs.invui.gui.AbstractPagedGui;
8-
import xyz.xenondevs.invui.gui.SlotElement;
9-
import xyz.xenondevs.invui.gui.structure.Markers;
10-
import xyz.xenondevs.invui.gui.structure.Structure;
7+
import xyz.xenondevs.invui.gui.PagedGui;
8+
import xyz.xenondevs.invui.gui.Markers;
9+
import xyz.xenondevs.invui.gui.Structure;
1110
import xyz.xenondevs.invui.item.Item;
1211

1312
import java.util.ArrayList;
1413
import java.util.List;
1514

16-
public class PagedMenu extends AbstractPagedGui<Item> {
15+
public class PagedMenu {
16+
17+
private PagedGui gui;
18+
private List<Item> content = new ArrayList<>();
1719

1820
public PagedMenu(@NotNull List<Item> pool) {
19-
super(9, 6, false, new Structure(
20-
"# # # # # # # # #",
21-
"# x x x x x x x #",
22-
"# x x x x x x x #",
23-
"# x x x x x x x #",
24-
"# x x x x x x x #",
25-
"# # # < - > # # #")
26-
.addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL)
27-
.addIngredient('<', new PreviousButton())
28-
.addIngredient('-', new ExitButton())
29-
.addIngredient('>', new ForwardButton()));
30-
setContent(pool);
21+
this.content = pool;
22+
buildGui();
3123
}
3224

33-
@Override
34-
public void bake() {
35-
int contentSize = getContentListSlots().length;
36-
37-
List<List<SlotElement>> pages = new ArrayList<>();
38-
List<SlotElement> page = new ArrayList<>(contentSize);
39-
40-
for (Item item : content) {
41-
page.add(new SlotElement.ItemSlotElement(item));
42-
43-
if (page.size() >= contentSize) {
44-
pages.add(page);
45-
page = new ArrayList<>(contentSize);
46-
}
47-
}
25+
private void buildGui() {
26+
this.gui = PagedGui.ofItems(new Structure(
27+
"# # # # # # # # #",
28+
"# x x x x x x x #",
29+
"# x x x x x x x #",
30+
"# x x x x x x x #",
31+
"# x x x x x x x #",
32+
"# # # < - > # # #")
33+
.addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL)
34+
.addIngredient('<', new PreviousButton())
35+
.addIngredient('-', new ExitButton())
36+
.addIngredient('>', new ForwardButton()), content);
37+
}
4838

49-
if (!page.isEmpty()) {
50-
pages.add(page);
51-
}
39+
public PagedGui getGui() {
40+
return gui;
41+
}
5242

53-
this.pages = pages;
54-
update();
43+
public void setContent(List<Item> items) {
44+
this.content = items;
45+
buildGui();
5546
}
5647
}

src/main/java/net/plexverse/mapparser/menu/buttons/ExitButton.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,33 @@
44
import org.bukkit.Material;
55
import org.bukkit.entity.Player;
66
import org.bukkit.event.inventory.ClickType;
7-
import org.bukkit.event.inventory.InventoryClickEvent;
7+
import xyz.xenondevs.invui.Click;
88
import org.bukkit.inventory.ItemStack;
99
import org.bukkit.inventory.meta.ItemMeta;
1010
import org.jetbrains.annotations.NotNull;
1111
import xyz.xenondevs.invui.gui.Gui;
1212
import xyz.xenondevs.invui.item.ItemProvider;
13-
import xyz.xenondevs.invui.item.impl.SimpleItem;
14-
import xyz.xenondevs.invui.item.impl.controlitem.ControlItem;
13+
import xyz.xenondevs.invui.item.ItemWrapper;
14+
import xyz.xenondevs.invui.item.AbstractBoundItem;
15+
import xyz.xenondevs.invui.item.ItemWrapper;
1516

1617
import java.util.Objects;
1718

1819
@Data
19-
public class ExitButton extends ControlItem<Gui> {
20+
public class ExitButton extends AbstractBoundItem {
2021

2122
@Override
22-
public ItemProvider getItemProvider(Gui gui) {
23+
public ItemProvider getItemProvider(Player player) {
2324
final ItemStack itemStack = new ItemStack(Material.BARRIER);
2425
final ItemMeta itemMeta = itemStack.getItemMeta();
2526
itemMeta.setDisplayName("Exit");
2627
itemStack.setItemMeta(itemMeta);
27-
return new SimpleItem(itemStack).getItemProvider();
28+
return new ItemWrapper(itemStack);
2829
}
2930

3031
@Override
31-
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
32-
Objects.requireNonNull(event.getClickedInventory()).close();
32+
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) {
33+
player.closeInventory();
3334
}
3435
}
3536

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,39 @@
11
package net.plexverse.mapparser.menu.buttons;
22

33
import org.bukkit.Material;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.event.inventory.ClickType;
6+
import xyz.xenondevs.invui.Click;
47
import org.bukkit.inventory.ItemStack;
58
import org.bukkit.inventory.meta.ItemMeta;
9+
import org.jetbrains.annotations.NotNull;
610
import xyz.xenondevs.invui.gui.PagedGui;
711
import xyz.xenondevs.invui.item.ItemProvider;
8-
import xyz.xenondevs.invui.item.impl.SimpleItem;
9-
import xyz.xenondevs.invui.item.impl.controlitem.PageItem;
12+
import xyz.xenondevs.invui.item.ItemWrapper;
13+
import xyz.xenondevs.invui.item.AbstractPagedGuiBoundItem;
1014

11-
public class ForwardButton extends PageItem {
15+
public class ForwardButton extends AbstractPagedGuiBoundItem {
1216
public ForwardButton() {
13-
super(true);
1417
}
1518

1619
@Override
17-
public ItemProvider getItemProvider(PagedGui<?> gui) {
18-
if (gui.hasNextPage()) {
20+
public ItemProvider getItemProvider(Player player) {
21+
PagedGui<?> gui = getGui();
22+
if (gui != null && gui.getPage() < gui.getPageCount() - 1) {
1923
final ItemStack itemStack = new ItemStack(Material.ARROW);
2024
final ItemMeta itemMeta = itemStack.getItemMeta();
2125
itemMeta.setDisplayName("Next Page");
2226
itemStack.setItemMeta(itemMeta);
23-
return new SimpleItem(itemStack).getItemProvider();
27+
return new ItemWrapper(itemStack);
28+
}
29+
return new ItemWrapper(new ItemStack(Material.AIR));
30+
}
31+
32+
@Override
33+
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull Click click) {
34+
PagedGui<?> gui = getGui();
35+
if (gui != null && gui.getPage() < gui.getPageCount() - 1) {
36+
gui.setPage(gui.getPage() + 1);
2437
}
25-
return new SimpleItem(new ItemStack(Material.AIR)).getItemProvider();
2638
}
2739
}

0 commit comments

Comments
 (0)