From 047dfcab72911ab7fdeb72f766724dae78d4a26e Mon Sep 17 00:00:00 2001 From: LB2345 <163643124+LovelyBunny11@users.noreply.github.com> Date: Wed, 21 May 2025 06:06:25 +0300 Subject: [PATCH] Added Player Visibility and Utils. --- build.gradle | 8 ++--- .../zombiesutils/ZombiesUtilsClient.java | 20 ------------- .../zombies-utils.client.mixins.json | 11 ------- .../stachel/zombiesutils/ZombiesUtils.java | 13 +++++++-- .../stachel/zombiesutils/game/GameFile.java | 4 +-- .../zombiesutils/game/GameManager.java | 5 ++-- .../stachel/zombiesutils/game/GameMode.java | 6 ++-- .../zombiesutils/handlers/Location.java | 0 .../zombiesutils/handlers/Renderer.java | 0 .../mixin}/ClientPlayNetworkHandlerMixin.java | 4 +-- .../mixin/OtherClientPlayerEntityMixin.java | 29 +++++++++++++++++++ .../xyz/stachel/zombiesutils/util/Utils.java | 26 +++++++++++++++++ src/main/resources/fabric.mod.json | 7 ++--- src/main/resources/zombies-utils.mixins.json | 13 +++++++++ 14 files changed, 93 insertions(+), 53 deletions(-) delete mode 100644 src/client/java/xyz/stachel/zombiesutils/ZombiesUtilsClient.java delete mode 100644 src/client/resources/zombies-utils.client.mixins.json rename src/{client => main}/java/xyz/stachel/zombiesutils/handlers/Location.java (100%) rename src/{client => main}/java/xyz/stachel/zombiesutils/handlers/Renderer.java (100%) rename src/{client/java/xyz/stachel/zombiesutils/mixin/client => main/java/xyz/stachel/zombiesutils/mixin}/ClientPlayNetworkHandlerMixin.java (91%) create mode 100644 src/main/java/xyz/stachel/zombiesutils/mixin/OtherClientPlayerEntityMixin.java create mode 100644 src/main/java/xyz/stachel/zombiesutils/util/Utils.java create mode 100644 src/main/resources/zombies-utils.mixins.json diff --git a/build.gradle b/build.gradle index df8e22b..9af532f 100644 --- a/build.gradle +++ b/build.gradle @@ -11,16 +11,14 @@ base { } repositories { - maven { url 'https://repo.hypixel.net/repository/Hypixel/' } + maven { url 'https://repo.hypixel.net/repository/Hypixel/' } } loom { - splitEnvironmentSourceSets() mods { "zombies-utils" { sourceSet sourceSets.main - sourceSet sourceSets.client } } @@ -34,7 +32,7 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modImplementation 'net.hypixel:mod-api:1.0.1' + modImplementation 'net.hypixel:mod-api:1.0.1' } processResources { @@ -83,4 +81,4 @@ publishing { // The repositories here will be used for publishing your artifact, not for // retrieving dependencies. } -} +} \ No newline at end of file diff --git a/src/client/java/xyz/stachel/zombiesutils/ZombiesUtilsClient.java b/src/client/java/xyz/stachel/zombiesutils/ZombiesUtilsClient.java deleted file mode 100644 index 8e87530..0000000 --- a/src/client/java/xyz/stachel/zombiesutils/ZombiesUtilsClient.java +++ /dev/null @@ -1,20 +0,0 @@ -package xyz.stachel.zombiesutils; - -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback; -import net.hypixel.modapi.HypixelModAPI; -import net.hypixel.modapi.packet.impl.clientbound.event.ClientboundLocationPacket; -import xyz.stachel.zombiesutils.handlers.Location; -import xyz.stachel.zombiesutils.handlers.Renderer; - -public class ZombiesUtilsClient implements ClientModInitializer { - - @Override - public void onInitializeClient() { - HypixelModAPI.getInstance().subscribeToEventPacket(ClientboundLocationPacket.class); - HypixelModAPI.getInstance().createHandler(ClientboundLocationPacket.class, Location::onLocation); - ZombiesUtils.LOGGER.info("initializing..."); - HudLayerRegistrationCallback.EVENT.register(new Renderer()); - } - -} diff --git a/src/client/resources/zombies-utils.client.mixins.json b/src/client/resources/zombies-utils.client.mixins.json deleted file mode 100644 index 72e38c2..0000000 --- a/src/client/resources/zombies-utils.client.mixins.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "required": true, - "package": "xyz.stachel.zombiesutils.mixin.client", - "compatibilityLevel": "JAVA_21", - "client": [ - "ClientPlayNetworkHandlerMixin" - ], - "injectors": { - "defaultRequire": 1 - } -} diff --git a/src/main/java/xyz/stachel/zombiesutils/ZombiesUtils.java b/src/main/java/xyz/stachel/zombiesutils/ZombiesUtils.java index d049a78..fa9cc87 100644 --- a/src/main/java/xyz/stachel/zombiesutils/ZombiesUtils.java +++ b/src/main/java/xyz/stachel/zombiesutils/ZombiesUtils.java @@ -1,9 +1,13 @@ package xyz.stachel.zombiesutils; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback; +import net.hypixel.modapi.HypixelModAPI; +import net.hypixel.modapi.packet.impl.clientbound.event.ClientboundLocationPacket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import net.fabricmc.api.ModInitializer; +import xyz.stachel.zombiesutils.handlers.Location; +import xyz.stachel.zombiesutils.handlers.Renderer; public class ZombiesUtils implements ModInitializer { @@ -12,6 +16,9 @@ public class ZombiesUtils implements ModInitializer { @Override public void onInitialize() { + HypixelModAPI.getInstance().subscribeToEventPacket(ClientboundLocationPacket.class); + HypixelModAPI.getInstance().createHandler(ClientboundLocationPacket.class, Location::onLocation); + ZombiesUtils.LOGGER.info("initializing..."); + HudLayerRegistrationCallback.EVENT.register(new Renderer()); } - } diff --git a/src/main/java/xyz/stachel/zombiesutils/game/GameFile.java b/src/main/java/xyz/stachel/zombiesutils/game/GameFile.java index fc01920..c1088a1 100644 --- a/src/main/java/xyz/stachel/zombiesutils/game/GameFile.java +++ b/src/main/java/xyz/stachel/zombiesutils/game/GameFile.java @@ -1,5 +1,7 @@ package xyz.stachel.zombiesutils.game; +import org.jetbrains.annotations.NotNull; + import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -7,8 +9,6 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import org.jetbrains.annotations.NotNull; - class GameFile extends File { private FileWriter writer; diff --git a/src/main/java/xyz/stachel/zombiesutils/game/GameManager.java b/src/main/java/xyz/stachel/zombiesutils/game/GameManager.java index 09e64d8..9356906 100644 --- a/src/main/java/xyz/stachel/zombiesutils/game/GameManager.java +++ b/src/main/java/xyz/stachel/zombiesutils/game/GameManager.java @@ -1,8 +1,9 @@ package xyz.stachel.zombiesutils.game; import org.jetbrains.annotations.NotNull; -import xyz.stachel.zombiesutils.game.GameMode.Map; import xyz.stachel.zombiesutils.handlers.Location; +import xyz.stachel.zombiesutils.game.GameMode.Map; +import xyz.stachel.zombiesutils.util.Utils; import java.util.HashMap; import java.util.Optional; @@ -24,7 +25,7 @@ public class GameManager { public void onRound(final int round) { final String sn = Location.getServerNumber(); final String mode = Location.getMode(); - if (sn == null || mode == null || !mode.startsWith("ZOMBIES")) return; + if (sn == null || mode == null || !Utils.isZombies()) return; if (!this.games.containsKey(sn)) { addGame(sn, new GameMode(Map.DEAD_END), round); diff --git a/src/main/java/xyz/stachel/zombiesutils/game/GameMode.java b/src/main/java/xyz/stachel/zombiesutils/game/GameMode.java index a6ebae0..27589cc 100644 --- a/src/main/java/xyz/stachel/zombiesutils/game/GameMode.java +++ b/src/main/java/xyz/stachel/zombiesutils/game/GameMode.java @@ -2,7 +2,7 @@ package xyz.stachel.zombiesutils.game; import org.jetbrains.annotations.NotNull; -class GameMode { +public class GameMode { private final Map map; private Difficulty difficulty; @@ -23,11 +23,11 @@ class GameMode { return this.map; } - enum Map { + public enum Map { DEAD_END, BAD_BLOOD, PRISON, ALIEN_ARCADIUM; } - enum Difficulty { + public enum Difficulty { NORMAL, HARD, RIP; } diff --git a/src/client/java/xyz/stachel/zombiesutils/handlers/Location.java b/src/main/java/xyz/stachel/zombiesutils/handlers/Location.java similarity index 100% rename from src/client/java/xyz/stachel/zombiesutils/handlers/Location.java rename to src/main/java/xyz/stachel/zombiesutils/handlers/Location.java diff --git a/src/client/java/xyz/stachel/zombiesutils/handlers/Renderer.java b/src/main/java/xyz/stachel/zombiesutils/handlers/Renderer.java similarity index 100% rename from src/client/java/xyz/stachel/zombiesutils/handlers/Renderer.java rename to src/main/java/xyz/stachel/zombiesutils/handlers/Renderer.java diff --git a/src/client/java/xyz/stachel/zombiesutils/mixin/client/ClientPlayNetworkHandlerMixin.java b/src/main/java/xyz/stachel/zombiesutils/mixin/ClientPlayNetworkHandlerMixin.java similarity index 91% rename from src/client/java/xyz/stachel/zombiesutils/mixin/client/ClientPlayNetworkHandlerMixin.java rename to src/main/java/xyz/stachel/zombiesutils/mixin/ClientPlayNetworkHandlerMixin.java index aba33bb..78ddda8 100644 --- a/src/client/java/xyz/stachel/zombiesutils/mixin/client/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/xyz/stachel/zombiesutils/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,4 +1,4 @@ -package xyz.stachel.zombiesutils.mixin.client; +package xyz.stachel.zombiesutils.mixin; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.network.packet.s2c.play.TitleS2CPacket; @@ -12,7 +12,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; @Mixin(ClientPlayNetworkHandler.class) -public class ClientPlayNetworkHandlerMixin { +public abstract class ClientPlayNetworkHandlerMixin { private static final Pattern pattern = Pattern.compile("Round (\\d{1,3})"); @Inject(at = @At("HEAD"), method = "onTitle") diff --git a/src/main/java/xyz/stachel/zombiesutils/mixin/OtherClientPlayerEntityMixin.java b/src/main/java/xyz/stachel/zombiesutils/mixin/OtherClientPlayerEntityMixin.java new file mode 100644 index 0000000..8fb5962 --- /dev/null +++ b/src/main/java/xyz/stachel/zombiesutils/mixin/OtherClientPlayerEntityMixin.java @@ -0,0 +1,29 @@ +package xyz.stachel.zombiesutils.mixin; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.mojang.authlib.GameProfile; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.client.network.OtherClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(OtherClientPlayerEntity.class) +public abstract class OtherClientPlayerEntityMixin extends AbstractClientPlayerEntity { + + public OtherClientPlayerEntityMixin(ClientWorld world, GameProfile profile) { + super(world, profile); + } + + @ModifyReturnValue(method = "shouldRender", at = @At(value = "RETURN")) + public boolean shouldRender(boolean original, double distance) { + int dist = 1; + double d = this.getBoundingBox().getAverageSideLength() * 1.75 + ((double) dist * 2.5D); + if (Double.isNaN(d)) { + d = 1.0; + } + + d *= 1.0; + return (distance >= d * d) && original; + } +} diff --git a/src/main/java/xyz/stachel/zombiesutils/util/Utils.java b/src/main/java/xyz/stachel/zombiesutils/util/Utils.java new file mode 100644 index 0000000..011379f --- /dev/null +++ b/src/main/java/xyz/stachel/zombiesutils/util/Utils.java @@ -0,0 +1,26 @@ +package xyz.stachel.zombiesutils.util; + +import xyz.stachel.zombiesutils.game.GameMode; +import xyz.stachel.zombiesutils.handlers.Location; + +import java.util.Optional; + +import static xyz.stachel.zombiesutils.game.GameMode.Map.*; + +public class Utils { + + public static Optional getMap() { + return switch (Location.getMode()) { + case "ZOMBIES_DEAD_END" -> Optional.of(DEAD_END); + case "ZOMBIES_BAD_BLOOD" -> Optional.of(BAD_BLOOD); + case "ZOMBIES_ALIEN_ARCADIUM" -> Optional.of(ALIEN_ARCADIUM); + case "ZOMBIES_PRISON" -> Optional.of(PRISON); + default -> Optional.empty(); + }; + } + + public static boolean isZombies() { + return Location.getMode().startsWith("ZOMBIES"); + } + +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 480c9c6..ca2e0a2 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,14 +17,11 @@ "entrypoints": { "main": [ "xyz.stachel.zombiesutils.ZombiesUtils" - ], - "client": [ - "xyz.stachel.zombiesutils.ZombiesUtilsClient" - ] + ] }, "mixins": [ { - "config": "zombies-utils.client.mixins.json", + "config": "zombies-utils.mixins.json", "environment": "client" } ], diff --git a/src/main/resources/zombies-utils.mixins.json b/src/main/resources/zombies-utils.mixins.json new file mode 100644 index 0000000..4d05fdd --- /dev/null +++ b/src/main/resources/zombies-utils.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "package": "xyz.stachel.zombiesutils.mixin", + "compatibilityLevel": "JAVA_21", + "client": [ + "ClientPlayNetworkHandlerMixin", + "OtherClientPlayerEntityMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "mixins": [] +}