Skip to content

Commit

Permalink
feat: Add compatibility layer for Curios and Trinkets #121
Browse files Browse the repository at this point in the history
  • Loading branch information
BlayTheNinth committed Feb 16, 2025
1 parent 9929148 commit 4c397e9
Show file tree
Hide file tree
Showing 12 changed files with 130 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
import net.blay09.mods.balm.api.block.BalmBlockEntities;
import net.blay09.mods.balm.api.block.BalmBlocks;
import net.blay09.mods.balm.api.command.BalmCommands;
import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.config.BalmConfig;
import net.blay09.mods.balm.api.entity.BalmEntities;
import net.blay09.mods.balm.api.event.BalmEvents;
import net.blay09.mods.balm.api.recipe.BalmRecipes;
import net.blay09.mods.balm.api.stats.BalmStats;
import net.blay09.mods.balm.fabric.compat.FabricBalmModSupport;
import net.blay09.mods.balm.fabric.event.FabricBalmCommonEvents;
import net.blay09.mods.balm.fabric.event.FabricBalmEvents;
import net.blay09.mods.balm.api.item.BalmItems;
Expand Down Expand Up @@ -70,6 +72,7 @@ public class FabricBalmRuntime implements BalmRuntime {
private final BalmLootTables lootTables = new CommonBalmLootTables();
private final BalmStats stats = new FabricBalmStats();
private final BalmRecipes recipes = new FabricBalmRecipes();
private final BalmModSupport modSupport = new FabricBalmModSupport();

public FabricBalmRuntime() {
FabricBalmCommonEvents.registerEvents(events);
Expand Down Expand Up @@ -231,4 +234,9 @@ public ResourceLocation getFabricId() {
}
});
}

@Override
public BalmModSupport getModSupport() {
return modSupport;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package net.blay09.mods.balm.fabric.compat;

import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.compat.trinkets.BalmModSupportTrinkets;
import net.blay09.mods.balm.fabric.compat.trinkets.FabricBalmModSupportTrinkets;

public class FabricBalmModSupport implements BalmModSupport {
private final FabricBalmModSupportTrinkets trinkets = new FabricBalmModSupportTrinkets();

@Override
public BalmModSupportTrinkets trinkets() {
return trinkets;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.blay09.mods.balm.fabric.compat.trinkets;

import net.blay09.mods.balm.api.Balm;
import net.blay09.mods.balm.api.compat.trinkets.BalmModSupportTrinkets;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.function.Predicate;

public class FabricBalmModSupportTrinkets implements BalmModSupportTrinkets {
@Override
public boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("trinkets")) {
return TrinketsModCompat.isEquipped(player, predicate);
}
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.blay09.mods.balm.fabric.compat.trinkets;

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

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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
import net.blay09.mods.balm.api.block.BalmBlockEntities;
import net.blay09.mods.balm.api.block.BalmBlocks;
import net.blay09.mods.balm.api.command.BalmCommands;
import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.config.BalmConfig;
import net.blay09.mods.balm.api.entity.BalmEntities;
import net.blay09.mods.balm.api.event.BalmEvents;
import net.blay09.mods.balm.api.recipe.BalmRecipes;
import net.blay09.mods.balm.api.stats.BalmStats;
import net.blay09.mods.balm.common.CommonBalmLootTables;
import net.blay09.mods.balm.forge.compat.ForgeBalmModSupport;
import net.blay09.mods.balm.forge.event.ForgeBalmEvents;
import net.blay09.mods.balm.api.item.BalmItems;
import net.blay09.mods.balm.api.loot.BalmLootTables;
Expand Down Expand Up @@ -69,6 +71,7 @@ public class ForgeBalmRuntime implements BalmRuntime {
private final BalmLootTables lootTables = new CommonBalmLootTables();
private final BalmStats stats = new ForgeBalmStats();
private final BalmRecipes recipes = new ForgeBalmRecipes();
private final BalmModSupport modSupport = new ForgeBalmModSupport();

private final List<String> addonClasses = new ArrayList<>();

Expand Down Expand Up @@ -229,4 +232,8 @@ public void addServerReloadListener(ResourceLocation identifier, Consumer<Resour
MinecraftForge.EVENT_BUS.addListener((AddReloadListenerEvent event) -> event.addListener((ResourceManagerReloadListener) reloadListener::accept));
}

@Override
public BalmModSupport getModSupport() {
return modSupport;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package net.blay09.mods.balm.forge.compat;

import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.compat.trinkets.BalmModSupportTrinkets;
import net.blay09.mods.balm.forge.compat.trinkets.ForgeBalmModSupportTrinkets;

public class ForgeBalmModSupport implements BalmModSupport {
private final ForgeBalmModSupportTrinkets trinkets = new ForgeBalmModSupportTrinkets();

@Override
public BalmModSupportTrinkets trinkets() {
return trinkets;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.blay09.mods.balm.forge.compat.trinkets;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import top.theillusivec4.curios.api.CuriosApi;

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);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.blay09.mods.balm.forge.compat.trinkets;

import net.blay09.mods.balm.api.Balm;
import net.blay09.mods.balm.api.compat.trinkets.BalmModSupportTrinkets;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.function.Predicate;

public class ForgeBalmModSupportTrinkets implements BalmModSupportTrinkets {
@Override
public boolean isEquipped(Player player, Predicate<ItemStack> predicate) {
if (Balm.isModLoaded("curios")) {
return CuriosModCompat.isEquipped(player, predicate);
}
return false;
}
}
5 changes: 5 additions & 0 deletions shared/src/main/java/net/blay09/mods/balm/api/Balm.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.blay09.mods.balm.api.block.BalmBlockEntities;
import net.blay09.mods.balm.api.block.BalmBlocks;
import net.blay09.mods.balm.api.command.BalmCommands;
import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.config.BalmConfig;
import net.blay09.mods.balm.api.entity.BalmEntities;
import net.blay09.mods.balm.api.event.BalmEvents;
Expand Down Expand Up @@ -131,4 +132,8 @@ public static BalmLootTables getLootTables() {
public static BalmStats getStats() {
return runtime.getStats();
}

public static BalmModSupport getModSupport() {
return runtime.getModSupport();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.blay09.mods.balm.api.block.BalmBlockEntities;
import net.blay09.mods.balm.api.block.BalmBlocks;
import net.blay09.mods.balm.api.command.BalmCommands;
import net.blay09.mods.balm.api.compat.BalmModSupport;
import net.blay09.mods.balm.api.config.BalmConfig;
import net.blay09.mods.balm.api.entity.BalmEntities;
import net.blay09.mods.balm.api.event.BalmEvents;
Expand Down Expand Up @@ -57,6 +58,8 @@ public interface BalmRuntime {

BalmRecipes getRecipes();

BalmModSupport getModSupport();

boolean isModLoaded(String modId);
String getModName(String modId);
<T> SidedProxy<T> sidedProxy(String commonName, String clientName);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package net.blay09.mods.balm.api.compat;

import net.blay09.mods.balm.api.compat.trinkets.BalmModSupportTrinkets;

public interface BalmModSupport {
BalmModSupportTrinkets trinkets();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package net.blay09.mods.balm.api.compat.trinkets;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;

import java.util.function.Predicate;

public interface BalmModSupportTrinkets {
boolean isEquipped(Player player, Predicate<ItemStack> predicate);
}

0 comments on commit 4c397e9

Please sign in to comment.