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()); 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. * 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)); 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() { public static EquivalentConverter<PacketContainer> getPacketContainerConverter() {
return ignoreNull(handle(PacketContainer::getHandle, PacketContainer::fromPacket, PacketContainer.class)); return ignoreNull(handle(PacketContainer::getHandle, PacketContainer::fromPacket, PacketContainer.class));
} }

View File

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