Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,23 @@ public class LockManager {
public static UnlockDataStorage UNLOCK_STORAGE;

public static void addLock(ServerLevel level, Lock lock) {
if (level == null)
return;
ClavisSavedData data = ClavisSavedData.get(level);
data.addLock(lock, level);
}

public static void removeLock(ServerLevel level, Lock lock) {
if (level == null)
return;
ClavisSavedData data = ClavisSavedData.get(level);
data.removeLock(lock, level);
}

public static void unlock(ServerLevel level, @Nullable ServerPlayer player, Lock lock) {
if (level == null)
return;

if (!lock.isPerPlayer()) {
removeLock(level, lock);
return;
Expand All @@ -53,6 +60,9 @@ public static void unlock(ServerLevel level, @Nullable ServerPlayer player, Lock
}

public static List<Lock> getLocksAt(ServerLevel level, @Nullable ServerPlayer player, ChunkPos pos) {
if (level == null)
return List.of();

ClavisSavedData data = ClavisSavedData.get(level);
List<Lock> locks = data.getLocksAt(pos);

Expand All @@ -67,6 +77,9 @@ public static List<Lock> getLocksAt(ServerLevel level, @Nullable ServerPlayer pl
}

public static List<Lock> getLocksAt(ServerLevel level, @Nullable ServerPlayer player, BlockPos pos) {
if (level == null)
return List.of();

ChunkPos chunkPos = new ChunkPos(pos);
List<Lock> chunkLocks = getLocksAt(level, player, chunkPos);

Expand All @@ -76,6 +89,9 @@ public static List<Lock> getLocksAt(ServerLevel level, @Nullable ServerPlayer pl
}

public static boolean isLocked(Level level, Player player, BlockPos pos) {
if (level == null)
return false;

if (level.isClientSide) {
return LockWorldRenderer.FOR_RENDERING.stream().anyMatch(lock -> lock.getBox().isInside(pos));
} else if (level instanceof ServerLevel serverLevel) {
Expand Down