From c477a31e48a94c199a2627b17e17d1b8ba2e2a5d Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Tue, 16 Feb 2021 13:43:57 +0800 Subject: [PATCH] Provide default implementation for WorldPosCallable (#161) --- .../bridge/util/IWorldPosCallableBridge.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/util/IWorldPosCallableBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/util/IWorldPosCallableBridge.java index b7594b1b..d0d28287 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/util/IWorldPosCallableBridge.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/util/IWorldPosCallableBridge.java @@ -1,17 +1,29 @@ package io.izzel.arclight.common.bridge.util; import io.izzel.arclight.common.bridge.world.WorldBridge; +import net.minecraft.util.IWorldPosCallable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.bukkit.Location; +import org.bukkit.craftbukkit.v.CraftWorld; public interface IWorldPosCallableBridge { - World bridge$getWorld(); + default World bridge$getWorld() { + return ((IWorldPosCallable) this).apply((a, b) -> a).orElse(null); + } - BlockPos bridge$getPosition(); + default BlockPos bridge$getPosition() { + return ((IWorldPosCallable) this).apply((a, b) -> b).orElse(null); + } default Location bridge$getLocation() { - return new Location(((WorldBridge) bridge$getWorld()).bridge$getWorld(), bridge$getPosition().getX(), bridge$getPosition().getY(), bridge$getPosition().getZ()); + CraftWorld world = ((WorldBridge) bridge$getWorld()).bridge$getWorld(); + BlockPos blockPos = bridge$getPosition(); + if (blockPos == null) { + return null; + } else { + return new Location(world, blockPos.getX(), blockPos.getY(), blockPos.getZ()); + } } }