Add VisualizationEvent (#48)

* Add VisualizationEvent

Need to know if subdivides are showing or not

* Javadocs for VisualizationEvent
This commit is contained in:
BillyGalbreath 2016-12-04 19:23:35 -06:00 committed by RoboMWM
parent 70f3be68d3
commit 9e4db8fb3e
2 changed files with 120 additions and 1 deletions

View File

@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@ -32,6 +33,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
import me.ryanhamshire.GriefPrevention.events.VisualizationEvent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
@ -1819,6 +1821,9 @@ class PlayerEventHandler implements Listener
//find nearby claims
Set<Claim> claims = this.dataStore.getNearbyClaims(player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, claims));
//visualize boundaries
Visualization visualization = Visualization.fromClaims(claims, player.getEyeLocation().getBlockY(), VisualizationType.Claim, player.getLocation());
Visualization.Apply(player, visualization);
@ -1846,6 +1851,10 @@ class PlayerEventHandler implements Listener
if(clickedBlockType == Material.AIR)
{
instance.sendMessage(player, TextMode.Err, Messages.TooFarAway);
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, Collections.<Claim>emptySet()));
Visualization.Revert(player);
return;
}
@ -1857,6 +1866,10 @@ class PlayerEventHandler implements Listener
if(claim == null)
{
instance.sendMessage(player, TextMode.Info, Messages.BlockNotClaimed);
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, Collections.<Claim>emptySet()));
Visualization.Revert(player);
}
@ -1868,6 +1881,10 @@ class PlayerEventHandler implements Listener
//visualize boundary
Visualization visualization = Visualization.FromClaim(claim, player.getEyeLocation().getBlockY(), VisualizationType.Claim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, claim));
Visualization.Apply(player, visualization);
//if can resize this claim, tell about the boundaries
@ -1971,6 +1988,10 @@ class PlayerEventHandler implements Listener
{
instance.sendMessage(player, TextMode.Err, Messages.BlockClaimed, claim.getOwnerName());
Visualization visualization = Visualization.FromClaim(claim, clickedBlock.getY(), VisualizationType.ErrorClaim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, claim));
Visualization.Apply(player, visualization);
return;
@ -2249,6 +2270,10 @@ class PlayerEventHandler implements Listener
instance.sendMessage(player, TextMode.Err, Messages.CreateSubdivisionOverlap);
Visualization visualization = Visualization.FromClaim(result.claim, clickedBlock.getY(), VisualizationType.ErrorClaim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, result.claim));
Visualization.Apply(player, visualization);
return;
@ -2259,6 +2284,10 @@ class PlayerEventHandler implements Listener
{
instance.sendMessage(player, TextMode.Success, Messages.SubdivisionSuccess);
Visualization visualization = Visualization.FromClaim(result.claim, clickedBlock.getY(), VisualizationType.Claim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, result.claim));
Visualization.Apply(player, visualization);
playerData.lastShovelLocation = null;
playerData.claimSubdividing = null;
@ -2272,6 +2301,10 @@ class PlayerEventHandler implements Listener
{
instance.sendMessage(player, TextMode.Err, Messages.CreateClaimFailOverlap);
Visualization visualization = Visualization.FromClaim(claim, clickedBlock.getY(), VisualizationType.Claim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, claim));
Visualization.Apply(player, visualization);
}
}
@ -2281,6 +2314,10 @@ class PlayerEventHandler implements Listener
{
instance.sendMessage(player, TextMode.Err, Messages.CreateClaimFailOverlapOtherPlayer, claim.getOwnerName());
Visualization visualization = Visualization.FromClaim(claim, clickedBlock.getY(), VisualizationType.ErrorClaim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, claim));
Visualization.Apply(player, visualization);
}
@ -2314,7 +2351,12 @@ class PlayerEventHandler implements Listener
instance.sendMessage(player, TextMode.Instr, Messages.ClaimStart);
//show him where he's working
Visualization visualization = Visualization.FromClaim(new Claim(clickedBlock.getLocation(), clickedBlock.getLocation(), null, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), null), clickedBlock.getY(), VisualizationType.RestoreNature, player.getLocation());
Claim newClaim = new Claim(clickedBlock.getLocation(), clickedBlock.getLocation(), null, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), new ArrayList<String>(), null);
Visualization visualization = Visualization.FromClaim(newClaim, clickedBlock.getY(), VisualizationType.RestoreNature, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, newClaim));
Visualization.Apply(player, visualization);
}
@ -2399,6 +2441,10 @@ class PlayerEventHandler implements Listener
instance.sendMessage(player, TextMode.Err, Messages.CreateClaimFailOverlapShort);
Visualization visualization = Visualization.FromClaim(result.claim, clickedBlock.getY(), VisualizationType.ErrorClaim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, result.claim));
Visualization.Apply(player, visualization);
}
else
@ -2414,6 +2460,10 @@ class PlayerEventHandler implements Listener
{
instance.sendMessage(player, TextMode.Success, Messages.CreateClaimSuccess);
Visualization visualization = Visualization.FromClaim(result.claim, clickedBlock.getY(), VisualizationType.Claim, player.getLocation());
// alert plugins of a visualization
Bukkit.getPluginManager().callEvent(new VisualizationEvent(player, result.claim));
Visualization.Apply(player, visualization);
playerData.lastShovelLocation = null;

View File

@ -0,0 +1,69 @@
package me.ryanhamshire.GriefPrevention.events;
import me.ryanhamshire.GriefPrevention.Claim;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import java.util.Collection;
import java.util.Collections;
/**
* Called when GriefPrevention is sending claim visuals to a player
*/
public class VisualizationEvent extends PlayerEvent {
private static final HandlerList handlers = new HandlerList();
private final Collection<Claim> claims;
private final boolean showSubdivides;
/**
* New visualization being sent to player
*
* @param player Player receiving visuals
* @param claim The claim being visualized (with subdivides), or null if visuals being removed
*/
public VisualizationEvent(Player player, Claim claim) {
super(player);
this.claims = Collections.singleton(claim);
this.showSubdivides = true;
}
/**
* New visualization being sent to player
*
* @param player Player receiving visuals
* @param claims Claims being visualized (without subdivides)
*/
public VisualizationEvent(Player player, Collection<Claim> claims) {
super(player);
this.claims = claims;
this.showSubdivides = false;
}
/**
* Get the claims being visualized, or null if visualization being removed
*
* @return Claims being visualized
*/
public Collection<Claim> getClaims() {
return claims;
}
/**
* Check if subdivide claims are being shown
*
* @return True if subdivide claims are being shown
*/
public boolean showSubdivides() {
return showSubdivides;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}