10
10
import mcp .MethodsReturnNonnullByDefault ;
11
11
import net .minecraft .client .Minecraft ;
12
12
import net .minecraft .client .world .ClientWorld ;
13
+ import net .minecraft .enchantment .EnchantmentHelper ;
13
14
import net .minecraft .entity .Entity ;
14
15
import net .minecraft .entity .MobEntity ;
15
16
import net .minecraft .entity .player .PlayerEntity ;
@@ -232,8 +233,13 @@ void set(int i, ItemStack stack) {
232
233
*/
233
234
public void swap (NonNullList <ItemStack > inventory ) {
234
235
for (int i = 0 ; i < 4 ; ++i ) {
236
+ ItemStack original = inventory .get (i );
235
237
ItemStack replacement = replacementInventory .get (i );
236
- replacementInventory .set (i , inventory .get (i ));
238
+ if (EnchantmentHelper .hasBindingCurse (original ) || EnchantmentHelper .hasBindingCurse (replacement )) {
239
+ // Cannot swap armor with curse of binding
240
+ continue ;
241
+ }
242
+ replacementInventory .set (i , original );
237
243
inventory .set (i , replacement );
238
244
}
239
245
}
@@ -245,12 +251,17 @@ public void swap(NonNullList<ItemStack> inventory) {
245
251
*/
246
252
void swap (PlayerEntity player ) {
247
253
for (int i = 0 ; i < 4 ; ++i ) {
254
+ ItemStack playerArmor = player .inventory .armorInventory .get (i );
255
+ ItemStack replacement = replacementInventory .get (i );
256
+ if (EnchantmentHelper .hasBindingCurse (playerArmor ) || EnchantmentHelper .hasBindingCurse (replacement )) {
257
+ // Cannot swap armor with curse of binding
258
+ continue ;
259
+ }
248
260
if (player instanceof ServerPlayerEntity ) {
249
261
// Make sure to do this on the client side as well.
250
- ((ServerPlayerEntity ) player ).connection .sendPacket (new SSetSlotPacket (-2 , i + 36 , replacementInventory . get ( i ) ));
262
+ ((ServerPlayerEntity ) player ).connection .sendPacket (new SSetSlotPacket (-2 , i + 36 , replacement ));
251
263
}
252
- ItemStack replacement = replacementInventory .get (i );
253
- replacementInventory .set (i , player .inventory .armorInventory .get (i ));
264
+ replacementInventory .set (i , playerArmor );
254
265
player .inventory .armorInventory .set (i , replacement );
255
266
}
256
267
}
0 commit comments