diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt b/src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt index 9d91cda..f838950 100644 --- a/src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt +++ b/src/main/kotlin/io/dico/parcels2/listener/ParcelListeners.kt @@ -198,8 +198,8 @@ class ParcelListeners( val type = clickedBlock.type val interactableClass = Interactables[type] - if (interactableClass != null && (parcel.effectiveInteractableConfig.isInteractable(type) || (parcel != null && parcel.canBuild(user)))) { - user.sendParcelMessage(nopermit = true, message = "You cannot interact with ${interactableClass.name} in this parcel") + if (interactableClass != null && !parcel.effectiveInteractableConfig.isInteractable(type) && (parcel == null || !parcel.canBuild(user))) { + user.sendParcelMessage(nopermit = true, message = "You cannot interact with ${interactableClass.name} here") event.isCancelled = true return@l } @@ -595,4 +595,16 @@ class ParcelListeners( storage.updatePlayerName(event.player.uuid, event.player.name) } + /** + * Attempts to prevent redstone contraptions from breaking while they are being swapped + * Might remove if it causes lag + */ + @ListenerMarker + val onBlockRedstoneEvent = RegistratorListener<BlockRedstoneEvent> l@{ event -> + val (_, area) = getWorldAndArea(event.block) ?: return@l + if (area == null || area.hasBlockVisitors) { + event.newCurrent = event.oldCurrent + } + } + }
\ No newline at end of file |