fix(pocket-base): accept recovery compass metadata
This commit is contained in:
@@ -27,7 +27,6 @@ import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.CompassMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
final class PocketBaseKeystoneService implements Listener {
|
||||
@@ -201,8 +200,13 @@ final class PocketBaseKeystoneService implements Listener {
|
||||
|
||||
static ItemStack createKeystone(NamespacedKey markerKey) {
|
||||
ItemStack item = new ItemStack(Material.RECOVERY_COMPASS);
|
||||
decorateKeystone(item, markerKey);
|
||||
return item;
|
||||
}
|
||||
|
||||
static void decorateKeystone(ItemStack item, NamespacedKey markerKey) {
|
||||
ItemMeta metadata = item.getItemMeta();
|
||||
if (!(metadata instanceof CompassMeta)) {
|
||||
if (metadata == null) {
|
||||
throw new IllegalStateException("Recovery Compass metadata is unavailable");
|
||||
}
|
||||
metadata.displayName(Component.text(
|
||||
@@ -218,7 +222,6 @@ final class PocketBaseKeystoneService implements Listener {
|
||||
markerKey, PersistentDataType.BYTE, (byte) 1
|
||||
);
|
||||
item.setItemMeta(metadata);
|
||||
return item;
|
||||
}
|
||||
|
||||
static RecipeSpec recipeSpecification() {
|
||||
|
||||
@@ -34,6 +34,22 @@ import org.bukkit.persistence.PersistentDataType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
final class PocketBaseKeystoneServiceTest {
|
||||
@Test
|
||||
void createsKeystoneWithGenericRecoveryCompassMetadata() {
|
||||
NamespacedKey key = NamespacedKey.minecraft("pocket_base_keystone");
|
||||
ItemStack item = mock(ItemStack.class);
|
||||
ItemMeta genericMetadata = mock(ItemMeta.class);
|
||||
PersistentDataContainer data = mock(PersistentDataContainer.class);
|
||||
|
||||
when(item.getItemMeta()).thenReturn(genericMetadata);
|
||||
when(genericMetadata.getPersistentDataContainer()).thenReturn(data);
|
||||
|
||||
PocketBaseKeystoneService.decorateKeystone(item, key);
|
||||
|
||||
verify(data).set(key, PersistentDataType.BYTE, (byte) 1);
|
||||
verify(item).setItemMeta(genericMetadata);
|
||||
}
|
||||
|
||||
@Test
|
||||
void recipeUsesNetheriteOnCardinalsAndObsidianInCorners() {
|
||||
PocketBaseKeystoneService.RecipeSpec recipe =
|
||||
|
||||
Reference in New Issue
Block a user