Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,6 @@ public DivinityItemType getItem(String id) {
public DivinityProvider.DivinityItemType getItem(ItemStack itemStack) {
String id = ItemStats.getId(itemStack);
if (id == null) return null;
QModuleDrop<?> module = ItemStats.getModule(itemStack);
if (module != null) {
id = module.getId() + ":" + id;
}
return getItem(id);
}

Expand All @@ -119,12 +115,12 @@ public boolean isCustomItemOfId(ItemStack item, String id) {

String itemId = ItemStats.getId(item);
if (itemId == null) return false;
if (itemId.equals(id)) return true;

// Backward compatibility: older callers may still pass the legacy
// "module:id" namespaced form this method used to require.
String[] split = id.split(":", 2);
if (split.length < 2) {
return itemId.equals(id);
}

if (split.length < 2) return false;
QModuleDrop<?> module = ItemStats.getModule(item);
return module != null && module.getId().equalsIgnoreCase(split[0]) && itemId.equals(split[1]);
}
Expand Down Expand Up @@ -158,7 +154,7 @@ public String getNamespace() {

@Override
public String getID() {
return this.moduleItem.getModule().getId() + ":" + this.moduleItem.getId();
return this.moduleItem.getId();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,14 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.bukkit.inventory.ItemStack;
import studio.magemonkey.codex.Codex;
import studio.magemonkey.codex.CodexEngine;
import studio.magemonkey.codex.items.CodexItemManager;
import studio.magemonkey.codex.modules.ModuleManager;
import studio.magemonkey.divinity.Divinity;
import studio.magemonkey.divinity.modules.api.QModuleDrop;
import studio.magemonkey.divinity.modules.list.arrows.ArrowManager;
import studio.magemonkey.divinity.modules.list.customitems.CustomItemsManager;
import studio.magemonkey.divinity.modules.list.itemgenerator.ItemGeneratorManager;
import studio.magemonkey.divinity.stats.items.ItemStats;

import java.util.List;
import java.util.logging.Logger;
Expand Down Expand Up @@ -63,11 +60,9 @@ void setUp() {
itemGenModule = spy(new ItemGeneratorManager(divinity));
when(moduleManager.getModule("item_generator")).thenReturn(itemGenModule);
when(moduleManager.getModules()).thenReturn(List.of(arrowModule, itemGenModule));
doReturn("item_generator").when(itemGenModule).getId();

customItemsModule = spy(new CustomItemsManager(divinity));
when(moduleManager.getModule("custom_items")).thenReturn(customItemsModule);
doReturn("custom_items").when(customItemsModule).getId();

//noinspection unchecked
when(divinity.getModuleManager()).thenReturn(moduleManager);
Expand All @@ -83,8 +78,6 @@ void afterEach() {
void getItem_usesLevel() {
ItemGeneratorManager.GeneratorItem generatorItem = mock(ItemGeneratorManager.GeneratorItem.class);
doReturn(generatorItem).when(itemGenModule).getItemById("foobar");
when(generatorItem.getId()).thenReturn("foobar");
doReturn((QModuleDrop<?>) itemGenModule).when(generatorItem).getModule();

DivinityProvider.DivinityItemType item = provider.getItem("DIVINITY_item_generator:foobar~level:5");

Expand All @@ -100,8 +93,6 @@ void getItem_usesLevel() {
void getItem_usesMaterial() {
ItemGeneratorManager.GeneratorItem generatorItem = mock(ItemGeneratorManager.GeneratorItem.class);
doReturn(generatorItem).when(itemGenModule).getItemById("foobar");
when(generatorItem.getId()).thenReturn("foobar");
doReturn((QModuleDrop<?>) itemGenModule).when(generatorItem).getModule();

DivinityProvider.DivinityItemType item =
provider.getItem("DIVINITY_item_generator:foobar~material:VANILLA_DIAMOND");
Expand All @@ -119,8 +110,6 @@ void getItem_usesMaterial() {
void getItem_noModule_returnsItem() {
ItemGeneratorManager.GeneratorItem generatorItem = mock(ItemGeneratorManager.GeneratorItem.class);
doReturn(generatorItem).when(itemGenModule).getItemById("foobar");
when(generatorItem.getId()).thenReturn("foobar");
doReturn((QModuleDrop<?>) itemGenModule).when(generatorItem).getModule();

DivinityProvider.DivinityItemType item = provider.getItem("DIVINITY_foobar");

Expand All @@ -136,8 +125,6 @@ void getItem_noModule_returnsItem() {
void getItem_customItems_returnsItem() {
CustomItemsManager.CustomItem codexItem = mock(CustomItemsManager.CustomItem.class);
doReturn(codexItem).when(customItemsModule).getItemById("foobar");
when(codexItem.getId()).thenReturn("foobar");
doReturn((QModuleDrop<?>) customItemsModule).when(codexItem).getModule();

DivinityProvider.DivinityItemType item = provider.getItem("DIVINITY_custom_items:foobar");

Expand All @@ -148,40 +135,4 @@ void getItem_customItems_returnsItem() {
assertEquals(codexItem, item.getModuleItem());
assertInstanceOf(DivinityProvider.DivinityItemType.class, item);
}

@Test
void getItem_namespacedIdIncludesModule() {
CustomItemsManager.CustomItem codexItem = mock(CustomItemsManager.CustomItem.class);
doReturn(codexItem).when(customItemsModule).getItemById("foobar");
when(codexItem.getId()).thenReturn("foobar");
doReturn((QModuleDrop<?>) customItemsModule).when(codexItem).getModule();

DivinityProvider.DivinityItemType item = provider.getItem("DIVINITY_custom_items:foobar");

assertNotNull(item);
assertEquals("DIVINITY_custom_items:foobar", item.getNamespacedID());
}

@Test
void getItem_itemStackUsesStoredModule() {
ItemStack itemStack = mock(ItemStack.class);

ItemGeneratorManager.GeneratorItem generatorItem = mock(ItemGeneratorManager.GeneratorItem.class);
doReturn(generatorItem).when(itemGenModule).getItemById("foobar");

CustomItemsManager.CustomItem codexItem = mock(CustomItemsManager.CustomItem.class);
doReturn(codexItem).when(customItemsModule).getItemById("foobar");

try (MockedStatic<ItemStats> itemStats = mockStatic(ItemStats.class)) {
itemStats.when(() -> ItemStats.getId(itemStack)).thenReturn("foobar");
itemStats.when(() -> ItemStats.getModule(itemStack)).thenReturn(customItemsModule);

DivinityProvider.DivinityItemType item = provider.getItem(itemStack);

assertNotNull(item);
assertEquals(codexItem, item.getModuleItem());
verify(customItemsModule).getItemById("foobar");
verify(itemGenModule, never()).getItemById("foobar");
}
}
}
}
Loading