Minescript Basics 02 – Core Features


🎥 YouTube


08 – Move and Jump

A simple movement demo: simulate pressing the forward key and then jump.

player.press_forward()

Simulates the player holding down the forward (W) key.
This function keeps the player moving forward until player.release_forward() is called.
https://minescript.net/docs/#player_press_forward

player.press_jump()

Simulates the player holding down the jump (space) key.
The player will continue jumping until player.release_jump() is called.
https://minescript.net/docs/#player_press_jump

import minescript as m
import time

# Move forward briefly
m.player_press_forward(True)
time.sleep(0.5)
m.player_press_forward(False)

# Jump
m.player_press_jump(True)
time.sleep(0.2)
m.player_press_jump(False)

09 – Look Forward and Get Target Block

Set the player’s orientation and detect the block being targeted.

player.get_targeted_block()

Returns information about the block the player is currently looking at.
Useful for detecting interactions with the environment.
https://minescript.net/docs/#player_get_targeted_block

import minescript as m

# Face forward
# m.player_set_orientation(0, 0)

# Get the targeted block
block = m.player_get_targeted_block(10)
if block:
    m.echo(f"Target Block: {block.type} @ {block.position}")
else:
    m.echo("No block in crosshairs")

10 – Right Click to Use Item

Right-click (use) the block in front of the player.

player.look_at(x, y, z)

Turns the player’s view to face the specified coordinates.
Helpful for aiming or orienting toward specific targets.
https://minescript.net/docs/#player_look_at

player.press_use()

Simulates pressing the use (right-click) key.
This can be used for interacting with blocks, entities, or items.
https://minescript.net/docs/#player_press_use

import minescript as m
import time

# Give oak sapling to main hand
m.execute("/item replace entity @p hotbar.0 with minecraft:oak_sapling")

# Get current player position
x, y, z = m.player_position()
# Look at the ground 3 blocks ahead
m.player_look_at(x, y - 1, z + 3)

# Right-click to use (try to plant the sapling)
m.player_press_use(True)
time.sleep(0.2)
m.player_press_use(False)

11 – Check Hand Items and Inventory

View what the player is holding and what’s in their inventory.

player.hand_items()

Returns a tuple with the items currently held in the player’s main and off hands.
Useful for checking what the player is holding before performing actions.
https://minescript.net/docs/#player_hand_items

player.inventory()

Returns a list of items in the player’s inventory.
Allows inspection or processing of inventory contents.
https://minescript.net/docs/#player_inventory

import minescript as m

# Check items in both hands
hands = m.player_hand_items()
m.echo(f"Main hand: {hands.main_hand.item}")
m.echo(f"Off hand: {hands.off_hand.item}")

# Show inventory items
for item in m.player_inventory():
    m.echo(f"Slot {item.slot}: {item.item} x{item.count}")
import minescript as m

m.execute('/item replace entity @p weapon.mainhand with minecraft:diamond_sword')
m.execute('/item replace entity @p armor.head with minecraft:diamond_helmet')
m.execute('/item replace entity @p armor.chest with minecraft:diamond_chestplate')
m.execute('/item replace entity @p armor.legs with minecraft:diamond_leggings')
m.execute('/item replace entity @p armor.feet with minecraft:diamond_boots')
m.execute('/item replace entity @p weapon.offhand with minecraft:shield')
m.execute('/item replace entity @p hotbar.1 with minecraft:oak_sapling 6')
m.execute('/item replace entity @p hotbar.2 with minecraft:carrot 10')
m.execute('/item replace entity @p hotbar.3 with minecraft:iron_sword 1')
m.execute('/item replace entity @p hotbar.4 with minecraft:bread 3')

12 – React to Chat Event

React to specific messages typed in chat (e.g., jump when player types “sample”).

register_chat_listener()

Registers a listener to detect when players send chat messages.
Used for triggering actions based on chat input.
https://minescript.net/docs/#register_chat_listener

import minescript as m
import time

with m.EventQueue() as events:
    events.register_chat_listener()
    m.echo("Type 's a m p l e' in chat to jump! Please remove the spaces.")

    while True:
        event = events.get()
        if event.type == m.EventType.CHAT and "sample" in event.message.lower():
            m.echo("Jumping!")
            m.player_press_jump(True)
            time.sleep(0.3)
            m.player_press_jump(False)

# Using "jump" would cause continuous jumping,
# so I use "sample" instead. 
# There are ways to avoid this, but they make the code longer,
# so I keep it simple here. 
# Considering future tutorials to improve this code step-by-step.


13 – Auto Walk and Interact

Auto-walk forward while periodically using the item in hand.

import minescript as m
import time

m.execute('/give @p minecraft:sweet_berries 64')

m.echo("Auto walking started")

while True:
    m.player_press_forward(True)
    m.player_press_use(True)
    time.sleep(0.2)
    m.player_press_use(False)
    time.sleep(1)

# This will keep walking forever, so please stop it with "\killjob -1".
# There are ways to avoid this, but they make the code longer,
# so I keep it simple here. 
# Considering future tutorials to improve this code step-by-step.


14 – Auto Fishing System

Cast a fishing rod, detect bobber movement, and reel in when there’s a bite.

import minescript as m
import time

m.execute('/item replace entity @p hotbar.0 with minecraft:fishing_rod')
map_enchants = [
    "minecraft:luck_of_the_sea 3",
    "minecraft:lure 3",
    "minecraft:unbreaking 3",
    "minecraft:mending 1"
]
for ench in map_enchants:
    m.execute(f"/enchant @p {ench}")

def find_bobber():
    for entity in m.entities():
        if "fishing_bobber" in entity.type.lower():
            return entity
    return None

def wait_for_bite(bobber, timeout=30):
    start = time.time()
    last_y = bobber.position[1]
    while time.time() - start < timeout:
        entity = find_bobber()
        if entity:
            y = entity.position[1]
            if y - last_y > 0.2:
                return True
            last_y = y
        time.sleep(0.1)
    return False

while True:
    m.player_press_use(True)
    m.player_press_use(False)
    time.sleep(2)

    bobber = find_bobber()
    if bobber and wait_for_bite(bobber):
        m.echo("Fish caught!")
        m.player_press_use(True)
        m.player_press_use(False)

    time.sleep(1)

# This will keep fishing forever, so please stop it with "\killjob -1".
# There are ways to avoid this, but they make the code longer,
# so I keep it simple here. 
# Considering future tutorials to improve this code step-by-step.