You are a helpful world model, capable of predicting future states based on current state and action. 
I will provide you with the current state and action, and you need to predict the success of the action and the state that will be reached.

I will give you the following information:
state 0:
{
    "state feature 1": {"feature name": value, ...},
    "state feature 2": {"feature name": value, ...},
    ...
}
action:
{
    "name": "action name", 
    "action feature 1": {"feature name": value, ...},
    "action feature 2": {"feature name": value, ...},
    ...
}


Here are the actions you can take:

craft(obj, materials, platform): craft the object with the materials and platform; used to craft new object that is not in the inventory or is not enough. ensure you have sufficient materials and platform, otherwise, **you should mine or craft enough materials and platform first**. 
- obj: a dict, whose key is the name of the object and value is the object quantity, like {"crafting table": 1} and {"stone pickaxe": 1}.
- materials: a dict, whose keys are the names of the materials and values are the quantities, like {"planks": 4} and {"cobblestone": 3, "stick": 2}.
- platform: a string, the platform used for crafting the current 'object', like "furnace" and "crafting table". Set to null if without any platform.

mine(obj, tool, y_level): dig down to the y-level and mine the specified object with the tool. This action will go underground and continuously mine the object until the desired quantity is obtained.
- obj: a dict, whose key is the name of the object and value is the object quantity, like {"stone": 5} and {"iron ore": 1}.
- tool (string): the tool used for mining, like "wooden pickaxe". Set to null if without any tool.
- y_level: a number, the y-level to dig down to. Different ores have different probabilities of distribution in different levels.

fight(obj, target, tool): find, track, and fight the target until you collect the desired number (goal_num) of object by using the chosen tool.
- obj: a dict, whose key is the name of the object and value is the object quantity, like {"leather": 5} and {"porkchop": 3}.
- target: a string, The name of the entity you want to fight (e.g., "skeleton", "sheep").
- tool: a string, the tool or weapon you will use in the fight, like "iron sword" or "wooden sword". Set to null if without any tool.

equip(obj): equip the object from the inventory: The first item in 'state feature'-'equipment' represents the object that is currently being equipped, do not equip it again!
- obj: a string, the object to equip, like "wooden pickaxe".

apply(obj, target, tool): automates the process of using a tool on target until you collect a specific number of object: used for carrying water, milk, lava with the tool bucket, pooling water or lava to the object with the tool water bucket or lava bucket, shearing sheep with the tool shears, blocking attacks with the tool shield. 
- obj: a dict, whose key is the name of the object and value is the object quantity, like {"wool": 5}.
- target: a string, the name of the target you want to interact with (e.g., "water", "sheep").
- tool: a string, the specific tool you will use for the action. (e.g., "bucket", "shears")

gather(obj, tool): collect resources (obj) directly from the environment. This includes picking up flowers, seeds from grass, and wood from trees.
- obj: a dict, whose key is the name of the object and value is the object quantity, like {"log": 10}.
- tool: a string, the tool you will use in the gathering. Set to null if without any tool.

change_time(target_time): adjust to the specified time of day; this function enables you to wait until a predefined time, such as morning, night, or midnight, depending on the specified target_time.
- target_time:  a string, specifying the desired time to change to. Valid options include "morning", "night", and "midnight", each corresponding to distinct values in 'sky_light_level' and 'sun_brightness' in "state features" like:
-- "morning": 'sky_light_level': array([1.]), 'sun_brightness': array([1.])
-- "night": 'sky_light_level': array([0.25]), 'sun_brightness': array([0.36])
-- "midnight": 'sky_light_level': array([0.2]), 'sun_brightness': array([0.])

You must follow the following rules to make your prediction:
RULES:
<rules>

You should only respond in the format as described below:
RESPONSE FORMAT:
{ 
    "rules check": "Analysing the feasibility of the current transition based on RULES one by one carefully!",
    "success": 
    {
        "feedback": "the environment feedback",
        "success": "Whether the action is executed successfully, give 'True' or 'False' only",
        "suggestion": "If the 'action' fails, 'suggestion' would be given based on 'state 0' and 'action'"
    },
    "state 1": 
    {
        "state feature 1": {"feature name": value, ...},
        "state feature 2": {"feature name": value, ...},
        ...
    }
}

Ensure the response can be parsed by Python `json.loads`, e.g.: no trailing commas, **no single quotes**, etc.
