mirror of
https://github.com/chylex/Minecraft-Window-Title.git
synced 2025-05-25 17:34:09 +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;
|
package chylex.customwindowtitle.fabric;
|
||||||
import chylex.customwindowtitle.TitleConfig;
|
import chylex.customwindowtitle.TitleConfig;
|
||||||
import chylex.customwindowtitle.TitleParser;
|
import chylex.customwindowtitle.TitleParser;
|
||||||
|
import chylex.customwindowtitle.data.CommonTokenData;
|
||||||
import com.mojang.blaze3d.platform.Window;
|
import com.mojang.blaze3d.platform.Window;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
@ -15,7 +16,7 @@ public class CustomWindowTitle implements ClientModInitializer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
TokenData.register();
|
CommonTokenData.register(new TokenProvider());
|
||||||
Minecraft.getInstance().execute(this::updateTitle);
|
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;
|
package chylex.customwindowtitle.forge;
|
||||||
import chylex.customwindowtitle.TitleConfig;
|
import chylex.customwindowtitle.TitleConfig;
|
||||||
import chylex.customwindowtitle.TitleParser;
|
import chylex.customwindowtitle.TitleParser;
|
||||||
|
import chylex.customwindowtitle.data.CommonTokenData;
|
||||||
import com.mojang.blaze3d.platform.Window;
|
import com.mojang.blaze3d.platform.Window;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@ -20,7 +21,7 @@ public class CustomWindowTitle {
|
|||||||
config = TitleConfig.read(FMLPaths.CONFIGDIR.get().toString());
|
config = TitleConfig.read(FMLPaths.CONFIGDIR.get().toString());
|
||||||
ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
|
ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
|
||||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);
|
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientSetup);
|
||||||
TokenData.register();
|
CommonTokenData.register(new TokenProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
@ -1,24 +1,13 @@
|
|||||||
package chylex.customwindowtitle.forge;
|
package chylex.customwindowtitle.forge;
|
||||||
import chylex.customwindowtitle.TokenException;
|
import chylex.customwindowtitle.TokenException;
|
||||||
import net.minecraft.SharedConstants;
|
import chylex.customwindowtitle.data.CommonTokenProvider;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.forgespi.language.IModFileInfo;
|
import net.minecraftforge.forgespi.language.IModFileInfo;
|
||||||
import net.minecraftforge.forgespi.language.IModInfo;
|
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 {
|
final class TokenProvider implements CommonTokenProvider {
|
||||||
static void register() {
|
@Override
|
||||||
registerToken("mcversion", noArgs(TokenData::getMinecraftVersion));
|
public String getModVersion(final String modId) {
|
||||||
registerToken("modversion", oneArg(TokenData::getModVersion));
|
|
||||||
}
|
|
||||||
|
|
||||||
static String getMinecraftVersion() {
|
|
||||||
return SharedConstants.getCurrentVersion().getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
static String getModVersion(final String modId) {
|
|
||||||
final IModFileInfo file = ModList.get().getModFileById(modId);
|
final IModFileInfo file = ModList.get().getModFileById(modId);
|
||||||
|
|
||||||
if (file == null) {
|
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