Skip to content

Commit 0f766bf

Browse files
committed
Add UniDialog support with multi-action and confirmation dialogs
- Introduced UniDialogService for managing dialog interactions. - Added builders for Notice, Confirmation, and Multi-Action dialogs. - Updated Java version in project configuration to 21. - Added dependencies for UniDialog core and its implementations. - Adjusted classpath and compiler settings for compatibility.
1 parent bbd981e commit 0f766bf

19 files changed

Lines changed: 887 additions & 11 deletions

SimpleAPI/.classpath

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
<attribute name="optional" value="true"/>
3232
</attributes>
3333
</classpathentry>
34-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
34+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-21.0.7">
3535
<attributes>
36+
<attribute name="module" value="true"/>
3637
<attribute name="maven.pomderived" value="true"/>
3738
</attributes>
3839
</classpathentry>
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
eclipse.preferences.version=1
22
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3-
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=10
44
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5-
org.eclipse.jdt.core.compiler.compliance=1.8
5+
org.eclipse.jdt.core.compiler.compliance=10
66
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
77
org.eclipse.jdt.core.compiler.debug.localVariable=generate
88
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -12,4 +12,4 @@ org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
1212
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
1313
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
1414
org.eclipse.jdt.core.compiler.release=enabled
15-
org.eclipse.jdt.core.compiler.source=1.8
15+
org.eclipse.jdt.core.compiler.source=10

