1
0
mirror of https://github.com/chylex/Minecraft-Window-Title.git synced 2025-05-07 19:34:04 +02:00

Refactor default tokens and future-proof mcversion token

This commit is contained in:
chylex 2021-11-25 21:52:45 +01:00
parent 04f1714ec5
commit 2c12af5fa8
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548
7 changed files with 48 additions and 39 deletions
Fabric/src/main/java/chylex/customwindowtitle/fabric
Forge/src/main/java/chylex/customwindowtitle/forge
src/main/java/chylex/customwindowtitle/data

View File

@ -1,6 +1,7 @@
package chylex.customwindowtitle.fabric;
import chylex.customwindowtitle.TitleConfig;
import chylex.customwindowtitle.TitleParser;
import chylex.customwindowtitle.data.CommonTokenData;
import com.mojang.blaze3d.platform.Window;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.loader.api.FabricLoader;
@ -15,7 +16,7 @@ public class CustomWindowTitle implements ClientModInitializer {
@Override
public void onInitializeClient() {
TokenData.register();
CommonTokenData.register(new TokenProvider());
Minecraft.getInstance().execute(this::updateTitle);
}

View File

@ -1,22 +0,0 @@
package chylex.customwindowtitle.fabric;
import chylex.customwindowtitle.TokenException;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.SharedConstants;
import static chylex.customwindowtitle.TitleTokens.noArgs;
import static chylex.customwindowtitle.TitleTokens.oneArg;
import static chylex.customwindowtitle.TitleTokens.registerToken;
final class TokenData {
static void register() {
registerToken("mcversion", noArgs(TokenData::getMinecraftVersion));
registerToken("modversion", oneArg(TokenData::getModVersion));
}
static String getMinecraftVersion() {
return SharedConstants.getCurrentVersion().getName();
}
static String getModVersion(final String modId) {
return FabricLoader.getInstance().getModContainer(modId).orElseThrow(() -> new TokenException("mod info for '" + modId + "' not found")).getMetadata().getVersion().getFriendlyString();
}
}

View File

@ -0,0 +1,16 @@
package chylex.customwindowtitle.fabric;
import chylex.customwindowtitle.TokenException;
import chylex.customwindowtitle.data.CommonTokenProvider;
import net.fabricmc.loader.api.FabricLoader;
final class TokenProvider implements CommonTokenProvider {
@Override
public String getModVersion(final String modId) {
return FabricLoader.getInstance()
.getModContainer(modId)
.orElseThrow(() -> new TokenException("mod info for '" + modId + "' not found"))
.getMetadata()
.getVersion()
.getFriendlyString();
}
}

View File

@ -1,6 +1,7 @@
package chylex.customwindowtitle.forge;
import chylex.customwindowtitle.TitleConfig;
import chylex.customwindowtitle.TitleParser;
import chylex.customwindowtitle.data.CommonTokenData;
import com.mojang.blaze3d.platform.Window;
import net.minecraft.client.Minecraft;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -20,7 +21,7 @@ public class CustomWindowTitle {
config = TitleConfig.read(FMLPaths.CONFIGDIR.get().toString());
ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);
TokenData.register();
CommonTokenData.register(new TokenProvider());
}
@SubscribeEvent

View File

@ -1,24 +1,13 @@
package chylex.customwindowtitle.forge;
import chylex.customwindowtitle.TokenException;
import net.minecraft.SharedConstants;
import chylex.customwindowtitle.data.CommonTokenProvider;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.forgespi.language.IModFileInfo;
import net.minecraftforge.forgespi.language.IModInfo;
import static chylex.customwindowtitle.TitleTokens.noArgs;
import static chylex.customwindowtitle.TitleTokens.oneArg;
import static chylex.customwindowtitle.TitleTokens.registerToken;
final class TokenData {
static void register() {
registerToken("mcversion", noArgs(TokenData::getMinecraftVersion));
registerToken("modversion", oneArg(TokenData::getModVersion));
}
static String getMinecraftVersion() {
return SharedConstants.getCurrentVersion().getName();
}
static String getModVersion(final String modId) {
final class TokenProvider implements CommonTokenProvider {
@Override
public String getModVersion(final String modId) {
final IModFileInfo file = ModList.get().getModFileById(modId);
if (file == null) {

View File

@ -0,0 +1,14 @@
package chylex.customwindowtitle.data;
import static chylex.customwindowtitle.TitleTokens.noArgs;
import static chylex.customwindowtitle.TitleTokens.oneArg;
import static chylex.customwindowtitle.TitleTokens.registerToken;
public final class CommonTokenData {
public static void register(final CommonTokenProvider provider) {
registerToken("mcversion", noArgs(provider::getMinecraftVersion));
registerToken("modversion", oneArg(provider::getModVersion));
}
private CommonTokenData() {}
}

View File

@ -0,0 +1,10 @@
package chylex.customwindowtitle.data;
import net.minecraft.client.Minecraft;
public interface CommonTokenProvider {
default String getMinecraftVersion() {
return Minecraft.getInstance().getGame().getVersion().getName();
}
String getModVersion(final String modId);
}