Teleporter may now throw exceptions
This commit is contained in:
parent
693705fc10
commit
f3530d521b
@ -222,6 +222,7 @@ public class PS implements Cloneable
|
||||
protected synchronized Location innerLocation(Double x, Double y, Double z)
|
||||
{
|
||||
World world = this.getWorld();
|
||||
if (world == null) return null;
|
||||
|
||||
if (x == null) return null;
|
||||
if (y == null) return null;
|
||||
@ -477,7 +478,7 @@ public class PS implements Cloneable
|
||||
// WRITERS
|
||||
//----------------------------------------------//
|
||||
|
||||
public synchronized void write(Entity entity)
|
||||
public synchronized void write(Entity entity) throws PSTeleporterException
|
||||
{
|
||||
teleporter.teleport(entity, this);
|
||||
}
|
||||
|
@ -4,5 +4,9 @@ import org.bukkit.entity.Entity;
|
||||
|
||||
public interface PSTeleporter
|
||||
{
|
||||
public void teleport(Entity entity, PS ps);
|
||||
/**
|
||||
* @param entity The entity to be teleported
|
||||
* @param ps The target PhysicalState
|
||||
*/
|
||||
public void teleport(Entity entity, PS ps) throws PSTeleporterException;
|
||||
}
|
||||
|
@ -4,16 +4,22 @@ import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.massivecraft.mcore5.util.Txt;
|
||||
|
||||
public class PSTeleporterDefault implements PSTeleporter
|
||||
{
|
||||
@Override
|
||||
public void teleport(Entity entity, PS ps)
|
||||
public void teleport(Entity entity, PS ps) throws PSTeleporterException
|
||||
{
|
||||
Location location = ps.calcLocation();
|
||||
if (location != null) entity.teleport(location);
|
||||
Location location = ps.calcLocation();
|
||||
if (location == null) throw new PSTeleporterException(Txt.parse("<b>Could not calculate the location"));
|
||||
|
||||
entity.teleport(location);
|
||||
|
||||
Vector velocity = ps.getVelocity();
|
||||
if (velocity != null) entity.setVelocity(velocity);
|
||||
if (velocity == null) return;
|
||||
|
||||
entity.setVelocity(velocity);
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
|
31
src/com/massivecraft/mcore5/PSTeleporterException.java
Normal file
31
src/com/massivecraft/mcore5/PSTeleporterException.java
Normal file
@ -0,0 +1,31 @@
|
||||
package com.massivecraft.mcore5;
|
||||
|
||||
public class PSTeleporterException extends Exception
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public PSTeleporterException()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
public PSTeleporterException(String message)
|
||||
{
|
||||
super(message);
|
||||
}
|
||||
|
||||
public PSTeleporterException(String message, Throwable cause)
|
||||
{
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public PSTeleporterException(Throwable cause)
|
||||
{
|
||||
super(cause);
|
||||
}
|
||||
|
||||
protected PSTeleporterException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
|
||||
{
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
@ -20,14 +20,11 @@ public class ReqIsPlayer implements IReq
|
||||
return Lang.commandSenderMustBePlayer;
|
||||
}
|
||||
|
||||
protected static ReqIsPlayer instance= new ReqIsPlayer();
|
||||
public static ReqIsPlayer getInstance()
|
||||
{
|
||||
return instance;
|
||||
}
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static ReqIsPlayer i = new ReqIsPlayer();
|
||||
public static ReqIsPlayer get() { return i; }
|
||||
|
||||
public static ReqIsPlayer get()
|
||||
{
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user