Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minecraft 1.17 #334

Merged
merged 1 commit into from
Jun 6, 2021
Merged
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 @@ -38,21 +38,31 @@
final class BlockNBTComponentImpl extends NBTComponentImpl<BlockNBTComponent, BlockNBTComponent.Builder> implements BlockNBTComponent {
private final Pos pos;

BlockNBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret, final @NotNull Pos pos) {
super(children, style, nbtPath, interpret);
BlockNBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret, final @Nullable ComponentLike separator, final @NotNull Pos pos) {
super(children, style, nbtPath, interpret, separator);
this.pos = pos;
}

@Override
public @NotNull BlockNBTComponent nbtPath(final @NotNull String nbtPath) {
if (Objects.equals(this.nbtPath, nbtPath)) return this;
return new BlockNBTComponentImpl(this.children, this.style, nbtPath, this.interpret, this.pos);
return new BlockNBTComponentImpl(this.children, this.style, nbtPath, this.interpret, this.separator, this.pos);
}

@Override
public @NotNull BlockNBTComponent interpret(final boolean interpret) {
if (this.interpret == interpret) return this;
return new BlockNBTComponentImpl(this.children, this.style, this.nbtPath, interpret, this.pos);
return new BlockNBTComponentImpl(this.children, this.style, this.nbtPath, interpret, this.separator, this.pos);
}

@Override
public @Nullable Component separator() {
return this.separator;
}

@Override
public @NotNull BlockNBTComponent separator(final @Nullable ComponentLike separator) {
return new BlockNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, separator, this.pos);
}

@Override
Expand All @@ -62,17 +72,17 @@ final class BlockNBTComponentImpl extends NBTComponentImpl<BlockNBTComponent, Bl

@Override
public @NotNull BlockNBTComponent pos(final @NotNull Pos pos) {
return new BlockNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, pos);
return new BlockNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, this.separator, pos);
}

@Override
public @NotNull BlockNBTComponent children(final @NotNull List<? extends ComponentLike> children) {
return new BlockNBTComponentImpl(children, this.style, this.nbtPath, this.interpret, this.pos);
return new BlockNBTComponentImpl(children, this.style, this.nbtPath, this.interpret, this.separator, this.pos);
}

@Override
public @NotNull BlockNBTComponent style(final @NotNull Style style) {
return new BlockNBTComponentImpl(this.children, style, this.nbtPath, this.interpret, this.pos);
return new BlockNBTComponentImpl(this.children, style, this.nbtPath, this.interpret, this.separator, this.pos);
}

@Override
Expand Down Expand Up @@ -127,7 +137,7 @@ static final class BuilderImpl extends NBTComponentImpl.BuilderImpl<BlockNBTComp
public @NotNull BlockNBTComponent build() {
if (this.nbtPath == null) throw new IllegalStateException("nbt path must be set");
if (this.pos == null) throw new IllegalStateException("pos must be set");
return new BlockNBTComponentImpl(this.children, this.buildStyle(), this.nbtPath, this.interpret, this.pos);
return new BlockNBTComponentImpl(this.children, this.buildStyle(), this.nbtPath, this.interpret, this.separator, this.pos);
}
}

Expand Down
49 changes: 46 additions & 3 deletions api/src/main/java/net/kyori/adventure/text/Component.java
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,22 @@ public interface Component extends ComponentBuilderApplicable, ComponentLike, Ex
*/
@Contract(value = "_, _, _ -> new", pure = true)
static @NotNull BlockNBTComponent blockNBT(final @NotNull String nbtPath, final boolean interpret, final BlockNBTComponent.@NotNull Pos pos) {
return new BlockNBTComponentImpl(Collections.emptyList(), Style.empty(), nbtPath, interpret, pos);
return blockNBT(nbtPath, interpret, null, pos);
}

/**
* Creates a block NBT component with a position.
*
* @param nbtPath the nbt path
* @param interpret whether to interpret
* @param separator the separator
* @param pos the block position
* @return a block NBT component
* @since 4.8.0
*/
@Contract(value = "_, _, _, _ -> new", pure = true)
static @NotNull BlockNBTComponent blockNBT(final @NotNull String nbtPath, final boolean interpret, final @Nullable ComponentLike separator, final BlockNBTComponent.@NotNull Pos pos) {
return new BlockNBTComponentImpl(Collections.emptyList(), Style.empty(), nbtPath, interpret, separator, pos);
}

/*
Expand Down Expand Up @@ -503,7 +518,20 @@ public interface Component extends ComponentBuilderApplicable, ComponentLike, Ex
*/
@Contract(value = "_ -> new", pure = true)
static @NotNull SelectorComponent selector(final @NotNull String pattern) {
return new SelectorComponentImpl(Collections.emptyList(), Style.empty(), pattern);
return selector(pattern, null);
}

/**
* Creates a selector component with a pattern.
*
* @param pattern the selector pattern
* @param separator the separator
* @return a selector component
* @since 4.8.0
*/
@Contract(value = "_, _ -> new", pure = true)
static @NotNull SelectorComponent selector(final @NotNull String pattern, final @Nullable ComponentLike separator) {
return new SelectorComponentImpl(Collections.emptyList(), Style.empty(), pattern, separator);
}

