diff --git a/README.md b/README.md new file mode 100644 index 0000000..22c388c --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +Default minecart mod for vanerika subgame +======================= +by PilzAdam, xeranas + +Main differences between vcarts and carts mods: + + * vcarts does not include mesecon mod support (no power rails, breaks and etc.) + * vcarts does not include any rails (reuses default:rail). + * vcarts works without power rails + * vcarts:cart recipe slightly different from carts:cart + * vcarts:cart visually looks different from carts:cart + +vcarts mod is compatible with default minetest game, also could be used together with original carts mod. + +License of source code: +----------------------- +WTFPL + +License of media (textures, sounds and models): +----------------------------------------------- +CC-0 + +Authors of media files: +----------------------- + +xeranas: + + * `vcarts_cart_inventory_side.png` + * `vcarts_cart_inventory_top.png` + * `vcarts_cart_uv.png` + * `vcarts_cart_mesh.obj` + diff --git a/README.txt b/README.txt deleted file mode 100644 index 58673ce..0000000 --- a/README.txt +++ /dev/null @@ -1,25 +0,0 @@ -Minetest 0.4 mod: carts -======================= -by PilzAdam - -License of source code: ------------------------ -WTFPL - -License of media (textures, sounds and models): ------------------------------------------------ -CC-0 - -Authors of media files: ------------------------ -kddekadenz: - cart_bottom.png - cart_side.png - cart_top.png - -Zeg9: - cart.x - cart.png - -rarkenin: - cart_rail_*.png diff --git a/functions.lua b/functions.lua index 8a7da47..d8b61b7 100644 --- a/functions.lua +++ b/functions.lua @@ -25,7 +25,7 @@ end function cart_func:is_rail(p) local nn = minetest.env:get_node(p).name - return minetest.get_item_group(nn, "rail") ~= 0 + return minetest.get_item_group(nn, "connect_to_raillike") == minetest.raillike_group("rail") end function cart_func:is_int(z) diff --git a/init.lua b/init.lua index a372203..9f76676 100644 --- a/init.lua +++ b/init.lua @@ -1,24 +1,24 @@ -dofile(minetest.get_modpath("carts").."/functions.lua") +dofile(minetest.get_modpath("vcarts").."/functions.lua") -- -- Cart entity -- local cart = { - physical = false, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + physical = true, + collisionbox = {-0.48,-0.48,-0.48, 0.48,0.48,0.48}, visual = "mesh", - mesh = "cart.x", - visual_size = {x=1, y=1}, - textures = {"cart.png"}, + mesh = "vcarts_cart_mesh.obj", + visual_size = {x=4.5, y=4.5, z=4.5}, + textures = {"vcarts_cart_uv.png"}, driver = nil, velocity = {x=0, y=0, z=0}, old_pos = nil, old_velocity = nil, pre_stop_dir = nil, - MAX_V = 8, -- Limit of the velocity + MAX_V = 6, -- Limit of the velocity } function cart:on_rightclick(clicker) @@ -66,11 +66,11 @@ function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, directi self.object:remove() local inv = puncher:get_inventory() if minetest.setting_getbool("creative_mode") then - if not inv:contains_item("main", "carts:cart") then - inv:add_item("main", "carts:cart") + if not inv:contains_item("main", "vcarts:cart") then + inv:add_item("main", "vcarts:cart") end else - inv:add_item("main", "carts:cart") + inv:add_item("main", "vcarts:cart") end return end @@ -233,7 +233,32 @@ function cart:on_step(dtime) if not cart_func.v3:equal(self.velocity, {x=0,y=0,z=0}) then self.pre_stop_dir = cart_func:velocity_to_dir(self.velocity) + + -- drop cart if its position is incorrect (e.g. floating in air) + elseif cart_func:is_rail(pos) == false then + self.object:remove() + core.add_item(pos, "vcarts:cart") + return true end + + if self.driver ~= nil then + local ctrl = self.driver:get_player_control() + + if ctrl ~= nil and ctrl.up then + if self.velocity.x == 0 and self.velocity.y == 0 and self.velocity.z == 0 then + local look_dir = self.driver:get_look_dir() + local unit_dir = {x=math.floor(look_dir.x + 0.5), y=0, z=math.floor(look_dir.z + 0.5)} + self.velocity.x = unit_dir.x * 0.6 + self.velocity.y = unit_dir.y * 0.6 + self.velocity.z = unit_dir.z * 0.6 + else + self.velocity.x = self.velocity.x * 1.1 + self.velocity.y = self.velocity.y * 1.1 + self.velocity.z = self.velocity.z * 1.1 + end + end + end + -- Stop the cart if the velocity is nearly 0 -- Only if on a flat railway @@ -430,26 +455,28 @@ function cart:on_step(dtime) end -minetest.register_entity("carts:cart", cart) +minetest.register_entity("vcarts:cart", cart) -minetest.register_craftitem("carts:cart", { - description = "Minecart", - inventory_image = minetest.inventorycube("cart_top.png", "cart_side.png", "cart_side.png"), - wield_image = "cart_side.png", +minetest.register_craftitem("vcarts:cart", { + description = "Mechanical minecart", + inventory_image = minetest.inventorycube("vcarts_cart_inventory_top.png", + "vcarts_cart_inventory_side.png", "vcarts_cart_inventory_side.png"), + wield_image = {"vcarts_cart_inventory_top.png", + "vcarts_cart_inventory_side.png", "vcarts_cart_inventory_side.png"}, on_place = function(itemstack, placer, pointed_thing) if not pointed_thing.type == "node" then return end if cart_func:is_rail(pointed_thing.under) then - minetest.env:add_entity(pointed_thing.under, "carts:cart") + minetest.env:add_entity(pointed_thing.under, "vcarts:cart") if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end return itemstack elseif cart_func:is_rail(pointed_thing.above) then - minetest.env:add_entity(pointed_thing.above, "carts:cart") + minetest.env:add_entity(pointed_thing.above, "vcarts:cart") if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end @@ -459,137 +486,12 @@ minetest.register_craftitem("carts:cart", { }) minetest.register_craft({ - output = "carts:cart", + output = "vcarts:cart", recipe = { {"", "", ""}, {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steelblock", "default:steel_ingot"}, }, }) --- --- Mesecon support --- -minetest.register_node(":default:rail", { - description = "Rail", - drawtype = "raillike", - tiles = {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, - inventory_image = "default_rail.png", - wield_image = "default_rail.png", - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - -- but how to specify the dimensions for curved and sideways rails? - fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, - }, - groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1}, -}) - -minetest.register_node("carts:powerrail", { - description = "Powered Rail", - drawtype = "raillike", - tiles = {"carts_rail_pwr.png", "carts_rail_curved_pwr.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"}, - inventory_image = "carts_rail_pwr.png", - wield_image = "carts_rail_pwr.png", - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - -- but how to specify the dimensions for curved and sideways rails? - fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, - }, - groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1}, - - after_place_node = function(pos, placer, itemstack) - if not mesecon then - minetest.env:get_meta(pos):set_string("cart_acceleration", "0.5") - end - end, - - mesecons = { - effector = { - action_on = function(pos, node) - minetest.env:get_meta(pos):set_string("cart_acceleration", "0.5") - end, - - action_off = function(pos, node) - minetest.env:get_meta(pos):set_string("cart_acceleration", "0") - end, - }, - }, -}) - -minetest.register_node("carts:brakerail", { - description = "Brake Rail", - drawtype = "raillike", - tiles = {"carts_rail_brk.png", "carts_rail_curved_brk.png", "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png"}, - inventory_image = "carts_rail_brk.png", - wield_image = "carts_rail_brk.png", - paramtype = "light", - is_ground_content = true, - walkable = false, - selection_box = { - type = "fixed", - -- but how to specify the dimensions for curved and sideways rails? - fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, - }, - groups = {bendy=2,snappy=1,dig_immediate=2,attached_node=1,rail=1,connect_to_raillike=1}, - - after_place_node = function(pos, placer, itemstack) - if not mesecon then - minetest.env:get_meta(pos):set_string("cart_acceleration", "-0.2") - end - end, - - mesecons = { - effector = { - action_on = function(pos, node) - minetest.env:get_meta(pos):set_string("cart_acceleration", "-0.2") - end, - - action_off = function(pos, node) - minetest.env:get_meta(pos):set_string("cart_acceleration", "0") - end, - }, - }, -}) - -minetest.register_craft({ - output = "carts:powerrail 2", - recipe = { - {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"}, - {"default:steel_ingot", "default:stick", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - } -}) - -minetest.register_craft({ - output = "carts:powerrail 2", - recipe = { - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "default:stick", "default:steel_ingot"}, - {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"}, - } -}) - -minetest.register_craft({ - output = "carts:brakerail 2", - recipe = { - {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, - {"default:steel_ingot", "default:stick", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - } -}) - -minetest.register_craft({ - output = "carts:brakerail 2", - recipe = { - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "default:stick", "default:steel_ingot"}, - {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, - } -}) diff --git a/models/cart.png b/models/cart.png deleted file mode 100644 index 1f9f568..0000000 Binary files a/models/cart.png and /dev/null differ diff --git a/models/cart.x b/models/cart.x deleted file mode 100644 index 3325aaf..0000000 --- a/models/cart.x +++ /dev/null @@ -1,339 +0,0 @@ -xof 0303txt 0032 - -Frame Root { - FrameTransformMatrix { - 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, 0.000000, 1.000000, 0.000000, - 0.000000, 1.000000,-0.000000, 0.000000, - 0.000000, 0.000000, 0.000000, 1.000000;; - } - Frame Cube { - FrameTransformMatrix { - 5.000000, 0.000000,-0.000000, 0.000000, - -0.000000, 3.535534, 3.535534, 0.000000, - 0.000000,-3.535534, 3.535534, 0.000000, - 0.000000,-3.000000, 3.000000, 1.000000;; - } - Mesh { //Cube_001 Mesh - 72; - -1.000000; 1.000000;-1.000000;, - -1.000000;-1.000000;-1.000000;, - 1.000000;-1.000000;-1.000000;, - 1.000000; 1.000000;-1.000000;, - -0.833334;-1.000000; 1.000000;, - -1.000000;-1.000000; 1.000000;, - -1.000000;-0.833333; 1.000000;, - -0.833334;-0.833333; 1.000000;, - -1.000000;-1.000000;-1.000000;, - -1.000000;-1.000000; 1.000000;, - 0.999999;-1.000001; 1.000000;, - 1.000000;-1.000000;-1.000000;, - 0.999999;-1.000001; 1.000000;, - 0.833332;-1.000000; 1.000000;, - 0.833333;-0.833334; 1.000000;, - 1.000000;-0.833334; 1.000000;, - 0.833332;-1.000000; 1.000000;, - -0.833334;-1.000000; 1.000000;, - -0.833334;-0.833333; 1.000000;, - 0.833333;-0.833334; 1.000000;, - 1.000000; 0.833333; 1.000000;, - 0.833334; 0.833333; 1.000000;, - 0.833334; 1.000000; 1.000000;, - 1.000000; 0.999999; 1.000000;, - 1.000000;-0.833334; 1.000000;, - 0.833333;-0.833334; 1.000000;, - 0.833334; 0.833333; 1.000000;, - 1.000000; 0.833333; 1.000000;, - 0.833334; 0.833333; 1.000000;, - -0.833333; 0.833333; 1.000000;, - -0.833333; 1.000000; 1.000000;, - 0.833334; 1.000000; 1.000000;, - 0.833334; 0.833333;-0.800000;, - -0.833333; 0.833333;-0.800000;, - -0.833333; 0.833333; 1.000000;, - 0.833334; 0.833333; 1.000000;, - -0.833333; 0.833333; 1.000000;, - -1.000000; 0.833333; 1.000000;, - -1.000000; 1.000000; 1.000000;, - -0.833333; 1.000000; 1.000000;, - -0.833334;-0.833333; 1.000000;, - -1.000000;-0.833333; 1.000000;, - -1.000000; 0.833333; 1.000000;, - -0.833333; 0.833333; 1.000000;, - 0.833333;-0.833334;-0.800000;, - -0.833334;-0.833333;-0.800000;, - -0.833333; 0.833333;-0.800000;, - 0.833334; 0.833333;-0.800000;, - -0.833333; 0.833333;-0.800000;, - -0.833334;-0.833333;-0.800000;, - -0.833334;-0.833333; 1.000000;, - -0.833333; 0.833333; 1.000000;, - -0.833334;-0.833333;-0.800000;, - 0.833333;-0.833334;-0.800000;, - 0.833333;-0.833334; 1.000000;, - -0.833334;-0.833333; 1.000000;, - 0.833333;-0.833334;-0.800000;, - 0.833334; 0.833333;-0.800000;, - 0.833334; 0.833333; 1.000000;, - 0.833333;-0.833334; 1.000000;, - -1.000000; 1.000000;-1.000000;, - -1.000000; 1.000000; 1.000000;, - -1.000000;-1.000000; 1.000000;, - -1.000000;-1.000000;-1.000000;, - -1.000000; 1.000000; 1.000000;, - -1.000000; 1.000000;-1.000000;, - 1.000000; 1.000000;-1.000000;, - 1.000000; 0.999999; 1.000000;, - 1.000000;-1.000000;-1.000000;, - 0.999999;-1.000001; 1.000000;, - 1.000000; 0.999999; 1.000000;, - 1.000000; 1.000000;-1.000000;; - 18; - 4;0;1;2;3;, - 4;4;5;6;7;, - 4;8;9;10;11;, - 4;12;13;14;15;, - 4;16;17;18;19;, - 4;20;21;22;23;, - 4;24;25;26;27;, - 4;28;29;30;31;, - 4;32;33;34;35;, - 4;36;37;38;39;, - 4;40;41;42;43;, - 4;44;45;46;47;, - 4;48;49;50;51;, - 4;52;53;54;55;, - 4;56;57;58;59;, - 4;60;61;62;63;, - 4;64;65;66;67;, - 4;68;69;70;71;; - MeshNormals { //Cube_001 Normals - 72; - 0.000000; 0.000000;-1.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - -0.000000;-1.000000;-0.000000;, - -0.000000;-1.000000;-0.000000;, - -0.000000;-1.000000;-0.000000;, - -0.000000;-1.000000;-0.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - -0.000000;-1.000000; 0.000000;, - -0.000000;-1.000000; 0.000000;, - -0.000000;-1.000000; 0.000000;, - -0.000000;-1.000000; 0.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 0.000000;-0.000000; 1.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - -1.000000; 0.000000;-0.000000;, - -1.000000; 0.000000;-0.000000;, - -1.000000; 0.000000;-0.000000;, - -1.000000; 0.000000;-0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;, - 1.000000;-0.000000; 0.000000;; - 18; - 4;0;1;2;3;, - 4;4;5;6;7;, - 4;8;9;10;11;, - 4;12;13;14;15;, - 4;16;17;18;19;, - 4;20;21;22;23;, - 4;24;25;26;27;, - 4;28;29;30;31;, - 4;32;33;34;35;, - 4;36;37;38;39;, - 4;40;41;42;43;, - 4;44;45;46;47;, - 4;48;49;50;51;, - 4;52;53;54;55;, - 4;56;57;58;59;, - 4;60;61;62;63;, - 4;64;65;66;67;, - 4;68;69;70;71;; - } //End of Cube_001 Normals - MeshMaterialList { //Cube_001 Material List - 1; - 18; - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0;; - Material Material { - 0.640000; 0.640000; 0.640000; 1.000000;; - 96.078431; - 0.500000; 0.500000; 0.500000;; - 0.000000; 0.000000; 0.000000;; - TextureFilename {"cart.png";} - } - } //End of Cube_001 Material List - MeshTextureCoords { //Cube_001 UV Coordinates - 72; - 0.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 1.000000;, - 0.000000; 1.000000;, - 0.031250; 0.500000;, - -0.000000; 0.500000;, - -0.000000; 0.468750;, - 0.031250; 0.468750;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;, - 0.468750; 0.468750;, - 0.500000; 0.468750;, - 0.500000; 0.500000;, - 0.468750; 0.500000;, - 0.031250; 0.468750;, - 0.468750; 0.468750;, - 0.468750; 0.500000;, - 0.031250; 0.500000;, - 0.468750; 0.000000;, - 0.500000; 0.000000;, - 0.500000; 0.031250;, - 0.468750; 0.031250;, - 0.468750; 0.031250;, - 0.500000; 0.031250;, - 0.500000; 0.468750;, - 0.468750; 0.468750;, - 0.468750; 0.031250;, - 0.031250; 0.031250;, - 0.031250; 0.000000;, - 0.468750; 0.000000;, - 1.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 0.031250; 0.031250;, - 0.000000; 0.031250;, - 0.000000; 0.000000;, - 0.031250; 0.000000;, - 0.031250; 0.468750;, - -0.000000; 0.468750;, - 0.000000; 0.031250;, - 0.031250; 0.031250;, - 0.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 1.000000;, - 0.000000; 1.000000;, - 1.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 0.500000; 0.500000;, - 0.500000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.500000;; - } //End of Cube_001 UV Coordinates - } //End of Cube_001 Mesh - } //End of Cube -} //End of Root Frame -AnimationSet { - Animation { - {Cube} - AnimationKey { //Position - 2; - 4; - 0;3; 0.000000, 0.000000, 0.000000;;, - 1;3; 0.000000, 3.000000, 3.000000;;, - 2;3; 0.000000,-3.000000, 3.000000;;, - 3;3; 0.000000,-3.000000, 3.000000;;; - } - AnimationKey { //Rotation - 0; - 4; - 0;4; -1.000000, 0.000000, 0.000000, 0.000000;;, - 1;4; -0.923880,-0.382683,-0.000000, 0.000000;;, - 2;4; -0.923880, 0.382683, 0.000000, 0.000000;;, - 3;4; -0.923880, 0.382683, 0.000000, 0.000000;;; - } - AnimationKey { //Scale - 1; - 4; - 0;3; 5.000000, 5.000000, 5.000000;;, - 1;3; 5.000000, 5.000000, 5.000000;;, - 2;3; 5.000000, 5.000000, 5.000000;;, - 3;3; 5.000000, 5.000000, 5.000000;;; - } - } -} //End of AnimationSet diff --git a/models/vcarts_cart_mesh.obj b/models/vcarts_cart_mesh.obj new file mode 100644 index 0000000..6409ff4 --- /dev/null +++ b/models/vcarts_cart_mesh.obj @@ -0,0 +1,75 @@ +# Blender v2.76 (sub 0) OBJ File: 'cart.blend' +# www.blender.org +o Cube +v 0.880000 -1.007326 -0.880000 +v 0.880000 -1.007326 0.880000 +v -0.880000 -1.007326 0.880000 +v -0.880000 -1.007326 -0.880000 +v 1.000000 1.000000 -0.999999 +v 0.999999 1.000000 1.000001 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 0.800000 1.000000 -0.800000 +v 0.800000 1.000000 0.800001 +v -0.800000 1.000000 0.800000 +v -0.800000 1.000000 -0.800000 +v 0.800000 1.000000 -0.800000 +v 0.800000 1.000000 0.800001 +v -0.800000 1.000000 0.800000 +v -0.800000 1.000000 -0.800000 +v 0.707309 -0.846155 -0.707308 +v 0.707308 -0.846155 0.707309 +v -0.707309 -0.846155 0.707308 +v -0.707308 -0.846155 -0.707308 +vt 0.395323 0.489073 +vt 0.239542 0.489073 +vt 0.239542 0.333292 +vt 0.395323 0.333292 +vt 0.405944 0.155302 +vt 0.228920 0.155302 +vt 0.246623 0.137600 +vt 0.388242 0.137600 +vt 0.405944 0.667062 +vt 0.228921 0.667062 +vt 0.061552 0.499694 +vt 0.061552 0.322670 +vt 0.573312 0.499694 +vt 0.573312 0.322670 +vt 0.591015 0.340373 +vt 0.591015 0.481992 +vt 0.043850 0.481992 +vt 0.043850 0.340373 +vt 0.388242 0.684765 +vt 0.246623 0.684765 +vt 0.825590 -0.331150 +vt 0.784286 0.876745 +vt 0.642667 0.876745 +vt 0.650872 0.713132 +vt 0.776082 0.713132 +vt 0.487259 0.721337 +vt 0.487259 0.579717 +vt 0.650872 0.587922 +vt 0.939695 0.579718 +vt 0.939694 0.721337 +vt 0.776082 0.587922 +vt 0.642667 0.424309 +vt 0.784286 0.424309 +s off +f 1/1 2/2 3/3 4/4 +f 8/5 7/6 11/7 12/8 +f 1/1 5/9 6/10 2/2 +f 2/2 6/11 7/12 3/3 +f 3/3 7/6 8/5 4/4 +f 5/13 1/1 4/4 8/14 +f 5/13 8/14 12/15 9/16 +f 7/12 6/11 10/17 11/18 +f 6/10 5/9 9/19 10/20 +f 12/21 11/21 15/21 16/21 +f 9/21 12/21 16/21 13/21 +f 11/21 10/21 14/21 15/21 +f 10/21 9/21 13/21 14/21 +f 15/22 14/23 18/24 19/25 +f 14/26 13/27 17/28 18/24 +f 16/29 15/30 19/25 20/31 +f 13/32 16/33 20/31 17/28 +f 17/28 20/31 19/25 18/24 diff --git a/textures/cart_bottom.png b/textures/cart_bottom.png deleted file mode 100644 index f84b1ae..0000000 Binary files a/textures/cart_bottom.png and /dev/null differ diff --git a/textures/cart_side.png b/textures/cart_side.png deleted file mode 100644 index 79f6c32..0000000 Binary files a/textures/cart_side.png and /dev/null differ diff --git a/textures/cart_top.png b/textures/cart_top.png deleted file mode 100644 index 8140fc7..0000000 Binary files a/textures/cart_top.png and /dev/null differ diff --git a/textures/carts_rail_brk.png b/textures/carts_rail_brk.png deleted file mode 100644 index f3e0ff9..0000000 Binary files a/textures/carts_rail_brk.png and /dev/null differ diff --git a/textures/carts_rail_crossing_brk.png b/textures/carts_rail_crossing_brk.png deleted file mode 100644 index 3ace508..0000000 Binary files a/textures/carts_rail_crossing_brk.png and /dev/null differ diff --git a/textures/carts_rail_crossing_pwr.png b/textures/carts_rail_crossing_pwr.png deleted file mode 100644 index d63f133..0000000 Binary files a/textures/carts_rail_crossing_pwr.png and /dev/null differ diff --git a/textures/carts_rail_curved_brk.png b/textures/carts_rail_curved_brk.png deleted file mode 100644 index 5a84918..0000000 Binary files a/textures/carts_rail_curved_brk.png and /dev/null differ diff --git a/textures/carts_rail_curved_pwr.png b/textures/carts_rail_curved_pwr.png deleted file mode 100644 index e2ac67a..0000000 Binary files a/textures/carts_rail_curved_pwr.png and /dev/null differ diff --git a/textures/carts_rail_pwr.png b/textures/carts_rail_pwr.png deleted file mode 100644 index 95f33f6..0000000 Binary files a/textures/carts_rail_pwr.png and /dev/null differ diff --git a/textures/carts_rail_t_junction_brk.png b/textures/carts_rail_t_junction_brk.png deleted file mode 100644 index 0c2c1cb..0000000 Binary files a/textures/carts_rail_t_junction_brk.png and /dev/null differ diff --git a/textures/carts_rail_t_junction_pwr.png b/textures/carts_rail_t_junction_pwr.png deleted file mode 100644 index 7f97fc7..0000000 Binary files a/textures/carts_rail_t_junction_pwr.png and /dev/null differ diff --git a/textures/vcarts_cart_inventory_side.png b/textures/vcarts_cart_inventory_side.png new file mode 100644 index 0000000..1d1c150 Binary files /dev/null and b/textures/vcarts_cart_inventory_side.png differ diff --git a/textures/vcarts_cart_inventory_top.png b/textures/vcarts_cart_inventory_top.png new file mode 100644 index 0000000..a50fe41 Binary files /dev/null and b/textures/vcarts_cart_inventory_top.png differ diff --git a/textures/vcarts_cart_uv.png b/textures/vcarts_cart_uv.png new file mode 100644 index 0000000..a5ad0b7 Binary files /dev/null and b/textures/vcarts_cart_uv.png differ