Added ItemMetaBuilder.Provider

This commit is contained in:
themode 2021-04-02 15:42:58 +02:00
parent cf0450f21f
commit a70870d261
5 changed files with 8 additions and 5 deletions

View File

@ -62,7 +62,7 @@ public class Item {
}
@Contract(value = "_, _ -> new", pure = true)
public <T extends ItemMetaBuilder> @NotNull Item withMeta(Class<T> metaType, Consumer<T> metaConsumer) {
public <T extends ItemMetaBuilder, U extends ItemMetaBuilder.Provider<T>> @NotNull Item withMeta(Class<U> metaType, Consumer<T> metaConsumer) {
return builder().meta(metaType, metaConsumer).build();
}

View File

@ -39,7 +39,7 @@ public class ItemBuilder {
}
@Contract(value = "_, _ -> this")
public <T extends ItemMetaBuilder> @NotNull ItemBuilder meta(Class<T> metaType, Consumer<T> itemMetaConsumer) {
public <T extends ItemMetaBuilder, U extends ItemMetaBuilder.Provider<T>> @NotNull ItemBuilder meta(Class<U> metaType, Consumer<T> itemMetaConsumer) {
itemMetaConsumer.accept((T) metaBuilder);
return this;
}

View File

@ -64,4 +64,7 @@ public abstract class ItemMetaBuilder implements Cloneable {
}
}
public interface Provider<T> {
}
}

View File

@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Map;
public class CompassMeta extends ItemMeta {
public class CompassMeta extends ItemMeta implements ItemMetaBuilder.Provider<CompassMeta.Builder> {
private final boolean lodestoneTracked;
private final String lodestoneDimension;

View File

@ -76,7 +76,7 @@ public class PlayerInit {
Item item = Item.builder(Material.COMPASS)
.amount(5)
.meta(compassMeta)
.meta(CompassMeta.Builder.class, builder -> {
.meta(CompassMeta.class, builder -> {
builder.lodestonePosition(new Position(0, 0, 0));
})
.displayName(Component.text("displayName"))
@ -84,7 +84,7 @@ public class PlayerInit {
item = item.with(itemBuilder -> itemBuilder
.amount(10)
.meta(CompassMeta.Builder.class, builder -> {
.meta(CompassMeta.class, builder -> {
builder.lodestonePosition(new Position(5, 0, 0));
})
.lore(Component.text("Lore")));