TinyMap - map size limiter
#1
PHP Code:
local MapPlugin = {} MapPlugin.__index = MapPlugin local MapSize = 200 function MapPlugin:new() local t = {} setmetatable(t, MapPlugin) local w = Lua__cPlugin:new() tolua.setpeer(w, t) w:tolua__set_instance(w) return w end function MapPlugin:OnDisable() LOG( Plugin:GetName() .. " v." .. Plugin:GetVersion() .. " is shutting down..." ) end function MapPlugin:Initialize() self:SetName( "TinyMap" ) self:SetVersion( 1 ) PluginManager = cRoot:Get():GetPluginManager() PluginManager:AddHook( self, cPluginManager.E_PLUGIN_PLAYER_MOVE) end function MakeObsidian(X, Y, Z) local World = cRoot:Get():GetWorld(); World:SetBlock(X, Y, Z, E_BLOCK_OBSIDIAN, 0); World:SetBlock(X, Y+1, Z, E_BLOCK_OBSIDIAN, 0); World:SetBlock(X, Y+2, Z, E_BLOCK_OBSIDIAN, 0); World:SetBlock(X, Y+3, Z, E_BLOCK_OBSIDIAN, 0); World:SetBlock(X, Y+4, Z, E_BLOCK_OBSIDIAN, 0); World:SetBlock(X, Y+5, Z, E_BLOCK_OBSIDIAN, 0); end function MapPlugin:OnPlayerMove( Player ) Server = cRoot:Get():GetServer() local PlayerName = Player:GetName() local X = math.floor(Player:GetPosX()) local Y = math.floor(Player:GetPosY()) local Z = math.floor(Player:GetPosZ()) if(X>MapSize) then MakeObsidian(X, Y, Z) Player:TeleportTo(MapSize,Y,Z); Log(X..','..Y..','..Z); end if(Z>MapSize) then MakeObsidian(X, Y, Z) Player:TeleportTo(X,Y,MapSize) Log(X..','..Y..','..Z); end -- if(X<-MapSize) then MakeObsidian(X, Y, Z) Player:TeleportTo(X,Y,-MapSize) Log(X..','..Y..','..Z); end if(Z<-MapSize) then MakeObsidian(X, Y, Z) Player:TeleportTo(X,Y,-MapSize) Log(X..','..Y..','..Z); end end Plugin = MapPlugin:new() cRoot:Get():GetPluginManager():AddPlugin( Plugin )

If you read the code, basically it prevents players from going beyond the "limit" of the mapsize you set in the first bits of the plugin. The default "mapsize" is 200x200 which will allow you to run a ridiculous amount of players on a server with only 128mb ram due to the incredibly small footprint of MCServer and the fact that ram usage is due to chunks loaded and nothing else!Big Grin

I also added the it creates a 6 block tall single block tower of obsidian where the player tries to go beyond the barrier, which will have the eventual effect of creating an impenetrable wall around your "map" beyond which noone can travel.

Obviously you could set admin permissions to allow them to go beyond, but I'm not going to use that, I just wanted something to keep everyone in the one area quickly and easily, and this does the job just fineBig Grin

The obsidian wall in action!
[Image: 2qjyatd.png]
Reply
Thanks given by:
#2
Cool.

You got some funky client mods going on too I seeTongue
Reply
Thanks given by:
#3
Don't know what I'd do without themTongue the clientside map especially, I never get lost in minecraft nowBig Grin
Reply
Thanks given by:




Users browsing this thread: 1 Guest(s)