Skip to content

Commit 0d47380

Browse files
committed
switch to CraftItem
1 parent 63ee747 commit 0d47380

File tree

9 files changed

+118
-1148
lines changed

9 files changed

+118
-1148
lines changed

pom.xml

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<core.version>4.5.7</core.version>
1919
<minelib.version>1.2.5</minelib.version>
2020
<craftux.version>1.5.0</craftux.version>
21+
<craftitem.version>1.0.0</craftitem.version>
2122
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2223
</properties>
2324

@@ -74,6 +75,12 @@
7475
<shadedPattern>me.hsgamer.bettergui.lib.craftux</shadedPattern>
7576
</relocation>
7677

78+
<!-- CraftItem -->
79+
<relocation>
80+
<pattern>io.github.projectunified.craftux</pattern>
81+
<shadedPattern>me.hsgamer.bettergui.lib.craftitem</shadedPattern>
82+
</relocation>
83+
7784
<!-- bStats -->
7885
<relocation>
7986
<pattern>org.bstats</pattern>
@@ -195,11 +202,6 @@
195202
<artifactId>hscore-bukkit-config</artifactId>
196203
<version>${core.version}</version>
197204
</dependency>
198-
<dependency>
199-
<groupId>me.hsgamer</groupId>
200-
<artifactId>hscore-bukkit-item</artifactId>
201-
<version>${core.version}</version>
202-
</dependency>
203205
<dependency>
204206
<groupId>me.hsgamer</groupId>
205207
<artifactId>hscore-bukkit-variable</artifactId>
@@ -337,6 +339,28 @@
337339
<version>${craftux.version}</version>
338340
</dependency>
339341

342+
<!-- CraftItem -->
343+
<dependency>
344+
<groupId>io.github.projectunified</groupId>
345+
<artifactId>craftitem-modifier</artifactId>
346+
<version>${craftitem.version}</version>
347+
</dependency>
348+
<dependency>
349+
<groupId>io.github.projectunified</groupId>
350+
<artifactId>craftitem-spigot-modifier</artifactId>
351+
<version>${craftitem.version}</version>
352+
</dependency>
353+
<dependency>
354+
<groupId>io.github.projectunified</groupId>
355+
<artifactId>craftitem-spigot-nbt</artifactId>
356+
<version>${craftitem.version}</version>
357+
</dependency>
358+
<dependency>
359+
<groupId>io.github.projectunified</groupId>
360+
<artifactId>craftitem-spigot-skull</artifactId>
361+
<version>${craftitem.version}</version>
362+
</dependency>
363+
340364
<!-- Annotations -->
341365
<dependency>
342366
<groupId>org.jetbrains</groupId>

src/main/java/me/hsgamer/bettergui/builder/ItemModifierBuilder.java

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,56 @@
11
package me.hsgamer.bettergui.builder;
22

3-
import me.hsgamer.bettergui.modifier.NBTModifier;
4-
import me.hsgamer.bettergui.modifier.SkullModifier;
3+
import io.github.projectunified.craftitem.core.ItemModifier;
4+
import io.github.projectunified.craftitem.modifier.AmountModifier;
5+
import io.github.projectunified.craftitem.modifier.NameModifier;
6+
import io.github.projectunified.craftitem.spigot.modifier.*;
7+
import io.github.projectunified.craftitem.spigot.nbt.NBTModifier;
8+
import io.github.projectunified.craftitem.spigot.skull.SkullModifier;
59
import me.hsgamer.hscore.builder.FunctionalMassBuilder;
6-
import me.hsgamer.hscore.bukkit.item.modifier.*;
7-
import me.hsgamer.hscore.minecraft.item.ItemModifier;
8-
import org.bukkit.inventory.ItemStack;
10+
import me.hsgamer.hscore.bukkit.utils.VersionUtils;
11+
import me.hsgamer.hscore.common.CollectionUtils;
912

1013
import java.util.List;
1114
import java.util.Map;
12-
import java.util.function.Supplier;
15+
import java.util.Objects;
1316
import java.util.stream.Collectors;
1417
import java.util.stream.Stream;
1518

