Changes to the PS Destination teleporter system.
This commit is contained in:
parent
a1f2e76221
commit
9587b756c9
@ -95,7 +95,7 @@ public class MassiveCoreEngineDestination extends EngineAbstract
|
|||||||
public static final Set<String> ALIASES_THERE = new MassiveSet<String>("there");
|
public static final Set<String> ALIASES_THERE = new MassiveSet<String>("there");
|
||||||
public static final Set<String> ALIASES_THAT = new MassiveSet<String>("that");
|
public static final Set<String> ALIASES_THAT = new MassiveSet<String>("that");
|
||||||
public static final Set<String> ALIASES_JUMP = new MassiveSet<String>("jump");
|
public static final Set<String> ALIASES_JUMP = new MassiveSet<String>("jump");
|
||||||
public static final Set<String> ALIASES_WORLD = new MassiveSet<String>("w", "world", "worldspawn", "wspawn");
|
public static final Set<String> ALIASES_WORLD = new MassiveSet<String>("w", "world", "spawn", "wspawn", "worldspawn");
|
||||||
public static final Set<String> ALIASES_PLAYER = new MassiveSet<String>("p", "player", "here", "me", "self");
|
public static final Set<String> ALIASES_PLAYER = new MassiveSet<String>("p", "player", "here", "me", "self");
|
||||||
|
|
||||||
public Destination destinationArg(String arg, CommandSender sender) throws MassiveException
|
public Destination destinationArg(String arg, CommandSender sender) throws MassiveException
|
||||||
|
@ -2,6 +2,9 @@ package com.massivecraft.massivecore;
|
|||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.store.ComparatorEntityId;
|
||||||
|
import com.massivecraft.massivecore.store.Entity;
|
||||||
|
|
||||||
public class PriorityComparator implements Comparator<Prioritized>
|
public class PriorityComparator implements Comparator<Prioritized>
|
||||||
{
|
{
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
@ -16,21 +19,30 @@ public class PriorityComparator implements Comparator<Prioritized>
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(Prioritized one, Prioritized two)
|
public int compare(Prioritized p1, Prioritized p2)
|
||||||
{
|
{
|
||||||
if (one == null && two == null) return 0;
|
// Null
|
||||||
if (two == null) return 1;
|
if (p1 == null && p2 == null) return 0;
|
||||||
if (one == null) return -1;
|
if (p1 == null) return -1;
|
||||||
|
if (p2 == null) return +1;
|
||||||
|
|
||||||
int ret = Integer.valueOf(one.getPriority()).compareTo(two.getPriority());
|
// Equals
|
||||||
|
if (p1.equals(p2)) return 0;
|
||||||
|
|
||||||
|
// Priority
|
||||||
|
int ret = Integer.compare(p1.getPriority(), p2.getPriority());
|
||||||
|
if (ret != 0) return ret;
|
||||||
|
|
||||||
|
// Entity Id
|
||||||
|
if (p1 instanceof Entity<?> && p2 instanceof Entity<?>)
|
||||||
|
{
|
||||||
|
Entity<?> e1 = (Entity<?>)p1;
|
||||||
|
Entity<?> e2 = (Entity<?>)p2;
|
||||||
|
return ComparatorEntityId.get().compare(e1, e2);
|
||||||
|
}
|
||||||
|
|
||||||
// We should only return 0 if the items actually are equal.
|
// We should only return 0 if the items actually are equal.
|
||||||
if (ret == 0 && ! one.equals(two))
|
return p2.hashCode() - p1.hashCode();
|
||||||
{
|
|
||||||
ret = two.hashCode() - one.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,8 @@ public class ARDestination extends ARAbstract<Destination>
|
|||||||
Destination ret = event.getDestination();
|
Destination ret = event.getDestination();
|
||||||
if (ret == null) throw new MassiveException().addMsg("<b>Unknown destination \"<h>%s<b>\".", arg);
|
if (ret == null) throw new MassiveException().addMsg("<b>Unknown destination \"<h>%s<b>\".", arg);
|
||||||
|
|
||||||
if ( ! ret.hasPs()) throw new MassiveException().addMessage(ret.getMessagePsNull(sender));
|
// Throw exeption if ps is null.
|
||||||
|
ret.getPs(sender);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,15 @@ public class TeleportMixinDefault extends TeleportMixinAbstract
|
|||||||
String teleporteeId = IdUtil.getId(teleporteeObject);
|
String teleporteeId = IdUtil.getId(teleporteeObject);
|
||||||
if (!IdUtil.isPlayerId(teleporteeId)) throw new TeleporterException(Txt.parse("<white>%s <b>is not a player.", Mixin.getDisplayName(teleporteeId, IdUtil.getConsole())));
|
if (!IdUtil.isPlayerId(teleporteeId)) throw new TeleporterException(Txt.parse("<white>%s <b>is not a player.", Mixin.getDisplayName(teleporteeId, IdUtil.getConsole())));
|
||||||
|
|
||||||
if ( ! destination.hasPs()) throw new TeleporterException(destination.getMessagePsNull(teleporteeId));
|
PS ps;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ps = destination.getPs(teleporteeId);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new TeleporterException(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
String desc = destination.getDesc(teleporteeId);
|
String desc = destination.getDesc(teleporteeId);
|
||||||
if (delaySeconds > 0)
|
if (delaySeconds > 0)
|
||||||
@ -112,11 +120,11 @@ public class TeleportMixinDefault extends TeleportMixinAbstract
|
|||||||
Player teleportee = IdUtil.getPlayer(teleporteeId);
|
Player teleportee = IdUtil.getPlayer(teleporteeId);
|
||||||
if (teleportee != null)
|
if (teleportee != null)
|
||||||
{
|
{
|
||||||
teleportPlayer(teleportee, destination.getPs());
|
teleportPlayer(teleportee, ps);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Mixin.setSenderPs(teleporteeId, destination.getPs());
|
Mixin.setSenderPs(teleporteeId, ps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,12 @@ package com.massivecraft.massivecore.teleport;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
import com.massivecraft.massivecore.ps.PS;
|
import com.massivecraft.massivecore.ps.PS;
|
||||||
|
|
||||||
public interface Destination extends Serializable
|
public interface Destination extends Serializable
|
||||||
{
|
{
|
||||||
public PS getPs();
|
public PS getPs(Object watcherObject) throws MassiveException;
|
||||||
public boolean hasPs();
|
public boolean hasPs();
|
||||||
public String getMessagePsNull(Object watcherObject);
|
public String getMessagePsNull(Object watcherObject);
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.massivecraft.massivecore.teleport;
|
package com.massivecraft.massivecore.teleport;
|
||||||
|
|
||||||
|
import com.massivecraft.massivecore.MassiveException;
|
||||||
|
import com.massivecraft.massivecore.ps.PS;
|
||||||
import com.massivecraft.massivecore.ps.PSFormatHumanSpace;
|
import com.massivecraft.massivecore.ps.PSFormatHumanSpace;
|
||||||
import com.massivecraft.massivecore.util.Txt;
|
import com.massivecraft.massivecore.util.Txt;
|
||||||
|
|
||||||
@ -13,14 +15,41 @@ public abstract class DestinationAbstract implements Destination
|
|||||||
|
|
||||||
protected String desc = null;
|
protected String desc = null;
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ABSTRACT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public PS getPsInner()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PS getPs(Object watcherObject) throws MassiveException
|
||||||
|
{
|
||||||
|
PS ret = this.getPsInner();
|
||||||
|
if (ret == null)
|
||||||
|
{
|
||||||
|
throw new MassiveException().addMessage(this.getMessagePsNull(watcherObject));
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPs()
|
public boolean hasPs()
|
||||||
{
|
{
|
||||||
return this.getPs() != null;
|
try
|
||||||
|
{
|
||||||
|
return this.getPs(null) != null;
|
||||||
|
}
|
||||||
|
catch (MassiveException e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -34,7 +63,15 @@ public abstract class DestinationAbstract implements Destination
|
|||||||
public String getDesc(Object watcherObject)
|
public String getDesc(Object watcherObject)
|
||||||
{
|
{
|
||||||
if (this.desc != null) return this.desc;
|
if (this.desc != null) return this.desc;
|
||||||
return PSFormatHumanSpace.get().format(this.getPs());
|
try
|
||||||
|
{
|
||||||
|
PS ps = this.getPs(watcherObject);
|
||||||
|
return PSFormatHumanSpace.get().format(ps);
|
||||||
|
}
|
||||||
|
catch (MassiveException e)
|
||||||
|
{
|
||||||
|
return "null";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -28,7 +28,7 @@ public class DestinationJump extends DestinationPlayer
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
Player player = this.getPlayer();
|
Player player = this.getPlayer();
|
||||||
if (player == null) return null;
|
if (player == null) return null;
|
||||||
|
@ -44,7 +44,7 @@ public class DestinationPlayer extends DestinationAbstract
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
return Mixin.getSenderPs(this.playerId);
|
return Mixin.getSenderPs(this.playerId);
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class DestinationSimple extends DestinationAbstract
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
return this.ps;
|
return this.ps;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ public class DestinationThat extends DestinationPlayer
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
Player player = this.getPlayer();
|
Player player = this.getPlayer();
|
||||||
if (player == null) return null;
|
if (player == null) return null;
|
||||||
|
@ -28,7 +28,7 @@ public class DestinationThere extends DestinationPlayer
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
Player player = this.getPlayer();
|
Player player = this.getPlayer();
|
||||||
if (player == null) return null;
|
if (player == null) return null;
|
||||||
|
@ -28,7 +28,7 @@ public class DestinationTop extends DestinationPlayer
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
Player player = this.getPlayer();
|
Player player = this.getPlayer();
|
||||||
if (player == null) return null;
|
if (player == null) return null;
|
||||||
|
@ -55,7 +55,7 @@ public class DestinationWorld extends DestinationAbstract
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PS getPs()
|
public PS getPsInner()
|
||||||
{
|
{
|
||||||
String worldId = this.getWorldId();
|
String worldId = this.getWorldId();
|
||||||
if (worldId == null) return null;
|
if (worldId == null) return null;
|
||||||
|
@ -292,6 +292,7 @@ public class InventoryUtil
|
|||||||
|
|
||||||
public static ItemStack cloneItemStack(ItemStack itemStack)
|
public static ItemStack cloneItemStack(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
|
if (itemStack == null) return null;
|
||||||
return new ItemStack(itemStack);
|
return new ItemStack(itemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user