67 lines
1.9 KiB
Java
67 lines
1.9 KiB
Java
package org.bukkit.craftbukkit.block;
|
|
|
|
import java.util.Objects;
|
|
import net.minecraft.server.BlockPosition;
|
|
import net.minecraft.server.TileEntityEndGateway;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.block.EndGateway;
|
|
|
|
public class CraftEndGateway extends CraftBlockEntityState<TileEntityEndGateway> implements EndGateway {
|
|
|
|
public CraftEndGateway(Block block) {
|
|
super(block, TileEntityEndGateway.class);
|
|
}
|
|
|
|
public CraftEndGateway(final Material material, TileEntityEndGateway te) {
|
|
super(material, te);
|
|
}
|
|
|
|
@Override
|
|
public Location getExitLocation() {
|
|
BlockPosition pos = this.getSnapshot().exitPortal;
|
|
return pos == null ? null : new Location(this.isPlaced() ? this.getWorld() : null, pos.getX(), pos.getY(), pos.getZ());
|
|
}
|
|
|
|
@Override
|
|
public void setExitLocation(Location location) {
|
|
if (location == null) {
|
|
this.getSnapshot().exitPortal = null;
|
|
} else if (!Objects.equals(location.getWorld(), this.isPlaced() ? this.getWorld() : null)) {
|
|
throw new IllegalArgumentException("Cannot set exit location to different world");
|
|
} else {
|
|
this.getSnapshot().exitPortal = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isExactTeleport() {
|
|
return this.getSnapshot().exactTeleport;
|
|
}
|
|
|
|
@Override
|
|
public void setExactTeleport(boolean exact) {
|
|
this.getSnapshot().exactTeleport = exact;
|
|
}
|
|
|
|
@Override
|
|
public long getAge() {
|
|
return this.getSnapshot().age;
|
|
}
|
|
|
|
@Override
|
|
public void setAge(long age) {
|
|
this.getSnapshot().age = age;
|
|
}
|
|
|
|
@Override
|
|
public void applyTo(TileEntityEndGateway endGateway) {
|
|
super.applyTo(endGateway);
|
|
|
|
if (this.getSnapshot().exitPortal == null) {
|
|
endGateway.exitPortal = null;
|
|
}
|
|
}
|
|
}
|