1619
/**
1720
* The item modifier builder
1821
*/
19-
public class ItemModifierBuilder extends FunctionalMassBuilder<Map.Entry<String, Object>, ItemModifier<ItemStack>> {
22+
public class ItemModifierBuilder extends FunctionalMassBuilder<Map.Entry<String, Object>, ItemModifier> {
2023
/**
2124
* The instance of the item modifier builder
2225
*/
2326
public static final ItemModifierBuilder INSTANCE = new ItemModifierBuilder();
2427

2528
private ItemModifierBuilder() {
26-
register(NameModifier::new, "name");
27-
register(LoreModifier::new, "lore");
28-
register(AmountModifier::new, "amount");
29-
register(DurabilityModifier::new, "durability", "damage");
30-
register(MaterialModifier::new, "material", "id", "mat", "raw-material", "raw-id", "raw-mat");
31-
register(EnchantmentModifier::new, "enchantment", "enchant", "enc");
32-
register(ItemFlagModifier::new, "flag", "item-flags", "itemflag", "itemflags", "item-flag");
33-
register(SkullModifier::new, "skull", "head", "skull-owner");
34-
register(NBTModifier::new, "nbt", "nbt-data");
35-
register(PotionEffectModifier::new, "potion-effect", "potion", "effect");
29+
register(entry -> new NameModifier(Objects.toString(entry.getValue())), "name");
30+
register(entry -> new LoreModifier(CollectionUtils.createStringListFromObject(entry)), "lore");
31+
register(entry -> new AmountModifier(Objects.toString(entry.getValue())), "amount");
32+
register(entry -> new DurabilityModifier(Objects.toString(entry.getValue())), "durability", "damage");
33+
register(entry -> new MaterialModifier(CollectionUtils.createStringListFromObject(entry.getValue(), true)), "material", "id", "mat", "raw-material", "raw-id", "raw-mat");
34+
register(entry -> new EnchantmentModifier(CollectionUtils.createStringListFromObject(entry.getValue(), true)), "enchantment", "enchant", "enc");
35+
register(entry -> new ItemFlagModifier(CollectionUtils.createStringListFromObject(entry.getValue(), true)), "flag", "item-flags", "itemflag", "itemflags", "item-flag");
36+
register(entry -> new SkullModifier(Objects.toString(entry.getValue())), "skull", "head", "skull-owner");
37+
register(entry -> new NBTModifier(entry.getValue(), VersionUtils.isAtLeast(20, 5)), "nbt", "nbt-data");
38+
register(entry -> new PotionEffectModifier(CollectionUtils.createStringListFromObject(entry.getValue(), true)), "potion-effect", "potion", "effect");
3639
}
3740

3841
@Override
3942
protected String getType(Map.Entry<String, Object> input) {
4043
return input.getKey();
4144
}
4245

43-
/**
44-
* Register a new modifier creator
45-
*
46-
* @param creator the creator
47-
* @param type the type
48-
*/
49-
public void register(Supplier<ItemModifier<ItemStack>> creator, String... type) {
50-
register(input -> {
51-
ItemModifier<ItemStack> itemModifier = creator.get();
52-
Object value = input.getValue();
53-
itemModifier.loadFromObject(value);
54-
return itemModifier;
55-
}, type);
56-
}
57-
5846
/**
5947
* Build all modifiers from a case-insensitive map
6048
*
6149
* @param map the map
6250
*
6351
* @return the modifiers
6452
*/
65-
public List<ItemModifier<ItemStack>> build(Map<String, Object> map) {
53+
public List<ItemModifier> build(Map<String, Object> map) {
6654
return map.entrySet()
6755
.stream()
6856
.flatMap(entry -> build(entry).map(Stream::of).orElse(Stream.empty()))

src/main/java/me/hsgamer/bettergui/button/WrappedDummyButton.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package me.hsgamer.bettergui.button;
22

3+
import io.github.projectunified.craftitem.core.ItemModifier;
4+
import io.github.projectunified.craftitem.spigot.core.SpigotItem;
35
import io.github.projectunified.craftux.common.Button;
46
import me.hsgamer.bettergui.api.button.BaseWrappedButton;
57
import me.hsgamer.bettergui.builder.ButtonBuilder;
68
import me.hsgamer.bettergui.builder.ItemModifierBuilder;
79
import me.hsgamer.bettergui.util.StringReplacerApplier;
8-
import me.hsgamer.hscore.bukkit.item.BukkitItemBuilder;
9-
import me.hsgamer.hscore.minecraft.item.ItemBuilder;
10-
import org.bukkit.inventory.ItemStack;
1110

11+
import java.util.List;
1212
import java.util.Map;
13+
import java.util.function.UnaryOperator;
1314

1415
public class WrappedDummyButton extends BaseWrappedButton<Button> {
1516
public WrappedDummyButton(ButtonBuilder.Input input) {
@@ -18,10 +19,14 @@ public WrappedDummyButton(ButtonBuilder.Input input) {
1819

1920
@Override
2021
protected Button createButton(Map<String, Object> section) {
21-
ItemBuilder<ItemStack> itemBuilder = StringReplacerApplier.apply(new BukkitItemBuilder(), this);
22-
ItemModifierBuilder.INSTANCE.build(section).forEach(itemBuilder::addItemModifier);
22+
List<ItemModifier> itemModifiers = ItemModifierBuilder.INSTANCE.build(section);
2323
return (uuid, actionItem) -> {
24-
actionItem.setItem(itemBuilder.build(uuid));
24+
UnaryOperator<String> replacer = StringReplacerApplier.getReplaceOperator(uuid, this);
25+
SpigotItem spigotItem = new SpigotItem();
26+
for (ItemModifier itemModifier : itemModifiers) {
27+
itemModifier.modify(spigotItem, replacer);
28+
}
29+
actionItem.setItem(spigotItem.getItemStack());
2530
return true;
2631
};
2732
}

src/main/java/me/hsgamer/bettergui/button/WrappedSimpleButton.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package me.hsgamer.bettergui.button;
22

3+
import io.github.projectunified.craftitem.core.ItemModifier;
4+
import io.github.projectunified.craftitem.spigot.core.SpigotItem;
35
import io.github.projectunified.craftux.common.Button;
46
import me.hsgamer.bettergui.builder.ButtonBuilder;
57
import me.hsgamer.bettergui.builder.ItemModifierBuilder;
68
import me.hsgamer.bettergui.util.StringReplacerApplier;
7-
import me.hsgamer.hscore.bukkit.item.BukkitItemBuilder;
8-
import me.hsgamer.hscore.minecraft.item.ItemBuilder;
99
import org.bukkit.event.inventory.InventoryClickEvent;
10-
import org.bukkit.inventory.ItemStack;
1110

11+
import java.util.List;
1212
import java.util.Map;
1313
import java.util.function.Consumer;
1414
import java.util.function.Function;
15+
import java.util.function.UnaryOperator;
1516

1617
public class WrappedSimpleButton extends ActionButton<Button> {
1718
public WrappedSimpleButton(ButtonBuilder.Input input) {
@@ -20,10 +21,14 @@ public WrappedSimpleButton(ButtonBuilder.Input input) {
2021

2122
@Override
2223
protected Function<Consumer<InventoryClickEvent>, Button> getButtonFunction(Map<String, Object> section) {
23-
ItemBuilder<ItemStack> itemBuilder = StringReplacerApplier.apply(new BukkitItemBuilder(), this);
24-
ItemModifierBuilder.INSTANCE.build(section).forEach(itemBuilder::addItemModifier);
24+
List<ItemModifier> itemModifiers = ItemModifierBuilder.INSTANCE.build(section);
2525
return buttonConsumer -> (uuid, actionItem) -> {
26-
actionItem.setItem(itemBuilder.build(uuid));
26+
UnaryOperator<String> replacer = StringReplacerApplier.getReplaceOperator(uuid, this);
27+
SpigotItem item = new SpigotItem();
28+
for (ItemModifier itemModifier : itemModifiers) {
29+
itemModifier.modify(item, replacer);
30+
}
31+
actionItem.setItem(item.getItemStack());
2732
actionItem.setAction(InventoryClickEvent.class, buttonConsumer);
2833
return true;
2934
};

src/main/java/me/hsgamer/bettergui/menu/AddonMenu.java

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.hsgamer.bettergui.menu;
22

3+
import io.github.projectunified.craftitem.core.ItemModifier;
4+
import io.github.projectunified.craftitem.spigot.core.SpigotItem;
35
import io.github.projectunified.craftux.common.*;
46
import io.github.projectunified.craftux.spigot.SpigotInventoryUtil;
57
import me.hsgamer.bettergui.builder.ItemModifierBuilder;
@@ -8,20 +10,18 @@
810
import me.hsgamer.bettergui.downloader.AddonDownloader;
911
import me.hsgamer.bettergui.manager.AddonManager;
1012
import me.hsgamer.bettergui.util.StringReplacerApplier;
11-
import me.hsgamer.hscore.bukkit.item.BukkitItemBuilder;
1213
import me.hsgamer.hscore.bukkit.utils.MessageUtils;
1314
import me.hsgamer.hscore.common.MapUtils;
1415
import me.hsgamer.hscore.config.Config;
1516
import me.hsgamer.hscore.downloader.core.object.DownloadInfo;
16-
import me.hsgamer.hscore.minecraft.item.ItemBuilder;
1717
import org.bukkit.entity.HumanEntity;
1818
import org.bukkit.event.inventory.ClickType;
1919
import org.bukkit.event.inventory.InventoryClickEvent;
20-
import org.bukkit.inventory.ItemStack;
2120
import org.jetbrains.annotations.NotNull;
2221

2322
import java.util.*;
2423
import java.util.function.Consumer;
24+
import java.util.function.UnaryOperator;
2525
import java.util.logging.Level;
2626

2727
import static me.hsgamer.bettergui.BetterGUI.getInstance;
@@ -38,7 +38,7 @@ public class AddonMenu extends BaseInventoryMenu<Mask> {
3838
private final String upToDateStatus;
3939
private final String availableStatus;
4040
private final String outdatedStatus;
41-
private final Map<String, Object> itemMap;
41+
private final List<ItemModifier> itemModifiers;
4242

4343
public AddonMenu(Config config) {
4444
super(config);
@@ -49,7 +49,8 @@ public AddonMenu(Config config) {
4949
upToDateStatus = Objects.toString(config.get("&aUp-to-date", new String[]{STATUS_PATH, "up-to-date"}));
5050
availableStatus = Objects.toString(config.get("&aAvailable", new String[]{STATUS_PATH, "available"}));
5151
outdatedStatus = Objects.toString(config.get("&cOutdated", new String[]{STATUS_PATH, "outdated"}));
52-
itemMap = MapUtils.castOptionalStringObjectMap(configSettings.get(BUTTON_PATH)).orElseThrow(() -> new IllegalStateException("The button map must be a map"));
52+
Map<String, Object> itemMap = MapUtils.castOptionalStringObjectMap(configSettings.get(BUTTON_PATH)).orElseThrow(() -> new IllegalStateException("The button map must be a map"));
53+
itemModifiers = ItemModifierBuilder.INSTANCE.build(itemMap);
5354
}
5455

5556
@Override
@@ -67,9 +68,7 @@ private class AddonMask implements Mask, Element {
6768
int slot = 0;
6869
for (DownloadInfo info : downloadInfos) {
6970
AddonButton button = addonButtonMap.computeIfAbsent(info, downloadInfo -> {
70-
ItemBuilder<ItemStack> itemBuilder = new BukkitItemBuilder();
71-
ItemModifierBuilder.INSTANCE.build(itemMap).forEach(itemBuilder::addItemModifier);
72-
AddonButton addonButton = new AddonButton(downloadInfo, itemBuilder);
71+
AddonButton addonButton = new AddonButton(downloadInfo);
7372
addonButton.init();
7473
return addonButton;
7574
});
@@ -87,20 +86,20 @@ public void stop() {
8786

8887
private class AddonButton implements Button, Element {
8988
private final DownloadInfo downloadInfo;
90-
private final ItemBuilder<ItemStack> itemBuilder;
89+
private final UnaryOperator<String> translator;
9190
private String status = "";
9291

93-
AddonButton(DownloadInfo downloadInfo, ItemBuilder<ItemStack> itemBuilder) {
92+
AddonButton(DownloadInfo downloadInfo) {
9493
this.downloadInfo = downloadInfo;
95-
this.itemBuilder = itemBuilder;
96-
itemBuilder.addStringReplacer(original -> original
97-
.replace("{status}", status)
98-
.replace("{name}", downloadInfo.getName())
99-
.replace("{version}", downloadInfo.getVersion())
100-
.replace("{description}", AdditionalInfoKeys.DESCRIPTION.get(downloadInfo))
101-
.replace("{author}", AdditionalInfoKeys.AUTHORS.get(downloadInfo).toString())
102-
);
103-
itemBuilder.addStringReplacer(StringReplacerApplier.COLORIZE);
94+
this.translator = s -> {
95+
s = s
96+
.replace("{status}", status)
97+
.replace("{name}", downloadInfo.getName())
98+
.replace("{version}", downloadInfo.getVersion())
99+
.replace("{description}", AdditionalInfoKeys.DESCRIPTION.get(downloadInfo))
100+
.replace("{author}", AdditionalInfoKeys.AUTHORS.get(downloadInfo).toString());
101+
return StringReplacerApplier.COLORIZE.replace(s);
102+
};
104103
}
105104

106105
private void updateStatus() {
@@ -117,7 +116,11 @@ public void init() {
117116
@Override
118117
public boolean apply(@NotNull UUID uuid, @NotNull ActionItem actionItem) {
119118
updateStatus();
120-
actionItem.setItem(itemBuilder.build(uuid));
119+
SpigotItem item = new SpigotItem();
120+
for (ItemModifier itemModifier : itemModifiers) {
121+
itemModifier.modify(item, translator);
122+
}
123+
actionItem.setItem(item.getItemStack());
121124
actionItem.setAction(InventoryClickEvent.class, event -> {
122125
HumanEntity humanEntity = event.getWhoClicked();
123126
ClickType clickType = event.getClick();

0 commit comments

Comments
 (0)