From b51006a949865aa39d7faec4e208686542200c1a Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Thu, 16 Oct 2014 20:33:48 -0700 Subject: [PATCH] Automatic visualization reversion. Set to 60 seconds after visualization appearance. --- .../VisualizationApplicationTask.java | 6 +++ .../VisualizationReversionTask.java | 45 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/me/ryanhamshire/GriefPrevention/VisualizationReversionTask.java diff --git a/src/me/ryanhamshire/GriefPrevention/VisualizationApplicationTask.java b/src/me/ryanhamshire/GriefPrevention/VisualizationApplicationTask.java index 0380d9b..4ece654 100644 --- a/src/me/ryanhamshire/GriefPrevention/VisualizationApplicationTask.java +++ b/src/me/ryanhamshire/GriefPrevention/VisualizationApplicationTask.java @@ -49,5 +49,11 @@ class VisualizationApplicationTask implements Runnable //remember the visualization applied to this player for later (so it can be inexpensively reverted) playerData.currentVisualization = visualization; + + //schedule automatic visualization reversion in 60 seconds. + GriefPrevention.instance.getServer().getScheduler().scheduleSyncDelayedTask( + GriefPrevention.instance, + new VisualizationReversionTask(player, playerData, visualization), + 20L * 60); //60 seconds } } diff --git a/src/me/ryanhamshire/GriefPrevention/VisualizationReversionTask.java b/src/me/ryanhamshire/GriefPrevention/VisualizationReversionTask.java new file mode 100644 index 0000000..5c48833 --- /dev/null +++ b/src/me/ryanhamshire/GriefPrevention/VisualizationReversionTask.java @@ -0,0 +1,45 @@ +/* + GriefPrevention Server Plugin for Minecraft + Copyright (C) 2012 Ryan Hamshire + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + + package me.ryanhamshire.GriefPrevention; + +import org.bukkit.entity.Player; + +//applies a visualization for a player by sending him block change packets +class VisualizationReversionTask implements Runnable +{ + private Visualization visualization; + private Player player; + private PlayerData playerData; + + public VisualizationReversionTask(Player player, PlayerData playerData, Visualization visualization) + { + this.visualization = visualization; + this.playerData = playerData; + this.player = player; + } + + @Override + public void run() + { + //don't do anything if the player's current visualization is different from the one scheduled to revert + if(playerData.currentVisualization != visualization) return; + + Visualization.Revert(player); + } +}