mirror of
https://github.com/LegacyModdingMC/ChunkAPI.git
synced 2026-10-25 20:22:35 +00:00
51 lines
1.9 KiB
Java
51 lines
1.9 KiB
Java
/*
|
|
* ChunkAPI
|
|
*
|
|
* Copyright (C) 2023-2025 FalsePattern, The MEGA Team, LegacyModdingMC contributors
|
|
* All Rights Reserved
|
|
*
|
|
* The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, only version 3 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package com.falsepattern.chunk.internal;
|
|
|
|
public class BlockPosUtil {
|
|
private static final int NUM_X_BITS = 26;
|
|
private static final int NUM_Z_BITS = 26;
|
|
private static final int NUM_Y_BITS = 64 - NUM_X_BITS - NUM_Z_BITS;
|
|
private static final long Y_MASK = (1L << NUM_Y_BITS) - 1L;
|
|
private static final int Y_SHIFT = NUM_Z_BITS;
|
|
private static final int X_SHIFT = Y_SHIFT + NUM_Y_BITS;
|
|
private static final long Z_MASK = (1L << NUM_Z_BITS) - 1L;
|
|
private static final long X_MASK = (1L << NUM_X_BITS) - 1L;
|
|
|
|
public static long packToLong(int x, int y, int z) {
|
|
return ((long) x & X_MASK) << X_SHIFT | ((long) y & Y_MASK) << Y_SHIFT | ((long) z & Z_MASK);
|
|
}
|
|
|
|
public static int getX(long packed) {
|
|
return (int) (packed << 64 - X_SHIFT - NUM_X_BITS >> 64 - NUM_X_BITS);
|
|
}
|
|
|
|
public static int getY(long packed) {
|
|
return (int) (packed << 64 - Y_SHIFT - NUM_Y_BITS >> 64 - NUM_Y_BITS);
|
|
}
|
|
|
|
public static int getZ(long packed) {
|
|
return (int) (packed << 64 - NUM_Z_BITS >> 64 - NUM_Z_BITS);
|
|
}
|
|
}
|