Add 5 “Minecart with X” entities

* Minecart with Chest
* Minecart with Furnace
* Minecart with TNT
* Minecart with Hopper
* Minecart with Command Block
This commit is contained in:
Wuzzy 2017-08-28 14:19:46 +02:00
parent 840fe1fd35
commit f2ed6f126e
13 changed files with 435 additions and 277 deletions

@ -2,5 +2,10 @@ mcl_core
mcl_sounds mcl_sounds
mcl_player mcl_player
mcl_achievements mcl_achievements
mcl_chests
mcl_furnaces
mesecons_commandblock
mcl_hoppers
mcl_tnt
mesecons? mesecons?
doc_identifier? doc_identifier?

@ -13,312 +13,422 @@ end
dofile(mcl_minecarts.modpath.."/functions.lua") dofile(mcl_minecarts.modpath.."/functions.lua")
dofile(mcl_minecarts.modpath.."/rails.lua") dofile(mcl_minecarts.modpath.."/rails.lua")
mcl_minecarts.cart = {
physical = false,
collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
visual = "mesh",
mesh = "mcl_minecarts_minecart.b3d",
visual_size = {x=1, y=1},
textures = {"mcl_minecarts_minecart.png"},
_driver = nil,
_punched = false, -- used to re-send _velocity and position
_velocity = {x=0, y=0, z=0}, -- only used on punch
_start_pos = nil, -- Used to calculate distance for “On A Rail” achievement
_old_dir = {x=0, y=0, z=0},
_old_pos = nil,
_old_switch = 0,
_railtype = nil,
}
function mcl_minecarts.cart:on_rightclick(clicker) local function register_entity(entity_id, mesh, textures, drop)
if not clicker or not clicker:is_player() then local cart = {
return physical = false,
end collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
local player_name = clicker:get_player_name() visual = "mesh",
if self._driver and player_name == self._driver then mesh = mesh,
self._driver = nil visual_size = {x=1, y=1},
self._start_pos = nil textures = textures,
clicker:set_detach()
elseif not self._driver then
self._driver = player_name
self._start_pos = self.object:getpos()
mcl_player.player_attached[player_name] = true
clicker:set_attach(self.object, "", {x=0, y=3, z=0}, {x=0, y=0, z=0})
end
end
function mcl_minecarts.cart:on_activate(staticdata, dtime_s) _driver = nil,
self.object:set_armor_groups({immortal=1}) _punched = false, -- used to re-send _velocity and position
end _velocity = {x=0, y=0, z=0}, -- only used on punch
_start_pos = nil, -- Used to calculate distance for “On A Rail” achievement
_old_dir = {x=0, y=0, z=0},
_old_pos = nil,
_old_switch = 0,
_railtype = nil,
}
function mcl_minecarts.cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) function cart:on_rightclick(clicker)
local pos = self.object:getpos() if not clicker or not clicker:is_player() then
if not self._railtype then return
local node = minetest.get_node(vector_floor(pos)).name end
self._railtype = minetest.get_item_group(node, "connect_to_raillike") local player_name = clicker:get_player_name()
if self._driver and player_name == self._driver then
self._driver = nil
self._start_pos = nil
clicker:set_detach()
elseif not self._driver then
self._driver = player_name
self._start_pos = self.object:getpos()
mcl_player.player_attached[player_name] = true
clicker:set_attach(self.object, "", {x=0, y=3, z=0}, {x=0, y=0, z=0})
end
end end
if not puncher or not puncher:is_player() then function cart:on_activate(staticdata, dtime_s)
local cart_dir = mcl_minecarts:get_rail_direction(pos, {x=1, y=0, z=0}, nil, nil, self._railtype) self.object:set_armor_groups({immortal=1})
end
function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
local pos = self.object:getpos()
if not self._railtype then
local node = minetest.get_node(vector_floor(pos)).name
self._railtype = minetest.get_item_group(node, "connect_to_raillike")
end
if not puncher or not puncher:is_player() then
local cart_dir = mcl_minecarts:get_rail_direction(pos, {x=1, y=0, z=0}, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
end
self._velocity = vector.multiply(cart_dir, 3)
self._old_pos = nil
self._punched = true
return
end
if puncher:get_player_control().sneak then
if self._driver then
if self._old_pos then
self.object:setpos(self._old_pos)
end
mcl_player.player_attached[self._driver] = nil
local player = minetest.get_player_by_name(self._driver)
if player then
player:set_detach()
end
end
if not minetest.settings:get_bool("creative_mode") then
for d=1, #drop do
minetest.add_item(self.object:getpos(), drop[d])
end
end
self.object:remove()
return
end
local vel = self.object:getvelocity()
if puncher:get_player_name() == self._driver then
if math.abs(vel.x + vel.z) > 7 then
return
end
end
local punch_dir = mcl_minecarts:velocity_to_dir(puncher:get_look_dir())
punch_dir.y = 0
local cart_dir = mcl_minecarts:get_rail_direction(pos, punch_dir, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return return
end end
self._velocity = vector.multiply(cart_dir, 3)
time_from_last_punch = math.min(time_from_last_punch, tool_capabilities.full_punch_interval)
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
self._velocity = vector.multiply(cart_dir, f)
self._old_pos = nil self._old_pos = nil
self._punched = true self._punched = true
return
end end
if puncher:get_player_control().sneak then function cart:on_step(dtime)
local vel = self.object:getvelocity()
local update = {}
if self._punched then
vel = vector.add(vel, self._velocity)
self.object:setvelocity(vel)
self._old_dir.y = 0
elseif vector.equals(vel, {x=0, y=0, z=0}) then
return
end
local dir, last_switch = nil, nil
local pos = self.object:getpos()
if self._old_pos and not self._punched then
local flo_pos = vector_floor(pos)
local flo_old = vector_floor(self._old_pos)
if vector.equals(flo_pos, flo_old) then
return
end
end
local ctrl, player = nil, nil
if self._driver then if self._driver then
if self._old_pos then player = minetest.get_player_by_name(self._driver)
self.object:setpos(self._old_pos)
end
mcl_player.player_attached[self._driver] = nil
local player = minetest.get_player_by_name(self._driver)
if player then if player then
player:set_detach() ctrl = player:get_player_control()
end end
end end
if self._old_pos then
if not minetest.settings:get_bool("creative_mode") then local diff = vector.subtract(self._old_pos, pos)
minetest.add_item(self.object:getpos(), "mcl_minecarts:minecart") for _,v in ipairs({"x","y","z"}) do
end if math.abs(diff[v]) > 1.1 then
self.object:remove() local expected_pos = vector.add(self._old_pos, self._old_dir)
return dir, last_switch = mcl_minecarts:get_rail_direction(pos, self._old_dir, ctrl, self._old_switch, self._railtype)
end if vector.equals(dir, {x=0, y=0, z=0}) then
dir = false
local vel = self.object:getvelocity() pos = vector.new(expected_pos)
if puncher:get_player_name() == self._driver then update.pos = true
if math.abs(vel.x + vel.z) > 7 then end
return break
end
end
local punch_dir = mcl_minecarts:velocity_to_dir(puncher:get_look_dir())
punch_dir.y = 0
local cart_dir = mcl_minecarts:get_rail_direction(pos, punch_dir, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
end
time_from_last_punch = math.min(time_from_last_punch, tool_capabilities.full_punch_interval)
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
self._velocity = vector.multiply(cart_dir, f)
self._old_pos = nil
self._punched = true
end
function mcl_minecarts.cart:on_step(dtime)
local vel = self.object:getvelocity()
local update = {}
if self._punched then
vel = vector.add(vel, self._velocity)
self.object:setvelocity(vel)
self._old_dir.y = 0
elseif vector.equals(vel, {x=0, y=0, z=0}) then
return
end
local dir, last_switch = nil, nil
local pos = self.object:getpos()
if self._old_pos and not self._punched then
local flo_pos = vector_floor(pos)
local flo_old = vector_floor(self._old_pos)
if vector.equals(flo_pos, flo_old) then
return
end
end
local ctrl, player = nil, nil
if self._driver then
player = minetest.get_player_by_name(self._driver)
if player then
ctrl = player:get_player_control()
end
end
if self._old_pos then
local diff = vector.subtract(self._old_pos, pos)
for _,v in ipairs({"x","y","z"}) do
if math.abs(diff[v]) > 1.1 then
local expected_pos = vector.add(self._old_pos, self._old_dir)
dir, last_switch = mcl_minecarts:get_rail_direction(pos, self._old_dir, ctrl, self._old_switch, self._railtype)
if vector.equals(dir, {x=0, y=0, z=0}) then
dir = false
pos = vector.new(expected_pos)
update.pos = true
end end
break
end end
end end
end
if vel.y == 0 then
if vel.y == 0 then for _,v in ipairs({"x", "z"}) do
for _,v in ipairs({"x", "z"}) do if vel[v] ~= 0 and math.abs(vel[v]) < 0.9 then
if vel[v] ~= 0 and math.abs(vel[v]) < 0.9 then vel[v] = 0
vel[v] = 0 update.vel = true
end
end
end
local cart_dir = mcl_minecarts:velocity_to_dir(vel)
local max_vel = mcl_minecarts.speed_max
if not dir then
dir, last_switch = mcl_minecarts:get_rail_direction(pos, cart_dir, ctrl, self._old_switch, self._railtype)
end
local new_acc = {x=0, y=0, z=0}
if vector.equals(dir, {x=0, y=0, z=0}) then
vel = {x=0, y=0, z=0}
update.vel = true
else
-- If the direction changed
if dir.x ~= 0 and self._old_dir.z ~= 0 then
vel.x = dir.x * math.abs(vel.z)
vel.z = 0
pos.z = math.floor(pos.z + 0.5)
update.pos = true
end
if dir.z ~= 0 and self._old_dir.x ~= 0 then
vel.z = dir.z * math.abs(vel.x)
vel.x = 0
pos.x = math.floor(pos.x + 0.5)
update.pos = true
end
-- Up, down?
if dir.y ~= self._old_dir.y then
vel.y = dir.y * math.abs(vel.x + vel.z)
pos = vector.round(pos)
update.pos = true
end
-- Slow down or speed up
local acc = dir.y * -1.8
local speed_mod = tonumber(minetest.get_meta(pos):get_string("cart_acceleration"))
if speed_mod and speed_mod ~= 0 then
if speed_mod > 0 then
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) >= max_vel then
speed_mod = 0
break
end
end
end
acc = acc + (speed_mod * 8)
else
acc = acc - 0.4
end
new_acc = vector.multiply(dir, acc)
end
self.object:setacceleration(new_acc)
self._old_pos = vector.new(pos)
self._old_dir = vector.new(dir)
self._old_switch = last_switch
-- Limits
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) > max_vel then
vel[v] = mcl_minecarts:get_sign(vel[v]) * max_vel
update.vel = true update.vel = true
end end
end end
-- Give achievement when player reached a distance of 1000 nodes from the start position
if self._driver and (vector.distance(self._start_pos, pos) >= 1000) then
awards.unlock(self._driver, "mcl:onARail")
end
if update.pos or self._punched then
local yaw = 0
if dir.x < 0 then
yaw = 0.5
elseif dir.x > 0 then
yaw = 1.5
elseif dir.z < 0 then
yaw = 1
end
self.object:setyaw(yaw * math.pi)
end
if self._punched then
self._punched = false
end
if not (update.vel or update.pos) then
return
end
local anim = {x=0, y=0}
if dir.y == -1 then
anim = {x=1, y=1}
elseif dir.y == 1 then
anim = {x=2, y=2}
end
self.object:set_animation(anim, 1, 0)
self.object:setvelocity(vel)
if update.pos then
self.object:setpos(pos)
end
update = nil
end end
local cart_dir = mcl_minecarts:velocity_to_dir(vel) minetest.register_entity(entity_id, cart)
local max_vel = mcl_minecarts.speed_max end
if not dir then
dir, last_switch = mcl_minecarts:get_rail_direction(pos, cart_dir, ctrl, self._old_switch, self._railtype) register_entity("mcl_minecarts:minecart",
end "mcl_minecarts_minecart.b3d",
{"mcl_minecarts_minecart.png"},
local new_acc = {x=0, y=0, z=0} {"mcl_minecarts:minecart"})
if vector.equals(dir, {x=0, y=0, z=0}) then register_entity("mcl_minecarts:chest_minecart",
vel = {x=0, y=0, z=0} "mcl_minecarts_minecart_chest.b3d",
update.vel = true { "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
else {"mcl_minecarts:minecart", "mcl_chests:chest"})
-- If the direction changed register_entity("mcl_minecarts:furnace_minecart",
if dir.x ~= 0 and self._old_dir.z ~= 0 then "mcl_minecarts_minecart_block.b3d",
vel.x = dir.x * math.abs(vel.z) {
vel.z = 0 "default_furnace_top.png",
pos.z = math.floor(pos.z + 0.5) "default_furnace_top.png",
update.pos = true "default_furnace_front.png",
end "default_furnace_side.png",
if dir.z ~= 0 and self._old_dir.x ~= 0 then "default_furnace_side.png",
vel.z = dir.z * math.abs(vel.x) "default_furnace_side.png",
vel.x = 0 "mcl_minecarts_minecart.png",
pos.x = math.floor(pos.x + 0.5) },
update.pos = true {"mcl_minecarts:minecart", "mcl_furnaces:furnace"})
end register_entity("mcl_minecarts:tnt_minecart",
-- Up, down? "mcl_minecarts_minecart_block.b3d",
if dir.y ~= self._old_dir.y then {
vel.y = dir.y * math.abs(vel.x + vel.z) "default_tnt_top.png",
pos = vector.round(pos) "default_tnt_bottom.png",
update.pos = true "default_tnt_side.png",
end "default_tnt_side.png",
"default_tnt_side.png",
-- Slow down or speed up.. "default_tnt_side.png",
local acc = dir.y * -1.8 "mcl_minecarts_minecart.png",
},
local speed_mod = tonumber(minetest.get_meta(pos):get_string("cart_acceleration")) {"mcl_minecarts:minecart", "mcl_tnt:tnt"})
if speed_mod and speed_mod ~= 0 then register_entity("mcl_minecarts:hopper_minecart",
if speed_mod > 0 then "mcl_minecarts_minecart_hopper.b3d",
for _,v in ipairs({"x","y","z"}) do {
if math.abs(vel[v]) >= max_vel then "mcl_hoppers_hopper_inside.png",
speed_mod = 0 "mcl_minecarts_minecart.png",
break "mcl_hoppers_hopper_outside.png",
end "mcl_hoppers_hopper_top.png",
},
{"mcl_minecarts:minecart", "mcl_hoppers:hopper"})
register_entity("mcl_minecarts:command_block_minecart",
"mcl_minecarts_minecart_block.b3d",
{
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"mcl_minecarts_minecart.png",
},
{"mcl_minecarts:minecart"})
local register_craftitem = function(itemstring, entity_id, description, longdesc, usagehelp, icon)
local def = {
stack_max = 1,
on_place = function(itemstack, placer, pointed_thing)
if not pointed_thing.type == "node" then
return
end
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if placer and not placer:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
end end
end end
acc = acc + (speed_mod * 8)
else
acc = acc - 0.4
end
new_acc = vector.multiply(dir, acc)
end
self.object:setacceleration(new_acc)
self._old_pos = vector.new(pos)
self._old_dir = vector.new(dir)
self._old_switch = last_switch
-- Limits
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) > max_vel then
vel[v] = mcl_minecarts:get_sign(vel[v]) * max_vel
update.vel = true
end
end
-- Give achievement when player reached a distance of 1000 nodes from the start position local railpos
if self._driver and (vector.distance(self._start_pos, pos) >= 1000) then if mcl_minecarts:is_rail(pointed_thing.under) then
awards.unlock(self._driver, "mcl:onARail") railpos = pointed_thing.under
end elseif mcl_minecarts:is_rail(pointed_thing.above) then
railpos = pointed_thing.under
if update.pos or self._punched then else
local yaw = 0 return
if dir.x < 0 then
yaw = 0.5
elseif dir.x > 0 then
yaw = 1.5
elseif dir.z < 0 then
yaw = 1
end
self.object:setyaw(yaw * math.pi)
end
if self._punched then
self._punched = false
end
if not (update.vel or update.pos) then
return
end
local anim = {x=0, y=0}
if dir.y == -1 then
anim = {x=1, y=1}
elseif dir.y == 1 then
anim = {x=2, y=2}
end
self.object:set_animation(anim, 1, 0)
self.object:setvelocity(vel)
if update.pos then
self.object:setpos(pos)
end
update = nil
end
minetest.register_entity("mcl_minecarts:minecart", mcl_minecarts.cart)
minetest.register_craftitem("mcl_minecarts:minecart", {
description = "Minecart",
_doc_items_longdesc = "Minecarts can be used for a quick transportion on rails." .. "\n" ..
"Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.",
_doc_items_usagehelp = "You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving." .. "\n" ..
"To obtain the minecart, punch it while holding down the sneak key.",
inventory_image = "mcl_minecarts_minecart_normal.png",
wield_image = "mcl_minecarts_minecart_normal.png",
stack_max = 1,
on_place = function(itemstack, placer, pointed_thing)
if not pointed_thing.type == "node" then
return
end
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if placer and not placer:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
end end
end local cart = minetest.add_entity(railpos, entity_id)
local railtype = minetest.get_item_group(node.name, "connect_to_raillike")
local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype)
cart:setyaw(minetest.dir_to_yaw(cart_dir))
local railpos if not minetest.settings:get_bool("creative_mode") then
if mcl_minecarts:is_rail(pointed_thing.under) then itemstack:take_item()
railpos = pointed_thing.under end
elseif mcl_minecarts:is_rail(pointed_thing.above) then return itemstack
railpos = pointed_thing.under end,
else groups = { minecart = 1, transport = 1},
return }
end def.description = description
local cart = minetest.add_entity(railpos, "mcl_minecarts:minecart") def._doc_items_longdec = longdesc
local railtype = minetest.get_item_group(node.name, "connect_to_raillike") def._doc_items_usagehelp = usagehelp
local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype) def.inventory_image = icon
cart:setyaw(minetest.dir_to_yaw(cart_dir)) def.wield_image = icon
minetest.register_craftitem(itemstring, def)
if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item()
end
return itemstack
end,
groups = { minecart = 1, transport = 1},
})
if minetest.get_modpath("doc_identifier") ~= nil then
doc.sub.identifier.register_object("mcl_minecarts:minecart", "craftitems", "mcl_minecarts:minecart")
end end
register_craftitem(
"mcl_minecarts:minecart",
"mcl_minecarts:minecart",
"Minecart",
"Minecarts can be used for a quick transportion on rails." .. "\n" ..
"Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.",
"You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving." .. "\n" ..
"To obtain the minecart, punch it while holding down the sneak key.",
"mcl_minecarts_minecart_normal.png"
)
register_craftitem(
"mcl_minecarts:hopper_minecart",
"mcl_minecarts:hopper_minecart",
"Minecart with Hopper",
nil, nil,
"mcl_minecarts_minecart_hopper.png"
)
register_craftitem(
"mcl_minecarts:tnt_minecart",
"mcl_minecarts:tnt_minecart",
"Minecart with TNT",
nil, nil,
"mcl_minecarts_minecart_tnt.png"
)
register_craftitem(
"mcl_minecarts:chest_minecart",
"mcl_minecarts:chest_minecart",
"Minecart with Chest",
nil, nil,
"mcl_minecarts_minecart_chest.png"
)
register_craftitem(
"mcl_minecarts:furnace_minecart",
"mcl_minecarts:furnace_minecart",
"Minecart with Furnace",
nil, nil,
"mcl_minecarts_minecart_furnace.png"
)
register_craftitem(
"mcl_minecarts:command_block_minecart",
"mcl_minecarts:command_block_minecart",
"Minecart with Command Block",
nil, nil,
"mcl_minecarts_minecart_command_block.png"
)
minetest.register_craft({ minetest.register_craft({
output = "mcl_minecarts:minecart", output = "mcl_minecarts:minecart",
recipe = { recipe = {
@ -326,3 +436,35 @@ minetest.register_craft({
{"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"}, {"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"},
}, },
}) })
minetest.register_craft({
output = "mcl_minecarts:hopper_minecart",
recipe = {
{"mcl_hoppers:hopper"},
{"mcl_minecarts:minecart"},
},
})
minetest.register_craft({
output = "mcl_minecarts:chest_minecart",
recipe = {
{"mcl_chests:chest"},
{"mcl_minecarts:minecart"},
},
})
minetest.register_craft({
output = "mcl_minecarts:tnt_minecart",
recipe = {
{"mcl_tnt:tnt"},
{"mcl_minecarts:minecart"},
},
})
minetest.register_craft({
output = "mcl_minecarts:furnace_minecart",
recipe = {
{"mcl_furnaces:furnace"},
{"mcl_minecarts:minecart"},
},
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

@ -11,3 +11,4 @@ doc_identifier
mobs_mc mobs_mc
mcl_paintings mcl_paintings
mcl_comparators mcl_comparators
mcl_minecarts

@ -17,6 +17,11 @@ local wip_items = {
"mobs_mc:totem", "mobs_mc:totem",
"mcl_paintings:painting", "mcl_paintings:painting",
"mcl_comparators:comparator_off_comp", "mcl_comparators:comparator_off_comp",
"mcl_minecarts:hopper_minecart",
"mcl_minecarts:command_block_minecart",
"mcl_minecarts:chest_minecart",
"mcl_minecarts:furnace_minecart",
"mcl_minecarts:tnt_minecart",
} }
for i=1,#wip_items do for i=1,#wip_items do

@ -420,6 +420,11 @@ Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt
/assets/minecraft/textures/blocks,rail_normal_turned.png,/mods/ITEMS/mcl_minecarts/textures,default_rail_curved.png,,,,,, /assets/minecraft/textures/blocks,rail_normal_turned.png,/mods/ITEMS/mcl_minecarts/textures,default_rail_curved.png,,,,,,
/assets/minecraft/textures/blocks,rail_normal.png,/mods/ITEMS/mcl_minecarts/textures,default_rail.png,,,,,, /assets/minecraft/textures/blocks,rail_normal.png,/mods/ITEMS/mcl_minecarts/textures,default_rail.png,,,,,,
/assets/minecraft/textures/items,minecart_normal.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_normal.png,,,,,, /assets/minecraft/textures/items,minecart_normal.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_normal.png,,,,,,
/assets/minecraft/textures/items,minecart_chest.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_chest.png,,,,,,
/assets/minecraft/textures/items,minecart_tnt.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_tnt.png,,,,,,
/assets/minecraft/textures/items,minecart_command_block.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_command_block.png,,,,,,
/assets/minecraft/textures/items,minecart_furnace.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_furnace.png,,,,,,
/assets/minecraft/textures/items,minecart_hopper.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_hopper.png,,,,,,
/assets/minecraft/textures/blocks,rail_detector.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector.png,,,,,, /assets/minecraft/textures/blocks,rail_detector.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector.png,,,,,,
/assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector_powered.png,,,,,, /assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector_powered.png,,,,,,
/assets/minecraft/textures/blocks,rail_golden_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_golden_powered.png,,,,,, /assets/minecraft/textures/blocks,rail_golden_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_golden_powered.png,,,,,,

1 Source path Source file Target path Target file xs ys xl yl xt yt
420 /assets/minecraft/textures/blocks rail_normal_turned.png /mods/ITEMS/mcl_minecarts/textures default_rail_curved.png
421 /assets/minecraft/textures/blocks rail_normal.png /mods/ITEMS/mcl_minecarts/textures default_rail.png
422 /assets/minecraft/textures/items minecart_normal.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_normal.png
423 /assets/minecraft/textures/items minecart_chest.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_chest.png
424 /assets/minecraft/textures/items minecart_tnt.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_tnt.png
425 /assets/minecraft/textures/items minecart_command_block.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_command_block.png
426 /assets/minecraft/textures/items minecart_furnace.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_furnace.png
427 /assets/minecraft/textures/items minecart_hopper.png /mods/ITEMS/mcl_minecarts/textures mcl_minecarts_minecart_hopper.png
428 /assets/minecraft/textures/blocks rail_detector.png /mods/ITEMS/mcl_minecarts/textures rail_detector.png
429 /assets/minecraft/textures/blocks rail_detector_powered.png /mods/ITEMS/mcl_minecarts/textures rail_detector_powered.png
430 /assets/minecraft/textures/blocks rail_golden_powered.png /mods/ITEMS/mcl_minecarts/textures rail_golden_powered.png