1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
package dev.mayaqq.ygasi.gui;
import dev.mayaqq.ygasi.registry.ConfigRegistry;
import dev.mayaqq.ygasi.registry.PlayerDataRegistry;
import eu.pb4.sgui.api.elements.*;
import eu.pb4.sgui.api.gui.SimpleGui;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.stat.Stats;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import java.util.UUID;
import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS;
public class BranchGui {
public static void gui(ServerPlayerEntity player) {
UUID playerUUID = player.getUuid();
PlayerDataRegistry.load(playerUUID);
try {
SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_9X3, player, false) {};
gui.setTitle(Text.of("§3Skill Points: " + player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS))));
//background items
for (int x = 0; x <= 17; x++) {
gui.setSlot(x, new GuiElementBuilder()
.setItem(Items.GRAY_STAINED_GLASS_PANE)
.setName(Text.of(" "))
);
}
for (int x = 18; x <= 26; x++) {
gui.setSlot(x, new GuiElementBuilder()
.setItem(Items.RED_STAINED_GLASS_PANE)
.setName(Text.of(" "))
);
}
//close button
gui.setSlot(22, new GuiElementBuilder()
.setItem(Items.BARRIER)
.setName(Text.literal("Close")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.DARK_RED)))
.setCallback((index, clickType, actionType) -> gui.close())
);
//branch items
if (PlayerDataRegistry.PLAYERDATA.branches.get("mercenary") == null || !PlayerDataRegistry.PLAYERDATA.branches.get("mercenary")) {
gui.setSlot(11, new GuiElementBuilder()
.setItem(Items.IRON_SWORD)
.hideFlag(ItemStack.TooltipSection.MODIFIERS)
.addLoreLine(Text.literal("Cost: " + ConfigRegistry.CONFIG.branchCost).setStyle(Style.EMPTY.withFormatting(Formatting.DARK_GRAY)))
.setName(Text.literal("Mercenary")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.RED)))
.setCallback((index, clickType, actionType) -> save(player, "mercenary", "§cMercenary"))
);
} else {
gui.setSlot(11, new GuiElementBuilder()
.setItem(Items.IRON_SWORD)
.hideFlag(ItemStack.TooltipSection.MODIFIERS)
.glow()
.setName(Text.literal("Mercenary")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.RED)))
.setCallback((index, clickType, actionType) -> gui.close())
);
}
if (PlayerDataRegistry.PLAYERDATA.branches.get("wizardry") == null || !PlayerDataRegistry.PLAYERDATA.branches.get("wizardry")) {
gui.setSlot(13, new GuiElementBuilder()
.setItem(Items.BLAZE_ROD)
.addLoreLine(Text.literal("Cost: " + ConfigRegistry.CONFIG.branchCost).setStyle(Style.EMPTY.withFormatting(Formatting.DARK_GRAY)))
.setName(Text.literal("Wizardry")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.DARK_PURPLE)))
.setCallback((index, clickType, actionType) -> save(player, "wizardry", "§5Wizardry"))
);
} else {
gui.setSlot(13, new GuiElementBuilder()
.setItem(Items.BLAZE_ROD)
.glow()
.setName(Text.literal("Wizardry")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.DARK_PURPLE)))
.setCallback((index, clickType, actionType) -> gui.close())
);
}
if (PlayerDataRegistry.PLAYERDATA.branches.get("druidry") == null || !PlayerDataRegistry.PLAYERDATA.branches.get("druidry")) {
gui.setSlot(15, new GuiElementBuilder()
.setItem(Items.OAK_SAPLING)
.addLoreLine(Text.literal("Cost: " + ConfigRegistry.CONFIG.branchCost).setStyle(Style.EMPTY.withFormatting(Formatting.DARK_GRAY)))
.setName(Text.literal("Druidry")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.GREEN)))
.setCallback((index, clickType, actionType) -> save(player, "druidry", "§aDruidry"))
);
} else {
gui.setSlot(15, new GuiElementBuilder()
.setItem(Items.OAK_SAPLING)
.glow()
.setName(Text.literal("Druidry")
.setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.GREEN)))
.setCallback((index, clickType, actionType) -> gui.close())
);
}
gui.open();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void save(ServerPlayerEntity player, String branch, String branchName) {
if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)) >= ConfigRegistry.CONFIG.branchCost) {
player.getStatHandler().setStat(player, Stats.CUSTOM.getOrCreateStat(SKILL_POINTS), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)) - ConfigRegistry.CONFIG.branchCost);
player.sendMessage(Text.of("You have selected the §a" + branchName + " §fbranch!"), false);
PlayerDataRegistry.PLAYERDATA.branches.put(branch, true);
PlayerDataRegistry.save(player.getUuid());
player.closeHandledScreen();
} else {
player.sendMessage(Text.literal("You don't have enough skill points to unlock this branch!").setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.RED)), false);
player.closeHandledScreen();
}
}
}
|