Skip to content

Commit e710f6d

Browse files
committed
Handle curse of binding in Magic Mirror.
Fixes #52
1 parent 0f813c2 commit e710f6d

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

MagicMirror/src/main/java/com/tomboshoven/minecraft/magicmirror/blocks/tileentities/modifiers/ArmorMagicMirrorTileEntityModifier.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import mcp.MethodsReturnNonnullByDefault;
1111
import net.minecraft.client.Minecraft;
1212
import net.minecraft.client.world.ClientWorld;
13+
import net.minecraft.enchantment.EnchantmentHelper;
1314
import net.minecraft.entity.Entity;
1415
import net.minecraft.entity.MobEntity;
1516
import net.minecraft.entity.player.PlayerEntity;
@@ -232,8 +233,13 @@ void set(int i, ItemStack stack) {
232233
*/
233234
public void swap(NonNullList<ItemStack> inventory) {
234235
for (int i = 0; i < 4; ++i) {
236+
ItemStack original = inventory.get(i);
235237
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);
237243
inventory.set(i, replacement);
238244
}
239245
}
@@ -245,12 +251,17 @@ public void swap(NonNullList<ItemStack> inventory) {
245251
*/
246252
void swap(PlayerEntity player) {
247253
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+
}
248260
if (player instanceof ServerPlayerEntity) {
249261
// 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));
251263
}
252-
ItemStack replacement = replacementInventory.get(i);
253-
replacementInventory.set(i, player.inventory.armorInventory.get(i));
264+
replacementInventory.set(i, playerArmor);
254265
player.inventory.armorInventory.set(i, replacement);
255266
}
256267
}

0 commit comments

Comments
 (0)