Skip to content

Commit 9dec562

Browse files
committed
2.1!!!
Procedural GUIs and new trolls soon™️
1 parent e50851b commit 9dec562

35 files changed

+756
-297
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,5 @@ buildNumber.properties
111111

112112
# Common working directory
113113
run/
114+
115+
build_out/*

pom.xml

+14-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>me.xapu1337.recodes</groupId>
88
<artifactId>trollgui</artifactId>
9-
<version>2.01</version>
9+
<version>2.1</version>
1010
<packaging>jar</packaging>
1111

1212
<name>TrollGUI</name>
@@ -19,7 +19,7 @@
1919

2020
<build>
2121
<directory>
22-
C:\Users\XapuR\OneDrive\spigot-server-test\plugins
22+
${project.basedir}/build_out
2323
</directory>
2424
<plugins>
2525
<plugin>
@@ -37,7 +37,7 @@
3737
<version>2.0</version>
3838
<configuration>
3939
<warName>ms3</warName>
40-
<outputDirectory>C:\Users\XapuR\OneDrive\spigot-server-test\plugins</outputDirectory>
40+
<outputDirectory>${project.basedir}/build_out</outputDirectory>
4141
</configuration>
4242
</plugin>
4343
<plugin>
@@ -54,12 +54,12 @@
5454
<relocations>
5555
<relocation>
5656
<pattern>com.cryptomorin.xseries</pattern>
57-
<shadedPattern>me.xapu.trollgui.utils</shadedPattern>
57+
<shadedPattern>me.xapu1337.trollgui.compatability</shadedPattern>
5858
</relocation>
5959

6060
<relocation>
6161
<pattern>org.bstats</pattern>
62-
<shadedPattern>me.xapu.trollgui.utils</shadedPattern>
62+
<shadedPattern>me.xapu1337.trollgui.metrics</shadedPattern>
6363
</relocation>
6464
</relocations>
6565
<filters>
@@ -103,25 +103,30 @@
103103
<dependency>
104104
<groupId>org.spigotmc</groupId>
105105
<artifactId>spigot-api</artifactId>
106-
<version>1.18.1-R0.1-SNAPSHOT</version>
106+
<version>1.19-R0.1-SNAPSHOT</version>
107107
<scope>provided</scope>
108108
</dependency>
109109
<dependency>
110110
<groupId>com.github.cryptomorin</groupId>
111111
<artifactId>XSeries</artifactId>
112-
<version>8.6.0.0.1</version>
112+
<version>9.0.0</version>
113113
</dependency>
114114
<dependency>
115115
<groupId>org.bstats</groupId>
116116
<artifactId>bstats-bukkit</artifactId>
117-
<version>2.2.1</version>
117+
<version>3.0.0</version>
118118
<scope>compile</scope>
119119
</dependency>
120120
<dependency>
121121
<groupId>org.jetbrains</groupId>
122122
<artifactId>annotations</artifactId>
123-
<version>22.0.0</version>
123+
<version>23.0.0</version>
124124
<scope>compile</scope>
125125
</dependency>
126+
<dependency>
127+
<groupId>io.github.classgraph</groupId>
128+
<artifactId>classgraph</artifactId>
129+
<version>4.8.149</version>
130+
</dependency>
126131
</dependencies>
127132
</project>

src/main/java/me/xapu1337/recodes/trollgui/Commands/TrollCommand.java

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import me.xapu1337.recodes.trollgui.Inventorys.PlayerSelector;
66
import me.xapu1337.recodes.trollgui.Inventorys.Settings;
77
import me.xapu1337.recodes.trollgui.Utilities.UpdateChecker;
8-
import org.apache.commons.lang.ArrayUtils;
98
import org.bukkit.command.Command;
109
import org.bukkit.command.CommandMap;
1110
import org.bukkit.command.CommandSender;

src/main/java/me/xapu1337/recodes/trollgui/Cores/Core.java

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public class Core extends JavaPlugin implements Listener {
2222
public boolean usingUUID;
2323
public Util utils = new Util();
2424
public Singleton singletons = new Singleton();
25-
2625
public Core() {
2726
if(instance == null)
2827
instance = this;

src/main/java/me/xapu1337/recodes/trollgui/Handlers/TrollHandler.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
11
package me.xapu1337.recodes.trollgui.Handlers;
22

3+
import me.xapu1337.recodes.trollgui.Cores.Core;
4+
import org.bukkit.Bukkit;
35
import org.bukkit.entity.Player;
46

57
public abstract class TrollHandler {
68
public Player caller;
79
public Player victim;
10+
public TrollItemMetaData metaData;
811

9-
public TrollHandler(Player caller, Player victim) {
12+
public <T extends TrollHandler> T Init() {
13+
Core.instance.singletons.holdingTrolls.put(this.getClass().getName(), this);
14+
this.metaData = setMetaData();
15+
16+
return (T) this;
17+
}
18+
19+
public abstract TrollItemMetaData setMetaData();
20+
21+
public <T extends TrollHandler> T setPlayers(Player caller, Player victim) {
1022
this.caller = caller;
1123
this.victim = victim;
24+
25+
return (T) this;
1226
}
1327

28+
1429
/**
1530
* The method that gets executed on item click
1631
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package me.xapu1337.recodes.trollgui.Handlers;
2+
3+
import com.cryptomorin.xseries.XEnchantment;
4+
import com.cryptomorin.xseries.XMaterial;
5+
import me.xapu1337.recodes.trollgui.Cores.Core;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.inventory.ItemFlag;
8+
import org.bukkit.inventory.ItemStack;
9+
import org.bukkit.inventory.meta.ItemMeta;
10+
11+
import java.util.Arrays;
12+
import java.util.function.Supplier;
13+
14+
public class TrollItemMetaData {
15+
16+
public boolean isToggable = false;
17+
18+
public boolean isToggled = false;
19+
20+
public String displayName = " - PLACEHOLDER - ";
21+
22+
public String[] lore = { " - PLACEHOLDER - " };
23+
24+
private XMaterial _item;
25+
26+
private ItemStack _itemStack;
27+
28+
private ItemMeta _itemMeta;
29+
30+
public TrollItemMetaData setToggable(boolean toggable) {
31+
isToggable = toggable;
32+
return this;
33+
}
34+
35+
public TrollItemMetaData setToggled(Supplier<Boolean> toggledCallback){
36+
isToggled = toggledCallback.get();
37+
38+
if (isToggled)
39+
_itemMeta.addEnchant(XEnchantment.DURABILITY.getEnchant(), 1, true);
40+
else
41+
_itemMeta.removeEnchant(XEnchantment.DURABILITY.getEnchant());
42+
43+
// Append either disabled or enabled text to current lore
44+
45+
lore = Arrays.copyOf(lore, lore.length + 1);
46+
lore[lore.length - 1] = isToggled ? Core.instance.utils.getConfigPath("MenuItems.trollMenu.extras.isEnabled") : Core.instance.utils.getConfigPath("MenuItems.trollMenu.extras.isDisabled");
47+
_itemMeta.setLore(Arrays.asList(lore));
48+
49+
_itemStack.setItemMeta(_itemMeta);
50+
51+
return this;
52+
}
53+
54+
public TrollItemMetaData setToggled(){
55+
isToggled = !isToggled;
56+
57+
if (isToggled)
58+
_itemMeta.addEnchant(XEnchantment.DURABILITY.getEnchant(), 1, true);
59+
else
60+
_itemMeta.removeEnchant(XEnchantment.DURABILITY.getEnchant());
61+
62+
lore = Arrays.copyOf(lore, lore.length + 1);
63+
lore[lore.length - 1] = isToggled ? Core.instance.utils.getConfigPath("MenuItems.trollMenu.extras.isEnabled") : Core.instance.utils.getConfigPath("MenuItems.trollMenu.extras.isDisabled");
64+
_itemMeta.setLore(Arrays.asList(lore));
65+
66+
_itemStack.setItemMeta(_itemMeta);
67+
68+
return this;
69+
}
70+
71+
public TrollItemMetaData setDisplayName(String displayName){
72+
this.displayName = displayName;
73+
74+
this._itemMeta.setDisplayName(displayName);
75+
76+
_itemStack.setItemMeta(_itemMeta);
77+
return this;
78+
}
79+
80+
public TrollItemMetaData setLore(String ...lore){
81+
this.lore = lore;
82+
83+
_itemMeta.setLore(Arrays
84+
.asList(
85+
86+
lore
87+
88+
)
89+
);
90+
91+
_itemStack.setItemMeta(_itemMeta);
92+
93+
return this;
94+
}
95+
96+
public TrollItemMetaData setConfigData(String itemConfigName){
97+
try {
98+
this.setDisplayName(Core.instance.utils.getConfigPath("MenuItems.trollMenu." + itemConfigName + ".name"));
99+
this.setLore(Core.instance.utils.getConfigPath("MenuItems.trollMenu." + itemConfigName + ".lore").split("\\|"));
100+
} catch (NullPointerException e) {
101+
Bukkit.getLogger().warning("[TrollGUI] Could not find config data for item: " + itemConfigName + " (either .name or .lore is missing)");
102+
e.printStackTrace();
103+
}
104+
105+
106+
107+
return this;
108+
}
109+
110+
public TrollItemMetaData setItem(XMaterial item){
111+
_item = item;
112+
113+
_itemStack = new ItemStack(item.parseMaterial(), 1);
114+
115+
_itemMeta = _itemStack.getItemMeta();
116+
117+
_itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
118+
_itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
119+
_itemMeta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
120+
121+
_itemStack.setItemMeta(_itemMeta);
122+
return this;
123+
}
124+
125+
// A function to replace placeholders in the current lore with values
126+
public TrollItemMetaData formatPlaceholders(String placeholders, String ...values){
127+
String[] lore = this.lore;
128+
for (int i = 0; i < lore.length; i++) {
129+
lore[i] = lore[i].replace(placeholders, values[i]);
130+
}
131+
_itemMeta.setLore(Arrays.asList(lore));
132+
_itemStack.setItemMeta(_itemMeta);
133+
134+
return this;
135+
}
136+
137+
138+
// Getters
139+
public XMaterial getItem(){
140+
return _item;
141+
}
142+
143+
public ItemStack getItemStack(){
144+
return _itemStack;
145+
}
146+
147+
public ItemMeta getItemMeta(){
148+
return _itemMeta;
149+
}
150+
}

src/main/java/me/xapu1337/recodes/trollgui/Inventorys/PlayerSelector.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.cryptomorin.xseries.XMaterial;
44
import me.xapu1337.recodes.trollgui.Cores.Core;
5-
import org.apache.commons.lang.ArrayUtils;
65
import org.bukkit.Bukkit;
76
import org.bukkit.ChatColor;
87
import org.bukkit.NamespacedKey;
@@ -15,7 +14,6 @@
1514
import org.bukkit.inventory.ItemStack;
1615
import org.bukkit.inventory.meta.SkullMeta;
1716
import org.bukkit.persistence.PersistentDataType;
18-
import sun.jvm.hotspot.oops.Array;
1917

2018
import java.util.ArrayList;
2119
import java.util.Arrays;
@@ -52,10 +50,10 @@ public PlayerSelector(Player player) {
5250
public void initializeItems(){
5351
ArrayList<Player> players = new ArrayList<>(Core.instance.getServer().getOnlinePlayers());
5452
for(int i = 45; i < 54; i++)
55-
GUI.setItem(i, Core.instance.utils.createItem(XMaterial.GRAY_STAINED_GLASS_PANE, false, " "));
56-
GUI.setItem(48, Core.instance.utils.createItem(XMaterial.OAK_BUTTON, false, Core.instance.utils.getConfigPath("MenuItems.playerSelector.left.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.left.lore")));
57-
GUI.setItem(49, Core.instance.utils.createItem(XMaterial.BARRIER, false, Core.instance.utils.getConfigPath("MenuItems.playerSelector.close.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.close.lore")));
58-
GUI.setItem(50, Core.instance.utils.createItem(XMaterial.OAK_BUTTON, false, Core.instance.utils.getConfigPath("MenuItems.playerSelector.right.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.right.lore")));
53+
GUI.setItem(i, Core.instance.utils.createItem(XMaterial.GRAY_STAINED_GLASS_PANE, " "));
54+
GUI.setItem(48, Core.instance.utils.createItem(XMaterial.OAK_BUTTON, Core.instance.utils.getConfigPath("MenuItems.playerSelector.left.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.left.lore")));
55+
GUI.setItem(49, Core.instance.utils.createItem(XMaterial.BARRIER, Core.instance.utils.getConfigPath("MenuItems.playerSelector.close.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.close.lore")));
56+
GUI.setItem(50, Core.instance.utils.createItem(XMaterial.OAK_BUTTON, Core.instance.utils.getConfigPath("MenuItems.playerSelector.right.name"), Core.instance.utils.getConfigPath("MenuItems.playerSelector.right.lore")));
5957

6058
if(players != null && !players.isEmpty()) {
6159
for(int i = 0; i < maxItemsPerPage; i++) {
@@ -95,7 +93,7 @@ public void onInventoryClicked(InventoryClickEvent event) {
9593

9694
if (clickedItem.getType() == XMaterial.PLAYER_HEAD.parseMaterial()) {
9795
Player selectedPlayer = Bukkit.getPlayer(UUID.fromString(clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(Core.instance, "uuid"), PersistentDataType.STRING)));
98-
if(selectedPlayer == null) { event.getWhoClicked().sendMessage(Core.instance.utils.getConfigPath("Messages.playerNotAvaliable", true)); return; }
96+
if(selectedPlayer == null) { event.getWhoClicked().sendMessage(Core.instance.utils.getConfigPath("Messages. playerNotAvailable", true).replaceAll("%PLAYER%", clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(Core.instance, "uuid"), PersistentDataType.STRING) )); return; }
9997
player.openInventory(new TrollGUI((Player) event.getWhoClicked(), selectedPlayer).getInventory());
10098
} else if (clickedItem.getType() == XMaterial.BARRIER.parseMaterial()) {
10199
player.closeInventory();

src/main/java/me/xapu1337/recodes/trollgui/Inventorys/Settings.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.cryptomorin.xseries.XMaterial;
44
import com.cryptomorin.xseries.XSound;
55
import me.xapu1337.recodes.trollgui.Cores.Core;
6-
import me.xapu1337.recodes.trollgui.Utilities.Util;
76
import net.md_5.bungee.api.ChatMessageType;
87
import net.md_5.bungee.api.chat.TextComponent;
98
import org.bukkit.Bukkit;
@@ -33,12 +32,12 @@ public Settings() {
3332
Bukkit.getPluginManager().registerEvents(this, Core.instance);
3433
GUI = Bukkit.createInventory(this, 9, centerTitle(Core.instance.utils.getConfigPath("MenuTitles.settings")));
3534
for(int i = 0; i < GUI.getSize(); i++)
36-
GUI.setItem(i, Core.instance.utils.createItem(XMaterial.GRAY_STAINED_GLASS_PANE, false, " "));
35+
GUI.setItem(i, Core.instance.utils.createItem(XMaterial.GRAY_STAINED_GLASS_PANE, "§r"));
3736
initializeItems();
3837
}
3938

4039
public void initializeItems(){
41-
GUI.setItem(4, Core.instance.utils.createItem(XMaterial.REDSTONE_BLOCK, false, Core.instance.utils.getConfigPath("MenuItems.settingsMenu.reload.name"), Core.instance.utils.getConfigPath("MenuItems.settingsMenu.reload.lore")));
40+
GUI.setItem(4, Core.instance.utils.createItem(XMaterial.REDSTONE_BLOCK, Core.instance.utils.getConfigPath("MenuItems.settingsMenu.reload.name"), Core.instance.utils.getConfigPath("MenuItems.settingsMenu.reload.lore")));
4241
}
4342

4443
@Override

0 commit comments

Comments
 (0)