Skip to content

Commit d2ecbd7

Browse files
committed
Resolved #19. (Implement permissions for block break and block place events.)
Signed-off-by: Pavel Erokhin (MairwunNx) <[email protected]>
1 parent f9bfd3a commit d2ecbd7

File tree

1 file changed

+44
-0
lines changed
  • src/main/kotlin/com/mairwunnx/projectessentials/permissions

1 file changed

+44
-0
lines changed

src/main/kotlin/com/mairwunnx/projectessentials/permissions/EntryPoint.kt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.mairwunnx.projectessentials.permissions
22

33
import com.mairwunnx.projectessentials.core.EssBase
4+
import com.mairwunnx.projectessentials.core.extensions.sendMsg
45
import com.mairwunnx.projectessentials.permissions.commands.PermissionsCommand
56
import com.mairwunnx.projectessentials.permissions.permissions.PermissionBase
67
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
8+
import net.minecraft.entity.player.ServerPlayerEntity
79
import net.minecraftforge.common.MinecraftForge
10+
import net.minecraftforge.event.world.BlockEvent
811
import net.minecraftforge.eventbus.api.SubscribeEvent
912
import net.minecraftforge.fml.common.Mod
1013
import net.minecraftforge.fml.event.server.FMLServerStartingEvent
@@ -38,6 +41,47 @@ internal class EntryPoint : EssBase() {
3841
PermissionBase.saveData()
3942
}
4043

44+
@SubscribeEvent
45+
internal fun onBlockPlaceEvent(event: BlockEvent.EntityPlaceEvent) {
46+
if (event.entity is ServerPlayerEntity) {
47+
val player = event.entity as ServerPlayerEntity
48+
when {
49+
!PermissionsAPI.hasPermission(
50+
player.name.string, "native.event.modifyworld"
51+
) && !PermissionsAPI.hasPermission(
52+
player.name.string, "native.event.block.place"
53+
) -> {
54+
sendMsg(
55+
"permissions",
56+
player.commandSource,
57+
"perm.block_break.place"
58+
)
59+
event.isCanceled = true
60+
return
61+
}
62+
}
63+
}
64+
}
65+
66+
@SubscribeEvent
67+
internal fun onBlockBreakEvent(event: BlockEvent.BreakEvent) {
68+
when {
69+
!PermissionsAPI.hasPermission(
70+
event.player.name.string, "native.event.modifyworld"
71+
) && !PermissionsAPI.hasPermission(
72+
event.player.name.string, "native.event.block.break"
73+
) -> {
74+
sendMsg(
75+
"permissions",
76+
event.player.commandSource,
77+
"perm.block_break.restricted"
78+
)
79+
event.isCanceled = true
80+
return
81+
}
82+
}
83+
}
84+
4185
internal companion object {
4286
internal lateinit var modInstance: EntryPoint
4387
var cooldownsInstalled: Boolean = false

0 commit comments

Comments
 (0)