@@ -1,15 +1,20 @@
|
||||
package org.bukkit.craftbukkit.potion;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.core.IRegistry;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.world.effect.MobEffectList;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.craftbukkit.CraftRegistry;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class CraftPotionEffectType extends PotionEffectType {
|
||||
private final MobEffectList handle;
|
||||
|
||||
public CraftPotionEffectType(MobEffectList handle) {
|
||||
super(MobEffectList.getId(handle), org.bukkit.craftbukkit.util.CraftNamespacedKey.fromMinecraft(BuiltInRegistries.MOB_EFFECT.getKey(handle)));
|
||||
super(BuiltInRegistries.MOB_EFFECT.getId(handle) + 1, CraftNamespacedKey.fromMinecraft(BuiltInRegistries.MOB_EFFECT.getKey(handle)));
|
||||
this.handle = handle;
|
||||
}
|
||||
|
||||
@@ -105,4 +110,22 @@ public class CraftPotionEffectType extends PotionEffectType {
|
||||
public Color getColor() {
|
||||
return Color.fromRGB(handle.getColor());
|
||||
}
|
||||
|
||||
public static PotionEffectType minecraftToBukkit(MobEffectList minecraft) {
|
||||
Preconditions.checkArgument(minecraft != null);
|
||||
|
||||
IRegistry<MobEffectList> registry = CraftRegistry.getMinecraftRegistry(Registries.MOB_EFFECT);
|
||||
PotionEffectType bukkit = PotionEffectType.getByKey(CraftNamespacedKey.fromMinecraft(registry.getResourceKey(minecraft).orElseThrow().location()));
|
||||
|
||||
Preconditions.checkArgument(bukkit != null);
|
||||
|
||||
return bukkit;
|
||||
}
|
||||
|
||||
public static MobEffectList bukkitToMinecraft(PotionEffectType bukkit) {
|
||||
Preconditions.checkArgument(bukkit != null);
|
||||
|
||||
return CraftRegistry.getMinecraftRegistry(Registries.MOB_EFFECT)
|
||||
.getOptional(CraftNamespacedKey.toMinecraft(bukkit.getKey())).orElseThrow();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,12 +100,12 @@ public class CraftPotionUtil {
|
||||
}
|
||||
|
||||
public static MobEffect fromBukkit(PotionEffect effect) {
|
||||
MobEffectList type = MobEffectList.byId(effect.getType().getId());
|
||||
MobEffectList type = CraftPotionEffectType.bukkitToMinecraft(effect.getType());
|
||||
return new MobEffect(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles());
|
||||
}
|
||||
|
||||
public static PotionEffect toBukkit(MobEffect effect) {
|
||||
PotionEffectType type = PotionEffectType.getById(MobEffectList.getId(effect.getEffect()));
|
||||
PotionEffectType type = CraftPotionEffectType.minecraftToBukkit(effect.getEffect());
|
||||
int amp = effect.getAmplifier();
|
||||
int duration = effect.getDuration();
|
||||
boolean ambient = effect.isAmbient();
|
||||
@@ -114,7 +114,7 @@ public class CraftPotionUtil {
|
||||
}
|
||||
|
||||
public static boolean equals(MobEffectList mobEffect, PotionEffectType type) {
|
||||
PotionEffectType typeV = PotionEffectType.getById(MobEffectList.getId(mobEffect));
|
||||
PotionEffectType typeV = CraftPotionEffectType.minecraftToBukkit(mobEffect);
|
||||
return typeV.equals(type);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user