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:
parent
04f1714ec5
commit
2c12af5fa8
Fabric/src/main/java/chylex/customwindowtitle/fabric
Forge/src/main/java/chylex/customwindowtitle/forge
src/main/java/chylex/customwindowtitle/data
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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) {
|
@ -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() {}
|
||||
}
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user