|
1 | 1 | package dev.dfonline.codeclient.mixin.render.hud; |
2 | 2 |
|
3 | | -import com.google.gson.JsonObject; |
4 | 3 | import com.google.gson.JsonParser; |
5 | 4 | import dev.dfonline.codeclient.config.Config; |
6 | 5 | import dev.dfonline.codeclient.hypercube.item.Scope; |
@@ -31,27 +30,35 @@ public abstract class MDrawContext { |
31 | 30 |
|
32 | 31 | @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;push()V", shift = At.Shift.AFTER)) |
33 | 32 | private void additionalItemRendering(TextRenderer textRenderer, ItemStack stack, int x, int y, String countOverride, CallbackInfo ci) { |
34 | | - NbtCompound nbt = stack.getNbt(); |
| 33 | + var nbt = stack.getNbt(); |
35 | 34 | if (nbt == null) return; |
36 | | - NbtCompound pbv = (NbtCompound) nbt.get("PublicBukkitValues"); |
| 35 | + var pbv = (NbtCompound) nbt.get("PublicBukkitValues"); |
37 | 36 | if (pbv == null) return; |
38 | | - NbtString varItem = (NbtString) pbv.get("hypercube:varitem"); |
| 37 | + var varItem = (NbtString) pbv.get("hypercube:varitem"); |
39 | 38 | if (varItem == null) return; |
40 | | - JsonObject var = JsonParser.parseString(varItem.asString()).getAsJsonObject(); |
41 | | - JsonObject data = var.get("data").getAsJsonObject(); |
42 | | - Text text = null; |
43 | | - switch (var.get("id").getAsString()) { |
| 39 | + var var = JsonParser.parseString(varItem.asString()).getAsJsonObject(); |
| 40 | + var anyData = var.get("data"); |
| 41 | + if (anyData == null) return; |
| 42 | + var data = anyData.getAsJsonObject(); |
| 43 | + var anyId = var.get("id"); |
| 44 | + if (anyId == null) return; |
| 45 | + Text text; |
| 46 | + switch (anyId.getAsString()) { |
44 | 47 | case "var": { |
45 | 48 | try { |
46 | | - Scope scope = Scope.valueOf(data.get("scope").getAsString()); |
| 49 | + var anyScope = data.get("scope"); |
| 50 | + if (anyScope == null) return; |
| 51 | + var scope = Scope.valueOf(anyScope.getAsString()); |
47 | 52 | text = Text.literal((Config.getConfig().UseIForLineScope && scope == Scope.line) ? "I" : scope.shortName).setStyle(Style.EMPTY.withColor(scope.color)); |
48 | 53 | } catch (Exception ignored) { |
49 | 54 | text = Text.literal("?").formatted(Formatting.DARK_RED); |
50 | 55 | } |
51 | 56 | break; |
52 | 57 | } |
53 | 58 | case "num": { |
54 | | - String name = data.get("name").getAsString(); |
| 59 | + var anyName = data.get("name"); |
| 60 | + if (anyName == null) return; |
| 61 | + var name = anyName.getAsString(); |
55 | 62 | if (textRenderer.getWidth(Text.of(name)) > 16) { |
56 | 63 | var avail = textRenderer.trimToWidth(name, 16 - 2); |
57 | 64 | text = Text.literal(avail).formatted(Formatting.RED).append(Text.literal(".".repeat((16 - textRenderer.getWidth(Text.of(avail))) / 2)).formatted(Formatting.WHITE)); |
|
0 commit comments