/*
Expand Down Expand Up @@ -559,7 +587,22 @@ public interface Component extends ComponentBuilderApplicable, ComponentLike, Ex
*/
@Contract(value = "_, _, _ -> new", pure = true)
static @NotNull StorageNBTComponent storageNBT(final @NotNull String nbtPath, final boolean interpret, final @NotNull Key storage) {
return new StorageNBTComponentImpl(Collections.emptyList(), Style.empty(), nbtPath, interpret, storage);
return storageNBT(nbtPath, interpret, null, storage);
}

/**
* Creates a storage NBT component with a path and an storage ID.
*
* @param nbtPath the nbt path
* @param interpret whether to interpret
* @param separator the separator
* @param storage the identifier of the storage
* @return a storage NBT component
* @since 4.8.0
*/
@Contract(value = "_, _, _, _ -> new", pure = true)
static @NotNull StorageNBTComponent storageNBT(final @NotNull String nbtPath, final boolean interpret, final @Nullable ComponentLike separator, final @NotNull Key storage) {
return new StorageNBTComponentImpl(Collections.emptyList(), Style.empty(), nbtPath, interpret, separator, storage);
}

/*
Expand Down
11 changes: 11 additions & 0 deletions api/src/main/java/net/kyori/adventure/text/ComponentLike.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,17 @@ public interface ComponentLike {
return Collections.unmodifiableList(components);
}

/**
* Fetches a {@link Component} from a {@code ComponentLike}.
*
* @param like the component-like
* @return a component, or {@code null}
* @since 4.8.0
*/
static @Nullable Component unbox(final @Nullable ComponentLike like) {
return like != null ? like.asComponent() : null;
}

/**
* Gets a {@link Component} representation.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,31 @@
final class EntityNBTComponentImpl extends NBTComponentImpl<EntityNBTComponent, EntityNBTComponent.Builder> implements EntityNBTComponent {
private final String selector;

EntityNBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret, final String selector) {
super(children, style, nbtPath, interpret);
EntityNBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret, final @Nullable ComponentLike separator, final String selector) {
super(children, style, nbtPath, interpret, separator);
this.selector = selector;
}

@Override
public @NotNull EntityNBTComponent nbtPath(final @NotNull String nbtPath) {
if (Objects.equals(this.nbtPath, nbtPath)) return this;
return new EntityNBTComponentImpl(this.children, this.style, nbtPath, this.interpret, this.selector);
return new EntityNBTComponentImpl(this.children, this.style, nbtPath, this.interpret, this.separator, this.selector);
}

@Override
public @NotNull EntityNBTComponent interpret(final boolean interpret) {
if (this.interpret == interpret) return this;
return new EntityNBTComponentImpl(this.children, this.style, this.nbtPath, interpret, this.selector);
return new EntityNBTComponentImpl(this.children, this.style, this.nbtPath, interpret, this.separator, this.selector);
}

@Override
public @Nullable Component separator() {
return this.separator;
}

@Override
public @NotNull EntityNBTComponent separator(final @Nullable ComponentLike separator) {
return new EntityNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, separator, this.selector);
}

@Override
Expand All @@ -59,17 +69,17 @@ final class EntityNBTComponentImpl extends NBTComponentImpl<EntityNBTComponent,
@Override
public @NotNull EntityNBTComponent selector(final @NotNull String selector) {
if (Objects.equals(this.selector, selector)) return this;
return new EntityNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, selector);
return new EntityNBTComponentImpl(this.children, this.style, this.nbtPath, this.interpret, this.separator, selector);
}

@Override
public @NotNull EntityNBTComponent children(final @NotNull List<? extends ComponentLike> children) {
return new EntityNBTComponentImpl(children, this.style, this.nbtPath, this.interpret, this.selector);
return new EntityNBTComponentImpl(children, this.style, this.nbtPath, this.interpret, this.separator, this.selector);
}

@Override
public @NotNull EntityNBTComponent style(final @NotNull Style style) {
return new EntityNBTComponentImpl(this.children, style, this.nbtPath, this.interpret, this.selector);
return new EntityNBTComponentImpl(this.children, style, this.nbtPath, this.interpret, this.separator, this.selector);
}

@Override
Expand Down Expand Up @@ -124,7 +134,7 @@ static final class BuilderImpl extends NBTComponentImpl.BuilderImpl<EntityNBTCom
public @NotNull EntityNBTComponent build() {
if (this.nbtPath == null) throw new IllegalStateException("nbt path must be set");
if (this.selector == null) throw new IllegalStateException("selector must be set");
return new EntityNBTComponentImpl(this.children, this.buildStyle(), this.nbtPath, this.interpret, this.selector);
return new EntityNBTComponentImpl(this.children, this.buildStyle(), this.nbtPath, this.interpret, this.separator, this.selector);
}
}
}
18 changes: 18 additions & 0 deletions api/src/main/java/net/kyori/adventure/text/NBTComponent.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
* A component that can display NBT fetched from different locations, optionally trying to interpret the NBT as JSON
Expand Down Expand Up @@ -82,4 +83,21 @@ public interface NBTComponent<C extends NBTComponent<C, B>, B extends NBTCompone
*/
@Contract(pure = true)
@NotNull C interpret(final boolean interpret);

