Implement AccrueClaimBlocksEvent. Closes #18
This commit is contained in:
parent
17854cf2d5
commit
3a3d3632a9
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import me.ryanhamshire.GriefPrevention.events.AccrueClaimBlocksEvent;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
|
@ -29,10 +30,12 @@ import org.bukkit.entity.Player;
|
||||||
class DeliverClaimBlocksTask implements Runnable
|
class DeliverClaimBlocksTask implements Runnable
|
||||||
{
|
{
|
||||||
private Player player;
|
private Player player;
|
||||||
|
private GriefPrevention instance;
|
||||||
|
|
||||||
public DeliverClaimBlocksTask(Player player)
|
public DeliverClaimBlocksTask(Player player, GriefPrevention instance)
|
||||||
{
|
{
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
this.instance = instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -47,17 +50,20 @@ class DeliverClaimBlocksTask implements Runnable
|
||||||
long i = 0;
|
long i = 0;
|
||||||
for(Player onlinePlayer : players)
|
for(Player onlinePlayer : players)
|
||||||
{
|
{
|
||||||
DeliverClaimBlocksTask newTask = new DeliverClaimBlocksTask(onlinePlayer);
|
DeliverClaimBlocksTask newTask = new DeliverClaimBlocksTask(onlinePlayer, instance);
|
||||||
GriefPrevention.instance.getServer().getScheduler().scheduleSyncDelayedTask(GriefPrevention.instance, newTask, i++);
|
instance.getServer().getScheduler().scheduleSyncDelayedTask(instance, newTask, i++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//otherwise, deliver claim blocks to the specified player
|
//otherwise, deliver claim blocks to the specified player
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!this.player.isOnline()) return;
|
if(!this.player.isOnline())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DataStore dataStore = GriefPrevention.instance.dataStore;
|
DataStore dataStore = instance.dataStore;
|
||||||
PlayerData playerData = dataStore.getPlayerData(player.getUniqueId());
|
PlayerData playerData = dataStore.getPlayerData(player.getUniqueId());
|
||||||
|
|
||||||
Location lastLocation = playerData.lastAfkCheckLocation;
|
Location lastLocation = playerData.lastAfkCheckLocation;
|
||||||
|
|
@ -69,15 +75,22 @@ class DeliverClaimBlocksTask implements Runnable
|
||||||
(lastLocation == null || lastLocation.distanceSquared(player.getLocation()) >= 0) &&
|
(lastLocation == null || lastLocation.distanceSquared(player.getLocation()) >= 0) &&
|
||||||
!player.getLocation().getBlock().isLiquid())
|
!player.getLocation().getBlock().isLiquid())
|
||||||
{
|
{
|
||||||
//determine how fast blocks accrue for this player
|
//determine how fast blocks accrue for this player //RoboMWM: addons determine this instead
|
||||||
int accrualRate = GriefPrevention.instance.config_claims_blocksAccruedPerHour_default;
|
int accrualRate = instance.config_claims_blocksAccruedPerHour_default;
|
||||||
if(player.hasPermission("griefprevention.fastestaccrual")) accrualRate = GriefPrevention.instance.config_claims_blocksAccruedPerHour_fastest;
|
// if(player.hasPermission("griefprevention.fastestaccrual")) accrualRate = GriefPrevention.instance.config_claims_blocksAccruedPerHour_fastest;
|
||||||
else if(player.hasPermission("griefprevention.fasteraccrual")) accrualRate = GriefPrevention.instance.config_claims_blocksAccruedPerHour_faster;
|
// else if(player.hasPermission("griefprevention.fasteraccrual")) accrualRate = GriefPrevention.instance.config_claims_blocksAccruedPerHour_faster;
|
||||||
|
|
||||||
//add blocks
|
//add blocks
|
||||||
int accruedBlocks = accrualRate / 6;
|
int accruedBlocks = accrualRate / 6;
|
||||||
if(accruedBlocks < 0) accruedBlocks = 1;
|
if(accruedBlocks < 0) accruedBlocks = 1;
|
||||||
playerData.accrueBlocks(accruedBlocks);
|
AccrueClaimBlocksEvent event = new AccrueClaimBlocksEvent(player, accrualRate);
|
||||||
|
instance.getServer().getPluginManager().callEvent(event);
|
||||||
|
if (event.isCancelled())
|
||||||
|
{
|
||||||
|
GriefPrevention.AddLogEntry(player.getName() + " claim block delivery was canceled by another plugin.", CustomLogEntryTypes.Debug, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
playerData.accrueBlocks(event.getBlocksToAccrue());
|
||||||
GriefPrevention.AddLogEntry("Delivering " + accruedBlocks + " blocks to " + player.getName(), CustomLogEntryTypes.Debug, true);
|
GriefPrevention.AddLogEntry("Delivering " + accruedBlocks + " blocks to " + player.getName(), CustomLogEntryTypes.Debug, true);
|
||||||
|
|
||||||
//intentionally NOT saving data here to reduce overall secondary storage access frequency
|
//intentionally NOT saving data here to reduce overall secondary storage access frequency
|
||||||
|
|
|
||||||
|
|
@ -318,7 +318,7 @@ public class GriefPrevention extends JavaPlugin
|
||||||
//20L ~ 1 second
|
//20L ~ 1 second
|
||||||
if(this.config_claims_blocksAccruedPerHour_default > 0 || this.config_claims_blocksAccruedPerHour_faster > 0 || this.config_claims_blocksAccruedPerHour_fastest > 0)
|
if(this.config_claims_blocksAccruedPerHour_default > 0 || this.config_claims_blocksAccruedPerHour_faster > 0 || this.config_claims_blocksAccruedPerHour_fastest > 0)
|
||||||
{
|
{
|
||||||
DeliverClaimBlocksTask task = new DeliverClaimBlocksTask(null);
|
DeliverClaimBlocksTask task = new DeliverClaimBlocksTask(null, this);
|
||||||
this.getServer().getScheduler().scheduleSyncRepeatingTask(this, task, 20L * 60 * 10, 20L * 60 * 10);
|
this.getServer().getScheduler().scheduleSyncRepeatingTask(this, task, 20L * 60 * 10, 20L * 60 * 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package me.ryanhamshire.GriefPrevention.events;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Robo on 11/15/2016.
|
||||||
|
*/
|
||||||
|
public class AccrueClaimBlocksEvent extends Event
|
||||||
|
{
|
||||||
|
// Custom Event Requirements
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Player player;
|
||||||
|
private int blocksToAccrue;
|
||||||
|
private boolean cancelled = false;
|
||||||
|
|
||||||
|
public AccrueClaimBlocksEvent(Player player, int blocksToAccrue)
|
||||||
|
{
|
||||||
|
this.player = player;
|
||||||
|
this.blocksToAccrue = blocksToAccrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer()
|
||||||
|
{
|
||||||
|
return this.player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBlocksToAccrue()
|
||||||
|
{
|
||||||
|
return this.blocksToAccrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCancelled()
|
||||||
|
{
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBlocksToAccrue(int blocksToAccrue)
|
||||||
|
{
|
||||||
|
this.blocksToAccrue = blocksToAccrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCancelled(boolean cancel)
|
||||||
|
{
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user