From 31853592678b1f796f18dc1ac803c0a188ec876c Mon Sep 17 00:00:00 2001 From: raven Date: Wed, 25 Mar 2026 16:35:24 -0500 Subject: reject invalid block placement --- server/level.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'server/level.go') diff --git a/server/level.go b/server/level.go index 17f8eb8..7b03aca 100644 --- a/server/level.go +++ b/server/level.go @@ -236,6 +236,27 @@ func (l *level) SetBlock(from phony.Actor, pos blockPos, block blockType) { }) } +func (l *level) TrySetBlock( + from phony.Actor, pos blockPos, block blockType, auth authLevel, + reject func(realBlock blockType)) { + l.mapM.GetBlock(from, pos, func(curBlock blockType) { + if blockDefinitions[curBlock].AuthLevel > auth { + from.Act(nil, func() {reject(curBlock)}) + return + } + def, ok := blockDefinitions[block] + if !ok && block > blockStoneBricks { + from.Act(nil, func() {reject(curBlock)}) + return + } + if def.AuthLevel > auth { + from.Act(nil, func() {reject(curBlock)}) + return + } + l.SetBlock(nil, pos, block) + }) +} + func (l *level) OnAddPlayer(from *player, name string, pos entityPos) { l.Act(from, func() { l.load() -- cgit v1.2.3