diff --git a/build.gradle b/build.gradle index 5dfc97a9..fba5a9ef 100644 --- a/build.gradle +++ b/build.gradle @@ -72,6 +72,8 @@ dependencies { implementation "net.neoforged:neoforge:${neo_version}" implementation "top.theillusivec4.curios:curios-neoforge:${curios_version}+1.21" + implementation "curse.maven:jade-324717:5729884" + implementation "curse.maven:modonomicon-538392:5717209" compileOnly "mezz.jei:jei-${minecraft_version}-common-api:${jei_version}" compileOnly "mezz.jei:jei-${minecraft_version}-neoforge-api:${jei_version}" diff --git a/src/main/java/com/portingdeadmods/modjam/compat/jade/AquaticCatalystComponentProvider.java b/src/main/java/com/portingdeadmods/modjam/compat/jade/AquaticCatalystComponentProvider.java new file mode 100644 index 00000000..7ce530c3 --- /dev/null +++ b/src/main/java/com/portingdeadmods/modjam/compat/jade/AquaticCatalystComponentProvider.java @@ -0,0 +1,35 @@ +package com.portingdeadmods.modjam.compat.jade; + +import com.portingdeadmods.modjam.content.blockentities.AquaticCatalystBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +public enum AquaticCatalystComponentProvider implements IBlockComponentProvider { + INSTANCE; + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getBlockEntity() instanceof AquaticCatalystBlockEntity blockEntity) { + if (blockEntity.isActive()) { + iTooltip.add(Component.literal("Status: Active")); + blockEntity.getCurrentRecipe().ifPresent(recipe -> { + iTooltip.add(Component.literal("Processing: ").append(Component.literal(blockEntity.getItemHandler().getStackInSlot(0).getCount() +"x ").append(Component.translatable(blockEntity.getProcessingItem().getDescriptionId())))); + iTooltip.add(Component.literal("Remaining Duration: " + blockEntity.getRemainingDuration() + " ticks")); + iTooltip.add(Component.literal("Transferring: " + blockEntity.getPower() + "AP/T")); + }); + } else { + iTooltip.add(Component.literal("Status: Inactive")); + } + } + } + + + @Override + public ResourceLocation getUid() { + return ResourceLocation.fromNamespaceAndPath("modjam", "aquatic_catalyst"); + } +} diff --git a/src/main/java/com/portingdeadmods/modjam/compat/jade/JadePlugin.java b/src/main/java/com/portingdeadmods/modjam/compat/jade/JadePlugin.java new file mode 100644 index 00000000..6297da8b --- /dev/null +++ b/src/main/java/com/portingdeadmods/modjam/compat/jade/JadePlugin.java @@ -0,0 +1,22 @@ +package com.portingdeadmods.modjam.compat.jade; + +import com.portingdeadmods.modjam.content.blockentities.AquaticCatalystBlockEntity; +import com.portingdeadmods.modjam.content.blocks.AquaticCatalystBlock; +import snownee.jade.api.IWailaClientRegistration; +import snownee.jade.api.IWailaCommonRegistration; +import snownee.jade.api.IWailaPlugin; +import snownee.jade.api.WailaPlugin; + +@WailaPlugin +public class JadePlugin implements IWailaPlugin { + + @Override + public void register(IWailaCommonRegistration registration) { + //TODO register data providers + } + + @Override + public void registerClient(IWailaClientRegistration registration) { + registration.registerBlockComponent(AquaticCatalystComponentProvider.INSTANCE, AquaticCatalystBlock.class); + } +} \ No newline at end of file diff --git a/src/main/java/com/portingdeadmods/modjam/content/blockentities/AquaticCatalystBlockEntity.java b/src/main/java/com/portingdeadmods/modjam/content/blockentities/AquaticCatalystBlockEntity.java index bcc1348a..29cda603 100644 --- a/src/main/java/com/portingdeadmods/modjam/content/blockentities/AquaticCatalystBlockEntity.java +++ b/src/main/java/com/portingdeadmods/modjam/content/blockentities/AquaticCatalystBlockEntity.java @@ -26,6 +26,7 @@ public class AquaticCatalystBlockEntity extends LaserBlockEntity { private AquaticCatalystChannelingRecipe recipe; + private int amount; private int duration; public AquaticCatalystBlockEntity(BlockPos blockPos, BlockState blockState) { @@ -46,6 +47,20 @@ public int getDuration() { return duration; } + public int getRemainingDuration() { + return recipe != null ? recipe.duration() - duration : 0; + } + + public ItemStack getProcessingItem() { + return getItemHandler().getStackInSlot(0); + } + + public Optional getCurrentRecipe() { + return Optional.ofNullable(this.recipe); + } + + + @Override public ObjectSet getLaserOutputs() { Direction direction = getBlockState().getValue(BlockStateProperties.FACING); @@ -76,7 +91,7 @@ public void commonTick() { getItemStackHandler().setStackInSlot(0, stack.copyWithCount(stack.getCount() - 1)); duration = 0; } else { - int amount = recipe.powerAmount() / recipe.duration(); + amount = recipe.powerAmount() / recipe.duration(); transmitPower(amount); duration++; } @@ -85,6 +100,10 @@ public void commonTick() { } } + public int getPower() { + return amount; + } + @Override public Map> getSidedInteractions(BlockCapability capability) { if (capability == Capabilities.ItemHandler.BLOCK) { @@ -93,7 +112,7 @@ public Map> getSidedInteractions(BlockCapa return Map.of(); } - private boolean isActive() { + public boolean isActive() { return getBlockState().getValue(AquaticCatalystBlock.CORE_ACTIVE); }