--- a/net/minecraft/network/protocol/game/ClientboundInitializeBorderPacket.java
+++ b/net/minecraft/network/protocol/game/ClientboundInitializeBorderPacket.java
@@ -7,9 +7,8 @@
 import net.minecraft.world.level.border.WorldBorder;
 
 public class ClientboundInitializeBorderPacket implements Packet<ClientGamePacketListener> {
-    public static final StreamCodec<FriendlyByteBuf, ClientboundInitializeBorderPacket> STREAM_CODEC = Packet.codec(
-        ClientboundInitializeBorderPacket::write, ClientboundInitializeBorderPacket::new
-    );
+
+    public static final StreamCodec<FriendlyByteBuf, ClientboundInitializeBorderPacket> STREAM_CODEC = Packet.codec(ClientboundInitializeBorderPacket::write, ClientboundInitializeBorderPacket::new);
     private final double newCenterX;
     private final double newCenterZ;
     private final double oldSize;
@@ -31,8 +30,10 @@
     }
 
     public ClientboundInitializeBorderPacket(WorldBorder worldBorder) {
-        this.newCenterX = worldBorder.getCenterX();
-        this.newCenterZ = worldBorder.getCenterZ();
+        // CraftBukkit start - multiply out nether border
+        this.newCenterX = worldBorder.getCenterX() * worldBorder.world.dimensionType().coordinateScale();
+        this.newCenterZ = worldBorder.getCenterZ() * worldBorder.world.dimensionType().coordinateScale();
+        // CraftBukkit end
         this.oldSize = worldBorder.getSize();
         this.newSize = worldBorder.getLerpTarget();
         this.lerpTime = worldBorder.getLerpRemainingTime();
@@ -57,7 +58,6 @@
         return GamePacketTypes.CLIENTBOUND_INITIALIZE_BORDER;
     }
 
-    @Override
     public void handle(ClientGamePacketListener listener) {
         listener.handleInitializeBorder(this);
     }
