RyanHub – file viewer
filename: common/src/main/java/rearth/oritech/init/compat/jade/OritechMachineCoreControllerProvider.java
branch: 1.21
back to repo
package rearth.oritech.init.compat.jade;

import net.minecraft.nbt.NbtCompound;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import rearth.oritech.Oritech;
import rearth.oritech.block.entity.MachineCoreEntity;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.IServerDataProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

public enum OritechMachineCoreControllerProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {

    INSTANCE;

    private static final Identifier ID = Oritech.id("machine_core_controller");

    @Override
    public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
        if (accessor.getServerData().contains("controller")) {
            tooltip.add(Text.translatable(accessor.getServerData().getString("controller")).formatted(Formatting.WHITE).formatted(Formatting.ITALIC));
        }
    }

    @Override
    public void appendServerData(NbtCompound data, BlockAccessor accessor) {
        if (accessor.getBlockEntity() instanceof MachineCoreEntity coreEntity) {
            var controllerEntity = coreEntity.getCachedController();
            if (controllerEntity != null) {
                var controller = accessor.getLevel().getBlockState(controllerEntity.getPosForMultiblock()).getBlock();
                data.putString("controller", controller.getTranslationKey());
            }
        }
    }

    @Override
    public Identifier getUid() {
        return ID;
    }
        
}