Unicopia/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java

55 lines
1.9 KiB
Java
Raw Normal View History

package com.minelittlepony.unicopia;
import com.google.common.base.Predicate;
2020-04-15 18:12:00 +02:00
import com.minelittlepony.unicopia.entity.Ponylike;
import com.minelittlepony.unicopia.entity.player.Pony;
import net.minecraft.entity.Entity;
2020-01-16 12:35:46 +01:00
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
public interface EquinePredicates {
Predicate<PlayerEntity> INTERACT_WITH_CLOUDS = player -> {
2020-04-15 18:12:00 +02:00
return player != null && Pony.of(player).getSpecies().canInteractWithClouds();
};
Predicate<Entity> MAGI = entity -> {
2020-04-15 18:12:00 +02:00
return entity instanceof PlayerEntity && Pony.of((PlayerEntity)entity).getSpecies().canCast();
};
Predicate<Entity> ITEMS = entity -> {
2020-01-16 12:35:46 +01:00
return entity instanceof ItemEntity && entity.isAlive() && entity.age > 1;
};
Predicate<ItemEntity> ITEM_INTERACT_WITH_CLOUDS = item -> {
2020-04-15 18:12:00 +02:00
return ITEMS.test(item) && Ponylike.of(item).getSpecies().canInteractWithClouds();
};
Predicate<Entity> ENTITY_INTERACT_WITH_CLOUDS = entity -> {
return entity != null && (
2020-01-16 12:35:46 +01:00
(entity instanceof PlayerEntity && INTERACT_WITH_CLOUDS.test((PlayerEntity)entity))
|| (entity instanceof ItemEntity && ITEM_INTERACT_WITH_CLOUDS.test((ItemEntity)entity))
);
};
Predicate<Entity> BUGGY = entity -> {
2020-01-16 12:35:46 +01:00
return entity instanceof PlayerEntity
2020-04-15 18:12:00 +02:00
&& Pony.of((PlayerEntity)entity).getSpecies() == Race.CHANGELING;
};
static PlayerEntity getPlayerFromEntity(Entity entity) {
2020-01-16 12:35:46 +01:00
if (entity instanceof PlayerEntity) {
return (PlayerEntity) entity;
}
2020-01-16 12:35:46 +01:00
if (entity instanceof ItemEntity) {
ItemEntity item = (ItemEntity)entity;
if (item.getOwner() != null) {
2020-01-16 12:35:46 +01:00
return item.getEntityWorld().getPlayerByUuid(item.getOwner());
}
}
return null;
}
}