fix label text to work with 1.16

This commit is contained in:
gnembon committed 2020-07-18 14:16:53 -03:00
1 parent eb79ea98e7
commit e38fb896c2
2 files changed
+32 -20

No files matched your search

@@ -30,6 +30,8 @@ import net.minecraft.nbt.Tag;
import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleEffect;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
@@ -37,9 +39,7 @@ import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.dimension.DimensionType;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList; import java.util.ArrayList;
@@ -48,7 +48,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -236,7 +235,7 @@ public class ShapeDispatcher
put("box", creator(Box::new)); put("box", creator(Box::new));
put("sphere", creator(Sphere::new)); put("sphere", creator(Sphere::new));
put("cylinder", creator(Cylinder::new)); put("cylinder", creator(Cylinder::new));
put("label", creator(Text::new)); put("label", creator(DisplayedText::new));
}}; }};
private static Function<Map<String, Value>,ExpiringShape> creator(Supplier<ExpiringShape> shapeFactory) private static Function<Map<String, Value>,ExpiringShape> creator(Supplier<ExpiringShape> shapeFactory)
{ {
@@ -393,7 +392,7 @@ public class ShapeDispatcher
} }
} }
public static class Text extends ExpiringShape public static class DisplayedText extends ExpiringShape
{ {
private final Set<String> required = ImmutableSet.of("pos", "text"); private final Set<String> required = ImmutableSet.of("pos", "text");
private final Map<String, Value> optional = ImmutableMap.<String, Value>builder(). private final Map<String, Value> optional = ImmutableMap.<String, Value>builder().
@@ -410,7 +409,7 @@ public class ShapeDispatcher
protected Set<String> requiredParams() { return Sets.union(super.requiredParams(), required); } protected Set<String> requiredParams() { return Sets.union(super.requiredParams(), required); }
@Override @Override
protected Set<String> optionalParams() { return Sets.union(super.optionalParams(), optional.keySet()); } protected Set<String> optionalParams() { return Sets.union(super.optionalParams(), optional.keySet()); }
public Text() { } public DisplayedText() { }
Vec3d pos; Vec3d pos;
String text; String text;
@@ -424,18 +423,18 @@ public class ShapeDispatcher
float indent; float indent;
int align; int align;
float height; float height;
String value; Text value;
@Override @Override
protected void init(Map<String, Value> options) protected void init(Map<String, Value> options)
{ {
super.init(options); super.init(options);
pos = vecFromValue(options.get("pos")); pos = vecFromValue(options.get("pos"));
text = options.get("text").getString(); value = ((FormattedTextValue)options.get("text")).getText();
value = text; text = value.getString();
if (options.containsKey("value")) if (options.containsKey("value"))
{ {
value = options.get("value").getString(); value = ((FormattedTextValue)options.get("value")).getText();
} }
textcolor = rgba2argb(color); textcolor = rgba2argb(color);
textbck = rgba2argb(fillColor); textbck = rgba2argb(fillColor);
@@ -887,10 +886,24 @@ public class ShapeDispatcher
@Override @Override
public Value validate(Map<String, Value> options, CarpetContext cc, Value value) public Value validate(Map<String, Value> options, CarpetContext cc, Value value)
{ {
if (value instanceof FormattedTextValue) if (!(value instanceof FormattedTextValue))
return new StringValue(((FormattedTextValue) value).getText().asFormattedString()); value = new FormattedTextValue(new LiteralText(value.getString()));
return value; return value;
} }
@Override
public Tag toTag(Value value)
{
if (!(value instanceof FormattedTextValue))
value = new FormattedTextValue(new LiteralText(value.getString()));
return StringTag.of(((FormattedTextValue)value).serialize());
}
@Override
public Value decode(Tag tag)
{
return FormattedTextValue.deserialize(tag.asString());
}
} }
@@ -9,15 +9,14 @@ import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.Camera; import net.minecraft.client.render.Camera;
import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.AffineTransformation;
import net.minecraft.client.world.ClientWorld; import net.minecraft.client.world.ClientWorld;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.VertexFormats; import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.util.math.Matrix4f;
import net.minecraft.client.util.math.Rotation3;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -192,12 +191,12 @@ public class ShapesRenderer
} }
} }
public static class RenderedText extends RenderedShape<ShapeDispatcher.Text> public static class RenderedText extends RenderedShape<ShapeDispatcher.DisplayedText>
{ {
protected RenderedText(MinecraftClient client, ShapeDispatcher.ExpiringShape shape) protected RenderedText(MinecraftClient client, ShapeDispatcher.ExpiringShape shape)
{ {
super(client, (ShapeDispatcher.Text)shape); super(client, (ShapeDispatcher.DisplayedText)shape);
} }
@Override @Override
@@ -253,14 +252,14 @@ public class ShapesRenderer
float text_x = 0; float text_x = 0;
if (shape.align == 0) if (shape.align == 0)
{ {
text_x = (float)(-textRenderer.getStringWidth(shape.value)) / 2.0F; text_x = (float)(-textRenderer.getWidth(shape.value.getString())) / 2.0F;
} }
else if (shape.align == 1) else if (shape.align == 1)
{ {
text_x = (float)(-textRenderer.getStringWidth(shape.value)); text_x = (float)(-textRenderer.getWidth(shape.value.getString()));
} }
VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer()); VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer());
textRenderer.draw(shape.value, text_x, 0.0F, shape.textcolor, false, Rotation3.identity().getMatrix(), immediate, false, shape.textbck, 15728880); textRenderer.draw(shape.value, text_x, 0.0F, shape.textcolor, false, AffineTransformation.identity().getMatrix(), immediate, false, shape.textbck, 15728880);
immediate.draw(); immediate.draw();
RenderSystem.popMatrix(); RenderSystem.popMatrix();
} }