After the debacle with the Magic Book and the new player rule agreement book, I came to realize how very restricted non-ops are - they can't even /give and /tp themselves. That got me to think of a way so that the server has the power to enable these powerful commands to the average player while also being in complete control of it.
Hence, I came up with the impulse system. I got the name from Half-Life's (more accurately the GoldSrc and Src engine's) implementation of the impulse command.
The implementation of the system is as follows:
- The impulse score is set to only trigger.
- Trigger is the only method available for non-op players to modify the scoreboard, and it relies on the server's command blocks to decide what to do with it.
- We then allow players to set their impulse score to a particular number (same way impulse works in HL) to do a particular thing.
- This can be done with books as well
- The server (using command blocks) detects the score of this impulse value, then does something on or around the player, then resets the score.
A way to selectively deny the system to certain players is to put them in a Parolee team, for example, and then the command player selector can be used to filter out players on that team.
Some examples of what we can do with the impulse system:
- Set day time and weather
- Give rare items not in creative inventory (eg lit furnace)
- Get blocks on the head armour slot (like /hat in bukkit-based servers)
- Tp player to places
- Place prefabricated structures (using /clone)
- Clear forests
- Emergency fire and TNT extinguisher
I currently have a rough draft of the integer ranges to be reserved to which function:
100 - 999 : frequently used stuff like /weather and /time
1000 - 1999 : /gives and /replaceitems
2000 - 2499 : /summons
2500 - 2599 : /fills, /clones, /entitydatas
3000 - 4999 : /tps
30xx : central province
31xx : north province
32xx : northeast province
33xx : east province
34xx : southeast province
35xx : south province
36xx : southwest province
37xx : west province
38xx : northwest province
41xx : north territory
42xx : northeast territory
43xx : east territory
44xx : southeast territory
45xx : south territory
46xx : southwest territory
47xx : west territory
48xx : northwest territory
9000 - 9999 : molster's private use
9000 - 9009 : roadbuilding
9000 : disable
9001 : dirt roads
9002 : cobble and gravel roads
9010 : disable track ballasting
9011 : enable track ballasting
Lastly, I'd like to see how many are interested in the development of this system. I don't want to over-engineer a system that no one will ever use...