Fixes code for slab checking to prevent the player from teleporting underneath the block

This commit is contained in:
Kristian Knarvik 2021-09-12 02:21:13 +02:00
parent f2332badb6
commit abd48b646d

View File

@ -23,6 +23,7 @@ import org.bukkit.block.data.Bisected;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Orientable;
import org.bukkit.block.data.Powerable;
import org.bukkit.block.data.type.Slab;
import org.bukkit.entity.Boat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
@ -879,7 +880,9 @@ public class Portal {
if (exitLocation != null) {
//Prevent traveller from spawning inside a slab
BlockData blockData = getWorld().getBlockAt(exitLocation).getBlockData();
if (blockData instanceof Bisected && ((Bisected) blockData).getHalf() == Bisected.Half.BOTTOM) {
if ((blockData instanceof Bisected && ((Bisected) blockData).getHalf() == Bisected.Half.BOTTOM) ||
(blockData instanceof Slab) && ((Slab) blockData).getType() == Slab.Type.BOTTOM) {
Stargate.debug("adjustExitLocation", "Added half a block to get above a slab");
exitLocation.add(0, 0.5, 0);
} else if (blockData.getMaterial() == Material.WATER) {
exitLocation.add(0, 1, 0);