summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Bohannon <brandon@bremaweb.com>2013-02-16 00:07:16 -0600
committerBrandon Bohannon <brandon@bremaweb.com>2013-02-16 00:07:16 -0600
commite83f5144665edafd80b5f99435cf12f66e37432d (patch)
tree1ff7d9dd7537d99980f4c57cbfe1a22900efea14
parent6537ff75ae31a13b5f9160127c484911477c0e6b (diff)
initial commit
-rw-r--r--bucket.lua55
-rw-r--r--default.lua68
-rw-r--r--doors.lua28
-rw-r--r--fire.lua20
-rw-r--r--init.lua383
-rw-r--r--models/landrush_showarea.pngbin0 -> 166 bytes
-rw-r--r--models/landrush_showarea.x220
-rw-r--r--textures/landrush_landclaim.pngbin0 -> 303 bytes
-rw-r--r--textures/landrush_landclaim_gem.pngbin0 -> 383 bytes
9 files changed, 774 insertions, 0 deletions
diff --git a/bucket.lua b/bucket.lua
new file mode 100644
index 0000000..2557a1f
--- /dev/null
+++ b/bucket.lua
@@ -0,0 +1,55 @@
+if minetest.get_modpath("bucket") then
+ minetest.register_craftitem(":bucket:bucket_empty", {
+ description = "Emtpy bucket",
+ inventory_image = "bucket.png",
+ stack_max = 1,
+ liquids_pointable = true,
+ on_use = function(itemstack, user, pointed_thing)
+ -- Must be pointing to node
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ -- Check if pointing to a liquid source
+ n = minetest.env:get_node(pointed_thing.under)
+ liquiddef = bucket.liquids[n.name]
+ if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then
+ local player = user:get_player_name()
+ if landrush.can_interact(player, pointed_thing.under) then
+ minetest.env:add_node(pointed_thing.under, {name="air"})
+ return {name=liquiddef.itemname}
+ else
+ owner = landrush.get_owner(pointed_thing.under)
+ minetest.chat_send_player(user:get_player_name(), "Area owned by "..owner)
+ end
+ end
+ end,
+ })
+
+ for key, value in pairs(bucket.liquids) do
+ if minetest.registered_items[value.itemname].on_use then
+ local item = minetest.registered_items[value.itemname]
+ local on_use = item.on_use
+ function item.on_use(itemstack, user, pointed_thing)
+ if pointed_thing.type ~= "node" then
+ return
+ end
+ n = minetest.env:get_node(pointed_thing.under)
+ local player = user:get_player_name()
+ if minetest.registered_nodes[n.name].buildable_to then
+ if landrush.can_interact(player, pointed_thing.under) then
+ return on_use(itemstack, user, pointed_thing)
+ else
+ minetest.chat_send_player(player, "Area owned by "..landrush.get_owner(pointed_thing.above))
+ end
+ else
+ if landrush.can_interact(player, pointed_thing.above) then
+ return on_use(itemstack, user, pointed_thing)
+ else
+ minetest.chat_send_player(player, "Area owned by "..landrush.get_owner(pointed_thing.above))
+ end
+ end
+ end
+ end
+ end
+end
+
diff --git a/default.lua b/default.lua
new file mode 100644
index 0000000..6a074c5
--- /dev/null
+++ b/default.lua
@@ -0,0 +1,68 @@
+if minetest.get_modpath("default") then
+ if minetest.registered_items["default:mese_crystal"] then
+ minetest.register_craft({
+ output = 'landrush:landclaim_b',
+ recipe = {
+ {'default:cobble','default:mese_crystal','default:cobble'},
+ {'default:cobble','default:desert_stone','default:cobble'},
+ {'default:cobble','default:stone','default:cobble'}
+ }
+ })
+ minetest.register_alias("landclaim", "landrush:landclaim_b")
+ --minetest.registered_items["landrush:landclaim_b"].groups.not_in_creative_inventory = nil
+ else
+ minetest.register_craft({
+ output = 'landrush:landclaim',
+ recipe = {
+ {'default:cobble','default:cobble','default:cobble'},
+ {'default:cobble','default:mese','default:cobble'},
+ {'default:cobble','default:cobble','default:cobble'}
+ }
+ })
+ minetest.register_alias("landclaim", "landrush:landclaim")
+ minetest.registered_items["landrush:landclaim"].groups.not_in_creative_inventory = nil
+ end
+
+ minetest.register_node(":default:sign_wall", {
+ description = "Sign",
+ drawtype = "signlike",
+ tiles = {"default_sign_wall.png"},
+ inventory_image = "default_sign_wall.png",
+ wield_image = "default_sign_wall.png",
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "wallmounted",
+ --wall_top = <default>
+ --wall_bottom = <default>
+ --wall_side = <default>
+ },
+ groups = {choppy=2,dig_immediate=2},
+ legacy_wallmounted = true,
+ sounds = default.node_sound_defaults(),
+ on_construct = function(pos)
+ --local n = minetest.env:get_node(pos)
+ local meta = minetest.env:get_meta(pos)
+ meta:set_string("formspec", "hack:sign_text_input")
+ meta:set_string("infotext", "\"\"")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
+ local name = sender:get_player_name()
+ if landrush.can_interact(name, pos) then
+ local meta = minetest.env:get_meta(pos)
+ fields.text = fields.text or ""
+ print((name or "").." wrote \""..fields.text..
+ "\" to sign at "..minetest.pos_to_string(pos))
+ meta:set_string("text", fields.text)
+ meta:set_string("infotext", '"'..fields.text..'"')
+ else
+ local owner = landrush.get_owner(pos)
+ minetest.chat_send_player(name, "Area owned by "..owner)
+ end
+ end,
+ })
+end
+
diff --git a/doors.lua b/doors.lua
new file mode 100644
index 0000000..6804797
--- /dev/null
+++ b/doors.lua
@@ -0,0 +1,28 @@
+if minetest.get_modpath("doors") then
+ function landrush.protect_against_door(door)
+ local definition = minetest.registered_items[door]
+ local on_place = definition.on_place
+ function definition.on_place(itemstack, placer, pointed_thing)
+ local bottom = pointed_thing.above
+ local top = {x=pointed_thing.above.x, y=pointed_thing.above.y+1, z=pointed_thing.above.z}
+ local name = placer:get_player_name()
+ if landrush.can_interact(name, top) and landrush.can_interact(name, bottom) then
+ return on_place(itemstack, placer, pointed_thing)
+ else
+ topowner = landrush.get_owner(top)
+ bottomowner = landrush.get_owner(bottom)
+ if topowner and bottomowner and topowner ~= bottomowner then
+ minetest.chat_send_player(name, "Area owned by "..topowner.." and "..bottomowner)
+ elseif topowner then
+ minetest.chat_send_player(name, "Area owned by "..topowner)
+ else
+ minetest.chat_send_player(name, "Area owned by "..bottomowner)
+ end
+ end
+ end
+ end
+
+ landrush.protect_against_door("doors:door_wood")
+ landrush.protect_against_door("doors:door_steel")
+end
+
diff --git a/fire.lua b/fire.lua
new file mode 100644
index 0000000..a03376c
--- /dev/null
+++ b/fire.lua
@@ -0,0 +1,20 @@
+if minetest.get_modpath("fire") then
+ landrush.default_flame_should_extinguish = fire.flame_should_extinguish
+
+ function fire.flame_should_extinguish(pos)
+ corner0 = landrush.can_interact("-!-", {x=pos.x-1,y=pos.y-1,z=pos.z-1})
+ corner1 = landrush.can_interact("-!-", {x=pos.x-1,y=pos.y-1,z=pos.z+1})
+ corner2 = landrush.can_interact("-!-", {x=pos.x-1,y=pos.y+1,z=pos.z-1})
+ corner3 = landrush.can_interact("-!-", {x=pos.x-1,y=pos.y+1,z=pos.z+1})
+ corner4 = landrush.can_interact("-!-", {x=pos.x+1,y=pos.y-1,z=pos.z-1})
+ corner5 = landrush.can_interact("-!-", {x=pos.x+1,y=pos.y-1,z=pos.z+1})
+ corner6 = landrush.can_interact("-!-", {x=pos.x+1,y=pos.y+1,z=pos.z-1})
+ corner7 = landrush.can_interact("-!-", {x=pos.x+1,y=pos.y+1,z=pos.z+1})
+ if corner0 and corner1 then
+ return landrush.default_flame_should_extinguish(pos)
+ else
+ return true
+ end
+ end
+end
+
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..952c97b
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,383 @@
+-- Lua definitions:
+
+landrush = {}
+
+-- Change this to true if you want to require people to claim an area before building or digging
+local requireClaim = true
+local chunkSize = 16
+
+local claims = {}
+local filename = minetest.get_worldpath().."/landrush-claims"
+
+function landrush.load_claims()
+ local file = io.open(filename, "r")
+ if file then
+ for line in file:lines() do
+ if line ~= "" then
+ local area = line:split(" ")
+ local shared = {}
+ if area[3] and area[3] ~= "*" then
+ for k,v in ipairs(area[3]:split(",")) do
+ shared[v] = v
+ end
+ end
+ local claimtype
+ if area[4] then
+ claimtype = area[4]
+ else
+ claimtype = "landrush:landclaim"
+ end
+ claims[area[1]] = {owner=area[2], shared=shared, claimtype=claimtype}
+ end
+ end
+ file:close()
+ end
+end
+
+function landrush.save_claims()
+ local file = io.open(filename, "w")
+ for key,value in pairs(claims) do
+ local sharedata = ""
+ for k,v in pairs(value.shared) do
+ sharedata = sharedata..v..","
+ end
+ local sharestring
+ if sharedata == "" then
+ sharestring = "*"
+ else
+ sharestring = sharedata:sub(1,-2)
+ end
+ file:write(key.." "..value.owner.." "..sharestring.." "..value.claimtype.."\n")
+ end
+ file:close()
+end
+
+function landrush.get_chunk(pos)
+ local x = math.floor(pos.x/chunkSize)
+ -- 3 levels of vertical protection
+ local y = 0
+
+ if ( pos.y < -60 ) then
+ y = -200
+ elseif ( pos.y < 140 ) then
+ y = -30
+ else
+ y = 90
+ end
+
+
+ local z = math.floor(pos.z/chunkSize)
+ return x..","..y..","..z
+end
+
+function landrush.get_chunk_center(pos)
+ local x = math.floor(pos.x/chunkSize)*chunkSize+7.5
+ local y = 0
+
+ if ( pos.y < -60 ) then
+ y = -200
+ elseif ( pos.y < 120 ) then
+ y = -30
+ else
+ y = 120
+ end
+
+ local z = math.floor(pos.z/chunkSize)*chunkSize+7.5
+ return {x=x,y=y,z=z}
+end
+
+function landrush.get_owner(pos)
+ local chunk = landrush.get_chunk(pos)
+ if claims[chunk] then
+ return claims[chunk].owner
+ end
+end
+
+function landrush.can_interact(name, pos)
+ local chunk = landrush.get_chunk(pos)
+ -- return claims[chunk] == nil or claims[chunk].owner == name or claims[chunk].shared[name]
+ if ( claims[chunk] == nil ) then
+ if ( requireClaim == true ) then
+ return false
+ else
+ return true
+ end
+ end
+
+ -- if it's the owner or it's shared
+ if ( claims[chunk].shared[name] or claims[chunk].owner == name ) then
+ return true
+ end
+
+ -- see if the owner is offline, and area is not shared then it's off limits
+ if ( minetest.env:get_player_by_name(claims[chunk].owner) == nil ) then
+ if ( claims[chunk].shared[name] ) then
+ return true
+ else
+ return nil
+ end
+ else
+ if ( claims[chunk].owner ~= name ) then
+ minetest.chat_send_player( claims[chunk].owner, "You are being griefed by "..name.." at "..minetest.pos_to_string(pos) )
+
+ -- TODO --
+ -- send a chat to all shared people too
+ -- TODO --
+ for u,u in pairs(claims[chunk].shared) do
+ minetest.chat_send_player( u, name.." is griefing your shared claim at "..minetest.pos_to_string(pos) )
+ end
+
+ minetest.chat_send_player( name, "You are griefing "..claims[chunk].owner )
+ return true
+ end
+ end
+ return claims[chunk].owner == name or claims[chunk].shared[name] -- requires a landrush landclaim to build
+end
+
+landrush.default_place = minetest.item_place
+landrush.default_dig = minetest.node_dig
+
+-- Redefined Lua:
+
+function minetest.node_dig(pos, node, digger)
+ local player = digger:get_player_name()
+ if landrush.can_interact(player, pos) then
+ landrush.default_dig(pos, node, digger)
+ else
+ local owner = landrush.get_owner(pos)
+ if ( owner ~= nil ) then
+ minetest.chat_send_player(player, "Area owned by "..owner)
+ else
+ -- allow them to dig their ladder
+ if ( node['name'] ~= "default:ladder" ) then
+ minetest.chat_send_player(player,"Area unclaimed, claim this are to build")
+ else
+ landrush.default_dig(pos, node, digger)
+ end
+ end
+ end
+end
+
+function minetest.item_place(itemstack, placer, pointed_thing)
+ if itemstack:get_definition().type == "node" and itemstack:get_name() ~= "default:ladder" then
+ owner = landrush.get_owner(pointed_thing.above)
+ player = placer:get_player_name()
+ if landrush.can_interact(player, pointed_thing.above) then
+ return landrush.default_place(itemstack, placer, pointed_thing)
+ else
+ if ( owner ~= nil ) then
+ minetest.chat_send_player(player, "Area owned by "..owner)
+ else
+ minetest.chat_send_player(player,"Area unclaimed, claim this are to build")
+ end
+ end
+ else
+ return landrush.default_place(itemstack, placer, pointed_thing)
+ end
+end
+
+landrush.load_claims()
+-- Load now
+
+-- In-game additions:
+
+minetest.register_chatcommand("landowner", {
+ params = "",
+ description = "tells the owner of the current map chunk",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ local owner = landrush.get_owner(pos)
+ if owner then
+ minetest.chat_send_player(name, "This area is owned by "..owner)
+ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end
+ end,
+})
+
+minetest.register_chatcommand("unclaim", {
+ params = "",
+ description = "unclaims the current map chunk",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ local owner = landrush.get_owner(pos)
+ local inv = player:get_inventory()
+ if owner then
+ if owner == name then
+ chunk = landrush.get_chunk(pos)
+ if inv:room_for_item("main", claims[chunk].claimtype) then
+ player:get_inventory():add_item("main", {name=claims[chunk].claimtype})
+ claims[chunk] = nil
+ landrush.save_claims()
+ minetest.chat_send_player(name, "You renounced your claim on this area.")
+ else
+ minetest.chat_send_player(name, "Your inventory is full.")
+ end
+ else
+ minetest.chat_send_player(name, "This area is owned by "..owner)
+ end
+ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end
+ end,
+})
+
+minetest.register_chatcommand("sharearea", {
+ params = "<name>",
+ description = "shares the current map chunk with <name>",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ local owner = landrush.get_owner(pos)
+ if owner then
+ if owner == name and name ~= param then
+ if minetest.env:get_player_by_name(param) then
+ claims[landrush.get_chunk(pos)].shared[param] = param
+ landrush.save_claims()
+ minetest.chat_send_player(name, param.." may now edit this area.")
+ minetest.chat_send_player(param, name.." has just shared an area with you.")
+ else
+ minetest.chat_send_player(name, param.." is not a valid player.")
+ end
+ else
+ minetest.chat_send_player(name, "This area is owned by "..owner)
+ end
+ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end
+ end,
+})
+
+minetest.register_chatcommand("unsharearea", {
+ params = "<name>",
+ description = "unshares the current map chunk with <name>",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ local owner = landrush.get_owner(pos)
+ if owner then
+ if owner == name then
+ if name ~= param then
+ claims[landrush.get_chunk(pos)].shared[param] = nil
+ landrush.save_claims()
+ minetest.chat_send_player(name, param.." may no longer edit this area.")
+ minetest.chat_send_player(param, name.." has just revoked your editing privileges in an area.")
+ else
+ minetest.chat_send_player(name, 'Use "/unclaim" to unclaim the aria.')
+ end
+ else
+ minetest.chat_send_player(name, "This area is owned by "..owner)
+ end
+ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end
+ end,
+})
+
+minetest.register_chatcommand("mayedit", {
+ params = "",
+ description = "lists the people who may edit the current map chunk",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ local mayedit = landrush.get_owner(pos)
+ if mayedit then
+ local chunk = landrush.get_chunk(pos)
+ for user, user in pairs(claims[chunk].shared) do
+ mayedit = mayedit..", "..user
+ end
+ minetest.chat_send_player(name, mayedit)
+ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end
+ end,
+})
+
+function landrush.regester_claimnode(node, image)
+ local claimnode = minetest.get_current_modname()..":"..node
+ minetest.register_node(claimnode, {
+ description = "Land Claim",
+ tiles = {image},
+ groups = {oddly_breakable_by_hand=2,not_in_creative_inventory=1},
+ on_place = function(itemstack, placer, pointed_thing)
+ owner = landrush.get_owner(pointed_thing.above)
+ player = placer:get_player_name()
+ if owner then
+ minetest.chat_send_player(player, "This area is already owned by "..owner)
+ else
+ minetest.env:remove_node(pointed_thing.above)
+ chunk = landrush.get_chunk(pointed_thing.above)
+ claims[chunk] = {owner=placer:get_player_name(),shared={},claimtype=claimnode}
+ landrush.save_claims()
+ minetest.chat_send_player(claims[chunk].owner, "You now own this area.")
+ itemstack:take_item()
+ return itemstack
+ end
+ end,
+ })
+end
+
+landrush.regester_claimnode("landclaim", "landrush_landclaim.png")
+landrush.regester_claimnode("landclaim_a", "landrush_landclaim_gem.png")
+
+minetest.register_entity("landrush:showarea",{
+ on_activate = function(self, staticdata, dtime_s)
+ minetest.after(16,function()
+ self.object:remove()
+ end)
+ end,
+ initial_properties = {
+ hp_max = 1,
+ physical = true,
+ weight = 0,
+ collisionbox = {-8,-8,-8,8,8,8},
+ visual = "mesh",
+ visual_size = {x=16.1, y=120.1},
+ mesh = "landrush_showarea.x",
+ textures = {"landrush_showarea.png", "landrush_showarea.png", "landrush_showarea.png", "landrush_showarea.png", "landrush_showarea.png", "landrush_showarea.png"}, -- number of required textures depends on visual
+ colors = {}, -- number of required colors depends on visual
+ spritediv = {x=1, y=1},
+ initial_sprite_basepos = {x=0, y=0},
+ is_visible = true,
+ makes_footstep_sound = false,
+ automatic_rotate = false,
+ }
+})
+
+minetest.register_chatcommand("showarea", {
+ params = "",
+ description = "highlights the boundaries of the current protected area",
+ privs = {interact=true},
+ func = function(name, param)
+ local player = minetest.env:get_player_by_name(name)
+ local pos = player:getpos()
+ --local owner = landrush.get_owner(pos)
+-- if owner then
+ --if landrush.can_interact(name, pos) then
+ local entpos = landrush.get_chunk_center(pos)
+ minetest.env:add_entity(entpos, "landrush:showarea")
+ --else
+ -- minetest.chat_send_player(name, "This area is owned by "..owner)
+ --end
+--[[ else
+ minetest.chat_send_player(name, "This area is unowned.")
+ end]]
+-- (Removed at Rarkenin's request)
+ end,
+})
+
+minetest.after(0,function()
+ local path = minetest.get_modpath("landrush")
+ dofile(path.."/bucket.lua")
+ dofile(path.."/default.lua")
+ dofile(path.."/doors.lua")
+ dofile(path.."/fire.lua")
+end)
+
diff --git a/models/landrush_showarea.png b/models/landrush_showarea.png
new file mode 100644
index 0000000..ba271ed
--- /dev/null
+++ b/models/landrush_showarea.png
Binary files differ
diff --git a/models/landrush_showarea.x b/models/landrush_showarea.x
new file mode 100644
index 0000000..ebd0e98
--- /dev/null
+++ b/models/landrush_showarea.x
@@ -0,0 +1,220 @@
+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, 5.000000, 0.000000, 0.000000,
+ 0.000000, 0.000000, 5.000000, 0.000000,
+ 0.000000, 0.000000, 0.000000, 1.000000;;
+ }
+ Mesh { //Cube_001 Mesh
+ 48;
+ -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.000001; 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;,
+ -1.000000;-1.000000;-1.000000;,
+ -1.000000;-1.000000; 1.000000;,
+ 0.999999;-1.000001; 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; 1.000000;-1.000000;,
+ 1.000000; 0.999999; 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.000001; 1.000000;,
+ 1.000000; 0.999999; 1.000000;,
+ 1.000000; 0.999999; 1.000000;,
+ 0.999999;-1.000001; 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;,
+ -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;-1.000000;,
+ -1.000000; 1.000000; 1.000000;,
+ 1.000000; 0.999999; 1.000000;;
+ 12;
+ 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;;
+ MeshNormals { //Cube_001 Normals
+ 48;
+ 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;,
+ 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;,
+ -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;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;,
+ -0.000000;-1.000000;-0.000000;;
+ 12;
+ 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;;
+ } //End of Cube_001 Normals
+ MeshMaterialList { //Cube_001 Material List
+ 1;
+ 12;
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0;;
+ Material Material {
+ 0.640000; 0.640000; 0.640000; 0.000000;;
+ 96.078431;
+ 0.500000; 0.500000; 0.500000;;
+ 0.000000; 0.000000; 0.000000;;
+ TextureFilename {"0gb.us_showarea.png";}
+ }
+ } //End of Cube_001 Material List
+ MeshTextureCoords { //Cube_001 UV Coordinates
+ 48;
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 0.000000; 0.000000;,
+ 1.000000; 0.000000;,
+ 1.000000; 1.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;,
+ 1.000000; 1.000000;,
+ 1.000000; 0.000000;,
+ 0.000000; 0.000000;,
+ 0.000000; 1.000000;;
+ } //End of Cube_001 UV Coordinates
+ } //End of Cube_001 Mesh
+ } //End of Cube
+} //End of Root Frame
diff --git a/textures/landrush_landclaim.png b/textures/landrush_landclaim.png
new file mode 100644
index 0000000..2a4d559
--- /dev/null
+++ b/textures/landrush_landclaim.png
Binary files differ
diff --git a/textures/landrush_landclaim_gem.png b/textures/landrush_landclaim_gem.png
new file mode 100644
index 0000000..385042e
--- /dev/null
+++ b/textures/landrush_landclaim_gem.png
Binary files differ