Added Player Visibility and Utils.

This commit is contained in:
LB2345 2025-05-21 06:06:25 +03:00
parent 207a43135b
commit 047dfcab72
14 changed files with 93 additions and 53 deletions

View file

@ -15,12 +15,10 @@ repositories {
}
loom {
splitEnvironmentSourceSets()
mods {
"zombies-utils" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}

View file

@ -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());
}
}

View file

@ -1,11 +0,0 @@
{
"required": true,
"package": "xyz.stachel.zombiesutils.mixin.client",
"compatibilityLevel": "JAVA_21",
"client": [
"ClientPlayNetworkHandlerMixin"
],
"injectors": {
"defaultRequire": 1
}
}

View file

@ -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());
}
}

View file

@ -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;

View file

@ -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);

View file

@ -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;
}

View file

@ -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")

View file

@ -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;
}
}

View file

@ -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<GameMode.Map> 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");
}
}

View file

@ -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"
}
],

View file

@ -0,0 +1,13 @@
{
"required": true,
"package": "xyz.stachel.zombiesutils.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"ClientPlayNetworkHandlerMixin",
"OtherClientPlayerEntityMixin"
],
"injectors": {
"defaultRequire": 1
},
"mixins": []
}