Skip to content

Commit f96744c

Browse files
Fix kotlin resolution ambiguity
- By un-defaulting ItemProvider#get(), Kotlin will no longer treat item providers as potential lambdas - Removed .setItemProvider(Supplier), because Kotlin cannot infer if there is supposed to be one unnamed parameter (from .setItemProvider(Function), or none)
1 parent 06a72aa commit f96744c

7 files changed

Lines changed: 20 additions & 27 deletions

File tree

invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/item/ReactiveItems.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ private fun <S : Item.Builder<*>> S.setReactiveItemProvider(
1717
itemProviderProvider: Provider<ItemProvider>
1818
): S {
1919
addModifier { item -> itemProviderProvider.observeWeak(item) { weakItem -> weakItem.notifyWindows() } }
20-
return setItemProvider(itemProviderProvider) as S
20+
return setItemProvider { itemProviderProvider.get() } as S
2121
}
2222

2323
@OverloadResolutionByLambdaReturnType

invui/src/main/java/xyz/xenondevs/invui/item/CustomBoundItem.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ public void removeViewer(AbstractWindow who, int how) {
7676
}
7777
}
7878

79-
@SuppressWarnings("unchecked")
8079
non-sealed static class Builder<G extends Gui> implements BoundItem.Builder<G> {
8180

8281
protected BiConsumer<Item, G> bindHandler = (item, gui) -> {};
@@ -93,12 +92,6 @@ public Builder<G> setItemProvider(ItemProvider itemProvider) {
9392
return this;
9493
}
9594

96-
@Override
97-
public Builder<G> setItemProvider(Supplier<ItemProvider> itemProvider) {
98-
this.itemProviderFn = (viewer, gui) -> itemProvider.get();
99-
return this;
100-
}
101-
10295
@Override
10396
public Builder<G> setItemProvider(Function<Player, ItemProvider> itemProvider) {
10497
this.itemProviderFn = (viewer, gui) -> itemProvider.apply(viewer);

invui/src/main/java/xyz/xenondevs/invui/item/CustomItem.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.util.function.BiConsumer;
1212
import java.util.function.Consumer;
1313
import java.util.function.Function;
14-
import java.util.function.Supplier;
1514

1615
class CustomItem extends AbstractItem {
1716

@@ -73,12 +72,6 @@ public Builder setItemProvider(ItemProvider itemProvider) {
7372
return this;
7473
}
7574

76-
@Override
77-
public Builder setItemProvider(Supplier<ItemProvider> itemProvider) {
78-
this.itemProviderFn = viewer -> itemProvider.get();
79-
return this;
80-
}
81-
8275
@Override
8376
public Builder setItemProvider(Function<Player, ItemProvider> itemProvider) {
8477
this.itemProviderFn = itemProvider;

invui/src/main/java/xyz/xenondevs/invui/item/Item.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.function.BiConsumer;
1010
import java.util.function.Consumer;
1111
import java.util.function.Function;
12-
import java.util.function.Supplier;
1312

1413
/**
1514
* A UI element for use in {@link Gui Guis}.
@@ -56,10 +55,6 @@ static Item simple(ItemProvider itemProvider) {
5655
return builder().setItemProvider(itemProvider).build();
5756
}
5857

59-
static Item simple(Supplier<ItemProvider> itemProvider) {
60-
return builder().setItemProvider(itemProvider).build();
61-
}
62-
6358
static Item simple(Function<Player, ItemProvider> itemProvider) {
6459
return builder().setItemProvider(itemProvider).build();
6560
}
@@ -68,8 +63,6 @@ interface Builder<S extends Builder<S>> {
6863

6964
S setItemProvider(ItemProvider itemProvider);
7065

71-
S setItemProvider(Supplier<ItemProvider> itemProvider);
72-
7366
S setItemProvider(Function<Player, ItemProvider> itemProvider);
7467

7568
S async(ItemProvider placeholder);

invui/src/main/java/xyz/xenondevs/invui/item/ItemBuilder.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* Utility for building (localized) {@link ItemStack ItemStacks}.
3030
*/
3131
@SuppressWarnings("UnstableApiUsage")
32-
public class ItemBuilder implements ItemProvider {
32+
public final class ItemBuilder implements ItemProvider {
3333

3434
private ItemStack itemStack;
3535
private @Nullable Component name;
@@ -76,9 +76,20 @@ public ItemBuilder(ItemStack base) {
7676
}
7777
}
7878

79+
/**
80+
* Builds the {@link ItemStack} in {@link Locale#US}.
81+
*
82+
* @return The {@link ItemStack}
83+
*/
84+
@Override
85+
public ItemStack get() {
86+
return get(Locale.US);
87+
}
88+
7989
/**
8090
* Builds the {@link ItemStack}
8191
*
92+
* @param locale The {@link Locale} to use for localization
8293
* @return The {@link ItemStack}
8394
*/
8495
@Override

invui/src/main/java/xyz/xenondevs/invui/item/ItemProvider.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ public interface ItemProvider extends Supplier<ItemStack>, Cloneable {
2828
*
2929
* @return The {@link ItemStack}
3030
*/
31-
default ItemStack get() {
32-
return get(Locale.US);
33-
}
31+
ItemStack get();
3432

3533
}

invui/src/main/java/xyz/xenondevs/invui/item/ItemWrapper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* An {@link ItemProvider} that just returns the {@link ItemStack}
1010
* passed to it in the constructor regardless of the {@link UUID players uuid}.
1111
*/
12-
public class ItemWrapper implements ItemProvider {
12+
public final class ItemWrapper implements ItemProvider {
1313

1414
private ItemStack itemStack;
1515

@@ -22,6 +22,11 @@ public ItemStack get(Locale locale) {
2222
return itemStack;
2323
}
2424

25+
@Override
26+
public ItemStack get() {
27+
return itemStack;
28+
}
29+
2530
@Override
2631
public ItemWrapper clone() {
2732
try {

0 commit comments

Comments
 (0)