2222import java .util .ArrayList ;
2323import java .util .Collections ;
2424import java .util .List ;
25- import java .util .Optional ;
2625import java .util .function .BiConsumer ;
2726import java .util .function .Consumer ;
2827import java .util .function .Function ;
2928import java .util .function .IntSupplier ;
3029import java .util .function .Supplier ;
3130
31+ import javax .annotation .Nullable ;
32+
3233import io .netty .buffer .Unpooled ;
3334import net .minecraftforge .fml .network .NetworkDirection ;
3435import net .minecraftforge .fml .network .NetworkEvent ;
4142import net .minecraft .network .Packet ;
4243import net .minecraft .util .PacketByteBuf ;
4344
44- // TODO: refactor to not use magic optionals
4545public class SimpleChannel {
4646 private final NetworkInstance instance ;
4747 private final IndexedMessageCodec indexedCodec ;
48- private final Optional <Consumer <NetworkEvent .ChannelRegistrationChangeEvent >> registryChangeConsumer ;
48+ @ Nullable
49+ private final Consumer <NetworkEvent .ChannelRegistrationChangeEvent > registryChangeConsumer ;
4950 private List <Function <Boolean , ? extends List <? extends Pair <String , ?>>>> loginPackets ;
5051
5152 public SimpleChannel (NetworkInstance instance ) {
52- this (instance , Optional . empty () );
53+ this (instance , null );
5354 }
5455
55- private SimpleChannel (NetworkInstance instance , Optional < Consumer <NetworkEvent .ChannelRegistrationChangeEvent > > registryChangeNotify ) {
56+ public SimpleChannel (NetworkInstance instance , @ Nullable Consumer <NetworkEvent .ChannelRegistrationChangeEvent > registryChangeNotify ) {
5657 this .instance = instance ;
5758 this .indexedCodec = new IndexedMessageCodec (instance );
5859 this .loginPackets = new ArrayList <>();
60+
5961 instance .addListener (this ::networkEventListener );
6062 instance .addGatherListener (this ::networkLoginGather );
6163 this .registryChangeConsumer = registryChangeNotify ;
6264 }
6365
64- public SimpleChannel (NetworkInstance instance , Consumer <NetworkEvent .ChannelRegistrationChangeEvent > registryChangeNotify ) {
65- this (instance , Optional .of (registryChangeNotify ));
66- }
67-
6866 private void networkLoginGather (final NetworkEvent .GatherLoginPayloadsEvent gatherEvent ) {
6967 loginPackets .forEach (packetGenerator -> packetGenerator .apply (gatherEvent .isLocal ()).forEach (pair -> {
7068 PacketByteBuf buffer = new PacketByteBuf (Unpooled .buffer ());
@@ -75,7 +73,9 @@ private void networkLoginGather(final NetworkEvent.GatherLoginPayloadsEvent gath
7573
7674 private void networkEventListener (final NetworkEvent networkEvent ) {
7775 if (networkEvent instanceof NetworkEvent .ChannelRegistrationChangeEvent ) {
78- this .registryChangeConsumer .ifPresent (l -> l .accept (((NetworkEvent .ChannelRegistrationChangeEvent ) networkEvent )));
76+ if (this .registryChangeConsumer != null ) {
77+ this .registryChangeConsumer .accept (((NetworkEvent .ChannelRegistrationChangeEvent ) networkEvent ));
78+ }
7979 } else {
8080 this .indexedCodec .consume (networkEvent .getPayload (), networkEvent .getLoginIndex (), networkEvent .getSource ());
8181 }
0 commit comments