Skip to content

Commit

Permalink
Work around "server-side-only blocking after respawn".
Browse files Browse the repository at this point in the history
  • Loading branch information
asofold committed May 4, 2017
1 parent 6584398 commit b62f310
Showing 1 changed file with 29 additions and 0 deletions.
Expand Up @@ -25,6 +25,7 @@

import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand All @@ -46,6 +47,8 @@
import org.bukkit.event.player.PlayerToggleSprintEvent;
import org.bukkit.event.player.PlayerVelocityEvent;
import org.bukkit.event.world.WorldUnloadEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.util.Vector;

Expand Down Expand Up @@ -2087,6 +2090,32 @@ public void onPlayerRespawn(final PlayerRespawnEvent event) {
data.resetSetBack(); // To force dataOnJoin to set it to loc.
// Handle respawn like join.
dataOnJoin(player, event.getRespawnLocation(), data, MovingConfig.getConfig(player), true);
// Patch up issues.
if (Bridge1_9.hasGetItemInOffHand() && player.isBlocking()) {
// Attempt to fix server-side-only blocking after respawn.
redoShield(player);
}
}

/**
* Attempt to fix server-side-only blocking after respawn.
* @param player
*/
private void redoShield(final Player player) {
// Does not work: DataManager.getPlayerData(player).requestUpdateInventory();
final PlayerInventory inv = player.getInventory();
ItemStack stack = inv.getItemInOffHand();
if (stack != null && stack.getType() == Material.SHIELD) {
// Shield in off-hand.
inv.setItemInOffHand(stack);
return;
}
stack = inv.getItemInMainHand();
if (stack != null && stack.getType() == Material.SHIELD) {
// Shield in off-hand.
inv.setItemInMainHand(stack);
return;
}
}

@Override
Expand Down

0 comments on commit b62f310

Please sign in to comment.