repo for my hex addons :3
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

superscripts

+37
+37
project/iotaworks/src/main/scala/org/eu/net/pool/iotaworks/mixin/HexPatternMixin.java
··· 1 + package org.eu.net.pool.iotaworks.mixin; 2 + 3 + import org.spongepowered.asm.mixin.Mixin; 4 + import org.spongepowered.asm.mixin.injection.Inject; 5 + import org.spongepowered.asm.mixin.injection.At; 6 + 7 + import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 8 + import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 9 + import com.llamalad7.mixinextras.sugar.Local; 10 + import com.mojang.datafixers.util.Either; 11 + import com.mojang.serialization.Codec; 12 + import com.mojang.serialization.codecs.RecordCodecBuilder; 13 + 14 + import at.petrak.hexcasting.api.casting.math.HexPattern; 15 + import net.minecraft.nbt.NbtCompound; 16 + 17 + @Mixin(HexPattern.class) 18 + public class HexPatternMixin { 19 + private int depth = 0; 20 + @WrapOperation(method = "<clinit>", at = @At(value = "FIELD", opcode = 179)) 21 + private static void wrapCodec(Codec<HexPattern> codec, Operation<Void> original) { 22 + original.call(Codec.<HexPattern, HexPattern>either(RecordCodecBuilder.create(b -> 23 + b.<HexPattern, Integer>group( 24 + codec.fieldOf("parent").forGetter(p -> p), 25 + Codec.INT.fieldOf("level").forGetter(p -> ((HexPatternMixin) (Object) p).depth) 26 + ).apply(b, (p, l) -> { 27 + ((HexPatternMixin) (Object) p).depth = l; 28 + return p; 29 + }) 30 + ), codec).xmap(e -> { 31 + HexPattern value[] = new HexPattern[1]; 32 + e.ifLeft(v -> { value[0] = v; }); 33 + e.ifRight(v -> { value[0] = v; }); 34 + return value[0]; 35 + }, Either::left)); 36 + } 37 + }