mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-30 07:27:46 +02:00
Added ItemMetaBuilder.Provider
This commit is contained in:
parent
cf0450f21f
commit
a70870d261
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -64,4 +64,7 @@ public abstract class ItemMetaBuilder implements Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
public interface Provider<T> {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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")));
|
||||
|
Loading…
Reference in New Issue
Block a user