2014-12-21 21:32:09 +00:00
/ *
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 < http : //www.gnu.org/licenses/>.
* /
2020-06-09 04:57:55 +00:00
2014-12-21 21:32:09 +00:00
package me.ryanhamshire.GriefPrevention ;
import org.bukkit.Location ;
import org.bukkit.entity.Player ;
2017-07-22 07:19:09 +00:00
import org.bukkit.metadata.FixedMetadataValue ;
2016-09-30 17:48:19 +00:00
import org.bukkit.scheduler.BukkitRunnable ;
2014-12-21 21:32:09 +00:00
//players can be "trapped" in a portal frame if they don't have permission to break
//solid blocks blocking them from exiting the frame
//if that happens, we detect the problem and send them back through the portal.
2016-09-30 17:48:19 +00:00
class CheckForPortalTrapTask extends BukkitRunnable
2014-12-21 21:32:09 +00:00
{
2020-06-09 04:57:55 +00:00
GriefPrevention instance ;
//player who recently teleported via nether portal
2020-09-20 16:01:37 +00:00
private final Player player ;
2020-06-09 04:57:55 +00:00
//where to send the player back to if he hasn't left the portal frame
2020-09-20 16:01:37 +00:00
private final Location returnLocation ;
2020-06-09 04:57:55 +00:00
public CheckForPortalTrapTask ( Player player , GriefPrevention plugin , Location locationToReturn )
{
this . player = player ;
this . instance = plugin ;
this . returnLocation = locationToReturn ;
player . setMetadata ( " GP_PORTALRESCUE " , new FixedMetadataValue ( instance , locationToReturn ) ) ;
}
@Override
public void run ( )
{
if ( player . isOnline ( ) & & player . getPortalCooldown ( ) > = 10 & & player . hasMetadata ( " GP_PORTALRESCUE " ) )
{
2020-12-09 08:47:39 +00:00
GriefPrevention . AddLogEntry ( " Rescued " + player . getName ( ) + " from a nether portal. \ nTeleported from " + player . getLocation ( ) . toString ( ) + " to " + returnLocation . toString ( ) , CustomLogEntryTypes . Debug ) ;
2020-06-09 04:57:55 +00:00
player . teleport ( returnLocation ) ;
player . removeMetadata ( " GP_PORTALRESCUE " , instance ) ;
}
2016-10-02 08:22:40 +00:00
instance . portalReturnTaskMap . remove ( player . getUniqueId ( ) ) ;
2020-06-09 04:57:55 +00:00
}
2014-12-21 21:32:09 +00:00
}