aboutsummaryrefslogtreecommitdiff
path: root/common/src/main/java/dev/isxander/yacl/api/OptionDescription.java
blob: 22eebc97d2cdc2e78af0aae2a5ca8d979700b9c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package dev.isxander.yacl.api;

import dev.isxander.yacl.gui.ImageRenderer;
import dev.isxander.yacl.impl.OptionDescriptionImpl;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;

import java.nio.file.Path;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;

public interface OptionDescription {
    Component descriptiveName();

    Component description();

    CompletableFuture<Optional<ImageRenderer>> image();

    static Builder createBuilder() {
        return new OptionDescriptionImpl.BuilderImpl();
    }

    interface Builder {
        Builder name(Component name);

        Builder description(Component description);

        Builder image(ResourceLocation image, int width, int height);
        Builder image(Path path, ResourceLocation uniqueLocation);

        Builder webpImage(ResourceLocation image);
        Builder webpImage(Path path, ResourceLocation uniqueLocation);

        @Deprecated
        Builder gifImage(ResourceLocation image);
        @Deprecated
        Builder gifImage(Path path, ResourceLocation uniqueLocation);

        OptionDescription build();
    }
}