Compare commits
11 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
99dfb24258 | ||
![]() |
0065f53bad | ||
![]() |
2b12d2cf70 | ||
![]() |
3d80619549 | ||
![]() |
be31620992 | ||
![]() |
578d42f5ab | ||
![]() |
d86e6b8046 | ||
![]() |
2f6e31c11b | ||
![]() |
9bc1dcdc51 | ||
![]() |
63f1b3632e | ||
![]() |
c18b4c069a |
13 changed files with 249 additions and 266 deletions
|
@ -24,6 +24,9 @@ This mod's config file is `betterpingdisplay.json`. It contains the following op
|
||||||
* **1.15.x**
|
* **1.15.x**
|
||||||
* **1.16.x**
|
* **1.16.x**
|
||||||
* **1.17.x**
|
* **1.17.x**
|
||||||
|
* **1.18.x**
|
||||||
|
* **1.19.x**
|
||||||
|
* **1.20.x**
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
* [Fabric](https://fabricmc.net/)
|
* [Fabric](https://fabricmc.net/)
|
15
build.gradle
15
build.gradle
|
@ -1,5 +1,5 @@
|
||||||
plugins {
|
plugins {
|
||||||
id 'fabric-loom' version '0.9.9'
|
id 'fabric-loom' version '1.2-SNAPSHOT'
|
||||||
id 'maven-publish'
|
id 'maven-publish'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,18 +32,10 @@ processResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile).configureEach {
|
||||||
options.encoding = "UTF-8"
|
options.encoding = "UTF-8"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
|
||||||
// if it is present.
|
|
||||||
// If you remove this task, sources will not be generated.
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
|
||||||
classifier = "sources"
|
|
||||||
from sourceSets.main.allSource
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
from "LICENSE"
|
from "LICENSE"
|
||||||
}
|
}
|
||||||
|
@ -56,9 +48,6 @@ publishing {
|
||||||
artifact(remapJar) {
|
artifact(remapJar) {
|
||||||
builtBy remapJar
|
builtBy remapJar
|
||||||
}
|
}
|
||||||
artifact(sourcesJar) {
|
|
||||||
builtBy remapSourcesJar
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,15 +3,15 @@ org.gradle.jvmargs=-Xmx1G
|
||||||
|
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check these on https://fabricmc.net/use
|
# check these on https://fabricmc.net/use
|
||||||
minecraft_version=1.17.1
|
minecraft_version=1.20.1
|
||||||
yarn_mappings=1.17.1+build.23
|
yarn_mappings=1.20.1+build.1
|
||||||
loader_version=0.11.6
|
loader_version=0.14.21
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.1.1
|
mod_version = 1.1.4
|
||||||
maven_group = com.vladmarica
|
maven_group = com.vladmarica
|
||||||
archives_base_name = BetterPingDisplay-Fabric
|
archives_base_name = BetterPingDisplay-Fabric
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
||||||
fabric_version=0.37.0+1.17
|
fabric_version=0.83.0+1.20.1
|
||||||
|
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,5 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
package com.vladmarica.betterpingdisplay;
|
package com.vladmarica.betterpingdisplay;
|
||||||
|
|
||||||
import com.vladmarica.betterpingdisplay.Config.ConfigData;
|
import com.vladmarica.betterpingdisplay.Config.ConfigData;
|
||||||
import java.io.File;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
public class BetterPingDisplayMod implements ModInitializer {
|
public class BetterPingDisplayMod implements ModInitializer {
|
||||||
public static final String MODID = "betterpingdisplay";
|
public static final String MODID = "betterpingdisplay";
|
||||||
public static final Logger LOGGER = LogManager.getLogger(MODID);
|
public static final Logger LOGGER = LogManager.getLogger(MODID);
|
||||||
|
|
|
@ -3,11 +3,8 @@ package com.vladmarica.betterpingdisplay;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.annotations.Expose;
|
import com.google.gson.annotations.Expose;
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileReader;
|
import java.io.*;
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
public class Config {
|
public class Config {
|
||||||
private static final int DEFAULT_PING_TEXT_COLOR = 0xA0A0A0;
|
private static final int DEFAULT_PING_TEXT_COLOR = 0xA0A0A0;
|
||||||
|
@ -22,19 +19,16 @@ public class Config {
|
||||||
if (configFileFormat.pingTextColor.startsWith("#")) {
|
if (configFileFormat.pingTextColor.startsWith("#")) {
|
||||||
try {
|
try {
|
||||||
textColor = Integer.parseInt(configFileFormat.pingTextColor.substring(1), 16);
|
textColor = Integer.parseInt(configFileFormat.pingTextColor.substring(1), 16);
|
||||||
}
|
} catch (NumberFormatException ex) {
|
||||||
catch (NumberFormatException ex) {
|
|
||||||
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code");
|
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code");
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code");
|
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextColor' is invalid - it must be a hex color code");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configFileFormat.pingTextFormatString.contains("%d")) {
|
if (configFileFormat.pingTextFormatString.contains("%d")) {
|
||||||
textFormatString = configFileFormat.pingTextFormatString;
|
textFormatString = configFileFormat.pingTextFormatString;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextFormatString' is invalid - it needs to contain %d");
|
BetterPingDisplayMod.LOGGER.error("Config option 'pingTextFormatString' is invalid - it needs to contain %d");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,8 +62,7 @@ public class Config {
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
reader = new FileReader(configFile);
|
reader = new FileReader(configFile);
|
||||||
return gson.fromJson(reader, ConfigData.class);
|
return gson.fromJson(reader, ConfigData.class);
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
if (reader != null) {
|
if (reader != null) {
|
||||||
reader.close();
|
reader.close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,5 +34,6 @@ public final class ColorUtil {
|
||||||
return color & 0xFF;
|
return color & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ColorUtil() {}
|
private ColorUtil() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,9 @@ import com.vladmarica.betterpingdisplay.BetterPingDisplayMod;
|
||||||
import com.vladmarica.betterpingdisplay.Config;
|
import com.vladmarica.betterpingdisplay.Config;
|
||||||
import com.vladmarica.betterpingdisplay.mixin.PlayerListHudInvoker;
|
import com.vladmarica.betterpingdisplay.mixin.PlayerListHudInvoker;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.font.TextRenderer;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.hud.PlayerListHud;
|
import net.minecraft.client.gui.hud.PlayerListHud;
|
||||||
import net.minecraft.client.network.PlayerListEntry;
|
import net.minecraft.client.network.PlayerListEntry;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
|
|
||||||
public final class CustomPlayerListHud {
|
public final class CustomPlayerListHud {
|
||||||
private static final int PING_TEXT_RENDER_OFFSET = -13;
|
private static final int PING_TEXT_RENDER_OFFSET = -13;
|
||||||
|
@ -16,12 +15,11 @@ public final class CustomPlayerListHud {
|
||||||
private static final Config config = BetterPingDisplayMod.instance().getConfig();
|
private static final Config config = BetterPingDisplayMod.instance().getConfig();
|
||||||
|
|
||||||
public static void renderPingDisplay(
|
public static void renderPingDisplay(
|
||||||
MinecraftClient client, PlayerListHud hud, MatrixStack matrixStack, int width, int x, int y, PlayerListEntry player) {
|
MinecraftClient client, PlayerListHud hud, DrawContext context, int width, int x, int y, PlayerListEntry player) {
|
||||||
TextRenderer textRenderer = client.textRenderer;
|
|
||||||
|
|
||||||
String pingString = String.format(config.getTextFormatString(), player.getLatency());
|
String pingString = String.format(config.getTextFormatString(), player.getLatency());
|
||||||
int pingStringWidth = textRenderer.getWidth(pingString);
|
int pingStringWidth = client.textRenderer.getWidth(pingString);
|
||||||
int pingTextColor = config.shouldAutoColorPingText() ? PingColors.getColor(player.getLatency()) : config.getTextColor();
|
int pingTextColor = config.shouldAutoColorPingText()
|
||||||
|
? PingColors.getColor(player.getLatency()) : config.getTextColor();
|
||||||
int textX = width + x - pingStringWidth + PING_TEXT_RENDER_OFFSET;
|
int textX = width + x - pingStringWidth + PING_TEXT_RENDER_OFFSET;
|
||||||
|
|
||||||
if (!config.shouldRenderPingBars()) {
|
if (!config.shouldRenderPingBars()) {
|
||||||
|
@ -29,10 +27,10 @@ public final class CustomPlayerListHud {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the ping text for the given player
|
// Draw the ping text for the given player
|
||||||
textRenderer.drawWithShadow(matrixStack, pingString, (float) textX, (float) y, pingTextColor);
|
context.drawTextWithShadow(client.textRenderer, pingString, textX, y, pingTextColor);
|
||||||
|
|
||||||
if (config.shouldRenderPingBars()) {
|
if (config.shouldRenderPingBars()) {
|
||||||
((PlayerListHudInvoker) hud).renderLatencyIcon(matrixStack, width, x, y, player);
|
((PlayerListHudInvoker) hud).invokeRenderLatencyIcon(context, width, x, y, player);
|
||||||
} else {
|
} else {
|
||||||
// If we don't render ping bars, we need to reset the render system color so the rest
|
// If we don't render ping bars, we need to reset the render system color so the rest
|
||||||
// of the player list renders properly
|
// of the player list renders properly
|
||||||
|
|
|
@ -35,5 +35,6 @@ public final class PingColors {
|
||||||
return MathHelper.clamp(offset, 0.0F, 1.0F);
|
return MathHelper.clamp(offset, 0.0F, 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PingColors() {}
|
private PingColors() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package com.vladmarica.betterpingdisplay.mixin;
|
package com.vladmarica.betterpingdisplay.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.hud.PlayerListHud;
|
import net.minecraft.client.gui.hud.PlayerListHud;
|
||||||
import net.minecraft.client.network.PlayerListEntry;
|
import net.minecraft.client.network.PlayerListEntry;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
@Mixin(PlayerListHud.class)
|
@Mixin(PlayerListHud.class)
|
||||||
public interface PlayerListHudInvoker {
|
public interface PlayerListHudInvoker {
|
||||||
@Invoker("renderLatencyIcon")
|
@Invoker("renderLatencyIcon")
|
||||||
void renderLatencyIcon(MatrixStack matrices, int width, int x, int y, PlayerListEntry entry);
|
void invokeRenderLatencyIcon(DrawContext context, int width, int x, int y, PlayerListEntry entry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,9 @@ package com.vladmarica.betterpingdisplay.mixin;
|
||||||
|
|
||||||
import com.vladmarica.betterpingdisplay.hud.CustomPlayerListHud;
|
import com.vladmarica.betterpingdisplay.hud.CustomPlayerListHud;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.hud.PlayerListHud;
|
import net.minecraft.client.gui.hud.PlayerListHud;
|
||||||
import net.minecraft.client.network.PlayerListEntry;
|
import net.minecraft.client.network.PlayerListEntry;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import net.minecraft.scoreboard.Scoreboard;
|
|
||||||
import net.minecraft.scoreboard.ScoreboardObjective;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
@ -42,9 +40,9 @@ public abstract class PlayerListHudMixin {
|
||||||
* {@link CustomPlayerListHud#renderPingDisplay}.
|
* {@link CustomPlayerListHud#renderPingDisplay}.
|
||||||
*/
|
*/
|
||||||
@Redirect(method = "render",
|
@Redirect(method = "render",
|
||||||
at = @At(value = "INVOKE", target = "net/minecraft/client/gui/hud/PlayerListHud.renderLatencyIcon(Lnet/minecraft/client/util/math/MatrixStack;IIILnet/minecraft/client/network/PlayerListEntry;)V"))
|
at = @At(value = "INVOKE", target = "net/minecraft/client/gui/hud/PlayerListHud.renderLatencyIcon(Lnet/minecraft/client/gui/DrawContext;IIILnet/minecraft/client/network/PlayerListEntry;)V"))
|
||||||
private void redirectRenderLatencyIconCall(
|
private void redirectRenderLatencyIconCall(
|
||||||
PlayerListHud instance, MatrixStack matrices, int width, int x, int y, @NotNull PlayerListEntry entry) {
|
PlayerListHud instance, DrawContext context, int width, int x, int y, @NotNull PlayerListEntry entry) {
|
||||||
CustomPlayerListHud.renderPingDisplay(client, instance, matrices, width, x, y, entry);
|
CustomPlayerListHud.renderPingDisplay(client, instance, context, width, x, y, entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"id": "betterpingdisplay",
|
"id": "betterpingdisplay",
|
||||||
"version": "1.1.1",
|
"version": "1.1.3",
|
||||||
|
|
||||||
"name": "Better Ping Display",
|
"name": "Better Ping Display",
|
||||||
"description": "Shows the actual ping number instead of just bars in the player list!",
|
"description": "Shows the actual ping number instead of just bars in the player list!",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Quintinity"
|
"Quintinity",
|
||||||
|
"Yuuki"
|
||||||
],
|
],
|
||||||
"contact": {
|
"contact": {
|
||||||
"homepage": "https://github.com/vladmarica/better-ping-display-fabric",
|
"homepage": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric",
|
||||||
"sources": "https://github.com/vladmarica/better-ping-display-fabric",
|
"sources": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric",
|
||||||
"issues": "https://github.com/vladmarica/better-ping-display-fabric/issues"
|
"issues": "https://git.raiza.dev/Raiza.dev/better-ping-display-fabric/issues"
|
||||||
},
|
},
|
||||||
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
@ -28,10 +29,8 @@
|
||||||
],
|
],
|
||||||
|
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=0.7.4",
|
"fabricloader": ">=0.14",
|
||||||
"minecraft": "1.17.x"
|
"minecraft": ">=1.19"
|
||||||
},
|
},
|
||||||
"suggests": {
|
"suggests": {}
|
||||||
"flamingo": "*"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue