diff options
| -rw-r--r-- | bucket.lua | 55 | ||||
| -rw-r--r-- | default.lua | 68 | ||||
| -rw-r--r-- | doors.lua | 28 | ||||
| -rw-r--r-- | fire.lua | 20 | ||||
| -rw-r--r-- | init.lua | 383 | ||||
| -rw-r--r-- | models/landrush_showarea.png | bin | 0 -> 166 bytes | |||
| -rw-r--r-- | models/landrush_showarea.x | 220 | ||||
| -rw-r--r-- | textures/landrush_landclaim.png | bin | 0 -> 303 bytes | |||
| -rw-r--r-- | textures/landrush_landclaim_gem.png | bin | 0 -> 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.pngBinary files differ new file mode 100644 index 0000000..ba271ed --- /dev/null +++ b/models/landrush_showarea.png 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.pngBinary files differ new file mode 100644 index 0000000..2a4d559 --- /dev/null +++ b/textures/landrush_landclaim.png diff --git a/textures/landrush_landclaim_gem.png b/textures/landrush_landclaim_gem.pngBinary files differ new file mode 100644 index 0000000..385042e --- /dev/null +++ b/textures/landrush_landclaim_gem.png | 
