Sensor Extender added, farming nodes added
parent
7fbf97d09f
commit
71936c773f
|
@ -85,6 +85,7 @@ minetest.register_node("signs_bot:bot_sensor_on", {
|
|||
after_place_node = function(pos)
|
||||
minetest.get_node_timer(pos):start(1)
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos, true)
|
||||
end,
|
||||
|
||||
on_timer = function(pos)
|
||||
|
|
|
@ -32,18 +32,21 @@ end
|
|||
local function swap_node(pos, name)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name == name then
|
||||
return
|
||||
return false
|
||||
end
|
||||
node.name = name
|
||||
minetest.swap_node(pos, node)
|
||||
return true
|
||||
end
|
||||
|
||||
local function node_timer(pos)
|
||||
local pos1 = lib.next_pos(pos, M(pos):get_int("param2"))
|
||||
local node = minetest.get_node_or_nil(pos1)
|
||||
if node and signs_bot.FarmingNodes[node.name] then
|
||||
signs_bot.send_signal(pos)
|
||||
swap_node(pos, "signs_bot:crop_sensor_on")
|
||||
if node and signs_bot.FarmingCrop[node.name] then
|
||||
if swap_node(pos, "signs_bot:crop_sensor_on") then
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos, true)
|
||||
end
|
||||
else
|
||||
swap_node(pos, "signs_bot:crop_sensor")
|
||||
end
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
--[[
|
||||
|
||||
Signs Bot
|
||||
=========
|
||||
|
||||
Copyright (C) 2019 Joachim Stolberg
|
||||
|
||||
LGPLv2.1+
|
||||
See LICENSE.txt for more information
|
||||
|
||||
Sensor Extender
|
||||
(passive node, the Sensor detects the extender)
|
||||
]]--
|
||||
|
||||
-- for lazy programmers
|
||||
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
|
||||
local P = minetest.string_to_pos
|
||||
local M = minetest.get_meta
|
||||
|
||||
-- Load support for intllib.
|
||||
local MP = minetest.get_modpath("signs_bot")
|
||||
local I,_ = dofile(MP.."/intllib.lua")
|
||||
|
||||
local lib = signs_bot.lib
|
||||
|
||||
local function update_infotext(pos, dest_pos, cmnd)
|
||||
M(pos):set_string("infotext", I("Sensor Extender: Connected with ")..S(dest_pos).." / "..cmnd)
|
||||
end
|
||||
|
||||
minetest.register_node("signs_bot:sensor_extender", {
|
||||
description = I("Sensor Extender"),
|
||||
inventory_image = "signs_bot_extender_inv.png",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "connected",
|
||||
fixed = {
|
||||
{-6/32, -1/2, -6/32, 6/32, -5/16, 6/32},
|
||||
},
|
||||
connect_front = {{-1/16, -1/2, -12/16, 1/16, -6/16, 1/16}},
|
||||
connect_left = {{-12/16, -1/2, -1/16, 1/16, -6/16, 1/16}},
|
||||
connect_back = {{-1/16, -1/2, -1/16, 1/16, -6/16, 12/16}},
|
||||
connect_right = {{-1/16, -1/2, -1/16, 12/16, -6/16, 1/16}},
|
||||
},
|
||||
connects_to = {"group:sign_bot_sensor"},
|
||||
tiles = {
|
||||
-- up, down, right, left, back, front
|
||||
"signs_bot_extender.png",
|
||||
"signs_bot_extender.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
},
|
||||
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = M(pos)
|
||||
meta:set_string("infotext", I("Sensor Extender: Not connected"))
|
||||
end,
|
||||
|
||||
update_infotext = update_infotext,
|
||||
on_rotate = screwdriver.disallow,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {sign_bot_sensor = 1, cracky = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("signs_bot:sensor_extender_on", {
|
||||
description = I("Sensor Extender"),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "connected",
|
||||
fixed = {
|
||||
{-6/32, -1/2, -6/32, 6/32, -5/16, 6/32},
|
||||
},
|
||||
connect_front = {{-1/16, -1/2, -12/16, 1/16, -6/16, 1/16}},
|
||||
connect_left = {{-12/16, -1/2, -1/16, 1/16, -6/16, 1/16}},
|
||||
connect_back = {{-1/16, -1/2, -1/16, 1/16, -6/16, 12/16}},
|
||||
connect_right = {{-1/16, -1/2, -1/16, 12/16, -6/16, 1/16}},
|
||||
},
|
||||
connects_to = {"group:sign_bot_sensor"},
|
||||
tiles = {
|
||||
-- up, down, right, left, back, front
|
||||
"signs_bot_extender_on.png",
|
||||
"signs_bot_extender.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
"signs_bot_extender_side.png",
|
||||
},
|
||||
|
||||
-- Called from the Sensor beside
|
||||
after_place_node = function(pos)
|
||||
minetest.get_node_timer(pos):start(1)
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos)
|
||||
end,
|
||||
|
||||
on_timer = function(pos)
|
||||
local node = lib.get_node_lvm(pos)
|
||||
node.name = "signs_bot:sensor_extender"
|
||||
minetest.swap_node(pos, node)
|
||||
return false
|
||||
end,
|
||||
|
||||
update_infotext = update_infotext,
|
||||
on_rotate = screwdriver.disallow,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
diggable = false,
|
||||
groups = {sign_bot_sensor = 1, not_in_creative_inventory = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "signs_bot:sensor_extender",
|
||||
recipe = {
|
||||
{"group:wood", "dye:yellow"},
|
||||
{"default:mese_crystal_fragment", "default:steel_ingot"}
|
||||
}
|
||||
})
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
--[[
|
||||
|
||||
Signs Bot
|
||||
=========
|
||||
|
||||
Copyright (C) 2019 Joachim Stolberg
|
||||
|
||||
LGPLv2.1+
|
||||
See LICENSE.txt for more information
|
||||
|
||||
Farming
|
||||
]]--
|
||||
|
||||
-- for lazy programmers
|
||||
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
|
||||
local P = minetest.string_to_pos
|
||||
local M = minetest.get_meta
|
||||
|
||||
-- Load support for intllib.
|
||||
local MP = minetest.get_modpath("signs_bot")
|
||||
local I,_ = dofile(MP.."/intllib.lua")
|
||||
|
||||
local lib = signs_bot.lib
|
||||
|
||||
local function planting(base_pos, pos, stack)
|
||||
if lib.not_protected(base_pos, pos) and lib.is_air_like(pos) then
|
||||
local item = signs_bot.FarmingSeed[stack:get_name()]
|
||||
print("planting", stack:get_name(), dump(signs_bot.FarmingSeed[stack:get_name()]))
|
||||
if item and item.seed then
|
||||
minetest.set_node(pos, {name = item.seed, paramtype2 = "wallmounted", param2 = 1})
|
||||
if item.t1 ~= nil then
|
||||
-- We have to simulate "on_place" and start the timer by hand
|
||||
-- because the after_place_node function checks player rights and can't therefore
|
||||
-- be used.
|
||||
minetest.get_node_timer(pos):start(math.random(item.t1, item.t2))
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function harvesting(base_pos, pos, inv, slot)
|
||||
if lib.not_protected(base_pos, pos) then
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
local item = signs_bot.FarmingCrop[node.name]
|
||||
if item and item.inv_crop then
|
||||
minetest.remove_node(pos)
|
||||
lib.put_inv_items(inv, "main", slot, ItemStack(item.inv_crop))
|
||||
if item.inv_seed then
|
||||
lib.put_inv_items(inv, "main", slot, ItemStack(item.inv_seed))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
signs_bot.register_botcommand("plant_seed", {
|
||||
mod = "core",
|
||||
params = "<slot>",
|
||||
description = I("Plant farming seeds\nin front of the robot"),
|
||||
check = function(slot)
|
||||
slot = tonumber(slot)
|
||||
return slot and slot > 0 and slot < 9
|
||||
end,
|
||||
cmnd = function(base_pos, mem, slot)
|
||||
slot = tonumber(slot)
|
||||
local pos = lib.dest_pos(mem.robot_pos, mem.robot_param2, {0})
|
||||
local inv = minetest.get_inventory({type="node", pos=base_pos})
|
||||
local item = lib.get_inv_items(inv, "main", slot, 1)
|
||||
if item then
|
||||
if not planting(base_pos, pos, item) then
|
||||
lib.put_inv_items(inv, "main", slot, item)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end,
|
||||
})
|
||||
|
||||
signs_bot.register_botcommand("harvest", {
|
||||
mod = "core",
|
||||
params = "<slot>",
|
||||
description = I("Harvest farming products\nin front of the robot"),
|
||||
check = function(slot)
|
||||
slot = tonumber(slot)
|
||||
return slot and slot > 0 and slot < 9
|
||||
end,
|
||||
cmnd = function(base_pos, mem, slot)
|
||||
slot = tonumber(slot)
|
||||
local pos = lib.dest_pos(mem.robot_pos, mem.robot_param2, {0})
|
||||
local inv = minetest.get_inventory({type="node", pos=base_pos})
|
||||
harvesting(base_pos, pos, inv, slot)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
|
2
init.lua
2
init.lua
|
@ -30,7 +30,9 @@ dofile(MP.."/changer.lua")
|
|||
dofile(MP.."/tool.lua")
|
||||
dofile(MP.."/bot_flap.lua")
|
||||
dofile(MP.."/more_cmnds.lua")
|
||||
dofile(MP.."/farming.lua")
|
||||
dofile(MP.."/nodes.lua")
|
||||
dofile(MP.."/extender.lua")
|
||||
dofile(MP.."/bot_sensor.lua")
|
||||
dofile(MP.."/node_sensor.lua")
|
||||
dofile(MP.."/crop_sensor.lua")
|
||||
|
|
25
lib.lua
25
lib.lua
|
@ -179,3 +179,28 @@ function signs_bot.lib.dig_sign(pos, node)
|
|||
return sign
|
||||
end
|
||||
end
|
||||
|
||||
local function activate_extender_node(pos)
|
||||
local node = get_node_lvm(pos)
|
||||
if node.name == "signs_bot:sensor_extender" then
|
||||
node.name = "signs_bot:sensor_extender_on"
|
||||
minetest.swap_node(pos, node)
|
||||
minetest.registered_nodes["signs_bot:sensor_extender_on"].after_place_node(pos)
|
||||
end
|
||||
end
|
||||
|
||||
local NestedCounter = 0
|
||||
function signs_bot.lib.activate_extender_nodes(pos, is_sensor)
|
||||
if is_sensor then
|
||||
NestedCounter = 0
|
||||
else
|
||||
NestedCounter = NestedCounter + 1
|
||||
if NestedCounter >= 5 then
|
||||
return
|
||||
end
|
||||
end
|
||||
activate_extender_node({x=pos.x-1, y=pos.y, z=pos.z})
|
||||
activate_extender_node({x=pos.x+1, y=pos.y, z=pos.z})
|
||||
activate_extender_node({x=pos.x, y=pos.y, z=pos.z-1})
|
||||
activate_extender_node({x=pos.x, y=pos.y, z=pos.z+1})
|
||||
end
|
||||
|
|
|
@ -68,7 +68,8 @@ signs_bot.register_botcommand("drop_items", {
|
|||
num = tonumber(num or 1)
|
||||
slot = tonumber(slot)
|
||||
local pos = lib.dest_pos(mem.robot_pos, mem.robot_param2, {0})
|
||||
local items = lib.get_inv_items("", "main", slot, num)
|
||||
local inv = minetest.get_inventory({type="node", pos=base_pos})
|
||||
local items = lib.get_inv_items(inv, "main", slot, num)
|
||||
minetest.add_item(pos, items)
|
||||
return true
|
||||
end,
|
||||
|
|
|
@ -32,18 +32,21 @@ end
|
|||
local function swap_node(pos, name)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name == name then
|
||||
return
|
||||
return false
|
||||
end
|
||||
node.name = name
|
||||
minetest.swap_node(pos, node)
|
||||
return true
|
||||
end
|
||||
|
||||
local function node_timer(pos)
|
||||
local pos1 = lib.next_pos(pos, M(pos):get_int("param2"))
|
||||
local node = minetest.get_node_or_nil(pos1)
|
||||
if node and node.name ~= "air" then
|
||||
signs_bot.send_signal(pos)
|
||||
swap_node(pos, "signs_bot:node_sensor_on")
|
||||
if swap_node(pos, "signs_bot:node_sensor_on") then
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos, true)
|
||||
end
|
||||
else
|
||||
swap_node(pos, "signs_bot:node_sensor")
|
||||
end
|
||||
|
|
190
nodes.lua
190
nodes.lua
|
@ -12,120 +12,130 @@
|
|||
|
||||
]]--
|
||||
|
||||
signs_bot.FarmingNodes = {}
|
||||
signs_bot.FarmingSeed = {}
|
||||
signs_bot.FarmingCrop = {}
|
||||
--signs_bot.FarmingTrees = {}
|
||||
|
||||
-- default trees which require the node timer
|
||||
function signs_bot.register_tree_node(name, drop, plant)
|
||||
signs_bot.FarmingNodes[name] = {drop = drop or name, plant = plant, t1= 166, t2 = 288}
|
||||
---- default trees which require the node timer
|
||||
--function signs_bot.register_tree_node(name, drop, plant)
|
||||
-- signs_bot.FarmingTrees[name] = {drop = drop or name, plant = plant, t1= 166, t2 = 288}
|
||||
--end
|
||||
|
||||
--function signs_bot.register_ground_node(name, drop)
|
||||
-- signs_bot.GroundNodes[name] = {drop = drop or name}
|
||||
--end
|
||||
|
||||
--local tn = signs_bot.register_tree_node
|
||||
--local dn = signs_bot.register_default_farming_node
|
||||
--local gn = signs_bot.register_ground_node
|
||||
|
||||
|
||||
-- inv_seed is the seed inventory name
|
||||
-- seed is what has to be placed on the ground
|
||||
-- t1/t2 is needed for farming nodes which require the node timer
|
||||
function signs_bot.register_farming_seed(inv_seed, seed, t1, t2)
|
||||
signs_bot.FarmingSeed[inv_seed] = {seed = seed or inv_seed, t1 = 2400, t2 = 4800}
|
||||
end
|
||||
|
||||
-- default farming nodes which require the node timer
|
||||
function signs_bot.register_default_farming_node(name, drop, plant)
|
||||
signs_bot.FarmingNodes[name] = {drop = drop or name, plant = plant, t1 = 2400, t2 = 4800}
|
||||
-- crop is the farming crop in the final stage
|
||||
-- inv_crop is the the inventory item name of the crop result
|
||||
-- inv_seed is the the inventory item name of the seed result
|
||||
function signs_bot.register_farming_crop(crop, inv_crop, inv_seed)
|
||||
signs_bot.FarmingCrop[crop] = {inv_crop = inv_crop or crop, inv_seed = inv_seed or crop}
|
||||
end
|
||||
|
||||
-- farming nodes with ABM
|
||||
function signs_bot.register_farming_node(name, drop, plant)
|
||||
signs_bot.FarmingNodes[name] = {drop = drop or name, plant = plant}
|
||||
signs_bot.FarmingNodes[name].leaves = string.find(name, "leaves") ~= nil
|
||||
end
|
||||
|
||||
function signs_bot.register_ground_node(name, drop)
|
||||
signs_bot.GroundNodes[name] = {drop = drop or name}
|
||||
end
|
||||
|
||||
local tn = signs_bot.register_tree_node
|
||||
local dn = signs_bot.register_default_farming_node
|
||||
local fn = signs_bot.register_farming_node
|
||||
local gn = signs_bot.register_ground_node
|
||||
local fs = signs_bot.register_farming_seed
|
||||
local fc = signs_bot.register_farming_crop
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Default Farming
|
||||
-------------------------------------------------------------------------------
|
||||
tn("default:tree", "default:tree", "default:sapling")
|
||||
tn("default:aspen_tree", "default:aspen_tree", "default:aspen_sapling")
|
||||
tn("default:pine_tree", "default:pine_tree", "default:pine_sapling")
|
||||
tn("default:acacia_tree", "default:acacia_tree", "default:acacia_sapling")
|
||||
tn("default:jungletree", "default:jungletree", "default:junglesapling")
|
||||
--tn("default:tree", "default:tree", "default:sapling")
|
||||
--tn("default:aspen_tree", "default:aspen_tree", "default:aspen_sapling")
|
||||
--tn("default:pine_tree", "default:pine_tree", "default:pine_sapling")
|
||||
--tn("default:acacia_tree", "default:acacia_tree", "default:acacia_sapling")
|
||||
--tn("default:jungletree", "default:jungletree", "default:junglesapling")
|
||||
|
||||
fn("default:leaves")
|
||||
fn("default:aspen_leaves")
|
||||
fn("default:pine_needles")
|
||||
signs_bot.FarmingNodes["default:pine_needles"].leaves = true -- accepted as leaves
|
||||
fn("default:acacia_leaves")
|
||||
fn("default:jungleleaves")
|
||||
--fn("default:leaves")
|
||||
--fn("default:aspen_leaves")
|
||||
--fn("default:pine_needles")
|
||||
--signs_bot.["default:pine_needles"].leaves = true -- accepted as leaves
|
||||
--fn("default:acacia_leaves")
|
||||
--fn("default:jungleleaves")
|
||||
|
||||
fn("default:bush_leaves")
|
||||
fn("default:acacia_bush_leaves")
|
||||
--fn("default:bush_leaves")
|
||||
--fn("default:acacia_bush_leaves")
|
||||
|
||||
fn("default:cactus", "default:cactus", "default:cactus")
|
||||
fn("default:papyrus", "default:papyrus", "default:papyrus")
|
||||
--fn("default:cactus", "default:cactus", "default:cactus")
|
||||
--fn("default:papyrus", "default:papyrus", "default:papyrus")
|
||||
|
||||
fn("default:apple")
|
||||
--fn("default:apple")
|
||||
|
||||
if farming.mod ~= "redo" then
|
||||
dn("farming:wheat_8", "farming:wheat", "farming:wheat_1")
|
||||
dn("farming:cotton_8", "farming:cotton", "farming:cotton_1")
|
||||
fs("farming:seed_wheat", "farming:wheat_1")
|
||||
fc("farming:wheat_8", "farming:wheat", "farming:seed_wheat")
|
||||
fs("farming:seed_cotton", "farming:cotton_1")
|
||||
fc("farming:cotton_8", "farming:cotton", "farming:seed_cotton")
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Farming Redo
|
||||
----------------------------------------------- --------------------------------
|
||||
if farming.mod == "redo" then
|
||||
fn("farming:wheat_8", "farming:wheat", "farming:wheat_1")
|
||||
fn("farming:cotton_8", "farming:cotton", "farming:cotton_1")
|
||||
fn("farming:carrot_8", "farming:carrot 2", "farming:carrot_1")
|
||||
fn("farming:potato_4", "farming:potato 3", "farming:potato_1")
|
||||
fn("farming:tomato_8", "farming:tomato 3", "farming:tomato_1")
|
||||
fn("farming:cucumber_4", "farming:cucumber 2", "farming:cucumber_1")
|
||||
fn("farming:corn_8", "farming:corn 2", "farming:corn_1")
|
||||
fn("farming:coffee_5", "farming:coffee_beans 2", "farming:coffee_1")
|
||||
fn("farming:melon_8", "farming:melon_slice 9", "farming:melon_1")
|
||||
fn("farming:pumpkin_8", "farming:pumpkin_slice 9","farming:pumpkin_1")
|
||||
fn("farming:raspberry_4", "farming:raspberries", "farming:raspberry_1")
|
||||
fn("farming:blueberry_4", "farming:blueberries", "farming:blueberry_1")
|
||||
fn("farming:rhubarb_3", "farming:rhubarb 2", "farming:rhubarb_1")
|
||||
fn("farming:beanpole_5", "farming:beans 3", "farming:beanpole_1")
|
||||
fn("farming:grapes_8", "farming:grapes 3", "farming:grapes_1")
|
||||
fn("farming:barley_7", "farming:barley", "farming:barley_1")
|
||||
fn("farming:chili_8", "farming:chili_pepper 2", "farming:chili_1")
|
||||
fn("farming:hemp_8", "farming:hemp_leaf", "farming:hemp_1")
|
||||
fn("farming:oat_8", "farming:oat", "farming:oat_1")
|
||||
fn("farming:rye_8", "farming:rye", "farming:rye_1")
|
||||
fn("farming:rice_8", "farming:rice", "farming:rice_1")
|
||||
end
|
||||
-------------------------------------------------------------------------------
|
||||
--if farming.mod == "redo" then
|
||||
-- fn("farming:wheat_8", "farming:wheat", "farming:wheat_1")
|
||||
-- fn("farming:cotton_8", "farming:cotton", "farming:cotton_1")
|
||||
-- fn("farming:carrot_8", "farming:carrot 2", "farming:carrot_1")
|
||||
-- fn("farming:potato_4", "farming:potato 3", "farming:potato_1")
|
||||
-- fn("farming:tomato_8", "farming:tomato 3", "farming:tomato_1")
|
||||
-- fn("farming:cucumber_4", "farming:cucumber 2", "farming:cucumber_1")
|
||||
-- fn("farming:corn_8", "farming:corn 2", "farming:corn_1")
|
||||
-- fn("farming:coffee_5", "farming:coffee_beans 2", "farming:coffee_1")
|
||||
-- fn("farming:melon_8", "farming:melon_slice 9", "farming:melon_1")
|
||||
-- fn("farming:pumpkin_8", "farming:pumpkin_slice 9","farming:pumpkin_1")
|
||||
-- fn("farming:raspberry_4", "farming:raspberries", "farming:raspberry_1")
|
||||
-- fn("farming:blueberry_4", "farming:blueberries", "farming:blueberry_1")
|
||||
-- fn("farming:rhubarb_3", "farming:rhubarb 2", "farming:rhubarb_1")
|
||||
-- fn("farming:beanpole_5", "farming:beans 3", "farming:beanpole_1")
|
||||
-- fn("farming:grapes_8", "farming:grapes 3", "farming:grapes_1")
|
||||
-- fn("farming:barley_7", "farming:barley", "farming:barley_1")
|
||||
-- fn("farming:chili_8", "farming:chili_pepper 2", "farming:chili_1")
|
||||
-- fn("farming:hemp_8", "farming:hemp_leaf", "farming:hemp_1")
|
||||
-- fn("farming:oat_8", "farming:oat", "farming:oat_1")
|
||||
-- fn("farming:rye_8", "farming:rye", "farming:rye_1")
|
||||
-- fn("farming:rice_8", "farming:rice", "farming:rice_1")
|
||||
--end
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Ethereal Farming
|
||||
-------------------------------------------------------------------------------
|
||||
fn("ethereal:strawberry_8", "ethereal:strawberry 2", "ethereal:strawberry 1")
|
||||
fn("ethereal:onion_5", "ethereal:wild_onion_plant 2", "ethereal:onion_1")
|
||||
--fn("ethereal:strawberry_8", "ethereal:strawberry 2", "ethereal:strawberry 1")
|
||||
--fn("ethereal:onion_5", "ethereal:wild_onion_plant 2", "ethereal:onion_1")
|
||||
|
||||
|
||||
fn("ethereal:willow_trunk", "ethereal:willow_trunk", "ethereal:willow_sapling")
|
||||
fn("ethereal:redwood_trunk", "ethereal:redwood_trunk", "ethereal:redwood_sapling")
|
||||
fn("ethereal:frost_tree", "ethereal:frost_tree", "ethereal:frost_tree_sapling")
|
||||
fn("ethereal:yellow_trunk", "ethereal:yellow_trunk", "ethereal:yellow_tree_sapling")
|
||||
fn("ethereal:palm_trunk", "ethereal:palm_trunk", "ethereal:palm_sapling")
|
||||
fn("ethereal:banana_trunk", "ethereal:banana_trunk", "ethereal:banana_tree_sapling")
|
||||
fn("ethereal:mushroom_trunk", "ethereal:mushroom_trunk", "ethereal:mushroom_sapling")
|
||||
fn("ethereal:birch_trunk", "ethereal:birch_trunk", "ethereal:birch_sapling")
|
||||
fn("ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo_sprout")
|
||||
--fn("ethereal:willow_trunk", "ethereal:willow_trunk", "ethereal:willow_sapling")
|
||||
--fn("ethereal:redwood_trunk", "ethereal:redwood_trunk", "ethereal:redwood_sapling")
|
||||
--fn("ethereal:frost_tree", "ethereal:frost_tree", "ethereal:frost_tree_sapling")
|
||||
--fn("ethereal:yellow_trunk", "ethereal:yellow_trunk", "ethereal:yellow_tree_sapling")
|
||||
--fn("ethereal:palm_trunk", "ethereal:palm_trunk", "ethereal:palm_sapling")
|
||||
--fn("ethereal:banana_trunk", "ethereal:banana_trunk", "ethereal:banana_tree_sapling")
|
||||
--fn("ethereal:mushroom_trunk", "ethereal:mushroom_trunk", "ethereal:mushroom_sapling")
|
||||
--fn("ethereal:birch_trunk", "ethereal:birch_trunk", "ethereal:birch_sapling")
|
||||
--fn("ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo_sprout")
|
||||
|
||||
fn("ethereal:willow_twig")
|
||||
fn("ethereal:redwood_leaves")
|
||||
fn("ethereal:orange_leaves")
|
||||
fn("ethereal:bananaleaves")
|
||||
fn("ethereal:yellowleaves")
|
||||
fn("ethereal:palmleaves")
|
||||
fn("ethereal:birch_leaves")
|
||||
fn("ethereal:frost_leaves")
|
||||
fn("ethereal:bamboo_leaves")
|
||||
fn("ethereal:mushroom")
|
||||
fn("ethereal:mushroom_pore")
|
||||
fn("ethereal:bamboo_leaves")
|
||||
fn("ethereal:bamboo_leaves")
|
||||
fn("ethereal:banana")
|
||||
fn("ethereal:orange")
|
||||
fn("ethereal:coconut")
|
||||
--fn("ethereal:willow_twig")
|
||||
--fn("ethereal:redwood_leaves")
|
||||
--fn("ethereal:orange_leaves")
|
||||
--fn("ethereal:bananaleaves")
|
||||
--fn("ethereal:yellowleaves")
|
||||
--fn("ethereal:palmleaves")
|
||||
--fn("ethereal:birch_leaves")
|
||||
--fn("ethereal:frost_leaves")
|
||||
--fn("ethereal:bamboo_leaves")
|
||||
--fn("ethereal:mushroom")
|
||||
--fn("ethereal:mushroom_pore")
|
||||
--fn("ethereal:bamboo_leaves")
|
||||
--fn("ethereal:bamboo_leaves")
|
||||
--fn("ethereal:banana")
|
||||
--fn("ethereal:orange")
|
||||
--fn("ethereal:coconut")
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 200 B |
Binary file not shown.
After Width: | Height: | Size: 227 B |
Binary file not shown.
After Width: | Height: | Size: 209 B |
Binary file not shown.
After Width: | Height: | Size: 187 B |
Loading…
Reference in New Issue