Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions fabric/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx1G

# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.1
loader_version=0.16.0
minecraft_version=1.21.4
loader_version=0.16.14

# Mod Properties
mod_version = 1.21-f1.0.2
mod_version = 1.21.4-f1.0.2
maven_group = github.pitbox46
archives_base_name = HiddenNames

# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.102.1+1.21.1
fcapi_version=21.1.0
modmenu_version=11.0.1
fabric_version=0.119.2+1.21.4
fcapi_version=21.4.1
modmenu_version=13.0.3
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,16 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(LivingEntityRenderer.class)
public class LivingEntityRendererMixin {
@Inject(method = "shouldShowName(Lnet/minecraft/world/entity/LivingEntity;)Z", at = @At(value = "RETURN", ordinal = 6), cancellable = true)
private void shouldShowName(LivingEntity livingEntity, CallbackInfoReturnable<Boolean> cir) {
public abstract class LivingEntityRendererMixin {
@Inject(method = "shouldShowName(Lnet/minecraft/world/entity/LivingEntity;D)Z", at = @At(value = "RETURN", ordinal = 6), cancellable = true)
private void shouldShowName(LivingEntity livingEntity, double d, CallbackInfoReturnable<Boolean> cir) {
Minecraft minecraft = Minecraft.getInstance();
LocalPlayer localPlayer = minecraft.player;
boolean bl = !livingEntity.isInvisibleTo(localPlayer);
cir.setReturnValue(
Minecraft.renderNames() &&
(livingEntity != minecraft.getCameraEntity() || Config.SHOW_OWN.get()) &&
bl &&
!livingEntity.isVehicle()
Minecraft.renderNames()
&& (livingEntity != minecraft.getCameraEntity() || Config.SHOW_OWN.get())
&& !livingEntity.isInvisibleTo(localPlayer)
&& !livingEntity.isVehicle()
);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package github.pitbox46.hiddennames.client.mixin;

import com.mojang.blaze3d.vertex.PoseStack;
import github.pitbox46.hiddennames.Config;
import github.pitbox46.hiddennames.HiddenNames;
import github.pitbox46.hiddennames.client.ClientPayloadHandler;
Expand All @@ -9,60 +8,64 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.Entity;
import net.minecraft.client.renderer.entity.state.PlayerRenderState;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.scores.Team;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(PlayerRenderer.class)
public abstract class PlayerRendererMixin extends LivingEntityRenderer<AbstractClientPlayer, PlayerModel<AbstractClientPlayer>> {
public PlayerRendererMixin(EntityRendererProvider.Context context, PlayerModel<AbstractClientPlayer> entityModel, float f) {
public abstract class PlayerRendererMixin extends LivingEntityRenderer<AbstractClientPlayer, PlayerRenderState, PlayerModel> {
public PlayerRendererMixin(EntityRendererProvider.Context context, PlayerModel entityModel, float f) {
super(context, entityModel, f);
}

@Redirect(
method = "renderNameTag(Lnet/minecraft/client/player/AbstractClientPlayer;Lnet/minecraft/network/chat/Component;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IF)V",
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/LivingEntityRenderer;renderNameTag(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/network/chat/Component;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IF)V", ordinal = 1)
)
private void renderNameTag(LivingEntityRenderer instance, Entity entity, Component component, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, float partialTick) {
Player localPlayer = Minecraft.getInstance().player;

if (entity instanceof AbstractClientPlayer player) {
NameData nameData = NameData.DATA.get(player.getUUID());
@Inject(method = "extractRenderState",
at = @At("TAIL"))
public void extractRenderState(AbstractClientPlayer player, PlayerRenderState playerRenderState, float partialTick, CallbackInfo info) {
var nameData = NameData.DATA.get(player.getUUID());
if (nameData == null || (!Config.RENDER_ANIMATIONS.get() && !nameData.getAnimation().isHidden())) {
return;
}

if (nameData==null || (!Config.RENDER_ANIMATIONS.get() && !nameData.getAnimation().isHidden())) {
super.renderNameTag((AbstractClientPlayer) entity, component, poseStack, multiBufferSource, i, partialTick);
return;
}
if (!nameData.getAnimation().isHidden() && ClientPayloadHandler.doBlocksHide()) {
Vec3 vector3d = localPlayer.getEyePosition(partialTick);
Vec3 vector3d1 = entity.getEyePosition(partialTick);
if (localPlayer.level().clip(new ClipContext(vector3d, vector3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, localPlayer)).getType()!=HitResult.Type.MISS) {
return;
}
Player localPlayer = Minecraft.getInstance().player;
if (localPlayer != null && !nameData.getAnimation().isHidden() && ClientPayloadHandler.doBlocksHide()) {
Vec3 vector3d = localPlayer.getEyePosition(partialTick);
Vec3 vector3d1 = player.getEyePosition(partialTick);
if (localPlayer.level().clip(new ClipContext(vector3d, vector3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, localPlayer)).getType() != HitResult.Type.MISS) {
hideNameTag(playerRenderState);
}
}
Team team = player.getTeam();

Team team = player.getTeam();
Animation.Return returnData = nameData.getAnimation()
.renderer()
.apply(new Animation.Input(
player,
playerRenderState.nameTag,
HiddenNames.getCorrectedName(nameData.getDisplayName(), team),
Minecraft.getInstance().level.getGameTime() + player.getId() * 21L
));

Animation.Return returnData = nameData.getAnimation().renderer().apply(new Animation.Input(
player,
component,
HiddenNames.getCorrectedName(NameData.DATA.get(player.getUUID()).getDisplayName(), team),
Minecraft.getInstance().level.getGameTime() + player.getId() * 21L
));
if (returnData.show()) {
super.renderNameTag(player, HiddenNames.getFullNameplate(returnData.name(), team), poseStack, multiBufferSource, i, partialTick);
}
if (returnData.show()) {
playerRenderState.nameTag = HiddenNames.getFullNameplate(returnData.name(), team);
} else {
hideNameTag(playerRenderState);
}
}

@Unique
private void hideNameTag(PlayerRenderState playerRenderState) {
playerRenderState.nameTag = null;
playerRenderState.nameTagAttachment = null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public Animation parse(StringReader reader) throws CommandSyntaxException {
if (!HiddenNames.ANIMATION_REGISTRY.keySet().contains(key)) {
throw INVALID_ANIMATION.create(key, HiddenNames.ANIMATION_REGISTRY.keySet().stream().map(ResourceLocation::toString).toList());
}
return HiddenNames.ANIMATION_REGISTRY.get(key);
return HiddenNames.ANIMATION_REGISTRY.getValue(key);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextColor;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.FastColor;
import net.minecraft.util.ARGB;
import net.minecraft.util.Mth;
import org.apache.commons.lang3.RandomStringUtils;

Expand Down Expand Up @@ -41,17 +41,17 @@ public static void init() {}
color = TextColor.fromLegacyFormat(ChatFormatting.WHITE);
}
int primaryColor = color.getValue();
int red = FastColor.ARGB32.red(primaryColor);
int green = FastColor.ARGB32.green(primaryColor);
int blue = FastColor.ARGB32.blue(primaryColor);
int red = ARGB.red(primaryColor);
int green = ARGB.green(primaryColor);
int blue = ARGB.blue(primaryColor);

double sin = Math.sin((input.tick() % 360) * 2 * Math.PI / cycle);
double newRed = red + (amp * sin);
double newGreen = green + (amp * sin);
double newBlue = blue + (amp * sin);

MutableComponent newName = displayName.copy();
newName.setStyle(displayName.getStyle().withColor(TextColor.fromRgb(FastColor.ARGB32.color(255, roundToByte(newRed), roundToByte(newGreen), roundToByte(newBlue)))));
newName.setStyle(displayName.getStyle().withColor(TextColor.fromRgb(ARGB.color(255, roundToByte(newRed), roundToByte(newGreen), roundToByte(newBlue)))));

return new Animation.Return(newName, true);
}
Expand Down Expand Up @@ -121,10 +121,10 @@ private static int roundToByte(double number) {
private static TextColor blendColors(TextColor primary, TextColor secondary, float percent) {
if (percent > 1) percent = 1;
if (percent < 0) percent = 0;
int red = (int) (FastColor.ARGB32.red(primary.getValue()) * percent + FastColor.ARGB32.red(secondary.getValue()) * (1 - percent));
int green = (int) (FastColor.ARGB32.green(primary.getValue()) * percent + FastColor.ARGB32.green(secondary.getValue()) * (1 - percent));
int blue = (int) (FastColor.ARGB32.blue(primary.getValue()) * percent + FastColor.ARGB32.blue(secondary.getValue()) * (1 - percent));
int red = (int) (ARGB.red(primary.getValue()) * percent + ARGB.red(secondary.getValue()) * (1 - percent));
int green = (int) (ARGB.green(primary.getValue()) * percent + ARGB.green(secondary.getValue()) * (1 - percent));
int blue = (int) (ARGB.blue(primary.getValue()) * percent + ARGB.blue(secondary.getValue()) * (1 - percent));

return TextColor.fromRgb(FastColor.ARGB32.color(255, red, green, blue));
return TextColor.fromRgb(ARGB.color(255, red, green, blue));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public JsonObject serialize(JsonObject json) {
public static NameData deserialize(JsonObject json) {
UUID uuid = UUID.fromString(json.getAsJsonPrimitive("uuid").getAsString());
Component component = COMPONENT_SERIALIZER.deserialize(json.get("displayName"), Component.class, null);
Animation animation = HiddenNames.ANIMATION_REGISTRY.get(ResourceLocation.parse(json.getAsJsonPrimitive("animation").getAsString()));
Animation animation = HiddenNames.ANIMATION_REGISTRY.getValue(ResourceLocation.parse(json.getAsJsonPrimitive("animation").getAsString()));
return new NameData(uuid, component, animation);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.NotNull;

public record NameDataSyncPacket(NameData data) implements CustomPacketPayload {
public static final Type<NameDataSyncPacket> TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(HiddenNames.MODID, "name_data_sync"));
Expand All @@ -18,7 +19,7 @@ public record NameDataSyncPacket(NameData data) implements CustomPacketPayload {
packet -> packet.data().getDisplayName(),
ResourceLocation.STREAM_CODEC,
packet -> packet.data().getAnimation().key(),
(uuid, component, key) -> new NameDataSyncPacket(new NameData(uuid, component, HiddenNames.ANIMATION_REGISTRY.get(key)))
(uuid, component, key) -> new NameDataSyncPacket(new NameData(uuid, component, HiddenNames.ANIMATION_REGISTRY.getValue(key)))
);

@Override
Expand Down