SimpleAPI/pom.xml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
<timestamp>${maven.build.timestamp}</timestamp>
1414
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
1515
<build.number>NOTSET</build.number>
16-
<maven.compiler.source>8</maven.compiler.source>
17-
<maven.compiler.target>8</maven.compiler.target>
18-
<maven.compiler.release>8</maven.compiler.release>
16+
<maven.compiler.source>21</maven.compiler.source>
17+
<maven.compiler.target>21</maven.compiler.target>
18+
<maven.compiler.release>21</maven.compiler.release>
1919
</properties>
2020
<build>
2121
<sourceDirectory>src/main/java</sourceDirectory>
@@ -234,6 +234,23 @@
234234
<artifactId>configurate-gson</artifactId>
235235
<version>4.2.0</version>
236236
</dependency>
237+
<dependency>
238+
<groupId>io.github.projectunified</groupId>
239+
<artifactId>uni-dialog-core</artifactId>
240+
<version>1.5.0</version>
241+
</dependency>
242+
243+
<dependency>
244+
<groupId>io.github.projectunified</groupId>
245+
<artifactId>uni-dialog-paper</artifactId>
246+
<version>1.5.0</version>
247+
</dependency>
248+
249+
<dependency>
250+
<groupId>io.github.projectunified</groupId>
251+
<artifactId>uni-dialog-spigot</artifactId>
252+
<version>1.5.0</version>
253+
</dependency>
237254
</dependencies>
238255
<profiles>
239256
<profile>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.bencodez.simpleapi.dialog;
2+
3+
import java.util.Objects;
4+
import java.util.UUID;
5+
6+
import org.bukkit.plugin.Plugin;
7+
8+
/**
9+
* Base class for UniDialog platform implementations.
10+
*/
11+
public abstract class AbstractUniDialogPlatform implements UniDialogPlatform {
12+
13+
protected final Plugin plugin;
14+
protected final String defaultNamespace;
15+
16+
protected AbstractUniDialogPlatform(Plugin plugin, String defaultNamespace) {
17+
this.plugin = Objects.requireNonNull(plugin, "plugin");
18+
this.defaultNamespace = Objects.requireNonNull(defaultNamespace, "defaultNamespace");
19+
}
20+
21+
protected String resolveNamespace(String namespace) {
22+
if (namespace == null || namespace.isEmpty()) {
23+
return defaultNamespace;
24+
}
25+
return namespace;
26+
}
27+
28+
protected String resolveActionId(String id) {
29+
if (id == null || id.isEmpty()) {
30+
return UUID.randomUUID().toString().replace("-", "");
31+
}
32+
return id;
33+
}
34+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.bencodez.simpleapi.dialog;
2+
3+
import java.util.function.Consumer;
4+
5+
import org.bukkit.entity.Player;
6+
7+
import io.github.projectunified.unidialog.core.payload.DialogPayload;
8+
9+
/**
10+
* Builder for confirmation dialogs.
11+
*/
12+
public class ConfirmationDialogBuilder {
13+
14+
private final UniDialogService service;
15+
private final Player player;
16+
private final UniDialogConfirmationRequest request = new UniDialogConfirmationRequest();
17+
18+
public ConfirmationDialogBuilder(UniDialogService service, Player player) {
19+
this.service = service;
20+
this.player = player;
21+
}
22+
23+
public ConfirmationDialogBuilder title(String title) {
24+
request.setTitle(title);
25+
return this;
26+
}
27+
28+
public ConfirmationDialogBuilder body(String body) {
29+
request.setBody(body);
30+
return this;
31+
}
32+
33+
public ConfirmationDialogBuilder yesText(String text) {
34+
request.setYesText(text);
35+
return this;
36+
}
37+
38+
public ConfirmationDialogBuilder noText(String text) {
39+
request.setNoText(text);
40+
return this;
41+
}
42+
43+
public ConfirmationDialogBuilder namespace(String namespace) {
44+
request.setNamespace(namespace);
45+
return this;
46+
}
47+
48+
public ConfirmationDialogBuilder yesActionId(String actionId) {
49+
request.setYesActionId(actionId);
50+
return this;
51+
}
52+
53+
public ConfirmationDialogBuilder noActionId(String actionId) {
54+
request.setNoActionId(actionId);
55+
return this;
56+
}
57+
58+
public ConfirmationDialogBuilder onYes(Consumer<DialogPayload> callback) {
59+
request.setYesCallback(callback);
60+
return this;
61+
}
62+
63+
public ConfirmationDialogBuilder onNo(Consumer<DialogPayload> callback) {
64+
request.setNoCallback(callback);
65+
return this;
66+
}
67+
68+
public void open() {
69+
service.showConfirmation(player, request);
70+
}
71+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.bencodez.simpleapi.dialog;
2+
3+
import java.util.function.Consumer;
4+
5+
import org.bukkit.entity.Player;
6+
7+
import io.github.projectunified.unidialog.core.payload.DialogPayload;
8+
9+
/**
10+
* Builder for multi-action dialogs.
11+
*/
12+
public class MultiActionDialogBuilder {
13+
14+
private final UniDialogService service;
15+
private final Player player;
16+
private final UniDialogMultiActionRequest request = new UniDialogMultiActionRequest();
17+
18+
public MultiActionDialogBuilder(UniDialogService service, Player player) {
19+
this.service = service;
20+
this.player = player;
21+
}
22+
23+
public MultiActionDialogBuilder title(String title) {
24+
request.setTitle(title);
25+
return this;
26+
}
27+
28+
public MultiActionDialogBuilder body(String body) {
29+
request.setBody(body);
30+
return this;
31+
}
32+
33+
public MultiActionDialogBuilder namespace(String namespace) {
34+
request.setNamespace(namespace);
35+
return this;
36+
}
37+
38+
public MultiActionDialogBuilder columns(int columns) {
39+
request.setColumns(columns);
40+
return this;
41+
}
42+
43+
public MultiActionDialogBuilder buttonWidth(int width) {
44+
request.setButtonWidth(Integer.valueOf(width));
45+
return this;
46+
}
47+
48+
public MultiActionDialogBuilder button(String text, Consumer<DialogPayload> callback) {
49+
UniDialogButton button = new UniDialogButton();
50+
button.setText(text);
51+
button.setCallback(callback);
52+
request.getButtons().add(button);
53+
return this;
54+
}
55+
56+
public MultiActionDialogBuilder button(String text, String tooltip, Consumer<DialogPayload> callback) {
57+
UniDialogButton button = new UniDialogButton();
58+
button.setText(text);
59+
button.setTooltip(tooltip);
60+
button.setCallback(callback);
61+
request.getButtons().add(button);
62+
return this;
63+
}
64+
65+
public MultiActionDialogBuilder button(String text, String tooltip, Integer width, String actionId,
66+
Consumer<DialogPayload> callback) {
67+
UniDialogButton button = new UniDialogButton();
68+
button.setText(text);
69+
button.setTooltip(tooltip);
70+
button.setWidth(width);
71+
button.setActionId(actionId);
72+
button.setCallback(callback);
73+
request.getButtons().add(button);
74+
return this;
75+
}
76+
77+
public void open() {
78+
service.showMultiAction(player, request);
79+
}
80+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.bencodez.simpleapi.dialog;
2+
3+
import java.util.function.Consumer;
4+
5+
import org.bukkit.entity.Player;
6+
7+
import io.github.projectunified.unidialog.core.payload.DialogPayload;
8+
9+
/**
10+
* Builder for notice dialogs.
11+
*/
12+
public class NoticeDialogBuilder {
13+
14+
private final UniDialogService service;
15+
private final Player player;
16+
private final UniDialogNoticeRequest request = new UniDialogNoticeRequest();
17+
18+
public NoticeDialogBuilder(UniDialogService service, Player player) {
19+
this.service = service;
20+
this.player = player;
21+
}
22+
23+
public NoticeDialogBuilder title(String title) {
24+
request.setTitle(title);
25+
return this;
26+
}
27+
28+
public NoticeDialogBuilder body(String body) {
29+
request.setBody(body);
30+
return this;
31+
}
32+
33+
public NoticeDialogBuilder button(String buttonText) {
34+
request.setButtonText(buttonText);
35+
return this;
36+
}
37+
38+
public NoticeDialogBuilder namespace(String namespace) {
39+
request.setNamespace(namespace);
40+
return this;
41+
}
42+
43+
public NoticeDialogBuilder actionId(String actionId) {
44+
request.setActionId(actionId);
45+
return this;
46+
}
47+
48+
public NoticeDialogBuilder onClick(Consumer<DialogPayload> callback) {
49+
request.setCallback(callback);
50+
return this;
51+
}
52+
53+
public void open() {
54+
service.showNotice(player, request);
55+
}
56+
}

0 commit comments

Comments
 (0)