Fixed dispensers not being able to equip friendship bracelets and amulets when trinkets is installed

This commit is contained in:
Sollace 2022-09-22 13:01:31 +02:00
parent 48f355050b
commit 9ce27c3f65
3 changed files with 3 additions and 11 deletions

View file

@ -57,7 +57,7 @@ public abstract class WearableItem extends Item implements Wearable {
return pointer.getWorld().getEntitiesByClass(
LivingEntity.class,
new Box(pointer.getPos().offset(pointer.getBlockState().get(DispenserBlock.FACING))),
EntityPredicates.EXCEPT_SPECTATOR.and(new EntityPredicates.Equipable(armor))
EntityPredicates.EXCEPT_SPECTATOR
)
.stream()
.flatMap(entity -> TrinketsDelegate.getInstance()

View file

@ -1,6 +1,7 @@
package com.minelittlepony.unicopia.trinkets;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import net.fabricmc.loader.api.FabricLoader;
@ -48,11 +49,7 @@ public interface TrinketsDelegate {
}
default Set<Identifier> getAvailableTrinketSlots(LivingEntity entity, Set<Identifier> probedSlots) {
return Set.of();
}
default Stream<ItemStack> getEquipped(LivingEntity entity) {
return Stream.empty();
return probedSlots.stream().filter(slot -> getEquipped(entity, slot).count() == 0).collect(Collectors.toSet());
}
default Stream<ItemStack> getEquipped(LivingEntity entity, Identifier slot) {

View file

@ -50,11 +50,6 @@ public class TrinketsDelegateImpl implements TrinketsDelegate {
return probedSlots;
}
@Override
public Stream<ItemStack> getEquipped(LivingEntity entity) {
return getInventories(entity).flatMap(InventoryUtil::stream).filter(s -> !s.isEmpty());
}
@Override
public Stream<ItemStack> getEquipped(LivingEntity entity, Identifier slot) {
return getInventory(entity, slot).stream().flatMap(InventoryUtil::stream).filter(s -> !s.isEmpty());