axieum / minecord

Bring your Minecraft world into your Discord guild
https://www.curseforge.com/minecraft/mc-mods/minecord-for-discord
MIT License
15 stars 6 forks source link

Support lazy values in string templates #6

Closed axieum closed 2 years ago

axieum commented 2 years ago

Is your feature request related to a problem?

To be able to re-use static string templates with dynamic variables.

https://github.com/axieum/minecord/blob/f1a5703910c5c70c5eb0f5d7d656620f791b55d0/minecord-api/src/main/java/me/axieum/mcmod/minecord/api/util/StringTemplate.java#L198

We should be able to quickly check whether the variable is an instance of Supplier<T> and invoke the supplier for its value instead.

Describe the solution you'd like.

Adjust,

https://github.com/axieum/minecord/blob/c7025e2792c4030500bd7423c7c3e86ca1dddc66/minecord-cmds/src/main/java/me/axieum/mcmod/minecord/impl/cmds/command/discord/UptimeCommand.java#L23

...to something like,

// Prepare a reusable string template for all uptime commands
private static final StringTemplate TEMPLATE = new StringTemplate()
        .add("uptime", () -> Duration.ofMillis(ManagementFactory.getRuntimeMXBean().getUptime()));

...and then we can reuse that template in the execution to save instantiating a new template every time!

new EmbedBuilder().setDescription(TEMPLATE.format(getConfig().builtin.uptime.message)).build()

Describe alternatives you've considered.

https://github.com/axieum/minecord/blob/c7025e2792c4030500bd7423c7c3e86ca1dddc66/minecord-cmds/src/main/java/me/axieum/mcmod/minecord/impl/cmds/command/discord/UptimeCommand.java#L49-L51

Agreements

Other

No response