-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayerKitSetup.java
More file actions
118 lines (98 loc) · 4.38 KB
/
Copy pathPlayerKitSetup.java
File metadata and controls
118 lines (98 loc) · 4.38 KB
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
package net.onelitefeather.playerkits.kit.setup;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslationArgument;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.onelitefeather.playerkits.kit.PlayerKit;
import net.onelitefeather.playerkits.kit.property.PlayerKitProperties;
import net.onelitefeather.playerkits.util.InventoryUtil;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.Map;
public final class PlayerKitSetup {
private final String kitName;
private KitSetupStep currentStep;
private final Map<Integer, Object> values;
public PlayerKitSetup(@NotNull String kitName) {
this.kitName = kitName;
this.values = new HashMap<>();
}
public String getKitName() {
return kitName;
}
@NotNull
public KitSetupStep getCurrentStep() {
return currentStep;
}
public void setDone(@NotNull Player player, @NotNull KitSetupStep step, @NotNull Object value, @Nullable KitSetupStep nextStep) {
this.values.putIfAbsent(step.getId(), value);
if (nextStep != null) {
setCurrentStep(player, nextStep);
}
}
public void setCurrentStep(@NotNull Player player, @NotNull KitSetupStep currentStep) {
this.currentStep = currentStep;
player.sendMessage(Component.translatable("kit.setup.current-step")
.arguments(TranslationArgument.numeric(currentStep.getId()),
Component.text(currentStep.getName()),
Component.text(currentStep.getType()),
Component.text(currentStep.getDefaultValue().toString())));
}
public void previousStep(@NotNull Player player) {
if(this.currentStep.getId() == 1) return;
var step = KitSetupStep.getById(this.currentStep.getId() - 1);
if (step == null) {
step = currentStep;
}
setCurrentStep(player, step);
}
@NotNull
public PlayerKit createKit(@Nullable ItemStack @NotNull[] items) {
var kit = new PlayerKit();
kit.setName(kitName);
var displayNameStep = KitSetupStep.DISPLAY_NAME;
var oneTimeStep = KitSetupStep.ONE_TIME;
var firstJoinStep = KitSetupStep.FIRST_JOIN;
var visibleStep = KitSetupStep.VISIBLE;
var cooldownTimeStep = KitSetupStep.COOLDOWN_TIME;
var priceStep = KitSetupStep.PRICE;
var displayItemStep = KitSetupStep.DISPLAY_ITEM;
kit.setDisplayName((String) this.values.getOrDefault(displayNameStep.getId(), kitName));
kit.setContents(ItemStack.serializeItemsAsBytes(items));
var properties = new PlayerKitProperties();
properties.setOneTime((Boolean) this.values.getOrDefault(oneTimeStep.getId(), oneTimeStep.getDefaultValue()));
properties.setFirstJoin((Boolean) this.values.getOrDefault(firstJoinStep.getId(), firstJoinStep.getDefaultValue()));
properties.setVisible((Boolean) this.values.getOrDefault(visibleStep.getId(), visibleStep.getDefaultValue()));
properties.setCooldownTime((Long) this.values.getOrDefault(cooldownTimeStep.getId(), cooldownTimeStep.getDefaultValue()));
properties.setPrice((Double) this.values.getOrDefault(priceStep.getId(), priceStep.getDefaultValue()));
properties.setDisplayItem((Material) this.values.getOrDefault(displayItemStep.getId(), displayItemStep.getDefaultValue()));
kit.setProperties(properties);
return kit;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PlayerKitSetup that)) return false;
if (!kitName.equals(that.kitName)) return false;
if (currentStep != that.currentStep) return false;
return values.equals(that.values);
}
@Override
public int hashCode() {
int result = kitName.hashCode();
result = 31 * result + (currentStep != null ? currentStep.hashCode() : 0);
result = 31 * result + values.hashCode();
return result;
}
@Override
public String toString() {
return "PlayerKitSetup{" +
"kitName='" + kitName + '\'' +
", currentStep=" + currentStep +
", values=" + values +
'}';
}
}