Skip to content

Commit f3b3057

Browse files
committed
Replace some error messages in ops
1 parent 57e381d commit f3b3057

5 files changed

Lines changed: 132 additions & 0 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package net.errorcraft.codecium.mixin.minecraft.nbt;
2+
3+
import com.llamalad7.mixinextras.sugar.Local;
4+
import net.minecraft.nbt.NbtElement;
5+
import net.minecraft.nbt.NbtOps;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.ModifyArg;
9+
10+
import java.util.function.Supplier;
11+
12+
@Mixin(NbtOps.class)
13+
public class NbtOpsExtender {
14+
@ModifyArg(
15+
method = "getNumberValue(Lnet/minecraft/nbt/NbtElement;)Lcom/mojang/serialization/DataResult;",
16+
at = @At(
17+
value = "INVOKE",
18+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
19+
),
20+
remap = false
21+
)
22+
private Supplier<String> notANumberUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final NbtElement input) {
23+
return () -> "Not a number: " + input;
24+
}
25+
26+
@ModifyArg(
27+
method = "getStringValue(Lnet/minecraft/nbt/NbtElement;)Lcom/mojang/serialization/DataResult;",
28+
at = @At(
29+
value = "INVOKE",
30+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
31+
),
32+
remap = false
33+
)
34+
private Supplier<String> notAStringUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final NbtElement input) {
35+
return () -> "Not a string: " + input;
36+
}
37+
38+
@ModifyArg(
39+
method = "getStream(Lnet/minecraft/nbt/NbtElement;)Lcom/mojang/serialization/DataResult;",
40+
at = @At(
41+
value = "INVOKE",
42+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
43+
),
44+
remap = false
45+
)
46+
private Supplier<String> notAListUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final NbtElement input) {
47+
return () -> "Not a list: " + input;
48+
}
49+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.errorcraft.codecium.mixin.mojang.serialization;
2+
3+
import com.llamalad7.mixinextras.sugar.Local;
4+
import com.mojang.serialization.JavaOps;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.ModifyArg;
8+
9+
import java.util.function.Supplier;
10+
11+
@Mixin(value = JavaOps.class, remap = false)
12+
public class JavaOpsExtender {
13+
@ModifyArg(
14+
method = { "getStream", "getList", "getByteBuffer", "getIntStream", "getLongStream" },
15+
at = @At(
16+
value = "INVOKE",
17+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
18+
)
19+
)
20+
private Supplier<String> notAListUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final Object input) {
21+
return () -> "Not a list: " + input;
22+
}
23+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package net.errorcraft.codecium.mixin.mojang.serialization;
2+
3+
import com.google.gson.JsonElement;
4+
import com.llamalad7.mixinextras.sugar.Local;
5+
import com.mojang.serialization.JsonOps;
6+
import net.errorcraft.codecium.util.codec.ExceptionUtil;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.ModifyArg;
10+
11+
import java.util.function.Supplier;
12+
13+
@Mixin(value = JsonOps.class, remap = false)
14+
public class JsonOpsExtender {
15+
@ModifyArg(
16+
method = "getNumberValue(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;",
17+
at = @At(
18+
value = "INVOKE",
19+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;",
20+
ordinal = 0
21+
)
22+
)
23+
private Supplier<String> notANumberWithExceptionUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final JsonElement input, @Local final NumberFormatException e) {
24+
return () -> ExceptionUtil.errorMessage(e, input);
25+
}
26+
27+
@ModifyArg(
28+
method = { "getMapValues(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;", "getMapEntries(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;", "getMap(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;" },
29+
at = @At(
30+
value = "INVOKE",
31+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
32+
)
33+
)
34+
private Supplier<String> notAMapUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final JsonElement input) {
35+
return () -> "Not a map: " + input;
36+
}
37+
38+
@ModifyArg(
39+
method = { "getStream(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;", "getList(Lcom/google/gson/JsonElement;)Lcom/mojang/serialization/DataResult;" },
40+
at = @At(
41+
value = "INVOKE",
42+
target = "Lcom/mojang/serialization/DataResult;error(Ljava/util/function/Supplier;)Lcom/mojang/serialization/DataResult;"
43+
)
44+
)
45+
private Supplier<String> notAListUseBetterErrorMessage(Supplier<String> message, @Local(argsOnly = true) final JsonElement input) {
46+
return () -> "Not a list: " + input;
47+
}
48+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package net.errorcraft.codecium.util.codec;
2+
3+
public class ExceptionUtil {
4+
private ExceptionUtil() {}
5+
6+
public static <T> String errorMessage(Throwable throwable, T input) {
7+
return throwable.getMessage() + "\n Element: " + input;
8+
}
9+
}

src/main/resources/codecium.mixins.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
"package": "net.errorcraft.codecium.mixin",
44
"compatibilityLevel": "JAVA_21",
55
"mixins": [
6+
"minecraft.nbt.NbtOpsExtender",
67
"mojang.serialization.CodecExtender",
8+
"mojang.serialization.JavaOpsExtender",
9+
"mojang.serialization.JsonOpsExtender",
710
"mojang.serialization.codecs.EitherCodecExtender"
811
],
912
"injectors": {

0 commit comments

Comments
 (0)