Skip to content

Commit 0cb1c62

Browse files
committed
added getIdOrType, itemById, itemByIdOrType
1 parent b4e69ad commit 0cb1c62

File tree

3 files changed

+61
-2
lines changed

3 files changed

+61
-2
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<modelVersion>4.0.0</modelVersion>
77
<groupId>io.github.mooy1</groupId>
88
<artifactId>InfinityLib</artifactId>
9-
<version>1.2.0</version>
9+
<version>1.2.1</version>
1010

1111
<properties>
1212
<maven.compiler.source>1.8</maven.compiler.source>

src/main/java/io/github/mooy1/infinitylib/common/StackUtils.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package io.github.mooy1.infinitylib.common;
22

3+
import javax.annotation.Nonnull;
34
import javax.annotation.Nullable;
45
import javax.annotation.ParametersAreNonnullByDefault;
56

67
import lombok.experimental.UtilityClass;
78

9+
import org.bukkit.Material;
810
import org.bukkit.NamespacedKey;
911
import org.bukkit.inventory.ItemStack;
1012
import org.bukkit.inventory.meta.ItemMeta;
1113
import org.bukkit.persistence.PersistentDataType;
1214

15+
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
1316
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack;
1417
import io.github.thebusybiscuit.slimefun4.implementation.Slimefun;
1518

@@ -35,4 +38,28 @@ public static String getId(ItemMeta meta) {
3538
return meta.getPersistentDataContainer().get(ID_KEY, PersistentDataType.STRING);
3639
}
3740

41+
@Nonnull
42+
public static String getIdOrType(ItemStack item) {
43+
if (item instanceof SlimefunItemStack) {
44+
return ((SlimefunItemStack) item).getItemId();
45+
} else if (item.hasItemMeta()) {
46+
String id = getId(item.getItemMeta());
47+
return id == null ? item.getType().name() : id;
48+
} else {
49+
return item.getType().name();
50+
}
51+
}
52+
53+
@Nullable
54+
public static ItemStack itemById(String id) {
55+
SlimefunItem item = SlimefunItem.getById(id);
56+
return item == null ? null : item.getItem().clone();
57+
}
58+
59+
@Nonnull
60+
public static ItemStack itemByIdOrType(String idOrType) {
61+
SlimefunItem item = SlimefunItem.getById(idOrType);
62+
return item == null ? new ItemStack(Material.valueOf(idOrType)) : item.getItem().clone();
63+
}
64+
3865
}

src/test/java/io/github/mooy1/infinitylib/common/TestStackUtils.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService;
1212
import io.github.thebusybiscuit.slimefun4.implementation.Slimefun;
1313
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems;
14+
import io.github.thebusybiscuit.slimefun4.implementation.setup.SlimefunItemSetup;
1415

1516
public final class TestStackUtils {
1617

1718
@BeforeAll
1819
public static void load() {
1920
MockBukkit.mock();
20-
MockBukkit.load(Slimefun.class);
21+
SlimefunItemSetup.setup(MockBukkit.load(Slimefun.class));
2122
}
2223

2324
@AfterAll
@@ -37,4 +38,35 @@ void testGetId() {
3738
Assertions.assertEquals(StackUtils.getId(item2.getItemMeta()), dataService.getItemData(item2.getItemMeta()).orElse(null));
3839
}
3940

41+
@Test
42+
void testGetIdOrType() {
43+
CustomItemDataService dataService = Slimefun.getItemDataService();
44+
ItemStack item1 = SlimefunItems.ADVANCED_CIRCUIT_BOARD;
45+
ItemStack item2 = new ItemStack(Material.IRON_BLOCK);
46+
47+
Assertions.assertEquals(StackUtils.getIdOrType(item1), dataService.getItemData(item1).orElse(item1.getType().name()));
48+
Assertions.assertEquals(StackUtils.getIdOrType(item2), dataService.getItemData(item2).orElse(item2.getType().name()));
49+
}
50+
51+
@Test
52+
void testItemById() {
53+
ItemStack item1 = SlimefunItems.ADVANCED_CIRCUIT_BOARD;
54+
String id1 = SlimefunItems.ADVANCED_CIRCUIT_BOARD.getItemId();
55+
String id2 = Material.IRON_BLOCK.name();
56+
57+
Assertions.assertEquals(StackUtils.itemById(id1), item1);
58+
Assertions.assertNull(StackUtils.itemById(id2));
59+
}
60+
61+
@Test
62+
void testItemByIdOrType() {
63+
ItemStack item1 = SlimefunItems.ADVANCED_CIRCUIT_BOARD;
64+
ItemStack item2 = new ItemStack(Material.IRON_BLOCK);
65+
String id1 = SlimefunItems.ADVANCED_CIRCUIT_BOARD.getItemId();
66+
String id2 = item2.getType().name();
67+
68+
Assertions.assertEquals(StackUtils.itemByIdOrType(id1), item1);
69+
Assertions.assertEquals(StackUtils.itemByIdOrType(id2), item2);
70+
}
71+
4072
}

0 commit comments

Comments
 (0)