/**
* Gets the separator.
*
* @return the separator
* @since 4.8.0
*/
@Nullable Component separator();

/**
* Sets the separator.
*
* @param separator the separator
* @return the separator
* @since 4.8.0
*/
@NotNull C separator(final @Nullable ComponentLike separator);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/*
* This can't be a child of NBTComponent.
Expand Down Expand Up @@ -55,4 +56,14 @@ public interface NBTComponentBuilder<C extends NBTComponent<C, B>, B extends NBT
*/
@Contract("_ -> this")
@NotNull B interpret(final boolean interpret);

/**
* Sets the separator.
*
* @param separator the separator
* @return this builder
* @since 4.8.0
*/
@Contract("_ -> this")
@NotNull B separator(final @Nullable ComponentLike separator);
}
18 changes: 15 additions & 3 deletions api/src/main/java/net/kyori/adventure/text/NBTComponentImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,13 @@ abstract class NBTComponentImpl<C extends NBTComponent<C, B>, B extends NBTCompo
static final boolean INTERPRET_DEFAULT = false;
final String nbtPath;
final boolean interpret;
final @Nullable Component separator;

NBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret) {
NBTComponentImpl(final @NotNull List<? extends ComponentLike> children, final @NotNull Style style, final String nbtPath, final boolean interpret, final @Nullable ComponentLike separator) {
super(children, style);
this.nbtPath = nbtPath;
this.interpret = interpret;
this.separator = ComponentLike.unbox(separator);
}

@Override
Expand All @@ -58,14 +60,15 @@ public boolean equals(final @Nullable Object other) {
if (!(other instanceof NBTComponent)) return false;
if (!super.equals(other)) return false;
final NBTComponent<?, ?> that = (NBTComponent<?, ?>) other;
return Objects.equals(this.nbtPath, that.nbtPath()) && this.interpret == that.interpret();
return Objects.equals(this.nbtPath, that.nbtPath()) && this.interpret == that.interpret() && Objects.equals(this.separator, that.separator());
}

@Override
public int hashCode() {
int result = super.hashCode();
result = (31 * result) + this.nbtPath.hashCode();
result = (31 * result) + Boolean.hashCode(this.interpret);
result = (31 * result) + Objects.hashCode(this.separator);
return result;
}

Expand All @@ -74,7 +77,8 @@ public int hashCode() {
return Stream.concat(
Stream.of(
ExaminableProperty.of("nbtPath", this.nbtPath),
ExaminableProperty.of("interpret", this.interpret)
ExaminableProperty.of("interpret", this.interpret),
ExaminableProperty.of("separator", this.separator)
),
super.examinablePropertiesWithoutChildren()
);
Expand All @@ -83,6 +87,7 @@ public int hashCode() {
static abstract class BuilderImpl<C extends NBTComponent<C, B>, B extends NBTComponentBuilder<C, B>> extends AbstractComponentBuilder<C, B> implements NBTComponentBuilder<C, B> {
protected @Nullable String nbtPath;
protected boolean interpret = INTERPRET_DEFAULT;
protected @Nullable Component separator;

BuilderImpl() {
}
Expand All @@ -106,5 +111,12 @@ static abstract class BuilderImpl<C extends NBTComponent<C, B>, B extends NBTCom
this.interpret = interpret;
return (B) this;
}

@Override
@SuppressWarnings("unchecked")
public @NotNull B separator(final @Nullable ComponentLike separator) {
this.separator = ComponentLike.unbox(separator);
return (B) this;
}
}
}
28 changes: 28 additions & 0 deletions api/src/main/java/net/kyori/adventure/text/SelectorComponent.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
* A component that can display the name of entities found with a given selector.
Expand Down Expand Up @@ -60,6 +61,23 @@ public interface SelectorComponent extends BuildableComponent<SelectorComponent,
@Contract(pure = true)
@NotNull SelectorComponent pattern(final @NotNull String pattern);

/**
* Gets the separator.
*
* @return the separator
* @since 4.8.0
*/
@Nullable Component separator();

/**
* Sets the separator.
*
* @param separator the separator
* @return the separator
* @since 4.8.0
*/
@NotNull SelectorComponent separator(final @Nullable ComponentLike separator);

/**
* A selector component builder.
*
Expand All @@ -75,5 +93,15 @@ interface Builder extends ComponentBuilder<SelectorComponent, Builder> {
*/
@Contract("_ -> this")
@NotNull Builder pattern(final @NotNull String pattern);

/**
* Sets the separator.
*
* @param separator the separator
* @return this builder
* @since 4.8.0
*/
@Contract("_ -> this")
@NotNull Builder separator(final @Nullable ComponentLike separator);
}
}
Loading