Skip to content

Commit 970b4fa

Browse files
Merge pull request #29 from SLNE-Development/feat/custom-chest-access-listener
feat: update Gradle version and enhance inventory move event handling…
2 parents 13c94b3 + e57ff4a commit 970b4fa

6 files changed

Lines changed: 60 additions & 24 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
kotlin.code.style=official
22
kotlin.stdlib.default.dependency=false
33
org.gradle.parallel=true
4-
version=3.2.2-SNAPSHOT
4+
version=3.2.3

gradle/wrapper/gradle-wrapper.jar

521 Bytes
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip
44
networkTimeout=10000
5+
retries=0
6+
retryBackOffMs=500
57
validateDistributionUrl=true
68
zipStoreBase=GRADLE_USER_HOME
79
zipStorePath=wrapper/dists

gradlew

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 10 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/kotlin/dev/slne/surf/protect/paper/listener/listeners/RegionListener.kt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package dev.slne.surf.protect.paper.listener.listeners
22

3+
import com.jeff_media.morepersistentdatatypes.DataType
34
import com.sk89q.worldguard.protection.flags.Flags
45
import com.sk89q.worldguard.protection.flags.StateFlag
6+
import dev.slne.surf.api.paper.util.namespacedKey
57
import dev.slne.surf.protect.paper.region.flags.ProtectionFlagsRegistry
68
import dev.slne.surf.protect.paper.util.getProtectedRegions
79
import dev.slne.surf.protect.paper.util.isGlobalRegion
810
import org.bukkit.Location
911
import org.bukkit.Tag
1012
import org.bukkit.block.Block
1113
import org.bukkit.entity.FallingBlock
14+
import org.bukkit.entity.minecart.HopperMinecart
1215
import org.bukkit.event.EventHandler
1316
import org.bukkit.event.EventPriority
1417
import org.bukkit.event.Listener
@@ -18,6 +21,8 @@ import org.bukkit.event.block.BlockIgniteEvent
1821
import org.bukkit.event.block.BlockIgniteEvent.IgniteCause
1922
import org.bukkit.event.entity.EntityChangeBlockEvent
2023
import org.bukkit.event.entity.EntityExplodeEvent
24+
import org.bukkit.event.entity.EntityPlaceEvent
25+
import org.bukkit.event.inventory.InventoryMoveItemEvent
2126

2227

2328
object RegionListener : Listener {
@@ -82,6 +87,46 @@ object RegionListener : Listener {
8287
}
8388
}
8489

90+
private val creator = namespacedKey("creator")
91+
92+
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
93+
fun onMinecartPlace(event: EntityPlaceEvent) {
94+
val vehicle = event.entity
95+
if (vehicle !is HopperMinecart) return
96+
97+
val player = event.player ?: return
98+
99+
vehicle.persistentDataContainer.set(
100+
creator,
101+
DataType.UUID,
102+
player.uniqueId
103+
)
104+
}
105+
106+
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
107+
fun onInvMove(event: InventoryMoveItemEvent) {
108+
val sourceHolder = event.source.holder
109+
val destHolder = event.destination.holder
110+
111+
val minecart = sourceHolder as? HopperMinecart ?: destHolder as? HopperMinecart ?: return
112+
113+
val protection = (event.destination.location ?: event.source.location)
114+
?.getProtectedRegions()
115+
?.firstOrNull()
116+
?: return
117+
118+
val ownerUuid =
119+
minecart.persistentDataContainer.get(creator, DataType.UUID) ?: return
120+
121+
val allowed =
122+
protection.members.contains(ownerUuid) ||
123+
protection.owners.contains(ownerUuid)
124+
125+
if (!allowed) {
126+
event.isCancelled = true
127+
}
128+
}
129+
85130
private fun gravityDeniedAt(location: Location) = location.getProtectedRegions().any {
86131
(it.getFlag(ProtectionFlagsRegistry.SURF_BLOCK_GRAVITY)
87132
?: StateFlag.State.ALLOW) == StateFlag.State.DENY

0 commit comments

Comments
 (0)