|
1 | 1 | package net.errorcraft.codecium.mixin.mojang.serialization;
|
2 | 2 |
|
3 |
| -import com.mojang.serialization.Codec; |
4 |
| -import com.mojang.serialization.DataResult; |
| 3 | +import com.mojang.serialization.*; |
| 4 | +import net.errorcraft.codecium.serialization.FieldMapCodec; |
5 | 5 | import net.errorcraft.codecium.util.codec.NumberUtil;
|
6 | 6 | import org.spongepowered.asm.mixin.Mixin;
|
7 | 7 | import org.spongepowered.asm.mixin.Overwrite;
|
8 | 8 | import org.spongepowered.asm.mixin.injection.At;
|
9 | 9 | import org.spongepowered.asm.mixin.injection.Redirect;
|
10 | 10 |
|
11 | 11 | import java.util.function.Function;
|
| 12 | +import java.util.function.Supplier; |
12 | 13 |
|
13 | 14 | @Mixin(value = Codec.class, remap = false)
|
14 |
| -public interface CodecExtender { |
| 15 | +public interface CodecExtender<A> { |
15 | 16 | @Redirect(
|
16 | 17 | method = "intRange",
|
17 | 18 | at = @At(
|
@@ -62,4 +63,15 @@ static Codec<String> string(final int minSize, final int maxSize) {
|
62 | 63 | return DataResult.success(value);
|
63 | 64 | });
|
64 | 65 | }
|
| 66 | + |
| 67 | + @Redirect( |
| 68 | + method = "fieldOf(Ljava/lang/String;)Lcom/mojang/serialization/MapCodec;", |
| 69 | + at = @At( |
| 70 | + value = "INVOKE", |
| 71 | + target = "Lcom/mojang/serialization/MapCodec;of(Lcom/mojang/serialization/MapEncoder;Lcom/mojang/serialization/MapDecoder;Ljava/util/function/Supplier;)Lcom/mojang/serialization/MapCodec;" |
| 72 | + ) |
| 73 | + ) |
| 74 | + private MapCodec<A> createFieldCodecPassName(MapEncoder<A> encoder, MapDecoder<A> decoder, Supplier<String> nameSupplier, final String name) { |
| 75 | + return new FieldMapCodec<>(name, encoder, decoder, nameSupplier); |
| 76 | + } |
65 | 77 | }
|
0 commit comments