Reimplement nametag distance attribute, fix attribute translation keys (#7387)

This commit is contained in:
sciwhiz12 2020-10-27 07:52:36 +08:00 committed by GitHub
parent 8a77681574
commit 22f7f4649b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 4 deletions

View File

@ -13,3 +13,12 @@
}
}
@@ -77,7 +79,7 @@
protected void func_225629_a_(T p_225629_1_, ITextComponent p_225629_2_, MatrixStack p_225629_3_, IRenderTypeBuffer p_225629_4_, int p_225629_5_) {
double d0 = this.field_76990_c.func_229099_b_(p_225629_1_);
- if (!(d0 > 4096.0D)) {
+ if (net.minecraftforge.client.ForgeHooksClient.isNameplateInRenderDistance(p_225629_1_, d0)) {
boolean flag = !p_225629_1_.func_226273_bm_();
float f = p_225629_1_.func_213302_cg() + 0.5F;
int i = "deadmau5".equals(p_225629_2_.getString()) ? -10 : 0;

View File

@ -52,6 +52,7 @@ import net.minecraft.client.resources.I18n;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState;
@ -79,6 +80,7 @@ import net.minecraftforge.client.event.*;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.animation.Animation;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.model.TransformationHelper;
import net.minecraftforge.eventbus.api.Event;
@ -757,4 +759,14 @@ public class ForgeHooksClient
}
net.minecraftforge.client.ForgeHooksClient.setRenderLayer(null);
}
public static boolean isNameplateInRenderDistance(Entity entity, double squareDistance) {
if (entity instanceof LivingEntity) {
final ModifiableAttributeInstance attribute = ((LivingEntity) entity).getAttribute(ForgeMod.NAMETAG_DISTANCE.get());
if (attribute != null) {
return !(squareDistance > (attribute.getValue() * attribute.getValue()));
}
}
return !(squareDistance > 4096.0f);
}
}

View File

@ -87,10 +87,10 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook
private static final DeferredRegister<Attribute> ATTRIBUTES = DeferredRegister.create(Attribute.class, "forge");
public static final RegistryObject<Attribute> SWIM_SPEED = ATTRIBUTES.register("swim_speed", () -> new RangedAttribute("forge.swimSpeed", 1.0D, 0.0D, 1024.0D).func_233753_a_(true));
public static final RegistryObject<Attribute> NAMETAG_DISTANCE = ATTRIBUTES.register("nametag_distance", () -> new RangedAttribute("forge.nameTagDistance", 64.0D, 0.0D, Float.MAX_VALUE).func_233753_a_(true));
public static final RegistryObject<Attribute> NAMETAG_DISTANCE = ATTRIBUTES.register("nametag_distance", () -> new RangedAttribute("forge.nameTagDistance", 64.0D, 0.0D, 64.0).func_233753_a_(true));
public static final RegistryObject<Attribute> ENTITY_GRAVITY = ATTRIBUTES.register("entity_gravity", () -> new RangedAttribute("forge.entity_gravity", 0.08D, -8.0D, 8.0D).func_233753_a_(true));
public static final RegistryObject<Attribute> REACH_DISTANCE = ATTRIBUTES.register("reach_distance", () -> new RangedAttribute( "generic.reachDistance", 5.0D, 0.0D, 1024.0D).func_233753_a_(true));
public static final RegistryObject<Attribute> REACH_DISTANCE = ATTRIBUTES.register("reach_distance", () -> new RangedAttribute("generic.reachDistance", 5.0D, 0.0D, 1024.0D).func_233753_a_(true));
private static ForgeMod INSTANCE;
public static ForgeMod getInstance()

View File

@ -162,6 +162,12 @@
"forge.controlsgui.alt": "ALT + %s",
"forge.container.enchant.limitedEnchantability": "Limited Enchantability",
"attribute.name.generic.reachDistance": "Reach Distance",
"attribute.name.forge.swimSpeed": "Swim Speed"
"attribute.name.forge.swim_speed": "Swim Speed",
"attribute.name.forge.nametag_distance": "Nametag Render Distance",
"attribute.name.forge.entity_gravity": "Entity Gravity",
"attribute.name.generic.reach_distance": "Reach Distance",
"forge.swimSpeed": "Swim Speed",
"forge.nameTagDistance": "Nametag Render Distance",
"forge.entity_gravity": "Entity Gravity",
"generic.reachDistance": "Reach Distance"
}