Unicopia/src/main/java/com/minelittlepony/unicopia/ducks/PonyContainer.java

38 lines
935 B
Java
Raw Normal View History

2020-04-15 18:12:00 +02:00
package com.minelittlepony.unicopia.ducks;
import java.util.Optional;
import javax.annotation.Nullable;
2020-06-26 11:44:47 +02:00
import com.minelittlepony.unicopia.equine.Ponylike;
2020-04-15 18:12:00 +02:00
import com.minelittlepony.unicopia.magic.Caster;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
public interface PonyContainer<T extends Ponylike<?>> {
2020-04-15 18:12:00 +02:00
Ponylike<?> create();
2020-04-15 18:12:00 +02:00
T get();
@SuppressWarnings("unchecked")
@Nullable
default <E extends LivingEntity> Caster<E> getCaster() {
T ientity = get();
if (ientity instanceof Caster) {
return (Caster<E>)ientity;
}
return null;
}
@SuppressWarnings("unchecked")
static <E extends Entity, T extends Ponylike<?>> Optional<PonyContainer<T>> of(Entity entity) {
2020-04-15 18:12:00 +02:00
if (entity instanceof PonyContainer) {
return Optional.of(((PonyContainer<T>)entity));
}
return Optional.empty();
}
}