Expands hit-box for END_GATEWAY for players with Bedrock names (WIP)
This commit is contained in:
@@ -41,6 +41,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* This listener listens to any player-related events related to stargates
|
||||
@@ -176,17 +177,11 @@ public class PlayerEventListener implements Listener {
|
||||
return false;
|
||||
}
|
||||
|
||||
//Check if the player moved from a portal
|
||||
Portal entrancePortal = PortalHandler.getByEntrance(toLocation);
|
||||
//Get the portal the player entered, if any
|
||||
Portal entrancePortal = getEnteredPortal(toLocation, player);
|
||||
if (entrancePortal == null) {
|
||||
//Check an additional block away for BungeeCord portals using END_PORTAL as its material
|
||||
entrancePortal = PortalHandler.getByAdjacentEntrance(toLocation);
|
||||
if (entrancePortal == null || !entrancePortal.getOptions().isBungee() ||
|
||||
!MaterialHelper.specifiersToMaterials(
|
||||
entrancePortal.getGate().getPortalOpenMaterials()).contains(Material.END_PORTAL)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Portal destination = entrancePortal.getPortalActivator().getDestination(player);
|
||||
|
||||
@@ -212,6 +207,36 @@ public class PlayerEventListener implements Listener {
|
||||
return TeleportHelper.noLeashedCreaturesPreventTeleportation(player);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the portal a player entered
|
||||
*
|
||||
* @param toLocation <p>The location the player moved to</p>
|
||||
* @param player <p>The player that moved</p>
|
||||
* @return <p>The portal the player entered, or null if no portal was entered</p>
|
||||
*/
|
||||
private Portal getEnteredPortal(@NotNull BlockLocation toLocation, @NotNull Player player) {
|
||||
Portal entrancePortal = PortalHandler.getByEntrance(toLocation);
|
||||
// Return if in an entrance
|
||||
if (entrancePortal != null) {
|
||||
return entrancePortal;
|
||||
}
|
||||
|
||||
//Check an additional block away for special cases like BungeeCord portals using END_PORTAL as its material
|
||||
entrancePortal = PortalHandler.getByAdjacentEntrance(toLocation);
|
||||
if (entrancePortal == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Set<Material> entranceMaterials = MaterialHelper.specifiersToMaterials(entrancePortal.getGate().getPortalOpenMaterials());
|
||||
|
||||
if ((player.getName().matches("^[a-zA-Z0-9_]{2,16}$") || !entranceMaterials.contains(Material.END_GATEWAY)) &&
|
||||
(!entrancePortal.getOptions().isBungee() || !entranceMaterials.contains(Material.END_PORTAL))) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return entrancePortal;
|
||||
}
|
||||
|
||||
/**
|
||||
* This event handler detects if a player clicks a button or a sign
|
||||
*
|
||||
|
Reference in New Issue
Block a user