[Changes] Re-Enabled support for trinkets

This commit is contained in:
Frank 2023-01-28 13:42:10 +01:00
parent f84663711b
commit ef448e27e1
4 changed files with 109 additions and 97 deletions

View file

@ -95,8 +95,8 @@ dependencies {
modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:${project.rei_version}" modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:${project.rei_version}"
//needed for trinkets, otherwise BetterEnd would require users to install trinkets //needed for trinkets, otherwise BetterEnd would require users to install trinkets
//1.19.3 modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}" modApi "dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}"
//1.19.3 modCompileOnly "dev.emi:trinkets:${project.trinkets_version}" modCompileOnly "dev.emi:trinkets:${project.trinkets_version}"
modCompileOnly "dev.emi:emi:${emi_version}" modCompileOnly "dev.emi:emi:${emi_version}"
//modRuntimeOnly "dev.emi:emi:${emi_version}" //modRuntimeOnly "dev.emi:emi:${emi_version}"
} }

View file

@ -21,7 +21,6 @@ archives_base_name=better-end
patchouli_version=1.19-73-FABRIC patchouli_version=1.19-73-FABRIC
bclib_version=2.2.4 bclib_version=2.2.4
rei_version=10.0.578 rei_version=10.0.578
jei_version=11.1.0.235 emi_version=0.6.2+1.19.3
emi_version=0.5.0+1.19.3 trinkets_version=3.5.0
trinkets_version=3.4.0 cca_version=5.1.0
cca_version=5.0.0-beta.1

View file

