diff --git a/build.gradle b/build.gradle index 33e93c117..17a508174 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,13 @@ repositories { //Dev Mode url "https://maven.jamieswhiteshirt.com/libs-release/" } + maven { + //trinkets + url = "https://maven.abusedmaster.xyz/" + } + maven { + url = "https://jitpack.io" + } } version = "3.3.7" @@ -74,6 +81,7 @@ dependencies { optionalDependency ("me.shedaniel:RoughlyEnoughItems:3.6.0") optionalDependency ('io.github.cottonmc:LibCD:2.0.1+1.15') + optionalDependency ('com.github.emilyploszaj:trinkets:2.4.2') def rcVersion = 'RebornCore:RebornCore-1.15:+' modApi (rcVersion) { diff --git a/src/main/java/techreborn/TechReborn.java b/src/main/java/techreborn/TechReborn.java index 04b5a1a75..fca18f401 100644 --- a/src/main/java/techreborn/TechReborn.java +++ b/src/main/java/techreborn/TechReborn.java @@ -26,7 +26,9 @@ package techreborn; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.ComposterBlock; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -40,6 +42,7 @@ import reborncore.common.util.Torus; import reborncore.common.world.DataAttachment; import techreborn.blockentity.storage.energy.idsu.IDSUManager; import techreborn.client.GuiType; +import techreborn.compat.trinkets.Trinkets; import techreborn.config.TechRebornConfig; import techreborn.events.ModRegistry; import techreborn.init.FluidGeneratorRecipes; @@ -55,6 +58,8 @@ import techreborn.packets.ServerboundPackets; import techreborn.utils.PoweredCraftingHandler; import techreborn.world.WorldGenerator; +import java.util.function.Predicate; + public class TechReborn implements ModInitializer { public static final String MOD_ID = "techreborn"; @@ -65,6 +70,8 @@ public class TechReborn implements ModInitializer { new Identifier("techreborn", "item_group"), () -> new ItemStack(TRContent.NUKE)); + public static Predicate elytraPredicate = playerEntity -> false; + @Override public void onInitialize() { INSTANCE = this; @@ -104,6 +111,10 @@ public class TechReborn implements ModInitializer { ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(TRContent.Dusts.SAW.asItem(), 0.3F); ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(TRContent.SmallDusts.SAW.asItem(), 0.1F); + if (FabricLoader.getInstance().isModLoaded("trinkets")) { + elytraPredicate = Trinkets.isElytraEquipped(); + } + LOGGER.info("TechReborn setup done!"); } diff --git a/src/main/java/techreborn/compat/trinkets/Trinkets.java b/src/main/java/techreborn/compat/trinkets/Trinkets.java new file mode 100644 index 000000000..728cb48c5 --- /dev/null +++ b/src/main/java/techreborn/compat/trinkets/Trinkets.java @@ -0,0 +1,23 @@ +package techreborn.compat.trinkets; + +import dev.emi.trinkets.api.TrinketComponent; +import dev.emi.trinkets.api.TrinketsApi; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Items; + +import java.util.function.Predicate; + +public class Trinkets { + + public static Predicate isElytraEquipped() { + return playerEntity -> { + TrinketComponent component = TrinketsApi.getTrinketComponent(playerEntity); + for (int i = 0; i < component.getInventory().getInvSize(); i++) { + if (component.getInventory().getInvStack(i).getItem() == Items.ELYTRA) { + return true; + } + } + return false; + }; + } +} diff --git a/src/main/java/techreborn/items/armor/QuantumSuitItem.java b/src/main/java/techreborn/items/armor/QuantumSuitItem.java index a38cc9ec2..e7558e5dc 100644 --- a/src/main/java/techreborn/items/armor/QuantumSuitItem.java +++ b/src/main/java/techreborn/items/armor/QuantumSuitItem.java @@ -91,7 +91,7 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers, } break; case CHEST: - if (Energy.of(stack).getEnergy() > flyCost) { + if (Energy.of(stack).getEnergy() > flyCost && !TechReborn.elytraPredicate.test(playerEntity)) { playerEntity.abilities.allowFlying = true; if (playerEntity.abilities.flying) { Energy.of(stack).use(flyCost);