finish up WrappedTeamParameters

This commit is contained in:
vytskalt 2024-02-29 19:09:01 +02:00
parent 0266b25548
commit 0cd4de972c
3 changed files with 15 additions and 4 deletions

View File

@ -887,6 +887,13 @@ public abstract class AbstractStructure {
EnumWrappers.getChatFormattingConverter());
}
/**
* Retrieve a read/write structure for optional team parameters in 1.17+.
* @return A modifier for optional team parameters fields.
*/
public StructureModifier<Optional<WrappedTeamParameters>> getOptionalTeamParameters() {
return getOptionals(BukkitConverters.getWrappedTeamParametersConverter());
}
/**
* Retrieve a read/write structure for the MinecraftKey class.

View File

@ -640,6 +640,10 @@ public class BukkitConverters {
return ignoreNull(handle(WrappedLevelChunkData.LightData::getHandle, WrappedLevelChunkData.LightData::new, WrappedLevelChunkData.LightData.class));
}
public static EquivalentConverter<WrappedTeamParameters> getWrappedTeamParametersConverter() {
return ignoreNull(handle(WrappedTeamParameters::getHandle, WrappedTeamParameters::new, WrappedTeamParameters.class));
}
public static EquivalentConverter<PacketContainer> getPacketContainerConverter() {
return ignoreNull(handle(PacketContainer::getHandle, PacketContainer::fromPacket, PacketContainer.class));
}

View File

@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable;
* @since 1.17
*/
public class WrappedTeamParameters extends AbstractWrapper {
private static Class<?> getNmsClass() {
public static Class<?> getNmsClassOrThrow() {
return MinecraftReflection.getTeamParametersClass()
.orElseThrow(() -> new IllegalStateException("Team parameters class doesn't exist on this server version"));
}
@ -37,9 +37,9 @@ public class WrappedTeamParameters extends AbstractWrapper {
private final StructureModifier<Object> modifier;
public WrappedTeamParameters(Object handle) {
super(getNmsClass());
super(getNmsClassOrThrow());
setHandle(handle);
this.modifier = new StructureModifier<>(getNmsClass()).withTarget(handle);
this.modifier = new StructureModifier<>(getNmsClassOrThrow()).withTarget(handle);
}
@NotNull
@ -155,7 +155,7 @@ public class WrappedTeamParameters extends AbstractWrapper {
Preconditions.checkNotNull(color, "Color not set");
// Not technically a packet, but it has a PacketDataSerializer constructor, so it works fine
Object handle = StructureCache.newPacket(getNmsClass());
Object handle = StructureCache.newPacket(getNmsClassOrThrow());
WrappedTeamParameters wrapped = new WrappedTeamParameters(handle);
wrapped.writeComponent(0, displayName);