Untested re-added teleport to faction home on death feature.
This commit is contained in:
		@@ -7,6 +7,7 @@ import java.util.Set;
 | 
				
			|||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					import org.bukkit.event.EventPriority;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.FFlag;
 | 
					import com.massivecraft.factions.FFlag;
 | 
				
			||||||
import com.massivecraft.factions.FPerm;
 | 
					import com.massivecraft.factions.FPerm;
 | 
				
			||||||
@@ -126,6 +127,9 @@ public class UConf extends Entity<UConf>
 | 
				
			|||||||
	public double homesTeleportAllowedEnemyDistance = 32.0;
 | 
						public double homesTeleportAllowedEnemyDistance = 32.0;
 | 
				
			||||||
	public boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
 | 
						public boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						public boolean homesTeleportToOnDeathActive = false;
 | 
				
			||||||
 | 
						public EventPriority homesTeleportToOnDeathPriority = EventPriority.NORMAL;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// ASSORTED
 | 
						// ASSORTED
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,6 +49,7 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent;
 | 
				
			|||||||
import org.bukkit.event.player.PlayerInteractEvent;
 | 
					import org.bukkit.event.player.PlayerInteractEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerKickEvent;
 | 
					import org.bukkit.event.player.PlayerKickEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerMoveEvent;
 | 
					import org.bukkit.event.player.PlayerMoveEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.player.PlayerRespawnEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.Const;
 | 
					import com.massivecraft.factions.Const;
 | 
				
			||||||
import com.massivecraft.factions.FFlag;
 | 
					import com.massivecraft.factions.FFlag;
 | 
				
			||||||
@@ -904,4 +905,80 @@ public class FactionsListenerMain implements Listener
 | 
				
			|||||||
		event.setCancelled(true);
 | 
							event.setCancelled(true);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// TELEPORT TO HOME ON DEATH
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeath(PlayerRespawnEvent event, EventPriority priority)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// If a player is respawning ...
 | 
				
			||||||
 | 
							final Player player = event.getPlayer();
 | 
				
			||||||
 | 
							final UPlayer uplayer = UPlayer.get(player);
 | 
				
			||||||
 | 
							final UConf uconf = UConf.get(player);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... homes are enabled, active and at this priority ...
 | 
				
			||||||
 | 
							if (!uconf.homesEnabled) return;
 | 
				
			||||||
 | 
							if (!uconf.homesTeleportToOnDeathActive) return;
 | 
				
			||||||
 | 
							if (uconf.homesTeleportToOnDeathPriority != priority) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... and the player has a faction ...
 | 
				
			||||||
 | 
							final Faction faction = uplayer.getFaction();
 | 
				
			||||||
 | 
							if (faction.isNone()) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... and the faction has a home ...
 | 
				
			||||||
 | 
							PS home = faction.getHome();
 | 
				
			||||||
 | 
							if (home == null) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... and the home is translatable ...
 | 
				
			||||||
 | 
							Location respawnLocation = null;
 | 
				
			||||||
 | 
							try
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								respawnLocation = home.asBukkitLocation(true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							catch (Exception e)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// The home location map may have been deleted
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... then use it for the respawn location.
 | 
				
			||||||
 | 
							event.setRespawnLocation(respawnLocation);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.LOWEST)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathLowest(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.LOWEST);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.LOW)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathLow(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.LOW);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.NORMAL)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathNormal(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.NORMAL);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.HIGH)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathHigh(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.HIGH);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.HIGHEST)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathHighest(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.HIGHEST);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.MONITOR)
 | 
				
			||||||
 | 
						public void teleportToHomeOnDeathMonitor(PlayerRespawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							this.teleportToHomeOnDeath(event, EventPriority.MONITOR);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user