I just made a vanilla Minecraft 1.10.2 server and I want the server to send a personalized message every 30 minutes and if possible also clear all dropped items. Thank you.


First, make an objective:

/scoreboard objectives add time dummy

Then, on an always active repeat command block, have the following command:

/scoreboard players add Timer time 1

On a chain command block coming out of it:

/scoreboard players test Timer time 36000

The 36000 is the result of 20 (ticks) * 60 (seconds) * 30 (minutes)

Next, have a conditional chain command block running out of that command block:

/tellraw @a {"text":"whatever you want"}

And another conditional chain for the item clear:

/kill @e[type=Item]

Lastly, the time score must be reset with a conditional chain command block:

/scoreboard players reset Timer time


I wrote a script that does exactly this as one of its functions.

https://github.com/Veritas83/Minecraft.SNAPSHOT.Commands.Mod

Here is the relevant code I used to do what you're asking. You can disable all functions of the script and just use this function in the config :)

In config, make sure useautoclear is True

For 30min timer set, autoclearint to 1800.

Adjust the rest of the config to your needs. Setting your own MOTD and command line to start your server.

##
#Timed Functions
##
if useautosave == True and ((currtime - lasttimesave) > autosaveint):
    lasttimesave = time.time()
    autosave = "save-all\n"
    print "[" + get24hrtime() + "] [Script thread/EXEC]: " + autosave,
    p.stdin.write(autosave)
    autosave = 'tellraw @a {"text":"World saved. Autosave by ' + ver + '","color":"yellow"}\n'
    print "[" + get24hrtime() + "] [Script thread/EXEC]: " + autosave,
    p.stdin.write(autosave)
if useautoclear == True and ((currtime - lasttimeclear) > (autoclearint-60)):
    if clearwarn60 == False:
        if ((currtime - lasttimeclear) > (autoclearint-60)):
            autoclear = 'tellraw @a {"text":"Clearing Items in 1 minute!","color":"aqua"}\n'
            clearwarn60 = True
            print "[" + get24hrtime() + "] [Script thread/EXEC]: " + autoclear,
            p.stdin.write(autoclear)
    if clearwarn10 == False:
        if ((currtime - lasttimeclear) > (autoclearint-10)):
            autoclear = 'tellraw @a {"text":"Clearing items in 10 seconds!","color":"aqua"}\n'
            clearwarn10 = True
            print "[" + get24hrtime() + "] [Script thread/EXEC]: " + autoclear,
            p.stdin.write(autoclear)
if useautoclear == True and ((currtime - lasttimeclear) > autoclearint):
    lasttimeclear = time.time()
    autoclear = "kill @e[type=Item]\n"
    print "[" + get24hrtime() + "] [Script thread/EXEC]: " + autoclear,
    p.stdin.write(autoclear)
    autoclear = 'tellraw @a {"text":"Items cleared. Autoclear by ' + ver +  '","color":"aqua"}\nlist\n'
    p.stdin.write(autoclear)
    clearwarn60 = False
    clearwarn10 = False