Skip to content

Commit 180ac15

Browse files
Merge pull request #5 from LitleProgrammer/dev/multi-content-paged-guis
Dev/multi content paged guis
2 parents aa19e38 + de17083 commit 180ac15

File tree

14 files changed

+443
-92
lines changed

14 files changed

+443
-92
lines changed

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ wrapper {
4545
distributionType = Wrapper.DistributionType.ALL
4646
}
4747

48+
jar {
49+
destinationDirectory.set(file("/Users/linusglimm/Desktop/mineopoly stuff/servers/spigotTest/plugins"))
50+
}
51+
4852
tasks.withType(JavaCompile).configureEach {
4953
options.encoding = 'UTF-8'
5054

src/main/java/de/littleprogrammer/guiapi/GuiApi.java

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

33
import de.littleprogrammer.guiapi.commands.SpawnCommand;
44
import de.littleprogrammer.guiapi.enums.ServerVersion;
5+
import de.littleprogrammer.guiapi.guis.Gui;
6+
import de.littleprogrammer.guiapi.guis.SimpleGui;
57
import de.littleprogrammer.guiapi.listeners.GuiEvents;
68
import de.littleprogrammer.guiapi.listeners.MoveListener;
7-
import org.bukkit.Bukkit;
89
import org.bukkit.entity.Player;
910
import org.bukkit.event.Listener;
1011
import org.bukkit.plugin.java.JavaPlugin;
@@ -14,14 +15,14 @@
1415
import java.util.Map;
1516
import java.util.UUID;
1617

17-
public final class GuiApi {
18+
public final class GuiApi /*extends JavaPlugin*/ {
1819

1920
private JavaPlugin plugin;
2021
private static GuiApi instance;
2122
private ServerVersion version;
2223
private final Listener listener = new GuiEvents();
2324
private final Listener moveListener = new MoveListener();
24-
private Map<UUID, SimpleGui> guis = new HashMap<>();
25+
private Map<UUID, Gui> guis = new HashMap<>();
2526

2627
public GuiApi(JavaPlugin plugin) {
2728
this.plugin = plugin;
@@ -78,15 +79,15 @@ public static BukkitScheduler getScheduler() {
7879
return GuiApi.getInstance().getPlugin().getServer().getScheduler();
7980
}
8081

81-
public SimpleGui getGUI(UUID uuid) {
82+
public Gui getGUI(UUID uuid) {
8283
return guis.get(uuid);
8384
}
8485

85-
public SimpleGui getGUI(Player player) {
86+
public Gui getGUI(Player player) {
8687
return guis.get(player.getUniqueId());
8788
}
8889

89-
public Map<UUID, SimpleGui> getGuis() {
90+
public Map<UUID, Gui> getGuis() {
9091
return guis;
9192
}
9293

src/main/java/de/littleprogrammer/guiapi/commands/SpawnCommand.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package de.littleprogrammer.guiapi.commands;
22

3-
import de.littleprogrammer.guiapi.SimpleGui;
3+
import de.littleprogrammer.guiapi.guis.PagedGui;
4+
import de.littleprogrammer.guiapi.guis.SimpleGui;
45
import de.littleprogrammer.guiapi.components.Button;
56
import de.littleprogrammer.guiapi.components.Text;
7+
import net.md_5.bungee.api.ChatColor;
68
import org.bukkit.command.Command;
79
import org.bukkit.command.CommandExecutor;
810
import org.bukkit.command.CommandSender;
911
import org.bukkit.entity.Player;
1012

13+
import java.util.ArrayList;
14+
import java.util.List;
15+
1116
public class SpawnCommand implements CommandExecutor {
1217
@Override
1318
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
14-
Button button = new Button("\uE001", "\uE002", 1)
19+
/*Button button = new Button("\uE001", "\uE002", 1)
1520
.setSize(2)
1621
.onClick(event -> {
1722
event.getPlayer().sendMessage("You clicked a button1");
@@ -31,15 +36,40 @@ public boolean onCommand(CommandSender commandSender, Command command, String s,
3136
event.getPlayer().sendMessage("You clicked a button3");
3237
});
3338
34-
Text text = new Text("Here you can put\n some text. This is just for\n testing purposes.\n As you can see, \nit's working quite nicely and \nlook at this cool hovering effect.")
39+
Text text = new Text("Here you can put\n some text. This is just for\n testing purposes.\n As you can see, \nit's working quite nicely and \nlook at this cool hovering effect.", 0)
3540
.setSize(1.4f);
3641
3742
SimpleGui gui = new SimpleGui("Some title")
3843
.addContent(text)
3944
.addButton(button)
4045
.addButton(button2)
4146
.addButton(button3);
42-
gui.open((Player) commandSender);
47+
gui.open((Player) commandSender);*/
48+
49+
List<String> stringList = new ArrayList<>();
50+
stringList.add(ChatColor.GOLD.toString() + ChatColor.BOLD + "Some Heading\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
51+
stringList.add(ChatColor.GREEN.toString() + ChatColor.BOLD + "Another Heading\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
52+
stringList.add(ChatColor.RED.toString() + ChatColor.BOLD + "3rd Heading\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
53+
stringList.add(ChatColor.BLUE.toString() + ChatColor.BOLD + "Happy Happy\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
54+
stringList.add(ChatColor.YELLOW.toString() + ChatColor.BOLD + "Yellow?!\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
55+
stringList.add(ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + "6th Content\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
56+
stringList.add(ChatColor.AQUA.toString() + ChatColor.BOLD + "How many are there?\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
57+
stringList.add(ChatColor.GRAY.toString() + ChatColor.BOLD + "Still same text\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
58+
stringList.add(ChatColor.DARK_AQUA.toString() + ChatColor.BOLD + "You can stop now\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
59+
stringList.add(ChatColor.LIGHT_PURPLE.toString() + ChatColor.BOLD + "Stop...\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
60+
stringList.add(ChatColor.DARK_BLUE.toString() + ChatColor.BOLD + "Stooooppp!!!\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
61+
stringList.add(ChatColor.DARK_GREEN.toString() + ChatColor.BOLD + "The end.\n" + ChatColor.RESET + ChatColor.WHITE + "Lorem ipsum dolor\n sit amet,\n consetetur sadipscing\n elitr, sed diam\n nonumy eirmod\n tempor invidunt ut\n labore et dolore\n magna aliquyam");
62+
63+
Button button2 = new Button("close", "CLOSE", 1).onClick(event -> {
64+
event.getPlayer().sendMessage("You clicked the close button!");
65+
});
66+
67+
PagedGui pagedGui = new PagedGui("Title", 0).addButton(button2);
68+
pagedGui.setSpacing(30);
69+
pagedGui.setContentSpacing(50);
70+
pagedGui.addContent(stringList);
71+
pagedGui.open((Player) commandSender);
72+
pagedGui.setLeftButtonText("left", "lll").setRightButtonText("right", "rrr");
4373

4474
return false;
4575
}

src/main/java/de/littleprogrammer/guiapi/components/Button.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package de.littleprogrammer.guiapi.components;
22

33
import de.littleprogrammer.guiapi.GuiApi;
4-
import de.littleprogrammer.guiapi.SimpleGui;
4+
import de.littleprogrammer.guiapi.guis.Gui;
5+
import de.littleprogrammer.guiapi.guis.SimpleGui;
56
import de.littleprogrammer.guiapi.customeEvents.HoverButtonEvent;
67
import de.littleprogrammer.guiapi.customeEvents.UnHoverButtonEvent;
78
import de.littleprogrammer.guiapi.utils.Calculations;
@@ -27,7 +28,7 @@ public class Button implements Component {
2728
private Consumer<UnHoverButtonEvent> unHoverAction;
2829
private int slot;
2930
private float size = 2;
30-
private SimpleGui simpleGui;
31+
private Gui gui;
3132
private boolean hover = false;
3233

3334
public Button(String texture, String hoverTexture, int slot) {
@@ -39,7 +40,7 @@ public Button(String texture, String hoverTexture, int slot) {
3940
}
4041

4142
public void spawn() {
42-
textDisplay = (TextDisplay) simpleGui.getCenterLocation().getWorld().spawnEntity(Calculations.calculateComponentLocation(simpleGui, this, simpleGui.getButtonAmount()), EntityType.TEXT_DISPLAY);
43+
textDisplay = (TextDisplay) gui.getCenterLocation().getWorld().spawnEntity(Calculations.calculateComponentLocation(gui, this, gui.getButtonAmount(), 30), EntityType.TEXT_DISPLAY);
4344
textDisplay.setCustomName(uuid.toString());
4445
textDisplay.setCustomNameVisible(false);
4546
textDisplay.setText(texture);
@@ -119,8 +120,8 @@ public UUID getUniqueId() {
119120
return uuid;
120121
}
121122

122-
public SimpleGui getGui() {
123-
return simpleGui;
123+
public Gui getGui() {
124+
return gui;
124125
}
125126

126127
public String getText() {
@@ -135,8 +136,12 @@ public int getSlot() {
135136
return slot;
136137
}
137138

138-
public void setGui(SimpleGui gui) {
139-
simpleGui = gui;
139+
public void setSlot(int slot) {
140+
this.slot = slot;
141+
}
142+
143+
public void setGui(Gui gui) {
144+
this.gui = gui;
140145
}
141146

142147
public Button setSize(float size) {
@@ -151,4 +156,12 @@ public void setHover(boolean hover) {
151156
public boolean isHover() {
152157
return hover;
153158
}
159+
160+
public void setTexture(String texture) {
161+
this.texture = texture;
162+
}
163+
164+
public void setHoverTexture(String hoverTexture) {
165+
this.hoverTexture = hoverTexture;
166+
}
154167
}

src/main/java/de/littleprogrammer/guiapi/components/Component.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.littleprogrammer.guiapi.components;
22

3-
import de.littleprogrammer.guiapi.SimpleGui;
43
import org.bukkit.entity.Display;
54
import org.bukkit.entity.Entity;
65
import org.bukkit.entity.Player;

src/main/java/de/littleprogrammer/guiapi/components/Text.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package de.littleprogrammer.guiapi.components;
22

33
import de.littleprogrammer.guiapi.GuiApi;
4-
import de.littleprogrammer.guiapi.SimpleGui;
4+
import de.littleprogrammer.guiapi.guis.Gui;
5+
import de.littleprogrammer.guiapi.guis.SimpleGui;
56
import org.bukkit.entity.*;
67
import org.bukkit.util.Transformation;
78
import org.joml.Vector3f;
@@ -14,16 +15,23 @@ public class Text implements Component {
1415
private UUID uuid;
1516
private float size = 2;
1617
private TextDisplay textDisplay;
17-
private SimpleGui simpleGui;
18+
private Gui gui;
19+
private int slot;
1820

1921
public Text(String text) {
2022
this.text = text;
2123
uuid = UUID.randomUUID();
2224
}
2325

26+
public Text(String text, int slot) {
27+
this.text = text;
28+
this.slot = slot < 0 || slot > 3 ? 1 : slot;
29+
uuid = UUID.randomUUID();
30+
}
31+
2432
@Override
2533
public void spawn() {
26-
textDisplay = (TextDisplay) simpleGui.getCenterLocation().getWorld().spawnEntity(simpleGui.getCenterLocation(), EntityType.TEXT_DISPLAY);
34+
textDisplay = (TextDisplay) gui.getCenterLocation().getWorld().spawnEntity(gui.getCenterLocation(), EntityType.TEXT_DISPLAY);
2735
textDisplay.setCustomName(uuid.toString());
2836
textDisplay.setCustomNameVisible(false);
2937
textDisplay.setText(text);
@@ -53,16 +61,16 @@ public UUID getUniqueId() {
5361
return uuid;
5462
}
5563

56-
public SimpleGui getGui() {
57-
return simpleGui;
64+
public Gui getGui() {
65+
return gui;
5866
}
5967

6068
public float getSize() {
6169
return size;
6270
}
6371

64-
public void setGui(SimpleGui simpleGui) {
65-
this.simpleGui = simpleGui;
72+
public void setGui(Gui gui) {
73+
this.gui = gui;
6674
}
6775

6876
public Text setSize(float size) {
@@ -84,4 +92,16 @@ public void hide(Player player) {
8492
public void remove() {
8593
textDisplay.remove();
8694
}
95+
96+
public int getSlot() {
97+
return slot;
98+
}
99+
100+
public void setSlot(int slot) {
101+
this.slot = slot;
102+
}
103+
104+
public void updateText(String newText) {
105+
textDisplay.setText(newText);
106+
}
87107
}

src/main/java/de/littleprogrammer/guiapi/customeEvents/HoverButtonEvent.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.littleprogrammer.guiapi.customeEvents;
22

3-
import de.littleprogrammer.guiapi.SimpleGui;
3+
import de.littleprogrammer.guiapi.guis.Gui;
4+
import de.littleprogrammer.guiapi.guis.SimpleGui;
45
import de.littleprogrammer.guiapi.components.Button;
56
import org.bukkit.entity.Player;
67
import org.bukkit.event.Event;
@@ -9,13 +10,13 @@
910
public class HoverButtonEvent extends Event {
1011
private static final HandlerList HANDLERS = new HandlerList();
1112

12-
private final SimpleGui gui;
13+
private final Gui gui;
1314
private final Player player;
1415
private final Button button;
1516
private final String hoverText;
1617
private final String text;
1718

18-
public HoverButtonEvent(SimpleGui gui, Player player, Button button, String hoverText, String text) {
19+
public HoverButtonEvent(Gui gui, Player player, Button button, String hoverText, String text) {
1920
this.gui = gui;
2021
this.player = player;
2122
this.button = button;
@@ -34,7 +35,7 @@ public static HandlerList getHandlerList() {
3435
return HANDLERS;
3536
}
3637

37-
public SimpleGui getGui() {
38+
public Gui getGui() {
3839
return gui;
3940
}
4041

src/main/java/de/littleprogrammer/guiapi/customeEvents/UnHoverButtonEvent.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.littleprogrammer.guiapi.customeEvents;
22

3-
import de.littleprogrammer.guiapi.SimpleGui;
3+
import de.littleprogrammer.guiapi.guis.Gui;
4+
import de.littleprogrammer.guiapi.guis.SimpleGui;
45
import de.littleprogrammer.guiapi.components.Button;
56
import org.bukkit.entity.Player;
67
import org.bukkit.event.Event;
@@ -9,13 +10,13 @@
910
public class UnHoverButtonEvent extends Event {
1011
private static final HandlerList HANDLERS = new HandlerList();
1112

12-
private final SimpleGui gui;
13+
private final Gui gui;
1314
private final Player player;
1415
private final Button button;
1516
private final String hoverText;
1617
private final String text;
1718

18-
public UnHoverButtonEvent(SimpleGui gui, Player player, Button button, String hoverText, String text) {
19+
public UnHoverButtonEvent(Gui gui, Player player, Button button, String hoverText, String text) {
1920
this.gui = gui;
2021
this.player = player;
2122
this.button = button;
@@ -34,7 +35,7 @@ public static HandlerList getHandlerList() {
3435
return HANDLERS;
3536
}
3637

37-
public SimpleGui getGui() {
38+
public Gui getGui() {
3839
return gui;
3940
}
4041

0 commit comments

Comments
 (0)