22
22
23
23
package dev .galacticraft .machinelib .api .menu ;
24
24
25
+ import dev .architectury .utils .value .FloatSupplier ;
25
26
import dev .galacticraft .machinelib .api .misc .DeltaPacketSerializable ;
26
- import dev .galacticraft .machinelib .impl .menu .sync .EnumPacketSerializable ;
27
- import dev .galacticraft .machinelib .impl .menu .sync .IntPacketSerializable ;
28
- import dev .galacticraft .machinelib .impl .menu .sync .LongPacketSerializable ;
29
- import dev .galacticraft .machinelib .impl .menu .sync .StreamCodecPacketSerializable ;
27
+ import dev .galacticraft .machinelib .impl .menu .sync .*;
28
+ import it .unimi .dsi .fastutil .booleans .BooleanConsumer ;
29
+ import it .unimi .dsi .fastutil .floats .FloatConsumer ;
30
30
import net .minecraft .network .RegistryFriendlyByteBuf ;
31
31
import net .minecraft .network .codec .StreamCodec ;
32
32
import org .jetbrains .annotations .ApiStatus ;
@@ -78,6 +78,36 @@ public <T> void register(StreamCodec<? super RegistryFriendlyByteBuf, T> codec,
78
78
this .register (new StreamCodecPacketSerializable <>(codec , getter , setter ));
79
79
}
80
80
81
+ /**
82
+ * Registers a byte field to be synchronized.
83
+ *
84
+ * @param getter provides the current value of the data
85
+ * @param setter sets the value of the data
86
+ */
87
+ public void registerBoolean (BooleanSupplier getter , BooleanConsumer setter ) {
88
+ this .register (new BytePacketSerializable (() -> getter .getAsBoolean () ? 1 : 0 , b -> setter .accept (b != 0 )));
89
+ }
90
+
91
+ /**
92
+ * Registers a byte field to be synchronized.
93
+ *
94
+ * @param getter provides the current value of the data
95
+ * @param setter sets the value of the data
96
+ */
97
+ public void registerByte (IntSupplier getter , IntConsumer setter ) {
98
+ this .register (new BytePacketSerializable (getter , setter ));
99
+ }
100
+
101
+ /**
102
+ * Registers a short field to be synchronized.
103
+ *
104
+ * @param getter provides the current value of the data
105
+ * @param setter sets the value of the data
106
+ */
107
+ public void registerShort (IntSupplier getter , IntConsumer setter ) {
108
+ this .register (new ShortPacketSerializable (getter , setter ));
109
+ }
110
+
81
111
/**
82
112
* Registers an integer field to be synchronized.
83
113
*
@@ -88,6 +118,36 @@ public void registerInt(IntSupplier getter, IntConsumer setter) {
88
118
this .register (new IntPacketSerializable (getter , setter ));
89
119
}
90
120
121
+ /**
122
+ * Registers a long field to be synchronized.
123
+ *
124
+ * @param getter provides the current value of the data
125
+ * @param setter sets the value of the data
126
+ */
127
+ public void registerLong (LongSupplier getter , LongConsumer setter ) {
128
+ this .register (new LongPacketSerializable (getter , setter ));
129
+ }
130
+
131
+ /**
132
+ * Registers a float field to be synchronized.
133
+ *
134
+ * @param getter provides the current value of the data
135
+ * @param setter sets the value of the data
136
+ */
137
+ public void registerFloat (FloatSupplier getter , FloatConsumer setter ) {
138
+ this .register (new FloatPacketSerializable (getter , setter ));
139
+ }
140
+
141
+ /**
142
+ * Registers a double field to be synchronized.
143
+ *
144
+ * @param getter provides the current value of the data
145
+ * @param setter sets the value of the data
146
+ */
147
+ public void registerDouble (DoubleSupplier getter , DoubleConsumer setter ) {
148
+ this .register (new DoublePacketSerializable (getter , setter ));
149
+ }
150
+
91
151
/**
92
152
* Registers an enum field to be synchronized.
93
153
*
@@ -101,13 +161,13 @@ public <E extends Enum<E>> void registerEnum(E[] world, Supplier<E> getter, Cons
101
161
}
102
162
103
163
/**
104
- * Registers a long field to be synchronized.
164
+ * Registers an array of booleans to be synchronized.
105
165
*
106
- * @param getter provides the current value of the data
107
- * @param setter sets the value of the data
166
+ * @param source the source array
167
+ * @param dest the destination array
108
168
*/
109
- public void registerLong ( LongSupplier getter , LongConsumer setter ) {
110
- this .register (new LongPacketSerializable ( getter , setter ));
169
+ public void registerBits ( int len , boolean [] source , boolean [] dest ) {
170
+ this .register (new BitsPacketSerializable ( len , source , dest ));
111
171
}
112
172
113
173
@ ApiStatus .Internal
0 commit comments