Skip to content

Commit

Permalink
feat: Add findEquipped and findAllEquipped to Curios/Trinkets support…
Browse files Browse the repository at this point in the history
… layer #121
  • Loading branch information
BlayTheNinth committed Feb 16, 2025
1 parent 2f3542b commit a269d4a
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.List;
import java.util.function.Predicate;

public interface BalmModSupportTrinkets {
boolean isEquipped(Player player, Predicate<ItemStack> predicate);
ItemStack findEquipped(Player player, Predicate<ItemStack> predicate);
List<ItemStack> findAllEquipped(Player player, Predicate<ItemStack> predicate);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.List;
import java.util.function.Predicate;

public class FabricBalmModSupportTrinkets implements BalmModSupportTrinkets {
Expand All @@ -15,4 +16,21 @@ public boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
}
return false;
}

@Override
public ItemStack findEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("trinkets")) {
return TrinketsModCompat.findEquipped(player, predicate);
}
return ItemStack.EMPTY;
}

@Override
public List<ItemStack> findAllEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("trinkets")) {
return TrinketsModCompat.findAllEquipped(player, predicate);
}
return List.of();
}

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
package net.blay09.mods.balm.fabric.compat.trinkets;

import dev.emi.trinkets.api.TrinketsApi;
import net.minecraft.util.Tuple;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.List;
import java.util.function.Predicate;

public class TrinketsModCompat {
public static boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
return TrinketsApi.getTrinketComponent(player).map(trinkets -> trinkets.isEquipped(predicate)).orElse(false);
}

public static ItemStack findEquipped(Player player, Predicate<ItemStack> predicate) {
return TrinketsApi.getTrinketComponent(player)
.flatMap(trinkets -> trinkets.getEquipped(predicate).stream().findFirst())
.map(Tuple::getB)
.orElse(ItemStack.EMPTY);
}

public static List<ItemStack> findAllEquipped(Player player, Predicate<ItemStack> predicate) {
return TrinketsApi.getTrinketComponent(player)
.map(trinkets -> trinkets.getEquipped(predicate).stream().map(Tuple::getB).toList())
.orElse(List.of());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,24 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;

import java.util.List;
import java.util.function.Predicate;

public class CuriosModCompat {
public static boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
return CuriosApi.getCuriosInventory(player).map(trinkets -> trinkets.isEquipped(predicate)).orElse(false);
}

public static ItemStack findEquipped(Player player, Predicate<ItemStack> predicate) {
return CuriosApi.getCuriosInventory(player).resolve().flatMap(trinkets -> trinkets.findFirstCurio(predicate)).map(SlotResult::stack).orElse(ItemStack.EMPTY);
}

public static List<ItemStack> findAllEquipped(Player player, Predicate<ItemStack> predicate) {
return CuriosApi.getCuriosInventory(player)
.resolve()
.map(trinkets -> trinkets.findCurios(predicate).stream().map(SlotResult::stack).toList())
.orElse(List.of());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.List;
import java.util.function.Predicate;

public class ForgeBalmModSupportTrinkets implements BalmModSupportTrinkets {
Expand All @@ -15,4 +16,20 @@ public boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
}
return false;
}

@Override
public ItemStack findEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("curios")) {
return CuriosModCompat.findEquipped(player, predicate);
}
return ItemStack.EMPTY;
}

@Override
public List<ItemStack> findAllEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("curios")) {
return CuriosModCompat.findAllEquipped(player, predicate);
}
return List.of();
}
}

0 comments on commit a269d4a

Please sign in to comment.