Fix some components (#12457)

This commit is contained in:
Lulu13022002
2025-04-24 16:57:20 +02:00
committed by GitHub
parent 1410a22bb2
commit 767868ddbf
3 changed files with 19 additions and 43 deletions

View File

@@ -1,19 +1,14 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import io.papermc.paper.adventure.PaperAdventure;
import io.papermc.paper.registry.HolderableBase;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.entity.animal.ChickenVariant;
import net.minecraft.world.item.EitherHolder;
import org.bukkit.craftbukkit.CraftRegistry;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.Chicken;
import org.jspecify.annotations.NullMarked;
import java.util.Optional;
@NullMarked
public class CraftChicken extends CraftAnimals implements Chicken {
@@ -54,26 +49,6 @@ public class CraftChicken extends CraftAnimals implements Chicken {
return CraftRegistry.minecraftHolderToBukkit(minecraft, Registries.CHICKEN_VARIANT);
}
public static Variant minecraftEitherHolderToBukkit(EitherHolder<ChickenVariant> minecraft) {
final Optional<Holder<ChickenVariant>> left = minecraft.contents().left();
if (left.isPresent()) {
return CraftRegistry.minecraftHolderToBukkit(left.get(), Registries.CHICKEN_VARIANT);
}
final Optional<ResourceKey<ChickenVariant>> right = minecraft.contents().right();
if (right.isPresent()) {
final Holder.Reference<ChickenVariant> orThrow = CraftRegistry.getMinecraftRegistry(right.get().registryKey()).getOrThrow(right.get());
return minecraftToBukkit(orThrow.value());
}
throw new IllegalStateException("Cannot map entry for " + minecraft);
}
public static EitherHolder<ChickenVariant> bukkitToMinecraftEitherHolder(Variant variant) {
final Registry<ChickenVariant> chickenVariantRegistry = CraftRegistry.getMinecraftRegistry(Registries.CHICKEN_VARIANT);
final Optional<Holder.Reference<ChickenVariant>> chickenVariantReference = chickenVariantRegistry.get(PaperAdventure.asVanilla(variant.key()));
return chickenVariantReference.map(EitherHolder::new).orElseGet(() -> new EitherHolder<>(PaperAdventure.asVanilla(chickenVariantRegistry.key(), variant.key())));
}
public static ChickenVariant bukkitToMinecraft(Variant bukkit) {
return CraftRegistry.bukkitToMinecraft(bukkit);
}

View File

@@ -52,7 +52,7 @@ public final class CraftJukeboxComponent implements JukeboxPlayableComponent {
@Override
public JukeboxSong getSong() {
Optional<Holder<net.minecraft.world.item.JukeboxSong>> song = this.handle.song().unwrap(CraftRegistry.getMinecraftRegistry());
return (song.isPresent()) ? CraftJukeboxSong.minecraftHolderToBukkit(song.get()) : null;
return song.map(CraftJukeboxSong::minecraftHolderToBukkit).orElse(null);
}
@Override