You need to offset the vertexbuffer/gl matrix(whichever you are using) before rendering the lines at the desired position.
Think of it this way:
Every time MC renders the world it offsets everything based on the player's position.
The RenderWorldLast event is fired when those offsets are applied.
If you want your outline to be stationary and not follow the player you need to 'negate' them by offsetting your rendering back to where it was(0,0,0) and then render at the desired position(x,y,z).
So your rendering would then look like
calculate offsets
offset(-offsets)
render boxes loop
offset(offsets).
As I usually do, here is a simple example:
// your positions. You might want to shift them a bit too
int sX = yourX;
int sY = yourY;
int sZ = yourZ;
// Usually the player
Entity entity = Minecraft.getMinecraft().getRenderViewEntity();
//Interpolating everything back to 0,0,0. These are transforms you can find at RenderEntity class
double d0 = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double)evt.getPartialTicks();
double d1 = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double)evt.getPartialTicks();
double d2 = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double)evt.getPartialTicks();
//Apply 0-our transforms to set everything back to 0,0,0
Tessellator.getInstance().getBuffer().setTranslation(-d0, -d1, -d2);
//Your render function which renders boxes at a desired position. In this example I just copy-pasted the one on TileEntityStructureRenderer
renderBox(Tessellator.getInstance(), Tessellator.getInstance().getBuffer(), sX, sY, sZ, sX + 1, sY + 1, sZ + 1);
//When you are done rendering all your boxes reset the offsets. We do not want everything that renders next to still be at 0,0,0 :)
Tessellator.getInstance().getBuffer().setTranslation(0, 0, 0);
note that if you want to outline more than 1 box like this you would need to apply player offsets first, then render your boxes in a loop, then reset the offsets.
This is a result I get with my example: