Skip to content

Commit 7648360

Browse files
committed
fix crash if data is missing from the json in hypercube:varitem
1 parent 65e1bdb commit 7648360

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

src/main/java/dev/dfonline/codeclient/mixin/render/hud/MDrawContext.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.dfonline.codeclient.mixin.render.hud;
22

3-
import com.google.gson.JsonObject;
43
import com.google.gson.JsonParser;
54
import dev.dfonline.codeclient.config.Config;
65
import dev.dfonline.codeclient.hypercube.item.Scope;
@@ -31,27 +30,35 @@ public abstract class MDrawContext {
3130

3231
@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))
3332
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();
3534
if (nbt == null) return;
36-
NbtCompound pbv = (NbtCompound) nbt.get("PublicBukkitValues");
35+
var pbv = (NbtCompound) nbt.get("PublicBukkitValues");
3736
if (pbv == null) return;
38-
NbtString varItem = (NbtString) pbv.get("hypercube:varitem");
37+
var varItem = (NbtString) pbv.get("hypercube:varitem");
3938
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()) {
4447
case "var": {
4548
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());
4752
text = Text.literal((Config.getConfig().UseIForLineScope && scope == Scope.line) ? "I" : scope.shortName).setStyle(Style.EMPTY.withColor(scope.color));
4853
} catch (Exception ignored) {
4954
text = Text.literal("?").formatted(Formatting.DARK_RED);
5055
}
5156
break;
5257
}
5358
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();
5562
if (textRenderer.getWidth(Text.of(name)) > 16) {
5663
var avail = textRenderer.trimToWidth(name, 16 - 2);
5764
text = Text.literal(avail).formatted(Formatting.RED).append(Text.literal(".".repeat((16 - textRenderer.getWidth(Text.of(avail))) / 2)).formatted(Formatting.WHITE));

0 commit comments

Comments
 (0)