package net.minecraft.network.codec; import com.google.common.base.Suppliers; import com.mojang.datafixers.util.Function3; import com.mojang.datafixers.util.Function4; import com.mojang.datafixers.util.Function5; import com.mojang.datafixers.util.Function6; import com.mojang.datafixers.util.Function7; import com.mojang.datafixers.util.Function8; import com.mojang.datafixers.util.Function9; import io.netty.buffer.ByteBuf; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; import java.util.function.UnaryOperator; public interface StreamCodec extends StreamDecoder, StreamEncoder { static StreamCodec of(final StreamEncoder p_328457_, final StreamDecoder p_332601_) { return new StreamCodec() { @Override public V decode(B p_335513_) { return p_332601_.decode(p_335513_); } @Override public void encode(B p_333998_, V p_335122_) { p_328457_.encode(p_333998_, p_335122_); } }; } static StreamCodec ofMember(final StreamMemberEncoder p_330640_, final StreamDecoder p_327818_) { return new StreamCodec() { @Override public V decode(B p_331033_) { return p_327818_.decode(p_331033_); } @Override public void encode(B p_329484_, V p_332289_) { p_330640_.encode(p_332289_, p_329484_); } }; } static StreamCodec unit(final V p_336240_) { return new StreamCodec() { @Override public V decode(B p_328164_) { return p_336240_; } @Override public void encode(B p_336022_, V p_333291_) { if (!p_333291_.equals(p_336240_)) { throw new IllegalStateException("Can't encode '" + p_333291_ + "', expected '" + p_336240_ + "'"); } } }; } default StreamCodec apply(StreamCodec.CodecOperation p_335614_) { return p_335614_.apply(this); } default StreamCodec map(final Function p_327720_, final Function p_330478_) { return new StreamCodec() { @Override public O decode(B p_328614_) { return (O)p_327720_.apply(StreamCodec.this.decode(p_328614_)); } @Override public void encode(B p_336327_, O p_331146_) { StreamCodec.this.encode(p_336327_, (V)p_330478_.apply(p_331146_)); } }; } default StreamCodec mapStream(final Function p_332075_) { return new StreamCodec() { public V decode(O p_331759_) { B b = (B)p_332075_.apply(p_331759_); return StreamCodec.this.decode(b); } public void encode(O p_334335_, V p_336271_) { B b = (B)p_332075_.apply(p_334335_); StreamCodec.this.encode(b, p_336271_); } }; } default StreamCodec dispatch( final Function p_333836_, final Function> p_335469_ ) { return new StreamCodec() { @Override public U decode(B p_333769_) { V v = StreamCodec.this.decode(p_333769_); StreamCodec streamcodec = (StreamCodec)p_335469_.apply(v); return (U)streamcodec.decode(p_333769_); } @Override public void encode(B p_331493_, U p_333683_) { V v = (V)p_333836_.apply(p_333683_); StreamCodec streamcodec = (StreamCodec)p_335469_.apply(v); StreamCodec.this.encode(p_331493_, v); streamcodec.encode(p_331493_, p_333683_); } }; } static StreamCodec composite(final StreamCodec p_332516_, final Function p_335276_, final Function p_330982_) { return new StreamCodec() { @Override public C decode(B p_331843_) { T1 t1 = p_332516_.decode(p_331843_); return p_330982_.apply(t1); } @Override public void encode(B p_330937_, C p_333579_) { p_332516_.encode(p_330937_, p_335276_.apply(p_333579_)); } }; } static StreamCodec composite( final StreamCodec p_329724_, final Function p_329438_, final StreamCodec p_328233_, final Function p_328617_, final BiFunction p_334409_ ) { return new StreamCodec() { @Override public C decode(B p_331897_) { T1 t1 = p_329724_.decode(p_331897_); T2 t2 = p_328233_.decode(p_331897_); return p_334409_.apply(t1, t2); } @Override public void encode(B p_334266_, C p_331042_) { p_329724_.encode(p_334266_, p_329438_.apply(p_331042_)); p_328233_.encode(p_334266_, p_328617_.apply(p_331042_)); } }; } static StreamCodec composite( final StreamCodec p_329473_, final Function p_334404_, final StreamCodec p_327967_, final Function p_330724_, final StreamCodec p_328162_, final Function p_333383_, final Function3 p_334421_ ) { return new StreamCodec() { @Override public C decode(B p_331065_) { T1 t1 = p_329473_.decode(p_331065_); T2 t2 = p_327967_.decode(p_331065_); T3 t3 = p_328162_.decode(p_331065_); return p_334421_.apply(t1, t2, t3); } @Override public void encode(B p_333137_, C p_328354_) { p_329473_.encode(p_333137_, p_334404_.apply(p_328354_)); p_327967_.encode(p_333137_, p_330724_.apply(p_328354_)); p_328162_.encode(p_333137_, p_333383_.apply(p_328354_)); } }; } static StreamCodec composite( final StreamCodec p_331397_, final Function p_331210_, final StreamCodec p_332449_, final Function p_329970_, final StreamCodec p_328015_, final Function p_333423_, final StreamCodec p_332358_, final Function p_331597_, final Function4 p_332476_ ) { return new StreamCodec() { @Override public C decode(B p_334517_) { T1 t1 = p_331397_.decode(p_334517_); T2 t2 = p_332449_.decode(p_334517_); T3 t3 = p_328015_.decode(p_334517_); T4 t4 = p_332358_.decode(p_334517_); return p_332476_.apply(t1, t2, t3, t4); } @Override public void encode(B p_336185_, C p_330170_) { p_331397_.encode(p_336185_, p_331210_.apply(p_330170_)); p_332449_.encode(p_336185_, p_329970_.apply(p_330170_)); p_328015_.encode(p_336185_, p_333423_.apply(p_330170_)); p_332358_.encode(p_336185_, p_331597_.apply(p_330170_)); } }; } static StreamCodec composite( final StreamCodec p_332680_, final Function p_336312_, final StreamCodec p_328131_, final Function p_332283_, final StreamCodec p_330440_, final Function p_333147_, final StreamCodec p_329904_, final Function p_330832_, final StreamCodec p_335857_, final Function p_333237_, final Function5 p_328623_ ) { return new StreamCodec() { @Override public C decode(B p_328956_) { T1 t1 = p_332680_.decode(p_328956_); T2 t2 = p_328131_.decode(p_328956_); T3 t3 = p_330440_.decode(p_328956_); T4 t4 = p_329904_.decode(p_328956_); T5 t5 = p_335857_.decode(p_328956_); return p_328623_.apply(t1, t2, t3, t4, t5); } @Override public void encode(B p_328899_, C p_328944_) { p_332680_.encode(p_328899_, p_336312_.apply(p_328944_)); p_328131_.encode(p_328899_, p_332283_.apply(p_328944_)); p_330440_.encode(p_328899_, p_333147_.apply(p_328944_)); p_329904_.encode(p_328899_, p_330832_.apply(p_328944_)); p_335857_.encode(p_328899_, p_333237_.apply(p_328944_)); } }; } static StreamCodec composite( final StreamCodec p_333401_, final Function p_329450_, final StreamCodec p_330884_, final Function p_328085_, final StreamCodec p_332808_, final Function p_327867_, final StreamCodec p_335472_, final Function p_328511_, final StreamCodec p_333318_, final Function p_330123_, final StreamCodec p_332458_, final Function p_328086_, final Function6 p_329947_ ) { return new StreamCodec() { @Override public C decode(B p_330564_) { T1 t1 = p_333401_.decode(p_330564_); T2 t2 = p_330884_.decode(p_330564_); T3 t3 = p_332808_.decode(p_330564_); T4 t4 = p_335472_.decode(p_330564_); T5 t5 = p_333318_.decode(p_330564_); T6 t6 = p_332458_.decode(p_330564_); return p_329947_.apply(t1, t2, t3, t4, t5, t6); } @Override public void encode(B p_328016_, C p_331911_) { p_333401_.encode(p_328016_, p_329450_.apply(p_331911_)); p_330884_.encode(p_328016_, p_328085_.apply(p_331911_)); p_332808_.encode(p_328016_, p_327867_.apply(p_331911_)); p_335472_.encode(p_328016_, p_328511_.apply(p_331911_)); p_333318_.encode(p_328016_, p_330123_.apply(p_331911_)); p_332458_.encode(p_328016_, p_328086_.apply(p_331911_)); } }; } static StreamCodec composite( final StreamCodec p_362813_, final Function p_366161_, final StreamCodec p_363894_, final Function p_362001_, final StreamCodec p_363671_, final Function p_367051_, final StreamCodec p_366641_, final Function p_367961_, final StreamCodec p_369011_, final Function p_368271_, final StreamCodec p_364705_, final Function p_363391_, final StreamCodec p_369569_, final Function p_365688_, final Function7 p_370204_ ) { return new StreamCodec() { @Override public C decode(B p_330854_) { T1 t1 = p_362813_.decode(p_330854_); T2 t2 = p_363894_.decode(p_330854_); T3 t3 = p_363671_.decode(p_330854_); T4 t4 = p_366641_.decode(p_330854_); T5 t5 = p_369011_.decode(p_330854_); T6 t6 = p_364705_.decode(p_330854_); T7 t7 = p_369569_.decode(p_330854_); return p_370204_.apply(t1, t2, t3, t4, t5, t6, t7); } @Override public void encode(B p_332524_, C p_336367_) { p_362813_.encode(p_332524_, p_366161_.apply(p_336367_)); p_363894_.encode(p_332524_, p_362001_.apply(p_336367_)); p_363671_.encode(p_332524_, p_367051_.apply(p_336367_)); p_366641_.encode(p_332524_, p_367961_.apply(p_336367_)); p_369011_.encode(p_332524_, p_368271_.apply(p_336367_)); p_364705_.encode(p_332524_, p_363391_.apply(p_336367_)); p_369569_.encode(p_332524_, p_365688_.apply(p_336367_)); } }; } static StreamCodec composite( final StreamCodec p_367373_, final Function p_369557_, final StreamCodec p_368011_, final Function p_363664_, final StreamCodec p_367205_, final Function p_364055_, final StreamCodec p_361203_, final Function p_365006_, final StreamCodec p_362409_, final Function p_367771_, final StreamCodec p_362282_, final Function p_365852_, final StreamCodec p_361750_, final Function p_368272_, final StreamCodec p_367402_, final Function p_369297_, final Function8 p_365425_ ) { return new StreamCodec() { @Override public C decode(B p_362416_) { T1 t1 = p_367373_.decode(p_362416_); T2 t2 = p_368011_.decode(p_362416_); T3 t3 = p_367205_.decode(p_362416_); T4 t4 = p_361203_.decode(p_362416_); T5 t5 = p_362409_.decode(p_362416_); T6 t6 = p_362282_.decode(p_362416_); T7 t7 = p_361750_.decode(p_362416_); T8 t8 = p_367402_.decode(p_362416_); return p_365425_.apply(t1, t2, t3, t4, t5, t6, t7, t8); } @Override public void encode(B p_366041_, C p_365657_) { p_367373_.encode(p_366041_, p_369557_.apply(p_365657_)); p_368011_.encode(p_366041_, p_363664_.apply(p_365657_)); p_367205_.encode(p_366041_, p_364055_.apply(p_365657_)); p_361203_.encode(p_366041_, p_365006_.apply(p_365657_)); p_362409_.encode(p_366041_, p_367771_.apply(p_365657_)); p_362282_.encode(p_366041_, p_365852_.apply(p_365657_)); p_361750_.encode(p_366041_, p_368272_.apply(p_365657_)); p_367402_.encode(p_366041_, p_369297_.apply(p_365657_)); } }; } static StreamCodec composite( final StreamCodec p_396599_, final Function p_394059_, final StreamCodec p_391853_, final Function p_397231_, final StreamCodec p_397084_, final Function p_396685_, final StreamCodec p_396284_, final Function p_396853_, final StreamCodec p_396318_, final Function p_397637_, final StreamCodec p_392835_, final Function p_395094_, final StreamCodec p_395281_, final Function p_392689_, final StreamCodec p_395884_, final Function p_391389_, final StreamCodec p_394579_, final Function p_391273_, final Function9 p_396269_ ) { return new StreamCodec() { @Override public C decode(B p_366688_) { T1 t1 = p_396599_.decode(p_366688_); T2 t2 = p_391853_.decode(p_366688_); T3 t3 = p_397084_.decode(p_366688_); T4 t4 = p_396284_.decode(p_366688_); T5 t5 = p_396318_.decode(p_366688_); T6 t6 = p_392835_.decode(p_366688_); T7 t7 = p_395281_.decode(p_366688_); T8 t8 = p_395884_.decode(p_366688_); T9 t9 = p_394579_.decode(p_366688_); return p_396269_.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9); } @Override public void encode(B p_364543_, C p_364761_) { p_396599_.encode(p_364543_, p_394059_.apply(p_364761_)); p_391853_.encode(p_364543_, p_397231_.apply(p_364761_)); p_397084_.encode(p_364543_, p_396685_.apply(p_364761_)); p_396284_.encode(p_364543_, p_396853_.apply(p_364761_)); p_396318_.encode(p_364543_, p_397637_.apply(p_364761_)); p_392835_.encode(p_364543_, p_395094_.apply(p_364761_)); p_395281_.encode(p_364543_, p_392689_.apply(p_364761_)); p_395884_.encode(p_364543_, p_391389_.apply(p_364761_)); p_394579_.encode(p_364543_, p_391273_.apply(p_364761_)); } }; } static StreamCodec recursive(final UnaryOperator> p_336362_) { return new StreamCodec() { private final Supplier> inner = Suppliers.memoize(() -> p_336362_.apply(this)); @Override public T decode(B p_397382_) { return this.inner.get().decode(p_397382_); } @Override public void encode(B p_396343_, T p_395545_) { this.inner.get().encode(p_396343_, p_395545_); } }; } default StreamCodec cast() { return (StreamCodec)this; } @FunctionalInterface public interface CodecOperation { StreamCodec apply(StreamCodec p_333754_); } }