@ -1,75 +1,88 @@
package org.betterx.betterend.integration.trinkets; package org.betterx.betterend.integration.trinkets;
//import dev.emi.trinkets.api.SlotReference; import org.betterx.bclib.items.elytra.BCLElytraItem;
//import dev.emi.trinkets.api.TrinketComponent; import org.betterx.bclib.items.elytra.BCLElytraUtils;
//import dev.emi.trinkets.api.TrinketsApi;
// import net.minecraft.util.Tuple;
//import java.util.List; import net.minecraft.world.entity.EquipmentSlot;
//import java.util.Optional; import net.minecraft.world.entity.LivingEntity;
// import net.minecraft.world.item.ElytraItem;
//public class Elytra { import net.minecraft.world.item.Item;
// private static boolean isElytra(ItemStack stack) { import net.minecraft.world.item.ItemStack;
// return stack.getItem() instanceof ElytraItem
// || stack.getItem() instanceof FabricElytraItem; import net.fabricmc.fabric.api.entity.event.v1.EntityElytraEvents;
// } import net.fabricmc.fabric.api.entity.event.v1.FabricElytraItem;
//
// public static void register() { import dev.emi.trinkets.api.SlotReference;
// BCLElytraUtils.slotProvider = (entity, slotGetter) -> { import dev.emi.trinkets.api.TrinketComponent;
// ItemStack itemStack = slotGetter.apply(EquipmentSlot.CHEST); import dev.emi.trinkets.api.TrinketsApi;
// if (isElytra(itemStack)) return itemStack;
// import java.util.List;
// Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity); import java.util.Optional;
// if (oTrinketComponent.isPresent()) {
// List<Tuple<SlotReference, ItemStack>> equipped = public class Elytra {
// oTrinketComponent.get().getEquipped(Elytra::isElytra); private static boolean isElytra(ItemStack stack) {
// return stack.getItem() instanceof ElytraItem
// if (!equipped.isEmpty()) return equipped.get(0).getB(); || stack.getItem() instanceof FabricElytraItem;
// } }
// return null;
// }; public static void register() {
// BCLElytraUtils.slotProvider = (entity, slotGetter) -> {
// BCLElytraUtils.onBreak = (entity, chestStack) -> { ItemStack itemStack = slotGetter.apply(EquipmentSlot.CHEST);
// Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity); if (isElytra(itemStack)) return itemStack;
// if (oTrinketComponent.isPresent()) {
// List<Tuple<SlotReference, ItemStack>> equipped = Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity);
// oTrinketComponent.get().getEquipped(Elytra::isElytra); if (oTrinketComponent.isPresent()) {
// List<Tuple<SlotReference, ItemStack>> equipped =
// for (Tuple<SlotReference, ItemStack> slot : equipped) { oTrinketComponent.get().getEquipped(Elytra::isElytra);
// ItemStack slotStack = slot.getB();
// if (slotStack == chestStack) { if (!equipped.isEmpty()) return equipped.get(0).getB();
// TrinketsApi.onTrinketBroken(slotStack, slot.getA(), entity); }
// } return null;
// } };
// }
// }; BCLElytraUtils.onBreak = (entity, chestStack) -> {
// Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity);
// EntityElytraEvents.CUSTOM.register(Elytra::useElytraTrinket); if (oTrinketComponent.isPresent()) {
// } List<Tuple<SlotReference, ItemStack>> equipped =
// oTrinketComponent.get().getEquipped(Elytra::isElytra);
// private static boolean useElytraTrinket(LivingEntity entity, boolean tickElytra) {
// Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity); for (Tuple<SlotReference, ItemStack> slot : equipped) {
// if (oTrinketComponent.isPresent()) { ItemStack slotStack = slot.getB();
// List<Tuple<SlotReference, ItemStack>> equipped = if (slotStack == chestStack) {
// oTrinketComponent.get().getEquipped(Elytra::isElytra); TrinketsApi.onTrinketBroken(slotStack, slot.getA(), entity);
// }
// for (Tuple<SlotReference, ItemStack> slot : equipped) { }
// ItemStack stack = slot.getB(); }
// Item item = stack.getItem(); };
//
// if (item instanceof ElytraItem) { EntityElytraEvents.CUSTOM.register(Elytra::useElytraTrinket);
// if (ElytraItem.isFlyEnabled(stack)) { }
// BCLElytraItem.vanillaElytraTick(entity, stack);
// return true; private static boolean useElytraTrinket(LivingEntity entity, boolean tickElytra) {
// } Optional<TrinketComponent> oTrinketComponent = TrinketsApi.getTrinketComponent(entity);
// } else if (item instanceof FabricElytraItem fabricElytraItem) { if (oTrinketComponent.isPresent()) {
// if (fabricElytraItem.useCustomElytra(entity, stack, tickElytra)) { List<Tuple<SlotReference, ItemStack>> equipped =
// return true; oTrinketComponent.get().getEquipped(Elytra::isElytra);
// }
// } for (Tuple<SlotReference, ItemStack> slot : equipped) {
// } ItemStack stack = slot.getB();
// } Item item = stack.getItem();
// return false;
// } if (item instanceof ElytraItem) {
//} if (ElytraItem.isFlyEnabled(stack)) {
BCLElytraItem.vanillaElytraTick(entity, stack);
return true;
}
} else if (item instanceof FabricElytraItem fabricElytraItem) {
if (fabricElytraItem.useCustomElytra(entity, stack, tickElytra)) {
return true;
}
}
}
}
return false;
}
}

View file

@ -1,22 +1,22 @@
package org.betterx.betterend.integration.trinkets; package org.betterx.betterend.integration.trinkets;
//import net.minecraft.world.item.ElytraItem; import net.minecraft.world.item.ElytraItem;
//
//import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
//import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
//import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRenderEvents; import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRenderEvents;
//import net.fabricmc.fabric.api.entity.event.v1.FabricElytraItem; import net.fabricmc.fabric.api.entity.event.v1.FabricElytraItem;
//
//import dev.emi.trinkets.api.TrinketsApi; import dev.emi.trinkets.api.TrinketsApi;
//
//@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
//public class ElytraClient { public class ElytraClient {
// public static void register() { public static void register() {
// LivingEntityFeatureRenderEvents.ALLOW_CAPE_RENDER.register((player) -> TrinketsApi LivingEntityFeatureRenderEvents.ALLOW_CAPE_RENDER.register((player) -> TrinketsApi
// .getTrinketComponent(player) .getTrinketComponent(player)
// .map(trinketComponent -> trinketComponent.getEquipped( .map(trinketComponent -> trinketComponent.getEquipped(
// stack -> stack.getItem() instanceof ElytraItem || stack -> stack.getItem() instanceof ElytraItem ||
// stack.getItem() instanceof FabricElytraItem stack.getItem() instanceof FabricElytraItem
// ).size() == 0).orElse(true)); ).size() == 0).orElse(true));
// } }
//} }