From 166c43d9c455ad849f240ba4963103ccea6e3326 Mon Sep 17 00:00:00 2001 From: Wynd Date: Sat, 7 Oct 2023 15:10:59 +0300 Subject: [PATCH] Added both game and irl days played in the F3 debug menu --- gradle.properties | 16 +++---- .../xyz/pixelatedw/finalbeta/WyHelper.java | 27 ++++++++++- .../finalbeta/mixin/ClientPlayerMixin.java | 10 +++-- .../finalbeta/mixin/ContainerScreenMixin.java | 8 ++-- .../finalbeta/mixin/OverlayMixin.java | 45 +++++++++++++++++++ src/main/resources/finalbeta.mixins.json | 3 +- 6 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 src/main/java/xyz/pixelatedw/finalbeta/mixin/OverlayMixin.java diff --git a/gradle.properties b/gradle.properties index 86c08e3..d3a9a2e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties - minecraft_version=b1.7.3 - loader_version=1.0.0 - plasma_build=22 - #This is actually 1.1.0, but that decided it didn't want to build on maven - api_version=1.1.0.1 +minecraft_version=b1.7.3 +loader_version=1.0.0 +plasma_build=22 +#This is actually 1.1.0, but that decided it didn't want to build on maven +api_version=1.1.0.1 # Mod Properties - mod_version = 1.0.0 - maven_group = xyz.pixelatedw.finalbeta - archives_base_name = finalbeta +mod_version = 1.0.0 +maven_group = xyz.pixelatedw.finalbeta +archives_base_name = finalbeta diff --git a/src/main/java/xyz/pixelatedw/finalbeta/WyHelper.java b/src/main/java/xyz/pixelatedw/finalbeta/WyHelper.java index e8ddd1c..7598342 100644 --- a/src/main/java/xyz/pixelatedw/finalbeta/WyHelper.java +++ b/src/main/java/xyz/pixelatedw/finalbeta/WyHelper.java @@ -2,8 +2,11 @@ package xyz.pixelatedw.finalbeta; import java.lang.management.ManagementFactory; import java.lang.reflect.Field; +import java.time.Duration; import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.Player; +import net.minecraft.stat.Stats; public class WyHelper { @@ -18,6 +21,25 @@ public class WyHelper { return null; } + public static boolean isTimeBehind() { + // int currentPlayTime = WyHelper.getInstance().statManager.getStatAmount(Stats.playOneMinute) + return false; + } + + public static long getTicksPlayed() { + return WyHelper.getInstance().statManager.getStatAmount(Stats.playOneMinute); + } + + public static long getRealDaysPlayed() { + int seconds = WyHelper.getInstance().statManager.getStatAmount(Stats.playOneMinute) / 20; + return Duration.ofSeconds(seconds).toDays(); + } + + public static long getGameDaysPlayed() { + int seconds = WyHelper.getInstance().statManager.getStatAmount(Stats.playOneMinute) / 20; + return Duration.ofSeconds(seconds).toMinutes() / 20; + } + public static boolean isDebug() { return ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0; } @@ -30,7 +52,8 @@ public class WyHelper { return val < min ? min : Math.min(val, max); } -// public static void cheatCommand(Player player) { + public static void cheatCommand(Player player) { + // player.dropItem(new ItemInstance(Tile.SNOW)); // Random rand = new Random(); // player.level.playSound(player, "random.break", 1, (rand.nextFloat() - rand.nextFloat()) * 0.2F + 1.0F); @@ -59,5 +82,5 @@ public class WyHelper { // player.level.getProperties().setRainTime(0); // player.level.getProperties().setThundering(false); // player.level.getProperties().setThunderTime(0); -// } + } } diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ClientPlayerMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ClientPlayerMixin.java index 9b6b122..6181ca2 100644 --- a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ClientPlayerMixin.java +++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ClientPlayerMixin.java @@ -2,6 +2,7 @@ package xyz.pixelatedw.finalbeta.mixin; import java.util.Random; +import org.lwjgl.input.Keyboard; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -12,6 +13,7 @@ import net.minecraft.entity.player.ClientPlayer; import net.minecraft.entity.player.Player; import net.minecraft.inventory.Inventory; import xyz.pixelatedw.finalbeta.ModConfig; +import xyz.pixelatedw.finalbeta.WyHelper; @Mixin(ClientPlayer.class) public class ClientPlayerMixin { @@ -20,10 +22,10 @@ public class ClientPlayerMixin { @Inject(method = "method_136", at = @At("TAIL")) public void onKeyPressed(int key, boolean state, CallbackInfo ci) { -// if (WyHelper.isDebug() && key == 25 && state) { -// Player player = (Player) (Object) this; -// WyHelper.cheatCommand(player); -// } + if (WyHelper.isDebug() && key == Keyboard.KEY_Z && state) { + Player player = (Player) (Object) this; + WyHelper.cheatCommand(player); + } } @Inject(method = "openChestScreen", at = @At("TAIL")) diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ContainerScreenMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ContainerScreenMixin.java index 56e10b9..66221e2 100644 --- a/src/main/java/xyz/pixelatedw/finalbeta/mixin/ContainerScreenMixin.java +++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/ContainerScreenMixin.java @@ -27,7 +27,7 @@ public class ContainerScreenMixin extends ScreenMixin { @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/container/ContainerScreen;renderForeground()V", shift = Shift.AFTER)) public void onRender(int i, int j, float f, CallbackInfo ci) { ContainerScreen screen = ((ContainerScreen) (Object) this); - PlayerInventory selectedItem = minecraft.player.inventory; + PlayerInventory selectedItem = this.minecraft.player.inventory; int posX = (screen.width - this.containerWidth) / 2; int posY = (screen.height - this.containerHeight) / 2; @@ -42,10 +42,8 @@ public class ContainerScreenMixin extends ScreenMixin { if (selectedItem.getCursorItem() != null) { GL11.glTranslatef(0.0F, 0.0F, 32.0F); - itemRenderer.renderItemInstance(minecraft.textRenderer, minecraft.textureManager, selectedItem.getCursorItem(), i - posX - 8, - j - posY - 8); - itemRenderer.method_1488(minecraft.textRenderer, minecraft.textureManager, selectedItem.getCursorItem(), i - posX - 8, - j - posY - 8); + itemRenderer.renderItemInstance(this.minecraft.textRenderer, this.minecraft.textureManager, selectedItem.getCursorItem(), i - posX - 8, j - posY - 8); + itemRenderer.method_1488(this.minecraft.textRenderer, this.minecraft.textureManager, selectedItem.getCursorItem(), i - posX - 8, j - posY - 8); } GL11.glDisable(32826); diff --git a/src/main/java/xyz/pixelatedw/finalbeta/mixin/OverlayMixin.java b/src/main/java/xyz/pixelatedw/finalbeta/mixin/OverlayMixin.java new file mode 100644 index 0000000..8c3182a --- /dev/null +++ b/src/main/java/xyz/pixelatedw/finalbeta/mixin/OverlayMixin.java @@ -0,0 +1,45 @@ +package xyz.pixelatedw.finalbeta.mixin; + +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Slice; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.Overlay; +import net.minecraft.client.render.TextRenderer; +import xyz.pixelatedw.finalbeta.WyHelper; + +@Mixin(Overlay.class) +public class OverlayMixin extends DrawableHelper { + + @Shadow + private Minecraft minecraft; + + @Inject( + method = "render(FZII)V", + at = @At( + value = "INVOKE", + target = "Lorg/lwjgl/opengl/GL11;glPopMatrix()V" + ), + slice = @Slice( + from = @At( + value = "INVOKE", + target = "drawTextWithShadow(Lnet/minecraft/client/render/TextRenderer;Ljava/lang/String;III)V" + ), + to = @At( + value = "FIELD", + target = "jukeboxMessageTime:I", + opcode = Opcodes.GETFIELD + ) + ) + ) + public void render(float f, boolean flag, int i, int j, CallbackInfo ci) { + TextRenderer textRenderer = this.minecraft.textRenderer; + this.drawTextWithShadow(textRenderer, "Days Played: " + WyHelper.getGameDaysPlayed() + " (" + WyHelper.getRealDaysPlayed() + ")", 2, 96, 14737632); + } +} diff --git a/src/main/resources/finalbeta.mixins.json b/src/main/resources/finalbeta.mixins.json index fac929b..9bc1362 100644 --- a/src/main/resources/finalbeta.mixins.json +++ b/src/main/resources/finalbeta.mixins.json @@ -27,7 +27,8 @@ "FurnaceEntityMixin", "WorldRendererMixin", "VideoSettingsScreenMixin", - "TileMixin" + "TileMixin", + "OverlayMixin" ], "injectors": { "defaultRequire": 1