Added a delayed block changes sending method.

This commit is contained in:
Tobias Ottenweller 2013-06-19 14:03:50 +02:00
parent ecd219fb2d
commit f939e27464
3 changed files with 47 additions and 13 deletions

View File

@ -33,6 +33,6 @@ public class PlayerRespawnListener implements Listener
System.out.println("player: " + event.getPlayer());
System.out.println("position: " + event.getPlayer().getLocation());
GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getRespawnLocation());
GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getRespawnLocation(), true);
}
}

View File

@ -32,6 +32,6 @@ public class PlayerTeleportListener implements Listener
return;
}
GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getTo());
GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getTo(), true);
}
}

View File

@ -19,6 +19,7 @@ package de.craftinc.gates.util;
import de.craftinc.gates.Plugin;
import de.craftinc.gates.Gate;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -29,17 +30,15 @@ import java.util.Set;
public class GateBlockChangeSender
{
public static void updateGateBlocks(final Player player)
{
if (player == null) {
throw new IllegalArgumentException("'player' must not be 'null'!");
}
updateGateBlocks(player, player.getLocation());
}
public static void updateGateBlocks(final Player player, final Location location)
/**
* Sends gate blocks to player at a given location. Will send the updates either immediately or
* immediately and after a short delay.
* @param player A player to send block changes to. Must not be null!
* @param location The location to look for gates nearby. Must not be null!
* @param sendDelayed Set to 'true' if the block changes shall be send a second time after a one
* second delay.
*/
public static void updateGateBlocks(final Player player, final Location location, boolean sendDelayed)
{
if (player == null) {
throw new IllegalArgumentException("'player' must not be 'null'!");
@ -68,10 +67,45 @@ public class GateBlockChangeSender
}
}
}
if (sendDelayed) {
Bukkit.getScheduler().scheduleSyncDelayedTask(Plugin.getPlugin(), new Runnable()
{
@Override
public void run()
{
updateGateBlocks(player, location, false);
}
}, 20L);
}
}
/**
* This method calls: updateGateBlocks(player, location, false);
*/
public static void updateGateBlocks(final Player player, final Location location)
{
updateGateBlocks(player, location, false);
}
/**
* This method calls: updateGateBlocks(player, player.getLocation(), false);
*/
public static void updateGateBlocks(final Player player)
{
if (player == null) {
throw new IllegalArgumentException("'player' must not be 'null'!");
}
updateGateBlocks(player, player.getLocation(), false);
}
/**
* Sends block changes to players near a given gate.
* @param gate Must not be 'null'!
*/
public static void updateGateBlocks(final Gate gate)
{
if (gate == null) {