#1340: Centralize the conversion from and to Minecraft / Bukkit registry items even more and add a test case for them

By: DerFrZocker <derrieple@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2024-01-22 20:36:36 +11:00
parent e6b4a5f109
commit d7095f8578
20 changed files with 623 additions and 110 deletions

View File

@@ -1,19 +1,25 @@
package org.bukkit.craftbukkit.potion;
import com.google.common.base.Preconditions;
import net.minecraft.core.IRegistry;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.effect.MobEffectList;
import org.bukkit.Color;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.craftbukkit.CraftRegistry;
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.craftbukkit.util.Handleable;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull;
public class CraftPotionEffectType extends PotionEffectType {
public class CraftPotionEffectType extends PotionEffectType implements Handleable<MobEffectList> {
public static PotionEffectType minecraftToBukkit(MobEffectList minecraft) {
return CraftRegistry.minecraftToBukkit(minecraft, Registries.MOB_EFFECT, Registry.EFFECT);
}
public static MobEffectList bukkitToMinecraft(PotionEffectType bukkit) {
return CraftRegistry.bukkitToMinecraft(bukkit);
}
private final NamespacedKey key;
private final MobEffectList handle;
@@ -25,6 +31,7 @@ public class CraftPotionEffectType extends PotionEffectType {
this.id = CraftRegistry.getMinecraftRegistry(Registries.MOB_EFFECT).getId(handle) + 1;
}
@Override
public MobEffectList getHandle() {
return handle;
}
@@ -123,21 +130,4 @@ public class CraftPotionEffectType extends PotionEffectType {
public String toString() {
return "CraftPotionEffectType[" + getKey() + "]";
}
public static PotionEffectType minecraftToBukkit(MobEffectList minecraft) {
Preconditions.checkArgument(minecraft != null);
IRegistry<MobEffectList> registry = CraftRegistry.getMinecraftRegistry(Registries.MOB_EFFECT);
PotionEffectType bukkit = Registry.EFFECT.get(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().location()));
Preconditions.checkArgument(bukkit != null);
return bukkit;
}
public static MobEffectList bukkitToMinecraft(PotionEffectType bukkit) {
Preconditions.checkArgument(bukkit != null);
return ((CraftPotionEffectType) bukkit).getHandle();
}
}